Branches merged
authorEugene Ostroukhov <eostroukhov@symbian.org>
Thu, 07 Jan 2010 14:06:06 -0800
changeset 7 1a02e8a8be9c
parent 6 03c1ce55e5ef (current diff)
parent 3 d3477de62514 (diff)
child 8 683bdcbc3ebd
child 11 05e53cfc29d8
Branches merged
--- a/org.symbian.tools.wrttools/.classpath	Thu Jan 07 14:00:45 2010 -0800
+++ b/org.symbian.tools.wrttools/.classpath	Thu Jan 07 14:06:06 2010 -0800
@@ -3,5 +3,8 @@
 	<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.eclipse.pde.core.requiredPlugins"/>
 	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="src" path="cssvalidation-src/"/>
+	<classpathentry kind="src" path="cssvalidator-mods-src/"/>
+	<classpathentry exported="true" kind="lib" path="lib/tagsoup-1.2.jar"/>
 	<classpathentry kind="output" path="bin"/>
 </classpath>
--- a/org.symbian.tools.wrttools/.settings/org.eclipse.jdt.core.prefs	Thu Jan 07 14:00:45 2010 -0800
+++ b/org.symbian.tools.wrttools/.settings/org.eclipse.jdt.core.prefs	Thu Jan 07 14:06:06 2010 -0800
@@ -1,4 +1,4 @@
-#Mon Dec 21 14:49:08 PST 2009
+#Thu Jan 07 13:06:13 PST 2010
 eclipse.preferences.version=1
 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
 org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/Copy of .classpath	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<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.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/Copy of .project	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.symbian.tools.wrttools</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/Copy of build.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/Copy of plugin.xml	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension-point id="org.eclipse.core.resources" name="Incremental Project Builders" schema="schema/org.eclipse.core.resources.exsd"/>
+   <extension-point id="org.eclipse.ui.javaScriptProjectNatureImage" name="JavaScript Nature Image" schema="schema/org.eclipse.ui.javaScriptProjectNatureImage.exsd"/>
+
+   <extension
+         id="PropertiesFileAuditor"
+         name="Properties File Auditor Project Builder"
+         point="org.eclipse.core.resources.builders">
+      <builder
+            hasNature="true">
+         <run
+               class="org.symbian.tools.wrttools.builder.PropertiesFileAuditor">
+         </run>
+      </builder>
+   </extension>
+   <extension
+         id="PropertiesAuditorNature"
+         name="Properties Auditor Nature"
+         point="org.eclipse.core.resources.natures">
+      <runtime>
+         <run
+               class="org.symbian.tools.wrttools.builder.PropertiesAuditorNature">
+         </run>
+      </runtime>
+      <requires-nature id="org.eclipse.wst.jsdt.core.jsNature"/>
+      <requires-nature id="org.eclipse.pde.PluginNature"/>
+      <builder
+            id="org.symbian.tools.wrttools.builder.PropertiesFileAuditor">
+      </builder>
+   </extension>
+   
+   <extension
+         point="org.eclipse.ui.newWizards">
+      <category
+            name="Web Runtime (WRT)"
+            id="org.symbian.tools.wrttools.newWizards.widget">
+      </category>
+      <wizard
+            category="org.symbian.tools.wrttools.newWizards.widget"
+            class="org.symbian.tools.wrttools.wizards.WRTProjectWizard"
+            finalPerspective="org.eclipse.ui.resourcePerspective"
+            icon="icons/main16.gif"
+            id="org.symbian.tools.wrt.wizards.WRTProjectWizard"
+            name="New Web Runtime Widget"
+            project="true">
+         <description>
+            Creates a new widget based on existing project workspaces.
+         </description>
+      </wizard>
+   </extension>
+   
+   <extension
+         id="org.eclipse.wst.xml.ui.ExampleProjectCreationWizardExtension"
+         name="Example Project Creation Wizard"
+         point="org.eclipse.wst.common.ui.exampleProjectCreationWizard"> 
+      <wizard
+           id="org.eclipse.wst.xml.ui.ExampleProjectCreationWizard"
+           banner="icons/newSampleProject_wizbanner.gif">
+         <projectsetup
+               pagetitle="%XMLExampleProjectCreationWizard.pagetitle"
+               name="%XMLExampleProjectCreationWizard.projectname"
+               label="%XMLExampleProjectCreationWizard.label"
+               pagedescription="%XMLExampleProjectCreationWizard.pagedescription"
+               open="readme.html">
+            <import
+                  dest=""
+                  src="org.symbian.tools.wrttools.wizards.examples.FlickrApplication.zip">
+            </import>
+        </projectsetup>
+     </wizard>
+   </extension>
+   
+   <extension
+         point="org.eclipse.ui.popupMenus">
+      <objectContribution
+            adaptable="true"
+            objectClass="org.eclipse.core.resources.IProject"
+            nameFilter="*"
+            id="org.symbian.tools.wrt.contribution1">
+         <action
+               label="Add/Remove Sample Nature"
+               class="org.symbian.tools.wrt.builder.ToggleNatureAction"
+               menubarPath="additions"
+               enablesFor="+"
+               id="org.symbian.tools.wrt.addRemoveNatureAction">
+         </action>
+      </objectContribution>
+   </extension>
+   <extension
+         id="org.symbian.tools.wrt.xmlProblem"
+         name="XML Problem"
+         point="org.eclipse.core.resources.markers">
+      <super
+            type="org.eclipse.core.resources.problemmarker">
+      </super>
+      <persistent
+            value="true">
+      </persistent>
+   </extension>
+   <extension
+         point="org.eclipse.ui.menus">
+      <menuContribution
+            class="org.symbian.tools.wrt.builder.Contribution1"
+            locationURI="menu:org.eclipse.ui.main.menu?after=additions&quot;">
+      </menuContribution>
+   </extension>
+   <extension
+         id="org.symbian.tools.wrt.jsProblem"
+         name="JSProblem"
+         point="org.eclipse.core.resources.markers">
+      <super
+            type="org.eclipse.core.resources.problemmarker">
+      </super>
+      <persistent
+            value="true">
+      </persistent>
+   </extension>
+
+</plugin>
--- a/org.symbian.tools.wrttools/META-INF/MANIFEST.MF	Thu Jan 07 14:00:45 2010 -0800
+++ b/org.symbian.tools.wrttools/META-INF/MANIFEST.MF	Thu Jan 07 14:06:06 2010 -0800
@@ -9,10 +9,26 @@
  org.eclipse.core.runtime,
  org.eclipse.core.resources,
  org.eclipse.emf.common,
- org.eclipse.emf.ecore
+ org.eclipse.emf.ecore,
+ org.eclipse.core.databinding;bundle-version="1.2.0",
+ org.eclipse.core.databinding.beans;bundle-version="1.2.0",
+ org.eclipse.core.databinding.property;bundle-version="1.2.0",
+ org.eclipse.jface.databinding;bundle-version="1.3.0",
+ org.eclipse.wst.jsdt.ui;bundle-version="1.0.200",
+ org.eclipse.wst.jsdt.core;bundle-version="1.0.200",
+ org.eclipse.wst.css.core;bundle-version="1.1.300",
+ org.eclipse.ui.ide;bundle-version="3.5.0",
+ org.eclipse.wst.validation;bundle-version="1.2.102"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
-Import-Package: org.chromium.debug.core,
+Import-Package: org.apache.velocity;version="1.5.0",
+ org.apache.velocity.app;version="1.5.0",
+ org.apache.velocity.context;version="1.5.0",
+ org.apache.velocity.convert;version="1.5.0",
+ org.apache.velocity.io;version="1.5.0",
+ org.apache.velocity.runtime;version="1.5.0",
+ org.apache.velocity.util;version="1.5.0",
+ org.chromium.debug.core,
  org.chromium.debug.core.model,
  org.chromium.debug.core.util,
  org.chromium.sdk,
@@ -33,3 +49,5 @@
  org.eclipse.ui.internal.ide,
  org.eclipse.ui.internal.ide.dialogs,
  org.eclipse.ui.wizards.newresource
+Bundle-ClassPath: lib/tagsoup-1.2.jar,
+ .
Binary file org.symbian.tools.wrttools/bin/org/symbian/tools/wrttools/Activator.class has changed
Binary file org.symbian.tools.wrttools/bin/org/symbian/tools/wrttools/core/ProjectTemplate.class has changed
Binary file org.symbian.tools.wrttools/bin/org/symbian/tools/wrttools/core/internal/validation/CssBuildValidator.class has changed
Binary file org.symbian.tools.wrttools/bin/org/symbian/tools/wrttools/projects/ProjectUtils.class has changed
Binary file org.symbian.tools.wrttools/bin/org/symbian/tools/wrttools/util/Helper.class has changed
Binary file org.symbian.tools.wrttools/bin/org/symbian/tools/wrttools/util/Unzip.class has changed
Binary file org.symbian.tools.wrttools/bin/org/symbian/tools/wrttools/wizards/AbstractDataBindingPage$NonEmptyStringValidator.class has changed
Binary file org.symbian.tools.wrttools/bin/org/symbian/tools/wrttools/wizards/AbstractDataBindingPage.class has changed
Binary file org.symbian.tools.wrttools/bin/org/symbian/tools/wrttools/wizards/AptanaProjectLocationWizardPage$1.class has changed
Binary file org.symbian.tools.wrttools/bin/org/symbian/tools/wrttools/wizards/AptanaProjectLocationWizardPage$10.class has changed
Binary file org.symbian.tools.wrttools/bin/org/symbian/tools/wrttools/wizards/AptanaProjectLocationWizardPage$11.class has changed
Binary file org.symbian.tools.wrttools/bin/org/symbian/tools/wrttools/wizards/AptanaProjectLocationWizardPage$12.class has changed
Binary file org.symbian.tools.wrttools/bin/org/symbian/tools/wrttools/wizards/AptanaProjectLocationWizardPage$13.class has changed
Binary file org.symbian.tools.wrttools/bin/org/symbian/tools/wrttools/wizards/AptanaProjectLocationWizardPage$14.class has changed
Binary file org.symbian.tools.wrttools/bin/org/symbian/tools/wrttools/wizards/AptanaProjectLocationWizardPage$15.class has changed
Binary file org.symbian.tools.wrttools/bin/org/symbian/tools/wrttools/wizards/AptanaProjectLocationWizardPage$16.class has changed
Binary file org.symbian.tools.wrttools/bin/org/symbian/tools/wrttools/wizards/AptanaProjectLocationWizardPage$17.class has changed
Binary file org.symbian.tools.wrttools/bin/org/symbian/tools/wrttools/wizards/AptanaProjectLocationWizardPage$2.class has changed
Binary file org.symbian.tools.wrttools/bin/org/symbian/tools/wrttools/wizards/AptanaProjectLocationWizardPage$3.class has changed
Binary file org.symbian.tools.wrttools/bin/org/symbian/tools/wrttools/wizards/AptanaProjectLocationWizardPage$4.class has changed
Binary file org.symbian.tools.wrttools/bin/org/symbian/tools/wrttools/wizards/AptanaProjectLocationWizardPage$5.class has changed
Binary file org.symbian.tools.wrttools/bin/org/symbian/tools/wrttools/wizards/AptanaProjectLocationWizardPage$6.class has changed
Binary file org.symbian.tools.wrttools/bin/org/symbian/tools/wrttools/wizards/AptanaProjectLocationWizardPage$7.class has changed
Binary file org.symbian.tools.wrttools/bin/org/symbian/tools/wrttools/wizards/AptanaProjectLocationWizardPage$8.class has changed
Binary file org.symbian.tools.wrttools/bin/org/symbian/tools/wrttools/wizards/AptanaProjectLocationWizardPage$9.class has changed
Binary file org.symbian.tools.wrttools/bin/org/symbian/tools/wrttools/wizards/AptanaProjectLocationWizardPage$ProjectLabelProvider.class has changed
Binary file org.symbian.tools.wrttools/bin/org/symbian/tools/wrttools/wizards/AptanaProjectLocationWizardPage$ProjectRecord.class has changed
Binary file org.symbian.tools.wrttools/bin/org/symbian/tools/wrttools/wizards/AptanaProjectLocationWizardPage.class has changed
Binary file org.symbian.tools.wrttools/bin/org/symbian/tools/wrttools/wizards/AptanaProjectsImportWizard.class has changed
Binary file org.symbian.tools.wrttools/bin/org/symbian/tools/wrttools/wizards/FlickrProjectDetailsWizardPage$Factory.class has changed
Binary file org.symbian.tools.wrttools/bin/org/symbian/tools/wrttools/wizards/FlickrProjectDetailsWizardPage.class has changed
Binary file org.symbian.tools.wrttools/bin/org/symbian/tools/wrttools/wizards/IWizardPageFactory.class has changed
Binary file org.symbian.tools.wrttools/bin/org/symbian/tools/wrttools/wizards/RssReaderProjectDetailsWizardPage$Factory.class has changed
Binary file org.symbian.tools.wrttools/bin/org/symbian/tools/wrttools/wizards/RssReaderProjectDetailsWizardPage.class has changed
Binary file org.symbian.tools.wrttools/bin/org/symbian/tools/wrttools/wizards/WRTProjectDetailsWizardPage.class has changed
Binary file org.symbian.tools.wrttools/bin/org/symbian/tools/wrttools/wizards/WRTProjectFilesWizardPage.class has changed
Binary file org.symbian.tools.wrttools/bin/org/symbian/tools/wrttools/wizards/WRTProjectTemplateWizardPage$1.class has changed
Binary file org.symbian.tools.wrttools/bin/org/symbian/tools/wrttools/wizards/WRTProjectTemplateWizardPage$2.class has changed
Binary file org.symbian.tools.wrttools/bin/org/symbian/tools/wrttools/wizards/WRTProjectTemplateWizardPage$3.class has changed
Binary file org.symbian.tools.wrttools/bin/org/symbian/tools/wrttools/wizards/WRTProjectTemplateWizardPage$ProjectTemplateLabelProvider.class has changed
Binary file org.symbian.tools.wrttools/bin/org/symbian/tools/wrttools/wizards/WRTProjectTemplateWizardPage.class has changed
Binary file org.symbian.tools.wrttools/bin/org/symbian/tools/wrttools/wizards/WRTProjectWizard$1.class has changed
Binary file org.symbian.tools.wrttools/bin/org/symbian/tools/wrttools/wizards/WRTProjectWizard$2.class has changed
Binary file org.symbian.tools.wrttools/bin/org/symbian/tools/wrttools/wizards/WRTProjectWizard.class has changed
Binary file org.symbian.tools.wrttools/bin/org/symbian/tools/wrttools/wizards/WizardContext.class has changed
Binary file org.symbian.tools.wrttools/bin/org/symbian/tools/wrttools/wizards/WrtWidgetWizard$1.class has changed
Binary file org.symbian.tools.wrttools/bin/org/symbian/tools/wrttools/wizards/WrtWidgetWizard$2.class has changed
Binary file org.symbian.tools.wrttools/bin/org/symbian/tools/wrttools/wizards/WrtWidgetWizard.class has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/css/.cvsignore	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,2 @@
+observer-response.xsd
+properties.zip
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/css/CompareExplicitWeight.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/css/CompareOrderSpecified.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/css/CompareSpecificity.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/css/CssCascadingOrder.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/css/CssParser.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/css/CssRuleList.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/css/CssStyleRule.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/css/DocumentParser.class has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/css/Makefile	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,39 @@
+SRCS = CssCascadingOrder.java StyleSheetCom.java \
+CssParser.java StyleSheetGenerator.java \
+StyleSheetParser.java StyleSheet.java\
+HTMLStyleSheetParser.java StyleSheetXMLParser.java \
+
+
+OBJS = $(SRCS:.java=.class)
+
+PACKAGE = org.w3c.css.css
+JAVAC = jc -val
+JAVADOC = javadoc
+JAVADOCFLAGS = -version -d docs -protected
+JAVACFLAGS =
+MAKEDEPEND = jmakedepend
+
+.SUFFIXES: .class .java
+.java.class:; $(JAVAC) $(JAVACFLAGS) $<
+
+all: $(OBJS) html.properties.ja html.properties.zh-cn
+
+javadoc:; $(JAVADOC) $(JAVADOCFLAGS) $(PACKAGE)
+
+clean:; -rm -f $(OBJS) *~ core
+
+depend:; $(MAKEDEPEND) $(SRCS)
+
+# DO NOT DELETE THIS LINE -- make depend depends on it.
+StyleSheetParser.class:: StyleSheetParser.java
+StyleSheetCom.class:: StyleSheetCom.java
+StyleSheetGenerator.class:: StyleSheetGenerator.java
+CssParser.class:: CssParser.java
+CssCascadingOrder.class:: CssCascadingOrder.java
+HTMLStyleSheetParser.class:: HTMLStyleSheetParser.java
+StyleSheet.class:: StyleSheet.java
+
+html.properties.ja: html.properties.ja.EUCJIS
+	native2ascii -encoding EUCJIS html.properties.ja.EUCJIS html.properties.ja
+html.properties.zh-cn: html.properties.zh-cn.GB
+	native2ascii -encoding euc-cn html.properties.zh-cn.GB html.properties.zh-cn
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/css/StyleReport.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/css/StyleSheet.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/css/StyleSheetOrigin.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/css/StyleSheetParser.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/css/TagSoupStyleSheetHandler.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/css/XMLStyleSheetHandler.class has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/css/format.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,9 @@
+# Available output format for the StyleSheetGeneratorHTML & StyleSheetGenerator(text)
+
+xhtml: xhtml.properties
+xml: xml.properties
+text: text.properties
+soap12: soap12.properties
+json: json.properties
+ucn: ucn.properties
+gnu: gnu.properties
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/css/gnu.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,13 @@
+#foreach ( $error_content in $errors_content )
+#set ( $err = $error_content.get("Error") )
+#set ( $error_msg = $error_content.get("ErrorMsg") )
+#set ( $context_name = $error_content.get("CtxName") )
+#set ( $context_msg = $error_content.get("CtxMsg") )
+#set ( $class_name = $error_content.get("ClassName") )
+$err.SourceFile:$err.Line:$context_msg:$error_msg
+#end
+#foreach ( $warning in $warnings_list )
+#if ( $warning.Level <= $warning_level )
+$warning.SourceFile:$warning.Line: #if ( $warning.Context ) $warning.Context - #end :$warning.WarningMessage
+#end
+#end
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/css/json.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,13 @@
+{
+  "cssvalidation" : {
+     "uri"       : "$file_title",
+     "checkedby" : "http://www.w3.org/2005/07/css-validator",
+     "csslevel"  : "$cssversion",
+     "date"      : "$currentdate",
+     "validity"  : $is_valid,
+     "result"    : {
+		"errorcount"   : $errors_count,
+		"warningcount" : $warnings_count
+                   }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/css/soap12.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,117 @@
+<?xml version='1.0' encoding="$charset"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+    <env:Body>
+        <m:cssvalidationresponse
+            env:encodingStyle="http://www.w3.org/2003/05/soap-encoding"
+            xmlns:m="http://www.w3.org/2005/07/css-validator">
+            <m:uri>$file_title</m:uri>
+            <m:checkedby>http://jigsaw.w3.org/css-validator/</m:checkedby>
+            <m:csslevel>$cssversion</m:csslevel>
+            <m:date>$currentdate</m:date>
+            <m:validity>$is_valid</m:validity>
+            <m:result>
+                <m:errors xml:lang="$lang">
+                    <m:errorcount>$errors_count</m:errorcount>
+#set ( $sf = "" )
+#if ( $errors_count > 0 )
+    #foreach ( $error_content in $errors_content )
+        #set ( $err = $error_content.get("Error") )
+        #set ( $error_msg = $error_content.get("ErrorMsg") )
+        #set ( $class_name = $error_content.get("ClassName") )
+        #set ( $context_msg = $error_content.get("CtxMsg") )
+        #if ( $error_content.get("link_value_parse_error") )
+            #set ( $before_link = $error_content.get("link_before_parse_error") )
+            #set ( $link_value = $error_content.get("link_value_parse_error") )
+        #else
+            #set ( $link_value = false )
+        #end
+        #if ( $error_content.get("span_value_parse_error") )
+            #set ( $span_value = $error_content.get("span_value_parse_error") )
+        #else
+            #set ( $span_value = false )
+        #end
+        #if ( $sf != $err.SourceFile )
+            #if ( $open )
+                    
+                    </m:errorlist>
+            #end
+            #set ( $sf = $err.SourceFileEscaped )
+            
+                <m:errorlist>
+                    <m:uri>$sf</m:uri>
+            #set ( $open = true )
+        #end
+        
+                        <m:error>
+                            <m:line>$err.Line</m:line>
+                            <m:errortype>$class_name</m:errortype>
+                            #if ( $context_msg )<m:context> $context_msg </m:context>#end
+        #if ( $span_value )
+            #set ( $span_class = $error_content.get("span_class_parse_error") )
+
+                            <m:errorsubtype>
+                                $span_class
+                            </m:errorsubtype>
+                            <m:skippedstring>
+                                $span_value
+                            </m:skippedstring>
+        #end
+
+                            <m:message>
+        #if ( $link_value )
+            #set ( $link_name = $error_content.get("link_name_parse_error") )
+
+                                $before_link :  $link_name ($link_value)
+        #end
+
+                                $error_msg
+                            </m:message>
+                        </m:error>
+    #end
+    #if ( $open )
+    
+                    </m:errorlist>
+    #end
+#end
+    
+                </m:errors>
+                <m:warnings xml:lang="$lang">
+                    <m:warningcount>$warnings_count</m:warningcount>
+#if ( $warnings_count > 0 )
+    #set ( $sf = "" )
+    #set ( $open = false )
+    #foreach ( $warning in $warnings_list )
+        #if ( $sf != $warning.SourceFile )
+            #if ( $open )
+                    
+                    </m:warninglist>
+            #end
+            #set ( $sf = $warning.SourceFileEscaped )
+            
+                    <m:warninglist>
+                        <m:uri>$sf</m:uri>
+            #set ( $open = true )
+        #end
+        #if ( $warning.Level <= $warning_level )
+        
+                        <m:warning>
+                            <m:line>$warning.Line</m:line>
+                            <m:level>$warning.Level</m:level>
+                            <m:message>$warning.WarningMessageEscaped</m:message>
+#if ( $warning.Context )
+                            <m:context>$warning.Context.Escaped</m:context>
+#end
+                        </m:warning>
+        #end
+    #end
+    #if ( $open )
+    
+                    </m:warninglist>
+    #end
+#end
+                </m:warnings>
+            </m:result>
+        </m:cssvalidationresponse>
+    </env:Body>
+</env:Envelope>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/css/text.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,135 @@
+$W3C_validator_results $file_title
+
+#if ( !$no_errors_report )
+    #if ($errors_count == 0)
+$congrats
+
+$doc_validates_before_link $css $doc_validates_after_link
+        #if ( !$file_title.trim().startsWith("file://localhost") )
+
+$no_errors_interoperable_msg
+
+<p>
+    <a href="http://jigsaw.w3.org/css-validator/">
+        <img style="border:0;width:88px;height:31px"
+            src="http://jigsaw.w3.org/css-validator/images/vcss"
+            alt="$valid_CSS" />
+    </a>
+</p>
+($no_errors_close_tags_msg)
+$no_errors_dl_local_msg
+$no_errors_create_link_msg
+    http://jigsaw.w3.org/css-validator/validator$link
+or  http://jigsaw.w3.org/css-validator/check/referer ($no_errors_forHTML_only_msg)
+($no_errors_bookmark_msg)
+        #end
+    #else
+        #if ( $hook_html_validator )
+
+$hook_html_validator
+        #end
+        #set ( $sf = "" )
+        #set ( $open = false )
+
+$errors_sorry_msg ($errors_count)
+        #if ( $request )
+
+$request
+        #end
+
+#foreach ( $error_content in $errors_content )
+#set ( $err = $error_content.get("Error") )
+#set ( $error_msg = $error_content.get("ErrorMsg") )
+#set ( $context_name = $error_content.get("CtxName") )
+#set ( $context_msg = $error_content.get("CtxMsg") )
+#set ( $class_name = $error_content.get("ClassName") )
+#if ( $error_content.get("link_value_parse_error") )
+    #set ( $before_link = $error_content.get("link_before_parse_error") )
+    #set ( $link_value = $error_content.get("link_value_parse_error") )
+#else
+    #set ( $link_value = false )
+#end
+#if ( !$link_value && $error_content.get("span_value_parse_error") )
+    #set ( $span_value = $error_content.get("span_value_parse_error") )
+#else
+    #set ( $span_value = false )
+#end
+#if  ( $sf != $err.SourceFile )
+    #set ( $sf = $err.SourceFile )
+
+URI : $sf
+
+#set ( $open = true )
+#end
+Line : $err.Line $context_msg
+#if ( $link_value )
+#set ( $link_name = $error_content.get("link_name_parse_error") )
+       ($before_link : $link_name ($link_value))
+#end
+       $error_msg
+#if ( $span_value )
+#set ( $span_class = $error_content.get("span_class_parse_error") )
+       $span_value
+#end
+#end
+
+#end
+#end
+#if ($warnings_count > 0)
+
+$warnings ($warnings_count)
+#set ( $sf = "" )
+#set ( $open = false )
+#foreach ( $warning in $warnings_list )
+#if ( $sf != $warning.SourceFile )
+#set ( $sf = $warning.SourceFile )
+
+URI : $sf
+
+#set ( $open = true )
+#end
+#if ( $warning.Level <= $warning_level )
+Line : $warning.Line - #if ( $warning.Context ) $warning.Context - #end $warning.WarningMessage
+#end
+#end
+
+#end
+
+#if ( $rules_count > 0 )
+
+$valid_CSS_info
+    #if ($style_charset)
+
+@charset "$style_charset";
+    #end
+
+    #foreach ( $rules in $at_rules_list )
+#if ( $rules.AtRule != "" )
+
+$rules.AtRule
+#if ( !$rules.Empty )
+{
+            #end
+        #end
+        #foreach ( $rule in $rules.StyleRules )
+    #if ( $rule.Selectors )
+    $rule.Selectors
+    {
+    #end
+#foreach ( $property in $rule.Properties )
+        $property.PropertyName : $property;
+#end
+    #if ( $rule.Selectors )
+    }
+    #end
+        #end
+        #if ( $rules.AtRule != "" )
+#if ( !$rules.Empty )
+
+}
+            #end
+        #end
+    #end
+#else
+$CSS_not_found
+#end
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/css/ucn.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,154 @@
+<?xml version='1.0' encoding="$charset"?>
+<observationresponse xmlns="http://www.w3.org/unicorn/observationresponse"
+      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.w3.org/unicorn/observationresponse file:observer-response.xsd">
+    <uri>$file_title</uri>
+    <checkedby>http://jigsaw.w3.org/css-validator/</checkedby>
+    <version>$cssversion</version>
+    <date>$currentdate</date>
+    <passed>$is_valid</passed>
+    <result>
+        <errors xml:lang="$lang">
+            <errorcount>$errors_count</errorcount>
+#if ( $errors_count > 0 )
+    #set ( $sf = "" )
+    #set ( $open = false )
+    #foreach ( $error_content in $errors_content )
+       #set ( $err = $error_content.get("Error") )
+       #if ( $sf != $err.SourceFile ) 
+            #if ( $open )
+            </errorlist>
+            #end
+            #set ( $sf = $err.SourceFileEscaped )
+            <errorlist>
+            #set ( $open = true )
+            #if ( $fake_input )
+                <uri>$file_title</uri>
+            #else            
+                <uri>$sf</uri>
+            #end
+        #end
+
+        #set ( $error_msg = $error_content.get("ErrorMsg") )
+        #set ( $context_name = $error_content.get("CtxName") )
+        #set ( $context_msg = $error_content.get("CtxMsg") )
+        #set ( $class_name = $error_content.get("ClassName") )
+        #if ( $error_content.get("link_value_parse_error") )
+            #set ( $before_link = $error_content.get("link_before_parse_error") )
+            #set ( $link_value = $error_content.get("link_value_parse_error") )
+        #else
+            #set ( $link_value = false )
+        #end
+        #if ( $error_content.get("span_value_parse_error") )
+            #set ( $span_value = $error_content.get("span_value_parse_error") )
+        #else
+            #set ( $span_value = false )
+        #end
+
+                <error>
+                    <line>$err.Line</line>
+                    #if ( $context_msg ) <context name="$context_name">$context_msg</context> #end
+                    <errortype>$class_name</errortype>
+                    <message>
+        #if ( $link_value )
+            #set ( $link_name = $error_content.get("link_name_parse_error") )
+                        $before_link :  $link_name ($link_value)
+        #end
+                        $error_msg
+        #if ( $span_value )
+            #set ( $span_class = $error_content.get("span_class_parse_error") )
+                        $span_value
+        #end
+
+                    </message>
+                </error>
+    #end
+    #if ( $open )
+            </errorlist>
+    #end
+#end
+
+        </errors>
+
+
+        <warnings xml:lang="$lang">
+            <warningcount>$warnings_count</warningcount>
+#if ( $warnings_count > 0 )
+    #set ( $sf = "" )
+    #set ( $open = false )
+    #foreach ( $warning in $warnings_list )
+        #if ( $sf != $warning.SourceFile )    
+            #if ( $open )
+            </warninglist>
+            #end
+            #set ( $sf = $warning.SourceFileEscaped )
+            <warninglist>
+            #set ( $open = true )
+		        #if ( $fake_input ) 
+                 <uri>$file_title</uri>
+          	#else
+                 <uri>$sf</uri>
+            #end
+
+        #end
+        #if ( $warning.Level <= $warning_level )
+                <warning>
+                    #if ( $warning.Level )
+                    <level>$warning.Level</level>
+                    #end
+                    <line>$warning.Line</line>
+                    #if ( $warning.Context ) <context>$warning.Context.Escaped</context> #end
+                    <message>$warning.WarningMessageEscaped</message>
+                </warning>
+        #end
+    #end
+    #if ( $open )
+            </warninglist>
+    #end
+#end
+    
+        </warnings>
+
+
+#if ( $errors_count == 0 )
+        <informations xml:lang="$lang">
+          <infocount>1</infocount>
+          <infolist>
+            <uri>$file_title</uri>
+            <info>
+              <longmessage>$doc_validates_before_link <a href="$css_link">$css</a> $doc_validates_after_link</longmessage>
+              <longmessage>
+                $no_errors_interoperable_msg
+              </longmessage>
+              <longmessage>
+                <img class="inline-badge" style="border:0;width:88px;height:31px" src="http://jigsaw.w3.org/css-validator/images/vcss" alt="$valid_CSS" />
+                <code class='example badgeSnippet'>&lt;p&gt;
+    &lt;a href="http://jigsaw.w3.org/css-validator/check/referer"&gt;
+        &lt;img style="border:0;width:88px;height:31px"
+            src="http://jigsaw.w3.org/css-validator/images/vcss"
+            alt="$valid_CSS" /&gt;
+    &lt;/a&gt;
+&lt;/p&gt;</code>
+              </longmessage>
+              <longmessage>
+                <img class="inline-badge" style="border:0;width:88px;height:31px" src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="$valid_CSS" />
+                <code class='example badgeSnippet'>&lt;p&gt;
+    &lt;a href="http://jigsaw.w3.org/css-validator/check/referer"&gt;
+        &lt;img style="border:0;width:88px;height:31px"
+            src="http://jigsaw.w3.org/css-validator/images/vcss-blue"
+            alt="$valid_CSS" /&gt;
+    &lt;/a&gt;
+&lt;/p&gt;</code>
+              </longmessage>
+              <longmessage>
+                ($no_errors_close_tags_msg)
+              </longmessage>
+              <longmessage>
+                $no_errors_dl_local_msg
+              </longmessage>
+            </info>
+          </infolist>
+        </informations>
+#end
+    </result>
+</observationresponse>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/css/urls.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,120 @@
+@url-base_css1		:	http://www.w3.org/TR/REC-CSS1/
+@url-base_css2		:	http://www.w3.org/TR/REC-CSS2/
+@url-base_css21		:	http://www.w3.org/TR/CSS21/
+@url-base_css3		:	http://www.w3.org/Style/CSS/current-work.html
+azimuth			:	aural.html#propdef-azimuth
+background		:	colors.html#propdef-background
+background-attachment	:	colors.html#propdef-background-attachment
+background-color	:	colors.html#propdef-background-color
+background-image	:	colors.html#propdef-background-image
+background-position	:	colors.html#propdef-background-position
+background-repeat	:	colors.html#propdef-background-repeat
+border			:	box.html#propdef-border
+border-bottom		:	box.html#propdef-border-bottom
+border-bottom-color	:	box.html#propdef-border-bottom-color
+border-bottom-style	:	box.html#propdef-border-bottom-style
+border-bottom-width	:	box.html#propdef-border-bottom-width
+border-color		:	box.html#propdef-border-color
+border-left		:	box.html#propdef-border-left
+border-left-color	:	box.html#propdef-border-left-color
+border-left-style	:	box.html#propdef-border-left-style
+border-left-width	:	box.html#propdef-border-left-width
+border-right		:	box.html#propdef-border-right
+border-right-color	:	box.html#propdef-border-right-color
+border-right-style	:	box.html#propdef-border-right-style
+border-right-width	:	box.html#propdef-border-right-width
+border-spacing		:	tables.html#propdef-border-spacing
+border-style		:	box.html#propdef-border-style
+border-top		:	box.html#propdef-border-top
+border-top-color	:	box.html#propdef-border-top-color
+border-top-style	:	box.html#propdef-border-top-style
+border-top-width	:	box.html#propdef-border-top-width
+border-width		:	box.html#propdef-border-width
+bottom			:	visuren.html#propdef-bottom
+caption-side		:	tables.html#propdef-caption-side
+clear			:	visuren.html#propdef-clear
+clip			:	visufx.html#propdef-clip
+color			:	colors.html#propdef-color
+column-span		:	tables.html#propdef-column-span
+content			:	generate.html#propdef-content
+counter-increment	:	generate.html#propdef-counter-increment
+counter-reset		:	generate.html#propdef-counter-reset
+cue			:	aural.html#propdef-cue
+cue-after		:	aural.html#propdef-cue-after
+cue-before		:	aural.html#propdef-cue-before
+cursor			:	ui.html#propdef-cursor
+direction		:	visuren.html#propdef-direction
+display			:	visuren.html#propdef-display
+elevation		:	aural.html#propdef-elevation
+float			:	visuren.html#propdef-float
+font			:	fonts.html#propdef-font
+font-family		:	fonts.html#propdef-font-family
+font-size		:	fonts.html#propdef-font-size
+font-size-adjust	:	fonts.html#propdef-font-size-adjust
+font-style		:	fonts.html#propdef-font-style
+font-variant		:	fonts.html#propdef-font-variant
+font-weight		:	fonts.html#propdef-font-weight
+height			:	visudet.html#propdef-height
+left			:	visuren.html#propdef-left
+letter-spacing		:	text.html#propdef-letter-spacing
+line-height		:	visudet.html#propdef-line-height
+list-style		:	generate.html#propdef-list-style
+list-style-image	:	generate.html#propdef-list-style-image
+list-style-position	:	generate.html#propdef-list-style-position
+list-style-type		:	generate.html#propdef-list-style-type
+margin			:	box.html#propdef-margin
+margin-bottom		:	box.html#propdef-margin-bottom
+margin-left		:	box.html#propdef-margin-left
+margin-right		:	box.html#propdef-margin-right
+margin-top		:	box.html#propdef-margin-top
+marks			:	page.html#propdef-marks
+max-height		:	visudet.html#propdef-max-height
+max-width		:	visudet.html#propdef-max-width
+min-height		:	visudet.html#propdef-min-height
+min-width		:	visudet.html#propdef-min-width
+orphans			:	page.html#propdef-orphans
+overflow		:	visufx.html#propdef-overflow
+padding			:	box.html#propdef-padding
+padding-bottom		:	box.html#propdef-padding-bottom
+padding-left		:	box.html#propdef-padding-left
+padding-right		:	box.html#propdef-padding-right
+padding-top		:	box.html#propdef-padding-top
+page-break-after	:	page.html#propdef-page-break-after
+page-break-before	:	page.html#propdef-page-break-before
+pause			:	aural.html#propdef-pause
+pause-after		:	aural.html#propdef-pause-after
+pause-before		:	aural.html#propdef-pause-before
+pitch			:	aural.html#propdef-pitch
+pitch-range		:	aural.html#propdef-pitch-range
+play-during		:	aural.html#propdef-play-during
+position		:	visuren.html#propdef-position
+quotes			:	generate.html#propdef-quotes
+richness		:	aural.html#propdef-richness
+right			:	visuren.html#propdef-right
+row-span		:	tables.html#propdef-row-span
+size			:	page.html#propdef-size
+speak			:	aural.html#propdef-speak
+speak-date		:	aural.html#propdef-speak-date
+speak-header		:	tables.html#propdef-speak-header
+speak-numeral		:	aural.html#propdef-speak-numeral
+speak-punctuation	:	aural.html#propdef-speak-punctuation
+speak-time		:	aural.html#propdef-speak-time
+speech-rate		:	aural.html#propdef-speech-rate
+stress			:	aural.html#propdef-stress
+table-layout		:	tables.html#propdef-table-layout
+text-align		:	text.html#propdef-text-align
+text-decoration		:	text.html#propdef-text-decoration
+text-indent		:	text.html#propdef-text-indent
+text-shadow		:	text.html#propdef-text-shadow
+text-transform		:	text.html#propdef-text-transform
+top			:	visuren.html#propdef-top
+unicode-bidi		:	visuren.html#propdef-unicode-bidi
+vertical-align		:	visudet.html#propdef-vertical-align
+visibility		:	visufx.html#propdef-visibility
+voice-family		:	aural.html#propdef-voice-family
+volume			:	aural.html#propdef-volume
+white-space		:	text.html#propdef-white-space
+widows			:	page.html#propdef-widows
+width			:	visudet.html#propdef-width
+word-spacing		:	text.html#propdef-word-spacing
+z-index			:	visuren.html#propdef-z-index
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/css/xhtml.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,363 @@
+<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'
+                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html lang='$content-language' xml:lang='$content-language' xmlns='http://www.w3.org/1999/xhtml' dir="$direction">
+    <head>
+      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+      <meta http-equiv="Content-Script-Type" content="text/javascript" />
+      <meta http-equiv="Content-Style-Type" content="text/css" />
+        <meta name="ROBOTS" content="NOINDEX, NOFOLLOW" />
+#if ( !$css ) #set ( $css = $cssversion ) #end
+        <title>$W3C_validator_results $file_title ($css)</title>
+        <link href="http://jigsaw.w3.org/css-validator/" rel="validator" />
+        <link type="text/css" rel='stylesheet' href='style/base.css' />
+        <link type="text/css" rel='stylesheet' href='style/results.css' />
+    </head>
+    <body>
+      <div id="banner">
+       <h1 id="title"><a href="http://www.w3.org/"><img alt="W3C" width="110" height="61" 
+           		 				id="logo" src="./images/w3c.png" /></a>
+       <a href="./"><span>$W3C_CSS_validation_service</span></a></h1>
+
+       <p id="tagline">
+         $W3C_validator_results $file_title ($css)
+       </p>
+      </div>
+
+#if ( $errors_count > 0 || $warnings_count > 0 || $rules_count > 0 )
+        <ul class="navbar" id="jumpbar">
+            <li><strong>$jump_to:</strong></li>
+    #if ( $errors_count > 0 )
+
+            <li><a href="#errors">$errors ($errors_count)</a></li>
+    #end
+    #if ( $warnings_count > 0 )
+
+            <li><a href="#warnings">$warnings ($warnings_count)</a></li>
+    #end
+    #if ( $rules_count > 0 )
+
+            <li><a href="#css">$validated_CSS</a></li>
+    #end
+
+        </ul>
+#end
+<div id="results_container">
+#if ($file_title.trim().startsWith("http://"))
+   <h2>$W3C_validator_results <a href="$file_title">$file_title</a> ($css)</h2>
+#else
+   <h2>$W3C_validator_results $file_title ($css)</h2>
+#end
+#if ( !$no_errors_report )
+    #if ($errors_count == 0)
+        <!-- NO ERRORS -->
+        <div id='congrats'>
+            <h3>$congrats</h3>
+            <p>
+                $doc_validates_before_link <a href="$css_link">$css</a> $doc_validates_after_link 
+            </p>
+            <p>
+                $no_errors_interoperable_msg
+            </p>
+            <img class="inline-badge" style="border:0;width:88px;height:31px" src="http://jigsaw.w3.org/css-validator/images/vcss" alt="$valid_CSS" />   
+            <pre class='example badgeSnippet'>
+&lt;p&gt;
+    &lt;a href="http://jigsaw.w3.org/css-validator/check/referer"&gt;
+        &lt;img style="border:0;width:88px;height:31px"
+            src="http://jigsaw.w3.org/css-validator/images/vcss"
+            alt="$valid_CSS" /&gt;
+    &lt;/a&gt;
+&lt;/p&gt;
+            </pre>
+        <img class="inline-badge" style="border:0;width:88px;height:31px" src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="$valid_CSS" />
+        <pre class='example badgeSnippet'>
+&lt;p&gt;
+&lt;a href="http://jigsaw.w3.org/css-validator/check/referer"&gt;
+    &lt;img style="border:0;width:88px;height:31px"
+        src="http://jigsaw.w3.org/css-validator/images/vcss-blue"
+        alt="$valid_CSS" /&gt;
+&lt;/a&gt;
+&lt;/p&gt;
+        </pre>
+            <p>($no_errors_close_tags_msg)</p>
+            
+            <div class="intro" id="don_program"></div>  
+            <script type="text/javascript" src="http://www.w3.org/QA/Tools/don_prog.js"></script>
+            
+            
+            <p>
+                $no_errors_dl_local_msg
+            </p>
+            #if ( !$file_title.trim().startsWith("file://localhost") )
+            <p>
+                $no_errors_create_link_msg
+            </p>
+<pre>http://jigsaw.w3.org/css-validator/validator$link
+or
+http://jigsaw.w3.org/css-validator/check/referer ($no_errors_forHTML_only_msg)
+</pre>
+            <p>($no_errors_bookmark_msg)</p>
+        #end
+
+        </div>
+        <p class="backtop"><a href="#banner">&uarr; $top</a></p>
+    #else
+
+        <!-- DEALING WITH ERRORS -->
+        #if ( $hook_html_validator )
+
+        $hook_html_validator
+        #end
+        #set ( $sf = "" )
+        #set ( $open = false )
+
+        <div id="errors">
+            <h3>$errors_sorry_msg ($errors_count)</h3>
+        #if ( $request )
+
+            <h4>$request</h4>
+        #end
+            <div class='error-section-all'>
+        #foreach ( $error_content in $errors_content )
+            #set ( $err = $error_content.get("Error") )
+            #set ( $error_msg = $error_content.get("ErrorMsg") )
+            #set ( $context_name = $error_content.get("CtxName") )
+            #set ( $context_msg = $error_content.get("CtxMsg") )
+            #set ( $class_name = $error_content.get("ClassName") )
+            #if ( $error_content.get("link_value_parse_error") )
+                #set ( $before_link = $error_content.get("link_before_parse_error") )
+                #set ( $link_value = $error_content.get("link_value_parse_error") )
+            #else
+                #set ( $link_value = false )
+            #end
+            #if ( $error_content.get("span_value_parse_error") )
+                #set ( $span_value = $error_content.get("span_value_parse_error") )
+            #else
+                #set ( $span_value = false )
+            #end
+            #if  ( $sf != $err.SourceFile )
+                #if ( $open )
+
+                    </table>
+                    <!--end of individual error section-->
+                    </div>
+                #end
+                #set ( $sf = $err.SourceFileEscaped )
+            
+                <div class='error-section'>
+		#if ( $fake_input ) 
+                    <h4>URI : $file_title</h4>
+		#else
+                    <h4>URI : <a href="$sf">$sf</a></h4>
+		#end
+                    <table>
+                #set ( $open = true )
+            #end
+
+                        <tr class='error'>
+                            <td class='linenumber' title='Line $err.Line'>$err.Line</td>
+                            <td class='$context_name'>#if ( $context_msg ) $context_msg #end</td>
+                            <td class='$class_name'>
+            #if ( $link_value )
+                #set ( $link_name = $error_content.get("link_name_parse_error") )
+
+                                $before_link : <a href="$link_value">$link_name</a>
+            #end
+
+                                $error_msg
+            #if ( $span_value )
+                #set ( $span_class = $error_content.get("span_class_parse_error") )
+
+                                <span class="$span_class">
+                                    $span_value
+                                </span>
+            #end
+
+                            </td>
+                        </tr>
+        #end
+        #if ( $open )
+
+                    </table>
+                </div>
+        #end
+
+            </div>
+        </div>
+        <p class="backtop"><a href="#banner">&uarr; $top</a></p>
+    #end
+#end
+#if ($errors_count > 0)
+<div class="intro" id="don_program"></div>  
+<script type="text/javascript" src="http://www.w3.org/QA/Tools/don_prog.js"></script>
+#end
+
+#if ($warnings_count > 0)
+        <!-- DEALING WITH WARNINGS -->
+        <div id="warnings">
+            <h3>$warnings ($warnings_count)</h3>
+            <div class='warning-section-all'>
+    #set ( $sf = "" )
+    #set ( $open = false )
+    #foreach ( $warning in $warnings_list )
+        #if ( $sf != $warning.SourceFile )
+            #if ( $open )
+
+                    </table>
+                    <!--end of individual warning section-->
+                    </div>
+            #end
+            #set ( $sf = $warning.SourceFileEscaped )
+            
+                <div class='warning-section'>
+		#if ( $fake_input ) 
+                    <h4>URI : $file_title</h4>
+		#else
+                    <h4>URI : <a href="$sf">$sf</a></h4>
+		#end
+                    <table>
+            #set ( $open = true )
+        #end
+        #if ( $warning.Level <= $warning_level )
+
+                        <tr class='warning'>
+                            <td class='linenumber' title='Line $warning.Line'>$warning.Line</td>
+                            <td class='codeContext'>#if ( $warning.Context ) $warning.Context.Escaped #end</td>
+                            <td class='level$warning.Level' title='warning level $warning.Level'>$warning.WarningMessageEscaped</td>
+                        </tr>
+        #end
+    #end
+    #if ( $open )
+
+                    </table>
+                </div>
+    #end
+
+            </div>
+        </div>
+        <p class="backtop"><a href="#banner">&uarr; $top</a></p>
+#end
+
+#if ( $rules_count > 0 )
+        <div id="css">
+            <h3>$valid_CSS_info</h3>
+            <div class='vAtRule'>
+    #if ($style_charset)
+
+                <div class='vCharset'>@charset "$style_charset";</div>
+    #end
+
+    #foreach ( $rules in $at_rules_list )
+        #if ( $rules.AtRule != "" )
+
+	    #if ( $rules.Empty )
+                <div class='vEmptyAtRule'>$rules.AtRuleEscaped
+	    #else   
+                <div class='atRule'>
+                    <span class='atSelector'>
+                        $rules.AtRuleEscaped
+                    </span>
+                    {
+            #end
+        #end
+
+                    <div>
+        #foreach ( $rule in $rules.StyleRules )
+
+                        <div class='selector'>
+                            #if ( $rule.Selectors )
+                            <span class='selectorValue'>
+                                $rule.SelectorsEscaped
+                            </span>
+                            {
+                            #end
+                            <div class='RuleList'>
+            #foreach ( $property in $rule.Properties )
+
+                                <div class='Rule'>
+                                    <span class='Property'>$property.PropertyNameEscaped</span> :
+                                    <span class='PropertyValue'>$property.Escaped</span>#if ( $property.Important ) !important #end;
+                                </div>
+            #end
+
+                            </div>
+                            #if ( $rule.Selectors )
+                            }
+                            #end
+                        </div>
+        #end
+
+                    </div>
+        #if ( $rules.AtRule != "" )
+            #if ( !$rules.Empty )
+
+                    }
+            #end
+
+                </div>
+        #end
+    #end
+
+            </div>
+        </div>
+        <p class="backtop"><a href="#banner">&uarr; $top</a></p>
+#else
+            <div id="css"><h2>$CSS_not_found</h2></div>
+#end
+</div><!-- results_container -->
+        <ul class="navbar" id="menu">
+            <li><strong><a href="./" title="$home_title">$home</a></strong> <span class="hideme">|</span></li>
+            <li><a href="about.html" title="$about_title">$about</a> <span class="hideme">|</span></li>
+            <li><a href="documentation.html" title="$doc_title">$doc</a> <span class="hideme">|</span></li>
+            <li><a href="DOWNLOAD.html" title="$dl_title">$dl</a> <span class="hideme">|</span></li>
+            <li><a href="Email.html" title="$feedback_title">$feedback</a> <span class="hideme">|</span></li>
+            <li><a href="thanks.html" title="$credits_title">$credits</a></li>
+        </ul>
+
+#if ($file_title.trim().startsWith("http://") || $file_title.trim().equals("file://localhost/TextArea"))
+        <ul id="lang_choice">
+    #foreach ( $language in $languages )
+        #set ( $name = $language.get("name") )
+        #if ( $language.get("real") )
+            #set ( $real =  $language.get("real") )
+        #else
+            #set ( $real = $language.get("name") )
+        #end
+
+            <li><a href="$link&amp;lang=$name"
+                lang="$name"
+                xml:lang="$name"
+                hreflang="$name"
+                rel="alternate">$real</a>
+            </li>
+    #end
+
+        </ul>
+#end
+<div id="footer">
+        <p id="activity_logos">
+            <a href="http://www.w3.org/QA/" title="$W3C_quality_msg"><img src="http://www.w3.org/QA/2002/12/qa-small.png" alt="QA" /></a><a href="http://www.w3.org/Style/CSS/learning" title="$learn_more_msg"><img src="images/woolly-icon" alt="CSS" /></a>
+        </p>
+        <p id="support_logo">
+        <a href="http://www.w3.org/QA/Tools/Donate">
+        <img src="http://www.w3.org/QA/Tools/I_heart_validator" alt="I heart Validator logo" title=" Validators Donation Program" />
+        </a>
+        </p>
+        <p class="copyright">
+            <a rel="Copyright" href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright">Copyright</a>
+            &copy; 1994-2009
+            <a href="http://www.w3.org/"><acronym title="World Wide Web Consortium">W3C</acronym></a>&reg;
+            (<a href="http://www.csail.mit.edu/"><acronym title="Massachusetts Institute of Technology">MIT</acronym></a>,
+            <a href="http://www.ercim.org/"><acronym title="European Research Consortium for Informatics and Mathematics">ERCIM</acronym></a>,
+            <a href="http://www.keio.ac.jp/">Keio</a>),
+            All Rights Reserved.
+            W3C <a href="http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>,
+            <a href="http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a>,
+            <a rel="Copyright" href="http://www.w3.org/Consortium/Legal/copyright-documents">document use</a>
+            and <a rel="Copyright" href="http://www.w3.org/Consortium/Legal/copyright-software">software licensing</a>
+            rules apply. Your interactions with this site are in accordance
+            with our <a href="http://www.w3.org/Consortium/Legal/privacy-statement#Public">public</a> and
+            <a href="http://www.w3.org/Consortium/Legal/privacy-statement#Members">Member</a> privacy statements.
+        </p>
+</div>
+    </body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/css/xml.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="$charset"?>
+<!DOCTYPE xml-css>
+<xml-css>
+<!-- file : $file_title -->
+<!-- 
+It is an XML test and may be updated, replaced or obsoleted by other
+documents at any time.
+It is inappropriate to use W3C Working Drafts as reference material or to
+cite them as other than "work in progress".
+-->
+
+#if ( $rules_count > 0 )
+    #if ($style_charset)
+
+    <vCharset>@charset</vCharset>
+    #end
+
+    #foreach ( $rules in $at_rules_list )
+        #if ( $rules.AtRule != "" )
+
+    <atRule>
+        <atSelector>$rules.AtRule</atSelector>
+        #elseif ( !$rules.Empty )
+
+    <noAtRule>
+        #end
+        #foreach ( $rule in $rules.StyleRules )
+
+        <selector>
+            <selectorValue>$rule.Selectors</selectorValue>
+            <RuleList>
+            #foreach ( $property in $rule.Properties )
+
+                <rule>
+                    <selector type="$element"
+                              id="$id"
+                              class="$class"
+                              pseudo-class="$pseudo-class"
+                              pseudo-element="$pseudo-element" />
+            		<declaration property="$property.PropertyName"
+                                 value="$property"
+			                     #if ( $property.Important ) true #end />
+                </rule>
+            #end
+
+            </RuleList>
+        </selector>
+        #end
+        #if ( $rules.AtRule != "" )
+
+    </atRule>
+        #elseif ( !$rules.Empty )
+
+    </noAtRule>
+        #end
+    #end
+#else
+    $CSS_not_found
+#end
+</xml-css>
+
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/parser/AtRule.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/parser/AtRuleFontFace.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/parser/AtRuleImport.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/parser/AtRuleMedia.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/parser/AtRuleMediaCSS1.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/parser/AtRuleMediaCSS2.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/parser/AtRuleNamespace.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/parser/AtRulePage.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/parser/AtRulePhoneticAlphabet.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/parser/AtRulePreference.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/parser/CssError.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/parser/CssErrorToken.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/parser/CssFouffa.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/parser/CssParseException.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/parser/CssPrinterStyle.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/parser/CssPropertyFactory.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/parser/CssSelectors.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/parser/CssSelectorsConstant.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/parser/CssStyle.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/parser/CssValidatorListener.class has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/parser/Elements.dtd4	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,91 @@
+A: false
+ABBR: false
+ACRONYM:false
+ADDRESS: true
+APPLET:false
+AREA:false
+B: false
+BASE: false
+BASEFONT:false
+BDO: false
+BIG: false
+BLOCKQUOTE: true
+BODY:true
+BR: false
+BUTTON: false
+CAPTION: false
+CENTER: true
+CITE: false
+CODE: false
+COL: false
+COLGROUP: false
+DD: false
+DEL: false
+DFN: false
+DIR: true
+DIV: true
+DL: true
+DT: false
+EM: false
+FIELDSET: true
+FONT: false
+FORM: true
+FRAME: false
+FRAMESET: false
+H1: true
+H2: true
+H3: true
+H4: true
+H5: true
+H6: true
+HEAD: false
+HR: true
+HTML: true
+I: false
+IFRAME: false
+IMG: false
+INPUT: false
+INS: false
+ISINDEX: true
+KBD: false
+LABEL: false
+LEGEND: false
+LI: true
+LINK: false
+MAP: false
+MENU: true
+META: false
+NOFRAMES: true
+NOSCRIPT: true
+OBJECT: false
+OL: true
+OPTION: false
+P: true
+PARAM: false
+PRE: true
+Q: false
+S: false
+SAMP: false
+SCRIPT: false
+SELECT: false
+SMALL: false
+SPAN: false
+STRIKE: false
+STRONG: false
+STYLE: false
+SUB: false
+SUP: false
+TABLE: true
+TBODY: false
+TD: false
+TEXTAREA: false
+TFOOT: false
+TH: false
+THEAD: false
+TITLE: false
+TR: false
+TT: false
+U: false
+UL: true
+VAR: false
+SCRIPT: false
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/parser/Errors.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/parser/Frame.class has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/parser/Makefile	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,35 @@
+SRCS = CssFouffa.java Errors.java\
+CssError.java CssValidatorListener.java Frame.java\
+CssErrorDeclaration.java \
+CssErrorToken.java CssSelectors.java\
+CssStyle.java CssPrinterStyle.java CssParseException.java
+
+OBJS = $(SRCS:.java=.class)
+
+PACKAGE = org.w3c.css.parser
+JAVAC = jc -val
+JAVADOC = javadoc
+JAVADOCFLAGS = -version -d docs -protected
+JAVACFLAGS = 
+MAKEDEPEND = jmakedepend
+
+.SUFFIXES: .class .java
+.java.class:; $(JAVAC) $(JAVACFLAGS) $<
+
+all: $(OBJS)
+
+javadoc:; $(JAVADOC) $(JAVADOCFLAGS) $(PACKAGE)
+
+clean:; -rm -f $(OBJS) *~ core
+
+depend:; $(MAKEDEPEND) $(SRCS)
+# DO NOT DELETE THIS LINE -- make depend depends on it.
+CssErrorToken.class:: CssErrorToken.java
+Frame.class:: Frame.java
+CssError.class:: CssError.java
+CssValidatorListener.class:: CssValidatorListener.java
+Errors.class:: Errors.java
+CssFouffa.class:: CssFouffa.java
+CssStyle.class:: CssStyle.java
+CssParseException.class:: CssParseException.java
+CssPrinterStyle.class:: CssPrinterStyle.java
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/parser/MediaEnumeration.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/parser/analyzer/CommentSkipperInputStream.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/parser/analyzer/Couple.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/parser/analyzer/CssParser$JJCalls.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/parser/analyzer/CssParser$LookaheadSuccess.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/parser/analyzer/CssParser.class has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/parser/analyzer/CssParser.jj	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,2425 @@
+/* -*-java-extended-*-
+ *
+ * (c) COPYRIGHT MIT and INRIA, 1997.
+ * Please first read the full copyright statement in file COPYRIGHT.html
+ *
+ * $Id: CssParser.jj,v 1.69 2009-10-11 09:19:37 ylafon Exp $
+ *
+ */
+
+options {
+    IGNORE_CASE  = true;
+    STATIC = false;
+    UNICODE_INPUT = true;
+    /*
+          DEBUG_TOKEN_MANAGER = true; 
+	  DEBUG_PARSER = true;      
+    */
+}
+
+PARSER_BEGIN(CssParser)
+
+package org.w3c.css.parser.analyzer;
+
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.UnsupportedEncodingException;
+import java.util.Vector;
+import java.util.Enumeration;
+import java.net.URL;
+
+import org.w3c.css.values.CssValue;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssString;
+import org.w3c.css.values.CssURL;
+import org.w3c.css.values.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssColor;
+import org.w3c.css.values.CssIdent;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssFrequency;
+import org.w3c.css.values.CssTime;
+import org.w3c.css.values.CssDate;
+import org.w3c.css.values.CssAngle;
+import org.w3c.css.values.CssFunction;
+import org.w3c.css.values.CssUnicodeRange;
+import org.w3c.css.values.CssResolution;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.parser.Frame;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.parser.CssError;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssParseException;
+import org.w3c.css.parser.AtRule;
+import org.w3c.css.parser.AtRuleMedia;
+import org.w3c.css.parser.AtRuleFontFace;
+import org.w3c.css.parser.AtRulePage;
+import org.w3c.css.parser.AtRulePreference;
+import org.w3c.css.parser.AtRulePhoneticAlphabet;
+import org.w3c.css.properties.svg.AtRuleColorProfile;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.util.Util;
+import org.w3c.css.util.Messages;
+import org.w3c.css.css.StyleSheetCom;
+
+import org.w3c.css.selectors.AdjacentSiblingSelector;
+import org.w3c.css.selectors.AttributeSelector;
+import org.w3c.css.selectors.ChildSelector;
+import org.w3c.css.selectors.ClassSelector;
+import org.w3c.css.selectors.DescendantSelector;
+import org.w3c.css.selectors.GeneralSiblingSelector;
+import org.w3c.css.selectors.IdSelector;
+import org.w3c.css.selectors.TypeSelector;
+import org.w3c.css.selectors.UniversalSelector;
+import org.w3c.css.selectors.attributes.AttributeAny;
+import org.w3c.css.selectors.attributes.AttributeBegin;
+import org.w3c.css.selectors.attributes.AttributeExact;
+import org.w3c.css.selectors.attributes.AttributeOneOf;
+import org.w3c.css.selectors.attributes.AttributeStart;
+import org.w3c.css.selectors.attributes.AttributeSubstr;
+import org.w3c.css.selectors.attributes.AttributeSuffix;
+
+/**
+ * A CSS3 parser  
+ *
+ * @author Philippe Le Hegaret and Sijtsche Smeman
+ * @version $Revision: 1.69 $
+ */
+public abstract class CssParser {
+
+    private static char hexdigits[] = { '0', '1', '2', '3',
+					'4', '5', '6', '7', 
+					'8', '9', 'a', 'b', 
+					'c', 'd', 'e', 'f' };
+    // the current atRule
+    protected AtRule atRule;
+    protected String mediaDeclaration = "off";
+
+    /**
+     * The URL of the document
+     */  
+    protected URL url;
+    
+    protected ApplContext ac;
+
+    protected boolean incompatible_error;
+    
+    /**
+     * The current context recognized by the parser (for errors).
+     */  
+    protected Vector currentContext;
+    
+    /**
+     * The current property recognized by the parser (for errors).
+     */  
+    protected String currentProperty;
+    
+    /**
+     * <code>true</code> if the parser should recognized Aural properties, 
+     * <code>false</code> otherwise.
+     */  
+    protected boolean mode;
+
+    /**
+     * <code>true</code> if the parser had recognize a rule,
+     * <code>false</code> otherwise.
+     */  
+    protected boolean markRule;
+
+    private boolean reinited = false;
+    private boolean charsetdeclared = false;
+
+    static StringBuilder SPACE = new StringBuilder(" ");
+
+    // to be able to remove a ruleset if the selector is not valid
+    protected boolean validSelector = true;
+
+    /**
+     * The ac for handling errors and warnings.
+     * 
+     * @param ac the new ac for the parser.
+     */  
+    public final void setApplContext(ApplContext ac) {
+	this.ac = ac;
+    }
+
+    /**
+     * Set the attribute atRule
+     *
+     * @param atRule the new value for the attribute
+     */
+    public void setAtRule(AtRule atRule) {
+        this.atRule = atRule;
+    }
+
+    /**
+     * Set the attribute mediaDeclaration
+     *
+     * @param mediaDeclaration indicator if in a media expression list or not
+     */
+    public void setMediaDeclaration(String mediadeclaration) {
+        this.mediaDeclaration = mediadeclaration;
+    }
+
+    /**
+     * Returns the attribute mediaDeclaration
+     *
+     * @return the value of the attribute
+     */
+    public String getMediaDeclaration() {
+    	return mediaDeclaration;
+    }
+
+    /**
+     * Returns the attribute atRule
+     *
+     * @return the value of the attribute
+     */
+    public AtRule getAtRule() {
+        return atRule;
+    }
+
+    /**
+     * Reinitialized the parser.
+     *
+     * @param stream the stream data to parse.
+     * @param ac  the new ac to use for parsing.
+     */
+    public void ReInitWithAc(InputStream stream, ApplContext ac, 
+			     String charset)
+    {
+	InputStream is = /*new  CommentSkipperInputStream(stream);*/stream;
+	if (charset == null) {
+	    charset = "iso-8859-1";
+	}
+	InputStreamReader isr = null;
+	try {
+	    isr = new InputStreamReader(is, charset);
+	} catch (UnsupportedEncodingException uex) {
+	    isr = new InputStreamReader(is);
+	}
+	// reinit, it can not happen...
+	// ...in theory ;)
+    	ReInit(isr);
+	markRule = false;
+	reinited = true;
+	setApplContext(ac);
+    }
+  
+    /* utilities for a parser */
+ 
+    /**
+     * Call by the import statement.
+     *
+     * @param url  The style sheet where this import statement appears.
+     * @param file the file name in the import
+     */  
+    public abstract void handleImport(URL url, String file, 
+				      boolean is_url, AtRuleMedia media);
+
+    /**
+     * Call by the namespace declaration statement.
+     *
+     * @param url  The style sheet where this namespace statement appears.
+     * @param file the file/url name in the namespace declaration
+     */  
+    public abstract void handleNamespaceDeclaration(URL url, String prefix,
+						    String file, 
+						    boolean is_url);
+
+    /**
+     * Call by the at-rule statement.
+     *
+     * @param ident  The ident for this at-rule (for example: 'font-face')
+     * @param string The string associate to this at-rule
+     * @see          org.w3c.css.parser.Analyzer.Couple
+     */  
+    public abstract void handleAtRule(String ident, String string);
+
+    /* added by Sijtsche Smeman */
+    public abstract void addCharSet(String charset);
+    public abstract void newAtRule(AtRule atRule);
+    public abstract void endOfAtRule();
+    public abstract void setImportant(boolean important);
+    public abstract void setSelectorList(Vector selectors);
+    public abstract void addProperty(Vector properties);
+    public abstract void endOfRule();	
+    public abstract void removeThisRule();
+    public abstract void removeThisAtRule();
+    
+    /**
+     * Assign an expression to a property.  This function create a new property
+     * with <code>property</code> and assign to it the expression with the
+     * importance. Don't forget to set informations too.
+     * <p>
+     * A subclass must provide an implementation of this method. 
+     *
+     * @param  property  the name of the property
+     * @param  values    the expression representation of values
+     * @param  important <code>true</code> if values are important
+     *
+     * @return           <code>null</code>or a property
+     * 
+     * @see              org.w3c.css.css.CssProperty
+     */
+    public abstract CssProperty handleDeclaration(String property, 
+						  CssExpression values, 
+						  boolean important) 
+	throws InvalidParamException;
+
+    /**
+     * Adds a vector of properties to a selector.
+     * <p>
+     * A subclass must provide an implementation of this method. 
+     *
+     * @param selector     the selector
+     * @param declarations Properties to associate with contexts
+     */  
+    public abstract void handleRule(CssSelectors selector, 
+				    Vector declarations);
+
+    /*Added by Sijtsche Smeman */
+
+    /**
+     * Returns the source file of the style sheet
+     */
+    public final String getSourceFile() {
+	return getURL().toString();
+    }
+
+    /**
+     * Returns the current line in the style sheet
+     */
+    public final int getLine() {
+	//return token.beginLine;
+	return 0;
+    }
+
+    /**
+     * Set the URL of the style sheet.
+     *
+     * @param URL The URL for the style sheet
+     */
+    public final void setURL(URL url) {
+	this.url = url;
+    }
+
+    public final URL getURL() {
+	return url;
+    }
+
+    /**
+     * Return the next selector from the inputstream
+     */    
+    public CssSelectors parseSelector() throws ParseException {
+	return externalSelector();
+    }
+    
+    /*
+     * Add a value to an expression
+     */
+    private void setValue(CssValue v, CssExpression expr, 
+			  char operator, Token n, int token) 
+	throws ParseException {
+	if (n != null) {
+	    if (ac.getCssVersion().equals("css1") && 
+		(n.image).equals("inherit")) {
+		incompatible_error = true;
+	    }	
+	    String val = (operator == ' ') ? n.image : operator+n.image;
+
+	    if (n.kind == CssParserConstants.IDENT) {
+		v.set(convertIdent(val), ac);
+	    } else if (n.kind == CssParserConstants.STRING) {
+		v.set(val, ac); 
+	    } else {
+		v.set(val, ac); 
+	    }
+	}
+	expr.addValue(v);
+    }
+
+    /*
+     * Error control
+     */
+    private void addError(Exception e, String skippedText) {
+	if (Util.onDebug) {
+	    System.err.println(e.getMessage());
+	    e.printStackTrace();
+	}
+	CssParseException ex = new CssParseException(e);
+	ex.setSkippedString(skippedText);
+	ex.setProperty(currentProperty);
+	ex.setContexts(currentContext);
+	CssError error = new CssError(getSourceFile(), getLine(), ex);
+	ac.getFrame().addError(error);
+    }
+    
+    /*
+     * Error control 2
+     */
+    private void addError(Exception e, CssExpression exp) {
+	if (Util.onDebug) {
+	    System.err.println(e.getMessage());
+	    e.printStackTrace();
+	}
+	
+	//	if ((exp != null) && (exp.getCount() != 0)) {
+	CssParseException ex = new CssParseException(e);
+	ex.setExp(exp);
+	ex.setProperty(currentProperty);
+	ex.setContexts(currentContext);
+	CssError error = new CssError(getSourceFile(), getLine(), ex);
+	ac.getFrame().addError(error);
+	//	}
+    }
+}
+
+PARSER_END(CssParser)
+
+/*
+ * The tokenizer 
+ */
+
+<DEFAULT>
+SPECIAL_TOKEN :
+{
+    < COMMENT : "/*" ( ~["*"] )* ( "*" )+ ( ~["/", "*"] ( ~["*"] )* ( "*" )+ )* "/" >
+} 
+
+<DEFAULT>
+    TOKEN [IGNORE_CASE] : /* basic tokens */
+{ 
+    < #H          : ["0"-"9", "a"-"f"] > 
+  | < #NONASCII   : ["\200"-"\377"] >
+  | < #UNICODE    : "\\" <H> ( <H> )? ( <H> )? ( <H> )? ( <H> )? ( <H> )? 
+	            ( "\r\n" | [ " ", "\t" , "\n" , "\r", "\f" ] )? >
+  | < #ESCAPE     : <UNICODE> | ( "\\" ~[ "\r", "\n", "\f", "0"-"9", "a"-"f" ] ) >
+  | < #NMSTART    : [ "a"-"z", "_" ] | <NONASCII> | <ESCAPE> >
+  | < #NMCHAR     : ["a"-"z", "0"-"9", "-", "_"] | <NONASCII> | <ESCAPE> >
+  | < #STRING1    : "\"" ( ~[ "\n", "\r", "\f", "\\", "\"" ] | "\\" <NL> | <ESCAPE> )* "\"" >
+  | < #STRING2	  : "\'" ( ~[ "\n", "\r", "\f", "\\", "\'" ] | "\\" <NL> | <ESCAPE> )* "\'" >
+  | < #INVALID1   : "\"" ( ~[ "\n", "\r", "\f", "\\", "\"" ] | "\\" <NL> | <ESCAPE> )* >
+  | < #INVALID2	  : "\'" ( ~[ "\n", "\r", "\f", "\\", "\'" ] | "\\" <NL> | <ESCAPE> )* >  
+  | < #_IDENT     : ( <MINUS> )? <NMSTART> ( <NMCHAR> )* >
+  | < #NAME       : ( <NMCHAR> )+ >
+  | < #NUM        : ( ["0"-"9"] )+ | ( ["0"-"9"] )* "." ( ["0"-"9"] )+ >
+  | < #_STRING    : <STRING1> | <STRING2> >
+  | < #_INVALID   : <INVALID1> | <INVALID2> >
+  | < #_URL       : ( [ "!", "#", "$", "%", "&", "*"-"[", "]"-"~" ] | <NONASCII> | <ESCAPE> )* >
+  | < #_S         : ( [ " ", "\t" , "\n" , "\r", "\f" ] ) ( <COMMENT> | [ " ", "\t" , "\n" , "\r", "\f" ] )*  >
+  | < #_W         : ( <_S> )? >
+  | < #NL         : ( "\n" | "\r\n" | "\r" | "\f" ) >
+}
+/*
+ * The _S definition is not  ( [ " ", "\t" , "\n" , "\r", "\f" ] ) + as we need to add support
+ * for the unput(' ') (see http://www.w3.org/TR/CSS21/grammar.html#scanner )
+ */
+
+<DEFAULT>
+TOKEN :
+{
+  < S : ( <_S> ) >
+}
+
+<DEFAULT>
+    TOKEN :
+{
+    < CDO : "<!--" >
+  | < CDC : "-->" >
+  | < INCLUDES  : <TILDE> "=" >
+  | < DASHMATCH : "|=" >
+}
+
+<DEFAULT>
+TOKEN :
+{
+  < LBRACE : <_W> "{" >
+  | < PLUS      : <_W>  "+" >
+  | < GREATER   : <_W> ">" >
+  | < COMMA     : <_W> "," >
+  | < TILDE     : <_W> "~" >
+}
+
+<DEFAULT>
+TOKEN [IGNORE_CASE] :
+{
+    < AND : "and" > 
+}  
+
+<DEFAULT>
+TOKEN :
+{
+    <STRING    : <_STRING> >
+  | <INVALID   : <_INVALID> >
+  | <IDENT     : <_IDENT> >
+  | <HASHIDENT : "#" <_IDENT> >
+  | <HASH      : "#" <NAME> >
+}
+
+<DEFAULT>
+TOKEN :
+{
+  < RBRACE : "}">
+  | < PREFIXMATCH : "^=" >
+  | < SUFFIXMATCH : "$=" >
+  | < SUBSTRINGMATCH : "*=" >
+  | < EQ        : "=" >
+  | < MINUS     : "-" >
+  | < SEMICOLON : ";" >
+  | < DIV       : "/" >
+  | < LBRACKET  : "[" >
+  | < RBRACKET  : "]" >
+  | < ANY       : "*" >
+  | < DOT       : "." >
+  | < LPARAN    : ")" >
+  | < RPARAN    : "(">
+}
+
+<DEFAULT>
+    TOKEN :
+{
+    < COLON     : ":" >
+}
+
+<DEFAULT>
+TOKEN [IGNORE_CASE] :
+{
+    < MEDIARESTRICTOR : "only" | "not" >
+}
+
+<DEFAULT>
+TOKEN [IGNORE_CASE] :
+{
+  < URL         : "url(" ( <S> )* ( <STRING> | <_URL>  ) ( <S> )* ")" >
+}
+
+<DEFAULT>
+TOKEN [IGNORE_CASE] :
+{
+  < LENGTH     : <NUM> "pt" 
+                   | <NUM> "mm" 
+	           | <NUM> "cm" 
+	           | <NUM> "pc" 
+	           | <NUM> "in"
+	           | <NUM> "gd" 
+	           | <NUM> "px" >
+  | < EMS        : <NUM> "em" >
+  | < EXS        : <NUM> "ex" >
+  | < ANGLE      : <NUM> ( "deg" | "grad" | "rad" ) >
+  | < TIME       : <NUM> ( "ms" | "s" ) >
+  | < FREQ       : <NUM> "Hz" | <NUM> "kHz" >
+  | < RESOLUTION : <NUM> "dpi" | <NUM> "dpcm" >
+  | < DATE       : <NUM> "/" <NUM> "/" <NUM> >
+  | < DIMEN      : <NUM> <NMSTART> ( <NMCHAR> )* >
+  | < PERCENTAGE : <NUM> "%" >
+  | < NUMBER     : <NUM> >
+}
+
+<DEFAULT>
+TOKEN [IGNORE_CASE] :
+{  
+    < IMPORTANT_SYM : "!" ( <_W> )* "important" >
+}
+
+<DEFAULT>
+TOKEN :
+{
+    <PSEUDOELEMENT_SYM : "::" >
+}
+
+/* RESERVED ATRULE WORDS */
+<DEFAULT>
+TOKEN : 
+{
+   < CHARSET_SYM           : "@charset" >
+}
+
+<DEFAULT>
+TOKEN [IGNORE_CASE] :
+{ 
+    < IMPORT_SYM            : "@import">
+  | < NAMESPACE_SYM         : "@namespace">
+  | < MEDIA_SYM             : "@media" >
+  | < PAGE_SYM              : "@page"  >
+  | < FONT_FACE_SYM         : "@font-face" >
+  | < PREF_SYM              : "@preference" >
+  | < COLOR_PROFILE         : "@color-profile" >
+  | < ATTOP	            : "@top" >
+  | < ATRIGHT               : "@right" >
+  | < ATBOTTOM              : "@bottom" >
+  | < ATLEFT                : "@left" >
+  | < ATCOUNTER             : "@counter" >
+  | < PHONETIC_ALPHABET_SYM : "@phonetic-alphabet" >
+  | < ATKEYWORD             : "@" <IDENT> >
+}
+
+<DEFAULT>
+TOKEN [IGNORE_CASE] :
+{
+    < #RANGE0 : <H> <H> <H> <H> <H> <H> > 
+  | < #RANGE1 : <H> <H> <H> <H> <H> ( "?" )? >
+  | < #RANGE2 : <H> <H> <H> <H> ( "?" )? ( "?" )? >
+  | < #RANGE3 : <H> <H> <H> ( "?" )? ( "?" )? ( "?" )? >
+  | < #RANGE4 : <H> <H> ( "?" )? ( "?" )? ( "?" )? ( "?" )? >
+  | < #RANGE5 : <H> ( "?" )? ( "?" )? ( "?" )? ( "?" )? ( "?" )? >
+  | < #RANGE6 : "?" ( "?" )? ( "?" )? ( "?" )? ( "?" )? ( "?" )? >
+  | < #RANGE  : <RANGE0> | <RANGE1> | <RANGE2> 
+                | <RANGE3> | <RANGE4> | <RANGE5> | <RANGE6> >
+  | < #UNI    : <H> ( <H> )? ( <H> )? ( <H> )? ( <H> )? ( <H> )? >
+  | < UNICODERANGE : "U+" <RANGE> | "U+" <UNI> "-" <UNI> >
+}
+
+<DEFAULT>
+    TOKEN:
+{
+    < CLASS : "." <IDENT> >
+}
+
+/* FIXED, added a spacial case for lang pseudoclass */
+<DEFAULT>
+TOKEN [IGNORE_CASE] :
+{
+    < FUNCTIONLANG : "lang(" >
+}
+
+<DEFAULT>
+TOKEN [IGNORE_CASE] :
+{
+    < FUNCTIONNOT : ":not(" >
+}
+
+
+<DEFAULT>
+    TOKEN :
+{
+    < FUNCTION : <IDENT> "(" >
+}
+
+/* Quick and dirty way to catch HTML tags starting CSS documents 
+  (common mistake) */
+<DEFAULT>
+    TOKEN:
+{
+    <HTMLSTARTTAG : "<" ( <S> )* <IDENT> ( <S> )* 
+	                ( <IDENT> "=" ( <IDENT> | <STRING> ) ( <S> )* )* 
+	            ">" >
+  | <HTMLENDTAG : "</" ( <S> )* <IDENT> ( <S> )* ">" >
+}
+
+//<DEFAULT, IN_COMMENT>
+//TOKEN :
+//{ /* avoid token manager error */
+//   < UNKNOWN : ~[] >
+//}
+
+/*
+ * The grammar of CSS2
+ */
+
+/**
+ * The main entry for the parser.
+ *
+ * @exception ParseException exception during the parse
+ */
+void parserUnit() :
+{
+    Token n = null;
+}
+{
+    try {
+	// used as an error recovery for HTML tags in CSS pages
+        ( ( n=<HTMLSTARTTAG> | n=<HTMLENDTAG> ) {
+	    addError (
+new ParseException(ac.getMsg().getString("generator.dontmixhtml")), n.image); 
+	}
+	    )*
+	  ( charset() )* // * instead of ? to capture the reinit part
+	    ( <S> | <CDO> | <CDC> )*
+	    ( importDeclaration() ( ignoreStatement() ) )*
+	    ( namespaceDeclaration() ( ignoreStatement() ) )*
+	    afterImportDeclaration()
+	    <EOF>
+	 } catch (TokenMgrError err) {
+   addError (new ParseException(ac.getMsg().getString("generator.unrecognize")),
+	     err.getMessage());
+    }
+}
+
+void charset() :
+{
+    Token n = null;
+    Token charsetToken = null;
+    Token space1Token = null;
+    Token space2Token = null;
+    Token semicolonToken = null;
+    int nb_S = 0;
+}
+{  
+    try {
+	charsetToken=<CHARSET_SYM> ( space1Token=<S> { nb_S++;} )* 
+	    n=<STRING> ( space2Token=<S> )* semicolonToken=<SEMICOLON>
+	    {
+		if (charsetdeclared && !reinited) {
+		    throw new ParseException(
+				     ac.getMsg().getString("parser.charset"));
+		}
+		// the @charset must be at the beginning of the document
+		if(charsetToken.beginLine != 1 || 
+		   charsetToken.beginColumn != 1) {
+		    throw new ParseException(
+				  ac.getMsg().getString("parser.charset"));
+		}
+		if ("css1".equals(ac.getCssVersion())) {
+		    throw new ParseException(ac.getMsg().getString(
+							 "parser.charsetcss1"));
+		}
+	        // stricter rule for CSS21 and soon for CSS3
+		if ("css21".equals(ac.getCssVersion())) {
+		    // single space before
+		    // case sensitive
+		    // no space before ;
+		    // no comments
+		    // string must start with "
+		    if ( (nb_S != 1) ||
+			 (!"@charset".equals(charsetToken.image)) ||
+			 (!" ".equals(space1Token.image)) || 
+			 (space2Token != null && 
+			  !"".equals(space2Token.image)) ||
+			 (space1Token.specialToken != null) ||
+			 (n.specialToken != null) ||
+			 (semicolonToken.specialToken != null) ||
+			 (n.image.charAt(0) != '\"')
+			) {
+			throw new ParseException(ac.getMsg().getString(
+						     "parser.charsetspecial"));
+		    }
+		}
+		if (!charsetdeclared) {
+		    addCharSet(n.image.substring(1, n.image.length()-1));
+		    charsetdeclared = true;
+		} else {
+		    reinited = false;
+		}
+	    }
+    } catch (Exception e) {
+	String skip = charsetToken +
+	    ((space1Token == null) ? "" : space1Token.image) +
+	    n +
+	    ((space2Token == null) ? "" : space2Token.image) +
+	    ";";
+        addError(e, skip); 
+    }
+}
+
+void afterImportDeclaration() :
+{String ret; }
+{
+    ( ( ruleSet() | media() | page() | fontFace() | preference() | 
+	colorprofile() | phoneticAlphabet() | ret=skipStatement() 
+	{ if ((ret == null) || (ret.length() == 0)) {
+		return; 
+	    }
+	  // quite ugly but necessary to avoid probably a lot of changes in the
+	  // grammar, still having a beautiful error message
+	    else if (ret.startsWith("@charset")) {
+		ParseException e = 
+		new ParseException(ac.getMsg().getString("parser.charset"));
+		addError(e, ret);
+	    } else if (ret.startsWith("@import")) {
+		ParseException e = 
+		new ParseException(ac.getMsg().getString("parser.import_not_allowed"));
+		addError(e, ret);
+	    } else {
+		ParseException e = 
+	     new ParseException(ac.getMsg().getString("generator.unrecognize"));
+		addError(e, ret);
+	    }
+	}
+	) ignoreStatement() )*
+}
+
+void ignoreStatement() :
+{}
+{
+    ( ( <CDO> | <CDC> | atRuleDeclaration() ) ( <S> )* )*
+}
+
+void namespaceDeclaration() :
+{
+    Token n=null;
+    Token v=null;
+    boolean is_url; /* for formatting */
+    String nsname;
+    String prefix = null;
+    CssValue val;
+}
+{
+    // FIXME add namespaces in context to match when a definition happens
+    ( <NAMESPACE_SYM> 
+      ( <S> )* 
+      ( n=<IDENT> {
+	  prefix = convertIdent(n.image);
+      } 
+	  ( <S> )* )?
+      ( v=<STRING> { 
+	      is_url = false;
+	      nsname = v.image.substring(1, v.image.length()-1);
+	  } 
+	  | v=<URL> {
+	      is_url = true;
+	      val = new CssURL(); 
+	      ((CssURL) val).set(v.image, ac, url);
+	      nsname = (String) val.get();
+	      if ((nsname.charAt(0) == '"')
+		  || (nsname.charAt(0) == '\'')) {
+		  nsname = nsname.substring(1, nsname.length()-1);
+	      }
+	  }
+      ) 
+      ( <S> )*
+      <SEMICOLON> 
+      ( <S> )*
+      ) {
+	if (!ac.getCssVersion().equals("css3")) {
+	    addError(new InvalidParamException("at-rule", "@namespace", ac),
+		     (n==null)?"default":n.toString());
+	} else {
+	    if (v != null) {
+		handleNamespaceDeclaration(getURL(), prefix, nsname, is_url);
+	    }
+	}
+    }
+}
+/**
+ * The import statement
+ *
+ * @exception ParseException exception during the parse
+ */
+void importDeclaration() :
+{Token n;
+    AtRuleMedia media = new AtRuleMedia();
+    CssValue val; 
+    String importFile;
+    boolean is_url = false;
+}
+{
+    try {
+	<IMPORT_SYM> ( <S> )*
+	    ( n=<STRING> {
+		importFile = n.image.substring(1, n.image.length() -1);
+		is_url = false;
+	    } 
+	      | n=<URL> {
+		val = new CssURL(); 
+		((CssURL) val).set(n.image, ac, url);
+		importFile = (String) val.get();
+		if ((importFile.charAt(0) == '"')
+		    || (importFile.charAt(0) == '\'')) {
+		    importFile = importFile.substring(1, importFile.length()-1);
+		}
+		is_url = true;
+	    } 
+	    )
+	    ( <S> )*
+	    ( medium(media) 
+	      ( <COMMA> ( <S> )* medium(media) 
+		)* )? <SEMICOLON> 
+	    ( <S> )*
+	    { 
+		handleImport(getURL(), importFile, is_url, media);
+	    } 
+    } catch (ParseException e) {
+	addError(e, skipStatement()); 
+    }
+}
+
+/**
+ * @exception ParseException exception during the parse
+ */
+void media() :
+{
+    AtRule old = getAtRule();
+    AtRuleMedia newRule = new AtRuleMedia();
+    setAtRule(newRule);
+    Token n;
+    CssProperty p = null;
+}
+{
+    try {
+	<MEDIA_SYM> ( <S> )*
+            // <CSS3>
+	    (n=<MEDIARESTRICTOR> { newRule.addMediaRestrictor(convertIdent(n.image), ac); } ( <S> )+)? 
+	    medium(newRule) 
+            // </CSS3>
+	    ( <COMMA> ( <S> )* medium(newRule) )* 
+            // <CSS3>
+	    (<AND> ( <S> )* <RPARAN> ( <S> )* p=mediadeclaration() { newRule.addMediaFeature(p); } <LPARAN> ( <S> )* )*
+            // </CSS3>
+   
+	    {
+		String media = getAtRule().toString();
+		if (ac.getMedium() != null && 
+		    !(media.equals(ac.getMedium())) &&
+		    !(ac.getMedium().equals("all"))) {
+		 
+		    ac.getFrame().addWarning("noothermedium", 
+					     getAtRule().toString());
+		}
+		if (ac.getCssVersion().equals("css1")) {
+		    skipStatement();
+		    addError(new InvalidParamException("noatruleyet", "", ac),
+			     getAtRule().toString());
+		}
+		if (!ac.getCssVersion().equals("css1")) {
+		    newAtRule(getAtRule());	
+		}
+	    }
+	<LBRACE> ( <S> )* ( ruleSet() )* <RBRACE> ( <S> )*
+	     {
+		 if (!ac.getCssVersion().equals("css1")) {
+		     endOfAtRule();
+		 }
+	     }
+    } catch (ParseException e) {
+	if (!ac.getCssVersion().equals("css1")) {
+	    addError(e, skipStatement()); 
+	}
+    } finally {
+	setAtRule(old);
+    }
+}
+
+/**
+ * @exception ParseException exception during the parse
+ */
+void medium(AtRuleMedia media) : /* tv, projection, screen, ... */
+{Token n;}
+{
+    n=<IDENT> ( <S> )*
+    {
+	try {
+	    media.addMedia(convertIdent(n.image), ac); 
+	} catch (InvalidParamException e) {
+	    CssError error = new CssError(getSourceFile(), getLine(), e);
+	    ac.getFrame().addError(error);	
+	}
+    }
+}
+
+/**
+ * @exception ParseException exception during the parse
+ */
+void page() :
+{
+    Vector       v                              ;
+    Token        n        = null                ;
+    Vector       collectv = new Vector()        ;
+    CssSelectors s        = new CssSelectors(ac);
+    AtRule       old      = getAtRule()         ;
+    AtRulePage   newRule  = new AtRulePage()    ;
+    setAtRule(newRule);
+    s.setAtRule(getAtRule());
+}
+{
+    try {
+	<PAGE_SYM> ( <S> )*
+            // FIXME <CSS3> ?
+            ( n=<IDENT> { newRule.setIdent(convertIdent(n.image)); } 
+	      ( <S> )* )?
+            // </CSS3>
+	    ( pseudo_page(newRule) )? <LBRACE> ( <S> )* ( v=pageContent() 
+		{ 
+		    collectv = v;
+		}
+							  ) <RBRACE> ( <S> )*
+	    {
+		if (!ac.getCssVersion().equals("css1")) {
+		    newAtRule(getAtRule());
+		}
+
+		if (!ac.getCssVersion().equals("css1")) {
+		    addProperty(collectv);
+		    endOfRule();
+		    endOfAtRule();
+		}
+		if (v == null) {
+		    ac.getFrame().addWarning("no-declaration");
+		} else {
+		    handleRule(s, collectv);
+		}
+	    }
+    } catch (InvalidParamException ie) {
+	if (!ac.getCssVersion().equals("css1")) {
+	    skipStatement();
+	    removeThisAtRule();
+	    ac.getFrame().addError(new CssError(ie));
+	}
+    } catch (ParseException e) {
+	if (!ac.getCssVersion().equals("css1")) {
+	    removeThisAtRule();
+	    addError(e, skipStatement()); 
+	}
+    } finally {
+	setAtRule(old);
+    }
+}
+
+Vector pageContent() :
+{ CssProperty prop;
+    Vector v = new Vector();
+}
+{
+    // <CSS3> ?? FIXME
+    v=prefAtRule() { return v;}
+    // </CSS3>
+    |
+    v=declarations() { return v;} /* FIXME moved here as it can match empty string */
+}
+
+Vector prefAtRule() :
+{ Token n; 
+    Vector v;
+}
+{
+    try {
+        (n=<ATTOP> | n=<ATBOTTOM> | n=<ATLEFT> | n=<ATRIGHT> ) ( <S> )*
+	    <LBRACE> ( <S> )* v=declarations() <RBRACE> ( <S> )* 
+	    {
+		return v;
+	    }
+    } catch (ParseException e) {
+	addError(e, skipStatement());
+    }
+}
+
+void pseudo_page(AtRulePage page) :
+{ Token n; }
+{
+    ":" n=<IDENT> ( <S> )*
+    { 
+	try {
+	    page.setName(":" + convertIdent(n.image), ac); 
+	} catch (InvalidParamException e) {
+	    throw new InvalidParamException("pseudo", n.image, ac );
+	    /*CssError error = new CssError(getSourceFile(), getLine(), e);
+	      ac.getFrame().addError(error);	*/
+	}
+    }
+}
+
+void fontFace() :
+{
+    Vector v;
+    AtRule old = getAtRule();
+    setAtRule(new AtRuleFontFace());
+    CssSelectors s = new CssSelectors(ac);
+    s.setAtRule(getAtRule());
+}
+{
+    try {
+	<FONT_FACE_SYM> ( <S> )* 
+	    {
+		if (ac.getCssVersion().equals("css1")) {
+		    skipStatement();
+		    addError(new InvalidParamException("noatruleyet", "", ac),
+			     getAtRule().toString());
+		}
+		if (!ac.getCssVersion().equals("css1")) {
+		    newAtRule(getAtRule());	
+		}
+
+	    }
+	<LBRACE> ( <S> )* v=declarations() <RBRACE> ( <S> )*
+	     {
+		 if (!ac.getCssVersion().equals("css1")) {
+		     addProperty(v);
+		     endOfRule();
+		     endOfAtRule();
+		 }
+		 if (v == null) {
+		     ac.getFrame().addWarning("no-declaration");
+		 } else {
+		     handleRule(s, v);
+		 }
+	     }
+    } catch (ParseException e) {
+	if (!ac.getCssVersion().equals("css1")) {
+	    addError(e, skipStatement()); 
+        }
+    } finally {
+	setAtRule(old);
+    }
+}
+
+void colorprofile() :
+{
+    Vector v;
+    AtRule old = getAtRule();
+    setAtRule(new AtRuleColorProfile());
+    CssSelectors s = new CssSelectors(ac);
+    s.setAtRule(getAtRule());
+}
+{
+    try {
+	<COLOR_PROFILE> ( <S> )*
+	    {
+		if (!ac.getCssVersion().equals("svg")) {
+		    skipStatement();
+		    addError(new InvalidParamException("onlysvg", "", ac),
+			     getAtRule().toString());
+		}
+		if (ac.getCssVersion().equals("svg")) {
+		    newAtRule(getAtRule());	
+		}
+
+	    }
+	<LBRACE> ( <S> )* v=declarations() <RBRACE> ( <S> )*
+	     {
+		 if (ac.getCssVersion().equals("svg")) {
+		     addProperty(v);
+		     endOfRule();
+		     endOfAtRule();
+		 }
+
+		 if (v == null) {
+		     //ac.getFrame().addWarning("medialist");
+		 } else {
+		     handleRule(s, v);  
+		 }
+	     }
+    }
+    catch (ParseException e) {
+	if (ac.getCssVersion().equals("svg")) {
+            addError(e, skipStatement());
+	}
+    } finally {
+	setAtRule(old);
+    }
+}
+
+
+void preference() :
+{
+    Vector v;
+    AtRule old = getAtRule();
+    setAtRule(new AtRulePreference());
+    CssSelectors s = new CssSelectors(ac);
+    s.setAtRule(getAtRule());
+}
+{
+    try {
+	<PREF_SYM> ( <S> )*
+	    {
+		if (ac.getCssVersion().equals("css1")) {
+		    skipStatement();
+		    addError(new InvalidParamException("noatruleyet", "", ac),
+			     getAtRule().toString());
+		}
+		if (!ac.getCssVersion().equals("css1")) {
+		    newAtRule(getAtRule());	
+		}
+
+	    }
+	<LBRACE> ( <S> )* v=declarations() <RBRACE> ( <S> )*
+	     {
+		 if (!ac.getCssVersion().equals("css1")) {
+		     addProperty(v);
+		     endOfRule();
+		     endOfAtRule();
+		 }
+
+		 if (v == null) {
+		     ac.getFrame().addWarning("medialist");
+		 } else {
+		     handleRule(s, v);  
+		 }
+	     }
+    }
+    catch (ParseException e) {
+	if (!ac.getCssVersion().equals("css1")) {
+            addError(e, skipStatement());
+	}
+    } finally {
+	setAtRule(old);
+    }
+}
+
+void phoneticAlphabet() :
+{
+    Vector v;
+    AtRule old = getAtRule();
+    AtRulePhoneticAlphabet alphabetrule = new AtRulePhoneticAlphabet();
+    setAtRule(alphabetrule);
+    Token n;
+}
+{
+    try {
+	<PHONETIC_ALPHABET_SYM> ( <S> )* n=<STRING> ( <S> )* ";"
+	    {
+		if (!ac.getCssVersion().equals("css3")) {
+		    skipStatement();
+		    addError(new InvalidParamException("noatruleyet", "", ac),
+			     getAtRule().toString());
+		}
+
+		alphabetrule.addAlphabet(convertIdent(n.image), ac);
+
+		if (!ac.getCssVersion().equals("css1") && !ac.getCssVersion().equals("css2")) {
+		    newAtRule(getAtRule());	
+		}
+        
+	    }
+    } catch (ParseException e) {
+	if (!ac.getCssVersion().equals("css1")) {
+	    addError(e, skipStatement()); 
+        }
+    } finally {
+	setAtRule(old);
+    }
+}
+
+/**
+ * @exception ParseException exception during the parse
+ */
+void atRuleDeclaration() :
+{Token n;}
+{
+    n=<ATKEYWORD>
+	{
+	    //ac.getFrame().addWarning("at-rule", token.toString());
+	    ac.getFrame().addError(
+		          new CssError(new InvalidParamException("at-rule", 
+								 token, ac)));
+	    skipStatement();
+	}
+}
+
+/**
+ * @exception ParseException exception during the parse
+ */
+void operator(CssExpression expr) :
+{}
+{
+  ( ( <DIV> { if (expr.getCount() > 0) expr.setOperator('/'); }
+    | <COMMA> { if (expr.getCount() > 0) expr.setOperator(','); }
+    ) ( <S> )* )?
+}
+
+/**
+ * @exception ParseException exception during the parse
+ */
+char combinator() :
+{
+    char connector = ' ';
+}
+{
+    ( (   <PLUS> { connector = '+' ; }
+        | <GREATER> { connector = '>' ; }
+        | <TILDE> { connector = '~' ; }
+      ) ( <S> )* 
+    | ( <S> )+ { connector = ' ' ; }
+    )
+    {
+	return connector;
+    }
+}
+
+/**
+ * @exception ParseException exception during the parse
+ */
+char unaryOperator() :
+{}
+{
+    // FIXME <MINUS> | <PLUS> ? warning as <PLUS> is <_W>? "+"
+    "-" { return '-'; }
+    | <PLUS> { return '+'; }
+}
+
+/**
+ * @exception ParseException exception during the parse
+ */
+String property() :
+{Token n; }
+{
+    n=<IDENT> ( <S> )* { currentProperty = convertIdent(n.image); 
+			 return currentProperty; }
+}
+
+/**
+ * @exception ParseException exception during the parse
+ */
+void ruleSet() :
+{ CssSelectors contextual;
+    Vector<CssSelectors> context_set = new Vector<CssSelectors>();
+    Vector<CssProperty> value_set = null;
+    currentContext = context_set;
+}
+{
+    try {
+	contextual=selector()
+	    { 
+		if (contextual != null) {
+		    context_set.addElement(contextual); 
+		}
+	    }
+	
+	( <COMMA> ( <S> )*
+	  contextual=selector()
+	    { 
+		if (contextual != null) {
+		    context_set.addElement(contextual); 
+		}
+	    }  
+	  )*
+	    <LBRACE> {
+	    validSelector = (context_set.size() > 0);
+	}
+	( <S> )*
+	    value_set=declarations()
+	    <RBRACE> ( <S> )*
+	    {
+		markRule = true;
+		
+		/*      if (value_set == null) {
+			ac.getFrame().addWarning("no-declaration");
+			} else {*/
+		if (value_set != null) {
+		    boolean first = true;
+		    CssSelectors sel = null;
+		    Enumeration<CssSelectors> e = context_set.elements();
+		    while (e.hasMoreElements()) {
+			sel = e.nextElement();
+			if (first) {
+			    handleRule(sel, value_set);
+			    first = false;
+			} else {
+			    // we need to duplicate properties in that case
+			    // as property holds reference to the selectors and it interact
+			    // badly with conflict detection
+			    int vsize = value_set.size();
+			    Vector<CssProperty> v = new Vector<CssProperty>(vsize);
+			    for (int i=0; i<vsize; i++) {
+				v.addElement(value_set.elementAt(i).duplicate());
+			    }
+			    handleRule(sel, v);
+			}
+		    }
+		    setSelectorList(context_set);
+		    endOfRule();
+		}
+		currentContext = null;
+	    }
+    } catch (ParseException e) {
+	if (ac.getProfile() != null) {
+	    if (!ac.getProfile().equals("mobile") && !context_set.isEmpty()) {
+		addError(e, skipStatement()); 
+	    }
+	}
+    } catch (TokenMgrError e) {
+	addError(new ParseException(e.getMessage()), skipStatement());
+    }
+}
+
+Vector<CssProperty> declarations() :
+{
+    if(!validSelector) {        
+        validSelector = true;
+        skip_to_matching_brace();
+        return null;
+    }
+
+    CssProperty values;
+    Vector<CssProperty> value_set   = new Vector<CssProperty>();
+    boolean wrong_value = true;
+}
+{    
+    ( values=declaration() 
+	{ if (values != null) {
+		value_set.addElement(values);
+		wrong_value = false;
+	    } /* else {
+		 wrong_value = true;
+		 } */
+	  currentProperty = null;
+	}
+      )? 
+	( ";" ( <S> )*
+	  ( values=declaration() 
+	      { if (values != null) {
+		      value_set.addElement(values);
+		      wrong_value = false;
+		  }/* else {
+		      wrong_value = true;
+		      }*/
+		currentProperty = null;
+	      }
+	      )? )* 
+	{  	
+	    if (!wrong_value) {
+		addProperty(value_set);
+		return value_set; 
+	    } else {
+		return null;
+	    }
+	}
+}
+
+/**
+ * @exception ParseException exception during the parse
+ */
+CssSelectors selector() :
+{   char comb;
+    CssSelectors current; }
+{
+    try {
+	current=simple_selector(null) 
+	    (  
+	      comb=combinator() { 
+		if (ac.getProfile() != null) {
+		    if (ac.getProfile().equals("mobile") || 
+			getAtRule().toString().equals("@media atsc-tv") ||
+			ac.getCssVersion().equals("css1")) {
+			if (comb == '+')
+			    throw new InvalidParamException("nocomb", "+", ac);
+			if (comb == '>')
+			    throw new InvalidParamException("nocomb", ">", ac);
+		    } else if (ac.getProfile().equals("tv")) {
+			if (comb == '+')
+			    throw new InvalidParamException("nocomb", "+", ac);
+		   
+		    }
+		}
+		if (!ac.getCssVersion().equals("css3")) {
+		    if (comb == '~') {
+			throw new InvalidParamException("nocomb", "~", ac);
+		    }
+		}
+		switch(comb) {
+		case '+': 
+		current.addAdjacentSibling(new AdjacentSiblingSelector());
+		break;
+		case '>':
+		current.addChild(new ChildSelector());
+		break;
+		case '~':
+		current.addGeneralSibling(new GeneralSiblingSelector());
+		break;
+		default:
+		current.addDescendant(new DescendantSelector());
+		}                  
+		//current.setConnector(comb); 
+	    }
+	      current=simple_selector(current) 
+	      )* 
+	    { return current; }
+    }
+    catch (InvalidParamException ie) {    
+	//	skipStatement();
+	//	removeThisRule();
+	ac.getFrame().addError(new CssError(ie));
+	Token t = getToken(1);
+	StringBuilder s = new StringBuilder();
+	s.append(getToken(0).image);
+	// eat until , { or EOF
+	while ((t.kind != COMMA) && (t.kind != LBRACE) && (t.kind != EOF)) {
+	    s.append(t.image);
+	    getNextToken();
+	    t = getToken(1);
+	}
+	return null;
+    }
+    catch (ParseException e) {
+	//	validSelector = false;
+	Token t = getToken(1);
+	StringBuilder s = new StringBuilder("[");
+	s.append(getToken(0).image);
+	// eat until , { or EOF
+	while ((t.kind != COMMA) && (t.kind != LBRACE) && (t.kind != EOF)) {
+	    s.append(t.image);
+	    getNextToken();
+	    t = getToken(1);
+	}
+	s.append(']');
+	//	if (validSelector) {
+	addError(e, s.toString());
+	    //	} else {
+	    //  addError(e,"");
+	    //	}
+	validSelector = true;
+	return null;    	
+    }
+}
+
+/**
+ * I made this rule to parse a selector from a document. Combinator are avoid.
+ * @exception ParseException exception during the parse
+ */
+CssSelectors externalSelector() :
+{
+    CssSelectors current; }
+{
+    current=simple_selector(null) 
+	( ( <S> )+
+	  current=simple_selector(current) 
+	  )*
+	{ return current; }
+}
+
+/**
+ * @exception ParseException exception during the parse
+ */
+CssSelectors simple_selector(CssSelectors next) :
+{ CssSelectors selector = new CssSelectors(ac, next);
+    selector.setAtRule(getAtRule());
+    //selector.setUserMedium(getUserMedium());
+}
+{
+
+    element_name(selector) ( hash(selector) | _class(selector)
+			     | attrib(selector) | pseudo(selector) 
+			     | negation(selector) )*
+	{   
+	    return selector;
+	}
+    | ( hash(selector) | _class(selector) | attrib(selector) 
+	| pseudo(selector) | negation(selector) )+ 
+	{
+	    return selector;
+	}
+}
+
+/**
+ * @exception ParseException exception during the parse
+ */
+void _class(CssSelectors s) :
+{Token n; }
+{
+    /*  "." n=<IDENT> { */
+    n=<CLASS> {
+	try {
+	    s.addClass(new ClassSelector(convertClassIdent(n.image.substring(1))));
+	    //        s.addAttribute("class", convertIdent(n.image.substring(1)),
+	    //           CssSelectors.ATTRIBUTE_CLASS_SEL);
+	} catch (InvalidParamException e) {
+	    //	    removeThisRule();
+	     ac.getFrame().addError(new CssError(e));
+	    throw new ParseException(e.getMessage());
+	}
+    } 
+    /* FIXME <DOT> n=deprecated_class() ... ?? (DONE-> to be tested) */ 
+    | ( n=deprecated_class() ) {
+	if (n.image.charAt(0) == '.') {
+	    n.image = n.image.substring(1);
+          
+	    // the class with the first digit escaped
+	    String cl = "."+hexEscapeFirst(n.image);
+
+	    String profile = ac.getProfile();
+	    if(profile == null || profile.equals("") || profile.equals("none")) {
+		profile = ac.getCssVersion(); 
+	    }     
+          
+	    if(!profile.equals("css1")) {
+		StringBuilder sb = new StringBuilder();
+		Vector<String> param_err = new Vector<String>(2);
+		param_err.add(n.image);
+		param_err.add(cl);
+		sb.append(ac.getMsg().getString("parser.old_class", param_err));
+		throw new ParseException(sb.toString());
+		//		s.addClass(new ClassSelector(n.image));                            
+		// removeThisRule();              
+	    }
+	    else {
+		CssLength length = new CssLength();
+		boolean isLength = false;
+		try {              
+		    length.set(n.image, ac);
+		    isLength = true;               
+		}
+		catch(Exception e) {
+		    isLength = false;              
+		}
+		if(isLength) {
+		    StringBuilder sb = new StringBuilder();
+		    sb.append(ac.getMsg().getString("parser.class_dim"));
+		    sb.append(n.image);
+		    throw new ParseException(sb.toString());
+		    //		    s.addClass(new ClassSelector(n.image));                            
+		    // removeThisRule();
+		}        
+		else {
+		    try {
+			// for css > 1, we add the rule to have a context, 
+			// and we then remove it
+			s.addClass(new ClassSelector(n.image));
+			ac.getFrame().addWarning("old_class");              
+		    } catch (InvalidParamException e) {
+			throw new ParseException(e.getMessage());
+			//ac.getFrame().addError(new CssError(e));
+			//removeThisRule();
+		    }
+		}
+	    }
+	} else {
+	    throw new ParseException("Unrecognized ");
+	}
+    }
+}
+
+Token deprecated_class() :
+{
+    Token n;
+}
+{
+    ( n=<LENGTH>
+    | n=<EMS> 
+    | n=<EXS> 
+    | n=<ANGLE>
+    | n=<TIME> 
+    | n=<FREQ> 
+    | n=<RESOLUTION>
+    | n=<DIMEN> )
+    { 
+	return n;
+    }
+}
+
+/**
+ * @exception ParseException exception during the parse
+ */
+void element_name(CssSelectors s) :
+{
+    Token n=null;
+    Token p=null;
+    String prefix = null;
+}
+{
+    ( LOOKAHEAD(2) (n=<IDENT> | n=<ANY>)? p="|" )? {
+	// FIXME namespace, check versions of CSS in a better way.
+	if (p != null) {
+	    if (!ac.getCssVersion().equals("css3")) {
+		StringBuilder sb = new StringBuilder("namespace \"");
+		if (n != null) sb.append(n.toString());
+		sb.append("\"");
+		ac.getFrame().addError(new CssError(new 
+					  InvalidParamException("notversion",
+								"namespace",
+							    ac.getCssVersion(),
+								ac)));
+		removeThisRule();
+	    } else if (n!=null) {
+		prefix = convertIdent(n.image);
+		if (!ac.isNamespaceDefined(getURL(), prefix)) {
+		    // ns is not defined
+		    addError(new ParseException("Undefined namespace"), 
+			     ": The namespace \""+prefix
+			     +"\" is not defined. "
+			     + prefix );
+		    removeThisRule();
+		}
+	    } else {
+		prefix = "";
+	    }
+	}
+    }
+    ( n=<IDENT> { //              s.setElement(convertIdent(n.image), ac);
+	s.addType(new TypeSelector(prefix, convertIdent(n.image)));
+    }
+    | <ANY> { 
+        if (!ac.getCssVersion().equals("css1")) {
+	    //          s.setElement(null);
+            s.addUniversal(new UniversalSelector(prefix));
+        } else {
+	    ac.getFrame().addError(new CssError(new InvalidParamException("notversion",
+									  "*", ac.getCssVersion(), ac)));
+	}
+    }
+	)
+}
+
+/**
+ * @exception ParseException exception during the parse
+ */
+void attrib(CssSelectors s) :
+{
+    Token att = null;
+    Token val = null;
+    int selectorType = CssSelectors.ATTRIBUTE_ANY;
+}
+{
+    <LBRACKET> ( <S> )* att=<IDENT> ( <S> )*
+	( (<EQ> { selectorType = CssSelectors.ATTRIBUTE_EXACT; }
+        | <INCLUDES> { selectorType = CssSelectors.ATTRIBUTE_ONE_OF; }
+	| <DASHMATCH> { selectorType = CssSelectors.ATTRIBUTE_BEGIN; }
+	| <PREFIXMATCH> { selectorType = CssSelectors.ATTRIBUTE_START; }
+	| <SUFFIXMATCH> { selectorType = CssSelectors.ATTRIBUTE_SUFFIX; }
+	| <SUBSTRINGMATCH> { selectorType = CssSelectors.ATTRIBUTE_SUBSTR; }
+	 ) ( <S> )* 
+	 ( val=<IDENT> 
+	     { val.image = convertIdent(val.image); }
+	   | val=<STRING> 
+	       { val.image = convertStringIndex(val.image, 1, val.image.length() -1, false);} 
+	   ) 
+	   ( <S> )* )?
+  <RBRACKET>
+      {
+	  if ("css1".equals(ac.getCssVersion())) {
+	      StringBuilder reason;
+	      CssParseException cp;
+	      ParseException p;
+	      reason = new StringBuilder(" [");
+	      if (att != null) {
+		  reason.append(convertIdent(att.image));
+	      }
+	      if (val != null ) {
+		  reason.append('=').append(val.image);
+	      }
+	      reason.append(']');
+	      p = new ParseException(ac.getMsg().getString("parser.attrcss1")+
+				     reason.toString());
+	      cp = new CssParseException(p);
+	      ac.getFrame().addError(new CssError(cp));
+	      removeThisRule();
+	  }
+	  if (selectorType == CssSelectors.ATTRIBUTE_ANY) {
+	      try {
+		  s.addAttribute(new AttributeAny(att.image.toLowerCase()));
+//                s.addAttribute(att.image.toLowerCase(), null, selectorType);
+              } catch (InvalidParamException e) {
+	          removeThisRule();
+	          ac.getFrame().addError(new CssError(e));
+              }
+	  } else {
+	      AttributeSelector attribute;
+              switch(selectorType) {
+              case CssSelectors.ATTRIBUTE_BEGIN:
+        	  attribute = new AttributeBegin(att.image.toLowerCase(),
+        		  val.image);
+        	  break;
+              case CssSelectors.ATTRIBUTE_EXACT:
+        	  attribute = new AttributeExact(att.image.toLowerCase(),
+        		  val.image);
+        	  break;
+              case CssSelectors.ATTRIBUTE_ONE_OF:
+        	  attribute = new AttributeOneOf(att.image.toLowerCase(),
+        		  val.image);
+        	  break;
+              case CssSelectors.ATTRIBUTE_START:
+        	  attribute = new AttributeStart(att.image.toLowerCase(),
+        		  val.image);
+        	  break;
+              case CssSelectors.ATTRIBUTE_SUBSTR:
+        	  attribute = new AttributeSubstr(att.image.toLowerCase(),
+        		  val.image);
+        	  break;
+              case CssSelectors.ATTRIBUTE_SUFFIX:
+        	  attribute = new AttributeSuffix(att.image.toLowerCase(),
+        		  val.image);
+        	  break;
+              default:
+        	  attribute = new AttributeExact(att.image.toLowerCase(),
+        		  val.image);
+              	  break;
+              }
+	      try {
+		  s.addAttribute(attribute);
+//	      	  s.addAttribute(att.image.toLowerCase(), val.image, 
+//			     selectorType);
+	      } catch (InvalidParamException e) {
+	     	  removeThisRule();
+	          ac.getFrame().addError(new CssError(e));
+      	      } 
+	  }
+      }
+}
+
+void negation(CssSelectors s) :
+{
+    Token n;
+    CssSelectors ns = new CssSelectors(ac, null);
+}
+{ // S* negation_arg S* ')'
+    // type_selector | universal | HASH | class | attrib | pseudo
+
+    <FUNCTIONNOT> ( <S> )*
+	(
+	 element_name(ns) |
+	 hash(ns) | 
+	 _class(ns) |
+	 attrib(ns) | 
+	 pseudo(ns)
+	 )
+	( <S> )* <LPARAN>
+	{ 
+	    s.setPseudoFun("not", ns.toString());
+	}
+}
+
+/**
+ * @exception ParseException exception during the parse
+ */
+void pseudo(CssSelectors s) :
+{Token n;
+Token language = null;
+CssExpression param = null;
+}
+{
+    <PSEUDOELEMENT_SYM> ( ( n=<IDENT>
+	{ 
+	    try {
+		if (ac.getCssVersion().equals("css3")) {
+		    s.addPseudoElement(convertIdent(n.image).toLowerCase());
+		} else {
+		    throw new InvalidParamException("pseudo-element",
+						    "::" + convertIdent(n.image).toLowerCase() ,
+						    ac.getCssVersion() ,ac);
+		}
+	    } catch(InvalidParamException e) {
+		//	removeThisRule();
+		//		ac.getFrame().addError(new CssError(e));
+		validSelector = false;
+		throw new ParseException(e.getMessage());
+	    }
+	} ) )
+	|  
+	<COLON> ( ( n=<IDENT>
+	    { 
+		try {
+		    s.addPseudoClass(convertIdent(n.image).toLowerCase());
+		} catch(InvalidParamException e) {
+		    removeThisRule();
+		    ac.getFrame().addError(new CssError(e));
+		}
+	    } )
+		  // FXIXME rewrite to make :lang( use a special case
+		  | ( ( n=<FUNCTIONLANG> ( <S> )* (language=<NUMBER> | language=<IDENT> | language=<STRING> ) ( <S> )* ) {
+		try {
+		    s.setPseudoFun(convertStringIndex(n.image, 0,
+						      n.image.length() -1, false).toLowerCase(),
+				   convertIdent(language.image));
+		} catch(InvalidParamException e) {
+			removeThisRule();
+			ac.getFrame().addError(new CssError(e));
+		}
+	    }
+	    | ( n=<FUNCTION> ( <S> )* param=expression() ) {
+		try {
+		    s.setPseudoFun(convertStringIndex(n.image, 0,
+						      n.image.length() -1, 
+						      false).toLowerCase(),
+				   param.toString());
+		} catch(InvalidParamException e) {
+		    removeThisRule();
+		    ac.getFrame().addError(new CssError(e));
+		} 
+	    }
+	    ) <LPARAN>
+	    )
+}
+
+/**
+ * @exception ParseException exception during the parse
+ */
+void hash(CssSelectors s) :
+{Token n; }
+{
+  n=<HASHIDENT>  {
+      n.image = n.image.substring(1);
+      if(Character.isDigit(n.image.charAt(0))) { 
+	  String profile = ac.getProfile();
+	  if(profile == null || profile.equals("") || profile.equals("none")) {
+	      profile = ac.getCssVersion(); 
+	  }     
+	  
+	  if(!profile.equals("css1")) {
+	      // the id with the first digit escaped
+	      String cl = "\\" + Integer.toString(n.image.charAt(0), 16);
+	      cl += n.image.substring(1);
+	      
+	      addError(new ParseException(ac.getMsg().getString(
+	      	"parser.old_id")),
+	      	"To make \"." + n.image + "\" a valid id, CSS2" +
+	      	" requires the first digit to be escaped " +
+	      	"(\"#" + cl + "\")");
+	      // for css > 1, we add the rule to have a context, 
+	      // and we then remove it
+	      s.addId(new IdSelector(n.image));                            
+	      removeThisRule();              
+	  }
+	  else {
+	      CssLength length = new CssLength();
+	      boolean isLength = false;
+	      try {              
+		  length.set(n.image, ac);
+		  isLength = true;               
+	      }
+	      catch(Exception e) {
+		  isLength = false;              
+	      }
+	      if(isLength) {
+		  addError(new ParseException(ac.getMsg().getString(
+		  "parser.id_dim")), n.image);
+		  // we add the rule to have a context, and then we remove it
+		  s.addId(new IdSelector(n.image));                            
+		  removeThisRule();
+	      }        
+	      else {
+		  try {
+		      s.addId(new IdSelector(n.image));      
+		      ac.getFrame().addWarning("old_id");              
+		  } catch (InvalidParamException e) {
+		      ac.getFrame().addError(new CssError(e));
+		      removeThisRule();
+		  }
+	      }
+	  }
+      }
+      else {
+	  try {
+	      s.addId(new IdSelector(n.image));             
+	  } catch (InvalidParamException e) {
+	      ac.getFrame().addError(new CssError(e));
+	      removeThisRule();
+	  }
+      }
+  }
+  | n=<HASH> {
+      throw new ParseException(ac.getMsg().getString("parser.invalid_id_selector"));	 
+  }
+}
+
+/**
+ * @exception ParseException exception during the parse
+ */
+CssProperty mediadeclaration() :
+{ String string_property;
+  CssExpression values = null;
+  boolean important = false;
+  setMediaDeclaration("on");
+}
+{
+try {
+      string_property=property() (":" ( <S> )* 
+      values=expr() ( important=prio() )? )?
+    {
+	
+	try {
+	
+	    setImportant(important);
+	
+	    if (incompatible_error) {
+		throw new InvalidParamException("notforcss1", "inherit", ac);
+	    }
+
+	    CssProperty p = handleDeclaration(string_property.toLowerCase(),
+						  values, important);
+	    return p;
+	    	    
+	} catch (InvalidParamException e) {
+		incompatible_error = false;
+		if (null != values) {
+			values.starts();
+		}
+		addError(e, (CssExpression) values);
+	}
+	return null;
+    }
+ } catch (NumberFormatException e) {
+     skipAfterExpression(e);
+     return null;
+ } catch (ParseException e) {
+     skipAfterExpression(e);
+     return null;
+ } finally {
+     setMediaDeclaration("off");
+ }
+}
+
+
+/**
+ * @exception ParseException exception during the parse
+ */
+CssProperty declaration() :
+{ String string_property;
+  CssExpression values;
+  boolean important = false;
+}
+{
+try {
+     string_property=property() ":" ( <S> )* 
+      values=expr() ( important=prio() )?
+    {
+	try {
+	
+	    setImportant(important);
+	
+	    if (incompatible_error) {
+		throw new InvalidParamException("notforcss1", "inherit", ac);
+	    }
+
+	    if (values.getCount() != 0) {
+		CssProperty p = handleDeclaration(string_property.toLowerCase(),
+						  values, important);
+		// Did the property recognize all values in the expression ?
+
+		if (!values.end() && ac.getMedium() == null) {
+		        addError(new InvalidParamException("unrecognize", "", ac),
+			     values);
+		} else {
+		    // ok, return the new property
+		    return p;
+		}
+	    }
+	} catch (InvalidParamException e) {
+		incompatible_error = false;
+		values.starts();
+		addError(e, (CssExpression) values);
+	}
+	return null;
+    }
+ } catch (NumberFormatException e) {
+     skipAfterExpression(e);
+     return null;
+ } catch (ParseException e) {
+     skipAfterExpression(e);
+     return null;
+ } catch (NullPointerException e) {
+	// NullPointerException happen if in handling a property
+	// something bad happen (like setting values on sub properties
+	// that had not been initialized (for an unknown reason yet).
+     skipAfterExpression(e);
+     return null;
+  }
+}
+
+/**
+ * @exception ParseException exception during the parse
+ */
+boolean prio() :
+{}
+{
+  <IMPORTANT_SYM> ( <S> )* { return true; }
+}
+
+CssExpression expression() :
+{
+    CssExpression exp = new CssExpression();
+    char operator = ' ';
+    Token n = null;
+}
+{
+    ( ( <PLUS> { operator = '+' ; } 
+	| <MINUS> { operator = '-'; }
+	| n=<NUMBER> { setValue(new CssNumber(), exp, operator, n, NUMBER); }
+	// FIXME dimen should be a CssDimension()
+	| n=<DIMEN> { setValue(new CssIdent(), exp, operator, n, IDENT); } 
+	| n=<STRING> { setValue(new CssString(), exp, operator, n, STRING); } 
+	| n=<IDENT> { setValue(new CssIdent(), exp, operator, n, IDENT); } 
+	) ( <S> )* )+
+   { return exp; }
+}     
+/**
+ * @exception ParseException exception during the parse
+ */
+CssExpression expr() :
+{
+  CssExpression values = new CssExpression();
+}
+{
+  term(values) ( operator(values) term(values) )*
+  { return values; }
+}
+
+/**
+ * @exception ParseException exception during the parse
+ */
+void term(CssExpression exp) :
+{ Token n;
+  char operator = ' ';
+  CssValue func;
+}
+{
+  ( ( operator=unaryOperator() )?
+    ( n=<NUMBER> { setValue(new CssNumber(), exp, operator, n, NUMBER); }
+    | n=<PERCENTAGE> { setValue(new CssPercentage(), exp, operator, n, 
+				PERCENTAGE); }
+    | n=<LENGTH> { setValue(new CssLength(), exp, operator, n, LENGTH); }
+    | n=<EMS> { setValue(new CssLength(), exp, operator, n, EMS); }
+    | n=<EXS> { setValue(new CssLength(), exp, operator, n, EXS); }
+    | n=<ANGLE> { setValue(new CssAngle(), exp, operator, n, ANGLE);}
+    | n=<TIME> { setValue(new CssTime(), exp, operator, n, TIME); }
+    | n=<FREQ> { setValue(new CssFrequency(), exp, operator, n, FREQ); }
+    | n=<RESOLUTION> { setValue(new CssResolution(), exp, operator, n, RESOLUTION); }
+    | n=<DATE> { setValue(new CssDate(), exp, operator, n, DATE); }
+    | n=<DIMEN> {  
+	  addError(new ParseException(ac.getMsg().getString("parser.unknown-dimension")), n.image); }    
+    | func=function() { setValue(func, exp, operator, null, FUNCTION); }
+      ) ( <S> )* )
+  | (( n=<STRING> { setValue(new CssString(), exp, operator, n, STRING); }
+    | n=<IDENT> 
+    {
+	/*
+	 * Common error :
+	 * H1 {
+	 *   color : black
+	 *   background : white
+	 * }
+	 */
+	Token t = getToken(1);
+	Token semicolon = new Token();
+	semicolon.kind = SEMICOLON;
+	semicolon.image = ";";
+	if (t.kind == COLON) {
+	    /* @@SEEME. (generate a warning?) */
+	    /* @@SEEME if expression is a single ident, 
+	       generate an error ? */
+	    addError(new ParseException(ac.getMsg().getString("parser.semi-colon")),
+		     (CssExpression) null);
+	    rejectToken(semicolon);
+	} else {
+	    setValue(new CssIdent(), exp, operator, n, IDENT);
+	}
+    }
+    | hexcolor(exp)
+    | n=<URL> { 
+	CssURL _u = new CssURL();
+	_u.set(n.image, ac, url);
+	exp.addValue(_u);
+      }
+    | n=<UNICODERANGE> { setValue(new CssUnicodeRange(), exp, operator, n, 
+				UNICODERANGE); }
+    ) ( <S> )* )
+}
+
+/**
+ * @exception ParseException exception during the parse
+ */
+CssValue function() :
+{Token n;
+ CssExpression exp;
+ org.w3c.css.values.CssColor color = new org.w3c.css.values.CssColor();
+ org.w3c.css.values.ATSCColor colorATSC = new org.w3c.css.values.ATSCColor();
+}
+{
+    n=<FUNCTION> ( <S> )* exp=expr() 
+    ")" { 
+	String funcname = n.image.toLowerCase();
+	if (funcname.equals("rgb(")) {
+	    if (!getAtRule().toString().equals("@media atsc-tv")) {
+	       color.setRGBColor(exp, ac);
+	       return color;
+            } else {
+	       colorATSC.setRGBColor(exp, ac);
+	       return colorATSC;
+            }
+	} else if (n.image.toLowerCase().equals("atsc-rgba(")) {
+	    if (getAtRule().toString().equals("@media atsc-tv")) {
+	        colorATSC.setATSCrgba(exp, ac);
+	        return colorATSC;
+	    } else {
+		addError(new InvalidParamException("onlyATSC", "", ac),
+						 getAtRule().toString());
+	        return null;
+	    }
+	} else {
+	    CssFunction f = new CssFunction();
+	    f.set(n.image.substring(0, n.image.length() - 1),
+		  exp);
+	    return f;
+	}
+    }
+}
+
+/**
+ * @exception ParseException exception during the parse
+ */
+void hexcolor(CssExpression exp) :
+{Token n; 
+}
+{
+    ( n=<HASHIDENT> | n=<HASH> ) { 
+     n.image = Util.strip(n.image);
+     setValue(new org.w3c.css.values.CssColor(), exp, ' ', n, HASH); 
+    }
+}
+
+/*
+ * @@SEEME EOF
+ */
+
+JAVACODE
+String skipStatement() {
+    StringBuilder s = new StringBuilder();
+    Token tok = getToken(0);
+    boolean first = true;
+
+    if (tok.image != null) {
+	s.append(tok.image);	
+    }
+    /* FIXME here, two option, we skip during an error, or outside
+       an error, currently both can fail with a TokenMgrError, should
+       we catch all, or only when filling message for errors? 
+       
+       -> taking the "always skip" approach.
+    */
+    while (true) {
+	try {
+	    tok = getToken(1);
+	    if (tok.kind == EOF) {
+		if (first) {
+		    return null;
+		} else {
+		    break;
+		}
+	    } 
+	    s.append(tok.image);
+	    if (tok.kind == LBRACE) {
+		getNextToken();
+		s.append(skip_to_matching_brace());
+		getNextToken();
+		tok = getToken(1);
+		break;
+	    } else if ((tok.kind == RBRACE) || (tok.kind == SEMICOLON)) {
+		getNextToken();
+		tok = getToken(1);
+		break;
+	    }
+	    getNextToken();
+	} catch (TokenMgrError tokenerror) {
+	    // read one char at a time, and loop
+	    try {
+	        s.append(jj_input_stream.readChar());
+	        continue;
+            } catch (java.io.IOException ioex) { 
+		return s.toString().trim();
+	    }
+	}
+	first = false;
+    }
+    
+    // skip white space
+    while (tok.kind == S) {
+	getNextToken();
+	tok = getToken(1);
+    }
+    String statement = s.toString().trim();
+    return statement;
+}
+
+JAVACODE
+String skip_to_matching_brace() {
+    StringBuilder s = new StringBuilder();
+    Token tok;
+    int nesting = 1;
+    /* FIXME
+       same as above */
+    while (true) {
+	tok = getToken(1);
+	if (tok.kind == EOF) {
+	    break;
+	}
+	s.append(tok.image);
+	if (tok.kind == LBRACE) {
+	    nesting++;
+	} else if (tok.kind == RBRACE) {
+	    nesting--;
+	    if (nesting == 0) {
+		break;
+	    }
+	}
+	getNextToken();
+    }
+    return s.toString();
+}
+
+/*
+ * @@HACK
+ * I can't insert a token into the tokens flow.
+ * It's jj_consume_token implementation dependant! :-(
+ */
+JAVACODE
+void rejectToken(Token t) {
+    Token fakeToken = new Token();
+    t.next = token;
+    fakeToken.next = t;
+    token = fakeToken;
+}
+
+/** skip after an expression
+ */
+JAVACODE
+void skipAfterExpression(Exception e) {
+    StringBuilder s = new StringBuilder();
+    s.append(getToken(0).image);
+    while (true) {
+	try {
+	    Token t = getToken(1);
+	    if (t.kind == LBRACE) {
+		s.append(t.image);
+		getNextToken();
+		s.append(skip_to_matching_brace());
+		getNextToken();
+		t = getToken(1);
+		continue;
+	    }
+	    if ((t.kind == SEMICOLON) || (t.kind == RBRACE) 
+		                      || (t.kind == EOF)) {
+		break;
+	    }
+	    s.append(t.image);
+	    getNextToken();
+	    t = getToken(1);
+	} catch (TokenMgrError tmerr) {
+	    try {
+		s.append(jj_input_stream.readChar());
+	        continue;
+	    } catch (java.io.IOException ioex) { 
+		ioex.printStackTrace();
+		break;
+	    }
+	}
+    }
+    String statement = s.toString().trim();
+    addError(e, s.toString()); 
+}
+
+JAVACODE
+String convertStringIndex(String s, int start, int len, boolean escapeFirst) {
+    int index = start;
+    int t;
+    int maxCount = 0;
+    if ((start == 0) && (len == s.length()) && (s.indexOf('\\') == -1)) {
+	return s;
+    }
+    StringBuilder buf = new StringBuilder(len);
+
+    while (index < len) {
+	char c = s.charAt(index);
+	if (c == '\\') {
+	    if (++index < len) {
+		c = s.charAt(index);
+		switch (c) {
+		case '0': case '1': case '2': case '3': case '4':
+		case '5': case '6': case '7': case '8': case '9':
+		case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
+		case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
+		    int numValue = Character.digit(c, 16);
+		    int count = 1;
+		    if (maxCount == 0) {
+			maxCount = (ac.getCssVersion().equals("css1") ? 
+				    4 : 6);
+		    }
+		    while (index + 1 < len) {
+			c = s.charAt(index+1);
+			t = Character.digit(c, 16);
+			if (t != -1 && count++ < maxCount) {
+			    numValue = (numValue<<4) | t;
+			    index++;
+			} else {
+			    if (c == ' ' || c == '\t' || 
+				c == '\n' || c == '\f' ) {
+				// skip the latest white space
+				index++;
+			    } else if ( c == '\r' ) {
+				index++;
+				// special case for \r\n
+				if (index+1 < len) {
+				    if (s.charAt(index + 1) == '\n') {
+					index++;
+				    }
+				}
+			    }
+			    break;
+			}
+		    }
+		    if (!escapeFirst && numValue < 255 && numValue>31) { 
+			if (! ( (numValue>96 && numValue<123) // [a-z]
+				|| (numValue>64 && numValue<91) // [A-Z]
+				|| (numValue>47 && numValue<58) // [0-9]
+				|| (numValue == 95) // _
+				|| (numValue == 45) // -
+				)
+			    ) {
+			    buf.append('\\');
+			}
+			buf.append((char) numValue);
+			break;
+		    }
+		    char b[] = new char[maxCount];
+		    t = maxCount;
+		    while (t > 0) {
+			b[--t] = hexdigits[numValue & 0xF];
+			numValue >>>= 4;
+		    }
+		    buf.append('\\').append(b);
+		    break;
+		case '\n':
+		case '\f':
+		    break;
+		case '\r':
+		    if (index + 1 < len) {
+			if (s.charAt(index + 1) == '\n') {
+			    index ++;
+			}
+		    }
+		    break;
+		case '-' : case '_' : case 'g' : case 'G' :
+		case 'h' : case 'H' : case 'i' : case 'I' :
+		case 'j' : case 'J' : case 'k' : case 'K' :
+		case 'l' : case 'L' : case 'm' : case 'M' :
+		case 'n' : case 'N' : case 'o' : case 'O' :
+		case 'p' : case 'P' : case 'q' : case 'Q' :
+		case 'r' : case 'R' : case 's' : case 'S' :
+		case 't' : case 'T' : case 'u' : case 'U' :
+		case 'v' : case 'V' : case 'w' : case 'W' :
+		case 'x' : case 'X' : case 'y' : case 'Y' :
+		case 'z' : case 'Z' : 
+		    buf.append(c);
+		    break;
+		default:
+		    buf.append('\\').append(c);
+		}
+	    } else {
+		throw new ParseException("invalid string");
+	    }
+	} else {
+	    buf.append(c);
+	}
+	escapeFirst = false;
+	index++;
+    }
+    return buf.toString();
+}
+
+JAVACODE
+String convertIdent(String s) {
+    return convertStringIndex(s, 0, s.length(), false);
+}
+
+JAVACODE
+String convertClassIdent(String s) {
+    return convertStringIndex(s, 0, s.length(), true);
+}
+
+JAVACODE
+String convertString(String s) {
+    return convertStringIndex(s, 0, s.length(), false);
+}
+
+JAVACODE 
+String hexEscapeFirst(String s) {
+    StringBuilder sb = new StringBuilder();
+    sb.append('\\').append(Integer.toString(s.charAt(0), 16));
+    char c = s.charAt(1);
+    if (((c >= '0') && (c <= '9')) || 
+	((c >= 'A') && (c <= 'F')) ||
+	((c >= 'a') && (c <= 'f'))) {
+	sb.append(' ');
+    }
+    sb.append(s.substring(1));
+    return sb.toString();
+}
+/*
+ * compile-command: javacc CssParser.jj & jc CssParser.java
+ */
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/parser/analyzer/CssParserConstants.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/parser/analyzer/CssParserTokenManager.class has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/parser/analyzer/Makefile	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,52 @@
+SRCS = CssGrammar.jj
+
+JRCS = $(SRCS:.jj=.java) Couple.java
+OBJS = $(JRCS:.java=.class)
+
+PACKAGE = CSS.Parser.Analyzer
+JAVAC = /usr/local/java11/bin/javac
+JAVADOC = javadoc
+JAVADOCFLAGS = -version -d docs -protected
+JAVACFLAGS =
+MAKEDEPEND = jmakedepend
+
+JAVACC_HOME = /u/www43/0/w3c/plehegar/Work/JavaCC
+
+.SUFFIXES: .class .java .jj
+.java.class:; $(JAVAC) $(JAVACFLAGS) $<
+
+
+all: $(OBJS)
+
+javadoc:; $(JAVADOC) $(JAVADOCFLAGS) $(PACKAGE)
+
+clean:; -rm -f $(OBJS) $(JRCS) *~ core
+
+depend:; $(MAKEDEPEND) $(JRCS)
+
+CssGrammar.java: CssGrammar.jj
+	( export CLASSPATH=$(JAVACC_HOME)/JavaCC.zip:$CLASSPATH ; $(JAVACC_HOME)/bin/javacc $< )
+
+# DO NOT DELETE THIS LINE -- make depend depends on it.
+Couple.class:: Couple.java\
+	/u/www43/0/w3c/plehegar/Work/Java/CSS/Values/CssExpression.class
+CssGrammar.class:: CssGrammar.java\
+	/usr/local/java11/lib/classes.zip\
+	/u/www43/0/w3c/plehegar/Work/Java/CSS/Values/CssValue.class\
+	/u/www43/0/w3c/plehegar/Work/Java/CSS/Values/CssExpression.class\
+	/u/www43/0/w3c/plehegar/Work/Java/CSS/Values/CssString.class\
+	/u/www43/0/w3c/plehegar/Work/Java/CSS/Values/CssURL.class\
+	/u/www43/0/w3c/plehegar/Work/Java/CSS/Values/CssLength.class\
+	/u/www43/0/w3c/plehegar/Work/Java/CSS/Values/CssNumber.class\
+	/u/www43/0/w3c/plehegar/Work/Java/CSS/Values/CssColor.class\
+	/u/www43/0/w3c/plehegar/Work/Java/CSS/Values/CssIdent.class\
+	/u/www43/0/w3c/plehegar/Work/Java/CSS/Values/CssPercentage.class\
+	/u/www43/0/w3c/plehegar/Work/Java/CSS/Values/CssFrequency.class\
+	/u/www43/0/w3c/plehegar/Work/Java/CSS/Values/CssTime.class\
+	/u/www43/0/w3c/plehegar/Work/Java/CSS/Values/CssAngle.class\
+	/u/www43/0/w3c/plehegar/Work/Java/CSS/Properties/CssProperty.class\
+	/u/www43/0/w3c/plehegar/Work/Java/CSS/Parser/Frame.class\
+	/u/www43/0/w3c/plehegar/Work/Java/CSS/Parser/CssError.class\
+	/u/www43/0/w3c/plehegar/Work/Java/CSS/Parser/CssSelectors.class\
+	/u/www43/0/w3c/plehegar/Work/Java/CSS/util/InvalidParamException.class\
+	/u/www43/0/w3c/plehegar/Work/Java/CSS/util/Util.class
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/parser/analyzer/ParseException.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/parser/analyzer/SimpleCharStream.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/parser/analyzer/Token.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/parser/analyzer/TokenMgrError.class has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/properties/ATSCProperties.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,211 @@
+# Paged properties
+@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
+@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
+
+# Font properties
+@font-face.font-style:            org.w3c.css.properties.font.FontStyle
+@font-face.font-variant:          org.w3c.css.properties.font.FontVariant
+@font-face.font-weight:           org.w3c.css.properties.font.FontWeight
+@font-face.font-size:             org.w3c.css.properties.font.FontSize
+@font-face.font-family:           org.w3c.css.properties.font.FontFamily
+@font-face.font-stretch:          org.w3c.css.properties.font.FontStretch
+@font-face.unicode-range:         org.w3c.css.properties.font.UnicodeRange
+#@font-face.units-per-em:          org.w3c.css.font.UnitsPerEm
+@font-face.src:                   org.w3c.css.properties.font.Src
+#@font-face.panose-1:              org.w3c.css.font.Panose1
+#@font-face.stemv:                 org.w3c.css.font.Stemv
+#@font-face.stemh:                 org.w3c.css.font.Stemh
+#@font-face.slope:                 org.w3c.css.font.Slope
+#@font-face.cap-height:            org.w3c.css.font.CapHeight
+#@font-face.x-hegiht:              org.w3c.css.font.XHeight
+#@font-face.widths:                org.w3c.css.font.Widths
+#@font-face.ascent:                org.w3c.css.font.Ascent
+#@font-face.descent:               org.w3c.css.font.Descent
+#@font-face.bbox:                  org.w3c.css.font.Bbox
+#@font-face.baseline:              org.w3c.css.font.Baseline
+#@font-face.centerline:            org.w3c.css.font.Centerline
+#@font-face.definition-src:        org.w3c.css.font.DefinitionSrc
+#@font-face.mathline:              org.w3c.css.font.Mathline
+#@font-face.topline:               org.w3c.css.font.Topline
+
+# ATSC
+
+atsc-dynamic-refresh        org.w3c.css.properties.atsc.ATSCDynamicRefresh
+atsc-nav-down       org.w3c.css.properties.atsc.ATSCNavDown
+atsc-nav-index      org.w3c.css.properties.atsc.ATSCNavIndex
+atsc-nav-left       org.w3c.css.properties.atsc.ATSCNavLeft
+atsc-nav-right      org.w3c.css.properties.atsc.ATSCNavRight    
+atsc-nav-up                 org.w3c.css.properties.atsc.ATSCNavUp
+font-style:            org.w3c.css.properties.css1.CssFontStyleCSS2
+font-variant:          org.w3c.css.properties.css1.CssFontVariantCSS2
+font-weight:           org.w3c.css.properties.css1.CssFontWeightCSS2
+font-size:             org.w3c.css.properties.css1.CssFontSizeCSS2
+font-family:           org.w3c.css.properties.css1.CssFontFamilyCSS2
+font:                  org.w3c.css.properties.css1.CssFontCSS2
+color:                 org.w3c.css.properties.atsc.ATSCColor
+background-color:      org.w3c.css.properties.atsc.CssBackgroundColorATSC
+background-image:      org.w3c.css.properties.atsc.CssBackgroundImageATSC
+background-repeat:     org.w3c.css.properties.atsc.CssBackgroundRepeatATSC
+background-attachment: org.w3c.css.properties.atsc.CssBackgroundAttachmentATSC
+background-position:   org.w3c.css.properties.atsc.CssBackgroundPositionATSC
+background:            org.w3c.css.properties.atsc.CssBackgroundATSC
+word-spacing:          org.w3c.css.properties.css1.CssWordSpacing
+letter-spacing:        org.w3c.css.properties.css1.CssLetterSpacing
+text-decoration:       org.w3c.css.properties.css1.CssTextDecoration
+vertical-align:        org.w3c.css.properties.css1.CssVerticalAlign
+text-transform:        org.w3c.css.properties.css1.CssTextTransform
+text-align:            org.w3c.css.properties.css1.CssTextAlign
+text-indent:           org.w3c.css.properties.css1.CssTextIndent
+line-height:           org.w3c.css.properties.css1.CssLineHeightCSS2
+margin-top:            org.w3c.css.properties.css1.CssMarginTop
+margin-bottom:         org.w3c.css.properties.css1.CssMarginBottom
+margin-left:           org.w3c.css.properties.css1.CssMarginLeft
+margin-right:          org.w3c.css.properties.css1.CssMarginRight
+margin:                org.w3c.css.properties.css1.CssMargin
+padding-top:           org.w3c.css.properties.css1.CssPaddingTop
+padding-bottom:        org.w3c.css.properties.css1.CssPaddingBottom
+padding-left:          org.w3c.css.properties.css1.CssPaddingLeft
+padding-right:         org.w3c.css.properties.css1.CssPaddingRight
+padding:               org.w3c.css.properties.css1.CssPadding
+border-top-width:      org.w3c.css.properties.atsc.CssBorderTopWidthATSC
+border-right-width:    org.w3c.css.properties.atsc.CssBorderRightWidthATSC
+border-left-width:     org.w3c.css.properties.atsc.CssBorderLeftWidthATSC
+border-bottom-width:   org.w3c.css.properties.atsc.CssBorderBottomWidthATSC
+border-top-color:      org.w3c.css.properties.atsc.CssBorderTopColorATSC
+border-right-color:    org.w3c.css.properties.atsc.CssBorderRightColorATSC
+border-left-color:     org.w3c.css.properties.atsc.CssBorderLeftColorATSC
+border-bottom-color:   org.w3c.css.properties.atsc.CssBorderBottomColorATSC
+border-top-style:      org.w3c.css.properties.atsc.CssBorderTopStyleATSC
+border-right-style:    org.w3c.css.properties.atsc.CssBorderRightStyleATSC
+border-left-style:     org.w3c.css.properties.atsc.CssBorderLeftStyleATSC
+border-bottom-style:   org.w3c.css.properties.atsc.CssBorderBottomStyleATSC
+border-width:          org.w3c.css.properties.atsc.CssBorderWidthATSC
+border-color:          org.w3c.css.properties.atsc.CssBorderColorATSC
+border-style:          org.w3c.css.properties.atsc.CssBorderStyleATSC
+border-top:            org.w3c.css.properties.atsc.CssBorderTopATSC
+border-right:          org.w3c.css.properties.atsc.CssBorderRightATSC
+border-left:           org.w3c.css.properties.atsc.CssBorderLeftATSC
+border-bottom:         org.w3c.css.properties.atsc.CssBorderBottomATSC
+border:                org.w3c.css.properties.atsc.CssBorderATSC
+width:                 org.w3c.css.properties.css1.CssWidth
+height:                org.w3c.css.properties.css1.CssHeight
+float:                 org.w3c.css.properties.css1.CssFloat
+clear:                 org.w3c.css.properties.css1.CssClear
+display:               org.w3c.css.properties.css1.CssDisplayCSS2
+position:              org.w3c.css.properties.css1.CssPosition
+z-index:               org.w3c.css.properties.css1.CssZIndex
+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
+white-space:           org.w3c.css.properties.css1.CssWhiteSpace
+list-style-type:       org.w3c.css.properties.css1.CssListStyleTypeCSS2
+list-style-image:      org.w3c.css.properties.css1.CssListStyleImageCSS2
+list-style-position:   org.w3c.css.properties.css1.CssListStylePositionCSS2
+list-style:            org.w3c.css.properties.css1.CssListStyleCSS2
+overflow:              org.w3c.css.properties.css1.CssOverflow
+clip:                  org.w3c.css.properties.css1.CssClip
+visibility:            org.w3c.css.properties.css1.CssVisibility
+content:               org.w3c.css.properties.css1.CssContentCSS2
+counter-reset:         org.w3c.css.properties.css1.CssCounterReset
+counter-increment:     org.w3c.css.properties.css1.CssCounterIncrement
+font-style:            org.w3c.css.properties.css1.CssFontStyleCSS2
+font-variant:          org.w3c.css.properties.css1.CssFontVariantCSS2
+font-weight:           org.w3c.css.properties.css1.CssFontWeightCSS2
+font-size:             org.w3c.css.properties.css1.CssFontSizeCSS2
+font-family:           org.w3c.css.properties.css1.CssFontFamilyCSS2
+font-stretch:          org.w3c.css.properties.css1.CssFontStretchCSS2
+caption-side:          org.w3c.css.properties.css2.table.CaptionSide
+
+# these properties are valid for CSS2 but have a warning for ATSC
+
+units-per-em:          org.w3c.css.properties.atsc.UnitsPerEmATSC
+panose-1:              org.w3c.css.properties.atsc.Panose1ATSC
+stemv:                 org.w3c.css.properties.atsc.StemvATSC
+stemh:                 org.w3c.css.properties.atsc.StemhATSC
+slope:                 org.w3c.css.properties.atsc.SlopeATSC
+cap-height:            org.w3c.css.properties.atsc.CapHeightATSC
+x-height:              org.w3c.css.properties.atsc.XHeightATSC
+widths:                org.w3c.css.properties.atsc.WidthsATSC
+ascent:                org.w3c.css.properties.atsc.AscentATSC
+descent:               org.w3c.css.properties.atsc.DescentATSC
+bbox:                  org.w3c.css.properties.atsc.BboxATSC
+baseline:              org.w3c.css.properties.atsc.BaselineATSC
+centerline:            org.w3c.css.properties.atsc.CenterlineATSC
+definition-src:        org.w3c.css.properties.atsc.DefinitionSrcATSC
+mathline:              org.w3c.css.properties.atsc.MathlineATSC
+topline:               org.w3c.css.properties.atsc.ToplineATSC
+text-shadow:           org.w3c.css.properties.css1.CssTextShadowATSC
+direction:             org.w3c.css.properties.css1.CssDirectionATSC
+unicode-bidi:          org.w3c.css.properties.css1.CssUnicodeBidiATSC
+marker-offset:         org.w3c.css.properties.css1.CssMarkerOffsetATSC
+quotes:                org.w3c.css.properties.css1.CssQuotesATSC
+min-width:             org.w3c.css.properties.css1.CssMinWidthATSC
+max-width:             org.w3c.css.properties.css1.CssMaxWidthATSC
+min-height:            org.w3c.css.properties.css1.CssMinHeightATSC
+max-height:            org.w3c.css.properties.css1.CssMaxHeightATSC
+row-span:               org.w3c.css.properties.css2.table.RowSpanATSC
+column-span:            org.w3c.css.properties.css2.table.ColumnSpanATSC
+table-layout:           org.w3c.css.properties.css2.table.TableLayoutATSC
+border-collapse:        org.w3c.css.properties.css2.table.BorderCollapseATSC
+border-spacing:         org.w3c.css.properties.css2.table.BorderSpacingATSC
+empty-cells:            org.w3c.css.properties.css2.table.EmptyCellsATSC
+speak-header:           org.w3c.css.properties.css2.table.SpeakHeaderATSC
+cursor:                 org.w3c.css.properties.css2.user.CursorATSC
+outline:                org.w3c.css.properties.css2.user.OutlineATSC
+outline-width:          org.w3c.css.properties.css2.user.OutlineWidthATSC
+outline-style:          org.w3c.css.properties.css2.user.OutlineStyleATSC
+outline-color:          org.w3c.css.properties.css2.user.OutlineColorATSC
+page-break-before:     org.w3c.css.properties.paged.PageBreakBeforeATSC
+page-break-after:      org.w3c.css.properties.paged.PageBreakAfterATSC
+page-break-inside:     org.w3c.css.properties.paged.PageBreakInsideATSC
+page:                  org.w3c.css.properties.paged.PageATSC
+orphans:               org.w3c.css.properties.paged.OrphansATSC
+widows:                org.w3c.css.properties.paged.WidowsATSC
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/properties/CSS1Properties.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,59 @@
+
+# Fonts properties
+
+font-style:            org.w3c.css.properties.css1.CssFontStyleCSS1
+font-variant:          org.w3c.css.properties.css1.CssFontVariantCSS1
+font-weight:           org.w3c.css.properties.css1.CssFontWeightCSS1
+font-stretch:          org.w3c.css.properties.css1.CssFontStretchCSS1
+font-size:             org.w3c.css.properties.css1.CssFontSizeCSS1
+font-family:           org.w3c.css.properties.css1.CssFontFamilyCSS1
+font:                  org.w3c.css.properties.css1.CssFontCSS1
+color:                 org.w3c.css.properties.css1.CssColorCSS1
+background-color:      org.w3c.css.properties.css1.CssBackgroundColorCSS1
+background-image:      org.w3c.css.properties.css1.CssBackgroundImageCSS1
+background-repeat:     org.w3c.css.properties.css1.CssBackgroundRepeatCSS1
+background-attachment: org.w3c.css.properties.css1.CssBackgroundAttachmentCSS1
+background-position:   org.w3c.css.properties.css1.CssBackgroundPositionCSS1
+background:            org.w3c.css.properties.css1.CssBackgroundCSS1
+word-spacing:          org.w3c.css.properties.css1.CssWordSpacing
+letter-spacing:        org.w3c.css.properties.css1.CssLetterSpacing
+text-decoration:       org.w3c.css.properties.css1.CssTextDecoration
+vertical-align:        org.w3c.css.properties.css1.CssVerticalAlignCSS1
+text-transform:        org.w3c.css.properties.css1.CssTextTransform
+text-align:            org.w3c.css.properties.css1.CssTextAlign
+text-indent:           org.w3c.css.properties.css1.CssTextIndent
+line-height:           org.w3c.css.properties.css1.CssLineHeightCSS1
+margin-top:            org.w3c.css.properties.css1.CssMarginTop
+margin-bottom:         org.w3c.css.properties.css1.CssMarginBottom
+margin-left:           org.w3c.css.properties.css1.CssMarginLeft
+margin-right:          org.w3c.css.properties.css1.CssMarginRight
+margin:                org.w3c.css.properties.css1.CssMargin
+padding-top:           org.w3c.css.properties.css1.CssPaddingTop
+padding-bottom:        org.w3c.css.properties.css1.CssPaddingBottom
+padding-left:          org.w3c.css.properties.css1.CssPaddingLeft
+padding-right:         org.w3c.css.properties.css1.CssPaddingRight
+padding:               org.w3c.css.properties.css1.CssPadding
+border-top-width:      org.w3c.css.properties.css1.CssBorderTopWidthCSS1
+border-right-width:    org.w3c.css.properties.css1.CssBorderRightWidthCSS1
+border-left-width:     org.w3c.css.properties.css1.CssBorderLeftWidthCSS1
+border-bottom-width:   org.w3c.css.properties.css1.CssBorderBottomWidthCSS1
+border-width:          org.w3c.css.properties.css1.CssBorderWidthCSS1
+border-color:          org.w3c.css.properties.css1.CssBorderColorCSS1
+border-style:          org.w3c.css.properties.css1.CssBorderStyleCSS1
+border-top:            org.w3c.css.properties.css1.CssBorderTopCSS1
+border-right:          org.w3c.css.properties.css1.CssBorderRightCSS1
+border-left:           org.w3c.css.properties.css1.CssBorderLeftCSS1
+border-bottom:         org.w3c.css.properties.css1.CssBorderBottomCSS1
+border:                org.w3c.css.properties.css1.CssBorderCSS1
+width:                 org.w3c.css.properties.css1.CssWidth
+height:                org.w3c.css.properties.css1.CssHeight
+float:                 org.w3c.css.properties.css1.CssFloat
+clear:                 org.w3c.css.properties.css1.CssClear
+display:               org.w3c.css.properties.css1.CssDisplayCSS1
+# position:              org.w3c.css.properties.css1.CssPosition
+white-space:           org.w3c.css.properties.css1.CssWhiteSpace
+list-style-type:       org.w3c.css.properties.css1.CssListStyleTypeCSS1
+list-style-image:      org.w3c.css.properties.css1.CssListStyleImageCSS1
+list-style-position:   org.w3c.css.properties.css1.CssListStylePositionCSS1
+list-style:            org.w3c.css.properties.css1.CssListStyleCSS1
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/properties/CSS21Properties.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,175 @@
+# All properties for all media
+
+# CSS2 Properties
+font-style:                     org.w3c.css.properties.css1.CssFontStyleCSS2
+font-variant:                   org.w3c.css.properties.css1.CssFontVariantCSS2
+font-weight:                    org.w3c.css.properties.css1.CssFontWeightCSS2
+font-size:                      org.w3c.css.properties.css1.CssFontSizeCSS2
+font-family:                    org.w3c.css.properties.css1.CssFontFamilyCSS2
+font:                           org.w3c.css.properties.css1.CssFontCSS2
+color:                          org.w3c.css.properties.css21.CssColorCSS21
+background-color:               org.w3c.css.properties.css21.CssBackgroundColorCSS21
+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.css21.CssBackgroundPositionCSS21
+background:                     org.w3c.css.properties.css21.CssBackgroundCSS21
+word-spacing:                   org.w3c.css.properties.css1.CssWordSpacing
+letter-spacing:                 org.w3c.css.properties.css1.CssLetterSpacing
+text-decoration:                org.w3c.css.properties.css1.CssTextDecoration
+vertical-align:                 org.w3c.css.properties.css1.CssVerticalAlign
+text-transform:                 org.w3c.css.properties.css1.CssTextTransform
+text-align:                     org.w3c.css.properties.css21.CssTextAlignCSS21
+text-indent:                    org.w3c.css.properties.css1.CssTextIndent
+line-height:                    org.w3c.css.properties.css1.CssLineHeightCSS2
+margin-top:                     org.w3c.css.properties.css1.CssMarginTop
+margin-bottom:                  org.w3c.css.properties.css1.CssMarginBottom
+margin-left:                    org.w3c.css.properties.css1.CssMarginLeft
+margin-right:                   org.w3c.css.properties.css1.CssMarginRight
+margin:                         org.w3c.css.properties.css1.CssMargin
+padding-top:                    org.w3c.css.properties.css1.CssPaddingTop
+padding-bottom:                 org.w3c.css.properties.css1.CssPaddingBottom
+padding-left:                   org.w3c.css.properties.css1.CssPaddingLeft
+padding-right:                  org.w3c.css.properties.css1.CssPaddingRight
+padding:                        org.w3c.css.properties.css1.CssPadding
+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-top-color:               org.w3c.css.properties.css21.CssBorderTopColorCSS21
+border-right-color:             org.w3c.css.properties.css21.CssBorderRightColorCSS21
+border-left-color:              org.w3c.css.properties.css21.CssBorderLeftColorCSS21
+border-bottom-color:            org.w3c.css.properties.css21.CssBorderBottomColorCSS21
+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
+border-width:                   org.w3c.css.properties.css1.CssBorderWidthCSS2
+border-color:                   org.w3c.css.properties.css21.CssBorderColorCSS21
+border-style:                   org.w3c.css.properties.css1.CssBorderStyleCSS2
+border-top:                     org.w3c.css.properties.css21.CssBorderTopCSS21
+border-right:                   org.w3c.css.properties.css21.CssBorderRightCSS21
+border-left:                    org.w3c.css.properties.css21.CssBorderLeftCSS21
+border-bottom:                  org.w3c.css.properties.css21.CssBorderBottomCSS21
+border:                         org.w3c.css.properties.css21.CssBorderCSS21
+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
+float:                          org.w3c.css.properties.css1.CssFloat
+clear:                          org.w3c.css.properties.css1.CssClear
+display:                        org.w3c.css.properties.css21.CssDisplayCSS21
+position:                       org.w3c.css.properties.css1.CssPosition
+z-index:                        org.w3c.css.properties.css1.CssZIndex
+direction:                      org.w3c.css.properties.css1.CssDirection
+unicode-bidi:                   org.w3c.css.properties.css1.CssUnicodeBidi
+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
+white-space:                    org.w3c.css.properties.css21.CssWhiteSpaceCSS21
+list-style-type:                org.w3c.css.properties.css21.CssListStyleTypeCSS21
+list-style-image:               org.w3c.css.properties.css1.CssListStyleImageCSS2
+list-style-position:            org.w3c.css.properties.css1.CssListStylePositionCSS2
+list-style:                     org.w3c.css.properties.css21.CssListStyleCSS21
+overflow:                       org.w3c.css.properties.css1.CssOverflow
+clip:                           org.w3c.css.properties.css1.CssClip
+visibility:                     org.w3c.css.properties.css1.CssVisibility
+content:                        org.w3c.css.properties.css21.CssContentCSS21
+quotes:                         org.w3c.css.properties.css1.CssQuotes
+counter-reset:                  org.w3c.css.properties.css1.CssCounterReset
+counter-increment:              org.w3c.css.properties.css1.CssCounterIncrement
+marker-offset:                  org.w3c.css.properties.css1.CssMarkerOffset
+row-span:                       org.w3c.css.properties.css2.table.RowSpan
+column-span:                    org.w3c.css.properties.css2.table.ColumnSpan
+table-layout:                   org.w3c.css.properties.css2.table.TableLayout
+caption-side:                   org.w3c.css.properties.css21.table.CssCaptionSideCSS21
+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
+speak-header:                   org.w3c.css.properties.css2.table.SpeakHeader
+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
+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
+cursor:                         org.w3c.css.properties.css21.user.CssCursorCSS21
+
+# Aural Properties
+
+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
+
+# Paged properties
+@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
+@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.orphans:                  org.w3c.css.properties.paged.Orphans
+@page.widows:                   org.w3c.css.properties.paged.Widows
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/properties/CSS2Properties.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,207 @@
+# All properties for all media
+
+# CSS2 Properties
+font-style:                     org.w3c.css.properties.css1.CssFontStyleCSS2
+font-variant:                   org.w3c.css.properties.css1.CssFontVariantCSS2
+font-weight:                    org.w3c.css.properties.css1.CssFontWeightCSS2
+font-size:                      org.w3c.css.properties.css1.CssFontSizeCSS2
+font-family:                    org.w3c.css.properties.css1.CssFontFamilyCSS2
+font-stretch:                   org.w3c.css.properties.css1.CssFontStretchCSS2
+font-size-adjust:               org.w3c.css.properties.css1.CssFontSizeAdjustCSS2
+font:                           org.w3c.css.properties.css1.CssFontCSS2
+color:                          org.w3c.css.properties.css1.CssColorCSS2
+background-color:               org.w3c.css.properties.css1.CssBackgroundColorCSS2
+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:                     org.w3c.css.properties.css1.CssBackgroundCSS2
+word-spacing:                   org.w3c.css.properties.css1.CssWordSpacing
+letter-spacing:                 org.w3c.css.properties.css1.CssLetterSpacing
+text-decoration:                org.w3c.css.properties.css1.CssTextDecoration
+text-shadow:                    org.w3c.css.properties.css1.CssTextShadow
+vertical-align:                 org.w3c.css.properties.css1.CssVerticalAlign
+text-transform:                 org.w3c.css.properties.css1.CssTextTransform
+text-align:                     org.w3c.css.properties.css1.CssTextAlign
+text-indent:                    org.w3c.css.properties.css1.CssTextIndent
+line-height:                    org.w3c.css.properties.css1.CssLineHeightCSS2
+margin-top:                     org.w3c.css.properties.css1.CssMarginTop
+margin-bottom:                  org.w3c.css.properties.css1.CssMarginBottom
+margin-left:                    org.w3c.css.properties.css1.CssMarginLeft
+margin-right:                   org.w3c.css.properties.css1.CssMarginRight
+margin:                         org.w3c.css.properties.css1.CssMargin
+padding-top:                    org.w3c.css.properties.css1.CssPaddingTop
+padding-bottom:                 org.w3c.css.properties.css1.CssPaddingBottom
+padding-left:                   org.w3c.css.properties.css1.CssPaddingLeft
+padding-right:                  org.w3c.css.properties.css1.CssPaddingRight
+padding:                        org.w3c.css.properties.css1.CssPadding
+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-top-color:               org.w3c.css.properties.css1.CssBorderTopColorCSS2
+border-right-color:             org.w3c.css.properties.css1.CssBorderRightColorCSS2
+border-left-color:              org.w3c.css.properties.css1.CssBorderLeftColorCSS2
+border-bottom-color:            org.w3c.css.properties.css1.CssBorderBottomColorCSS2
+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
+border-width:                   org.w3c.css.properties.css1.CssBorderWidthCSS2
+border-color:                   org.w3c.css.properties.css1.CssBorderColorCSS2
+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:                         org.w3c.css.properties.css1.CssBorderCSS2
+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
+float:                          org.w3c.css.properties.css1.CssFloat
+clear:                          org.w3c.css.properties.css1.CssClear
+display:                        org.w3c.css.properties.css1.CssDisplayCSS2
+position:                       org.w3c.css.properties.css1.CssPosition
+z-index:                        org.w3c.css.properties.css1.CssZIndex
+direction:                      org.w3c.css.properties.css1.CssDirection
+unicode-bidi:                   org.w3c.css.properties.css1.CssUnicodeBidi
+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
+white-space:                    org.w3c.css.properties.css1.CssWhiteSpace
+list-style-type:                org.w3c.css.properties.css1.CssListStyleTypeCSS2
+list-style-image:               org.w3c.css.properties.css1.CssListStyleImageCSS2
+list-style-position:            org.w3c.css.properties.css1.CssListStylePositionCSS2
+list-style:                     org.w3c.css.properties.css1.CssListStyleCSS2
+overflow:                       org.w3c.css.properties.css1.CssOverflow
+clip:                           org.w3c.css.properties.css1.CssClip
+visibility:                     org.w3c.css.properties.css1.CssVisibility
+content:                        org.w3c.css.properties.css1.CssContentCSS2
+quotes:                         org.w3c.css.properties.css1.CssQuotes
+counter-reset:                  org.w3c.css.properties.css1.CssCounterReset
+counter-increment:              org.w3c.css.properties.css1.CssCounterIncrement
+marker-offset:                  org.w3c.css.properties.css1.CssMarkerOffset
+row-span:                       org.w3c.css.properties.css2.table.RowSpan
+column-span:                    org.w3c.css.properties.css2.table.ColumnSpan
+table-layout:                   org.w3c.css.properties.css2.table.TableLayout
+caption-side:                   org.w3c.css.properties.css2.table.CaptionSide
+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
+speak-header:                   org.w3c.css.properties.css2.table.SpeakHeader
+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
+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
+cursor:                         org.w3c.css.properties.css2.user.CursorCSS2
+
+# Aural Properties
+
+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
+
+# Paged properties
+@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
+@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
+
+# Font properties
+@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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/properties/CSS3Properties.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,401 @@
+# CSS3 Properties
+font-style:                             org.w3c.css.properties.css1.CssFontStyle
+font-variant:                           org.w3c.css.properties.css1.CssFontVariant
+font-weight:                            org.w3c.css.properties.css1.CssFontWeight
+font-size:                              org.w3c.css.properties.css1.CssFontSize
+font-family:                            org.w3c.css.properties.css1.CssFontFamily
+font-stretch:                           org.w3c.css.properties.css1.CssFontStretch
+font-size-adjust:                       org.w3c.css.properties.css1.CssFontSizeAdjust
+font:                                   org.w3c.css.properties.css1.CssFont
+color:                                  org.w3c.css.properties.css1.CssColor
+background-color:                       org.w3c.css.properties.css1.CssBackgroundColor
+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.css21.CssBackgroundPositionCSS21
+background:                             org.w3c.css.properties.css3.CssBackgroundCSS3
+word-spacing:                           org.w3c.css.properties.css3.CssWordSpacingCSS3
+letter-spacing:                         org.w3c.css.properties.css1.CssLetterSpacing
+text-decoration:                        org.w3c.css.properties.css3.CssTextDecorationCSS3
+text-shadow:                            org.w3c.css.properties.css1.CssTextShadow
+vertical-align:                         org.w3c.css.properties.css1.CssVerticalAlign
+text-transform:                         org.w3c.css.properties.css1.CssTextTransform
+text-align:                             org.w3c.css.properties.css1.CssTextAlign
+text-indent:                            org.w3c.css.properties.css3.CssTextIndentCSS3
+line-height:                            org.w3c.css.properties.css1.CssLineHeight
+margin-top:                             org.w3c.css.properties.css1.CssMarginTop
+margin-bottom:                          org.w3c.css.properties.css1.CssMarginBottom
+margin-left:                            org.w3c.css.properties.css1.CssMarginLeft
+margin-right:                           org.w3c.css.properties.css1.CssMarginRight
+margin:                                 org.w3c.css.properties.css1.CssMargin
+padding-top:                            org.w3c.css.properties.css3.CssPaddingTopCSS3
+padding-bottom:                         org.w3c.css.properties.css3.CssPaddingBottomCSS3
+padding-left:                           org.w3c.css.properties.css3.CssPaddingLeftCSS3
+padding-right:                          org.w3c.css.properties.css3.CssPaddingRightCSS3
+padding:                                org.w3c.css.properties.css3.CssPaddingCSS3
+border-top-width:                       org.w3c.css.properties.css1.CssBorderTopWidth
+border-right-width:                     org.w3c.css.properties.css1.CssBorderRightWidth
+border-left-width:                      org.w3c.css.properties.css1.CssBorderLeftWidth
+border-bottom-width:                    org.w3c.css.properties.css1.CssBorderBottomWidth
+border-top-color:                       org.w3c.css.properties.css1.CssBorderTopColor
+border-right-color:                     org.w3c.css.properties.css1.CssBorderRightColor
+border-left-color:                      org.w3c.css.properties.css1.CssBorderLeftColor
+border-bottom-color:                    org.w3c.css.properties.css1.CssBorderBottomColor
+border-top-style:                       org.w3c.css.properties.css1.CssBorderTopStyle
+border-right-style:                     org.w3c.css.properties.css1.CssBorderRightStyle
+border-left-style:                      org.w3c.css.properties.css1.CssBorderLeftStyle
+border-bottom-style:                    org.w3c.css.properties.css1.CssBorderBottomStyle
+border-width:                           org.w3c.css.properties.css1.CssBorderWidth
+border-color:                           org.w3c.css.properties.css1.CssBorderColor
+border-style:                           org.w3c.css.properties.css1.CssBorderStyle
+border-top:                             org.w3c.css.properties.css1.CssBorderTop
+border-right:                           org.w3c.css.properties.css1.CssBorderRight
+border-left:                            org.w3c.css.properties.css1.CssBorderLeft
+border-bottom:                          org.w3c.css.properties.css1.CssBorderBottom
+border:                                 org.w3c.css.properties.css1.CssBorder
+width:                                  org.w3c.css.properties.css3.CssWidthCSS3
+min-width:                              org.w3c.css.properties.css3.CssMinWidthCSS3
+max-width:                              org.w3c.css.properties.css3.CssMaxWidthCSS3
+min-height:                             org.w3c.css.properties.css3.CssMinHeightCSS3
+max-height:                             org.w3c.css.properties.css3.CssMaxHeightCSS3
+height:                                 org.w3c.css.properties.css3.CssHeightCSS3
+float:                                  org.w3c.css.properties.css3.CssFloatCSS3
+clear:                                  org.w3c.css.properties.css3.CssClearCSS3
+display:                                org.w3c.css.properties.css1.CssDisplay
+position:                               org.w3c.css.properties.css1.CssPosition
+z-index:                                org.w3c.css.properties.css1.CssZIndex
+direction:                              org.w3c.css.properties.css1.CssDirection
+unicode-bidi:                           org.w3c.css.properties.css1.CssUnicodeBidi
+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
+white-space:                            org.w3c.css.properties.css3.CssWhiteSpaceCSS3
+list-style-type:                        org.w3c.css.properties.css1.CssListStyleType
+list-style-image:                       org.w3c.css.properties.css1.CssListStyleImage
+list-style-position:                    org.w3c.css.properties.css1.CssListStylePosition
+list-style:                             org.w3c.css.properties.css1.CssListStyle
+overflow:                               org.w3c.css.properties.css3.CssOverflowCSS3
+clip:                                   org.w3c.css.properties.css1.CssClip
+visibility:                             org.w3c.css.properties.css3.CssVisibilityCSS3
+content:                                org.w3c.css.properties.css1.CssContent
+quotes:                                 org.w3c.css.properties.css1.CssQuotes
+counter-reset:                          org.w3c.css.properties.css1.CssCounterReset
+counter-increment:                      org.w3c.css.properties.css1.CssCounterIncrement
+marker-offset:                          org.w3c.css.properties.css1.CssMarkerOffset
+# Aural Properties
+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.ACssVoiceFamilyCSS3
+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.ACssSpeakCSS3
+azimuth:                                org.w3c.css.properties.aural.ACssAzimuth
+voice-volume:                           org.w3c.css.properties.aural.ACssVoiceVolume
+voice-balance:                          org.w3c.css.properties.aural.ACssVoiceBalance
+voice-rate:                             org.w3c.css.properties.aural.ACssVoiceRate
+voice-pitch:                            org.w3c.css.properties.aural.ACssPitch
+voice-pitch-range:                      org.w3c.css.properties.aural.ACssVoicePitchRange
+voice-duration:                         org.w3c.css.properties.aural.ACssVoiceDuration
+phonemes:                               org.w3c.css.properties.aural.ACssPhonemes
+interpret-as:                           org.w3c.css.properties.aural.ACssInterpretAs
+row-span:                               org.w3c.css.properties.css2.table.RowSpan
+table-layout:                           org.w3c.css.properties.css2.table.TableLayout
+caption-side:                           org.w3c.css.properties.css2.table.CaptionSide
+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
+speak-header:                           org.w3c.css.properties.css2.table.SpeakHeader
+cursor:                                 org.w3c.css.properties.css2.user.Cursor
+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
+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
+opacity:                                org.w3c.css.properties.css3.CssOpacity
+color-profile:                          org.w3c.css.properties.css3.CssColorProfile
+rendering-intent:                       org.w3c.css.properties.css3.CssRenderIntent
+font-effect:                            org.w3c.css.properties.css3.CssFontEffect
+font-smooth:                            org.w3c.css.properties.css3.CssFontSmooth
+font-emphasize-style:                   org.w3c.css.properties.css3.CssFontEmphasizeStyle
+font-emphasize-position:                org.w3c.css.properties.css3.CssFontEmphasizePos
+font-emphasize:                         org.w3c.css.properties.css3.CssFontEmphasize
+ruby-position:                          org.w3c.css.properties.css3.CssRubyPosition
+ruby-align:                             org.w3c.css.properties.css3.CssRubyAlign
+ruby-overhang:                          org.w3c.css.properties.css3.CssRubyOverhang
+box-sizing:                             org.w3c.css.properties.css3.CssBoxSizing
+resize:                                 org.w3c.css.properties.css3.CssResizer
+key-equivalent:                         org.w3c.css.properties.css3.CssKeyEq
+tab-index:                              org.w3c.css.properties.css3.CssTabIndex
+user-input:                             org.w3c.css.properties.css3.CssUserInput
+user-modify:                            org.w3c.css.properties.css3.CssUserModify
+user-select:                            org.w3c.css.properties.css3.CssUserSelect
+user-focus:                             org.w3c.css.properties.css3.CssUserFocus
+user-focus-key:                         org.w3c.css.properties.css3.CssUserFocusKey
+user-focus-pointer:                     org.w3c.css.properties.css3.CssUserFocusPointer
+toggle-group:                           org.w3c.css.properties.css3.CssToggleGroup
+group-reset:                            org.w3c.css.properties.css3.CssGroupReset
+writing-mode:                           org.w3c.css.properties.css3.CssWritingMode
+glyph-orientation-vertical:             org.w3c.css.properties.css3.CssGlyphOrVert
+glyph-orientation-horizontal:           org.w3c.css.properties.css3.CssGlyphHor
+text-justify:                           org.w3c.css.properties.css3.CssTextJustify
+text-align-last:                        org.w3c.css.properties.css3.CssTextAlignLast
+min-font-size:                          org.w3c.css.properties.css3.CssMinFontSize
+max-font-size:                          org.w3c.css.properties.css3.CssMaxFontSize
+text-justify-trim:                      org.w3c.css.properties.css3.CssTextJustifyTrim
+text-kashida-space:                     org.w3c.css.properties.css3.CssTextKashidaSpace
+dominant-baseline:                      org.w3c.css.properties.css3.CssDominantBaseLine
+alignment-baseline:                     org.w3c.css.properties.css3.CssAlignmentBaseLine
+alignment-adjust:                       org.w3c.css.properties.css3.CssAlignmentAdjust
+baseline-shift:                         org.w3c.css.properties.css3.CssBaselineShift
+line-break:                             org.w3c.css.properties.css3.CssLineBreak
+word-break-cjk:                         org.w3c.css.properties.css3.CssWordBreakCJK
+word-break-inside:                      org.w3c.css.properties.css3.CssWordBreakInside
+word-break:                             org.w3c.css.properties.css3.CssWordBreak
+text-space:                             org.w3c.css.properties.css3.CssTextSpace
+text-end-overflow:                      org.w3c.css.properties.css3.CssTextEndOverflowCSS3
+text-after-overflow:                    org.w3c.css.properties.css3.CssTextAfterOverflowCSS3
+punctuation-trim:                       org.w3c.css.properties.css3.CssPunctuationTrim
+text-autospace:                         org.w3c.css.properties.css3.CssTextAutoSpace
+kerning-mode:                           org.w3c.css.properties.css3.CssKerningMode
+kerning-pair-treshold:                  org.w3c.css.properties.css3.CssKerningPairTreshold
+text-underline-style:                   org.w3c.css.properties.css3.CssTextUlStyle
+text-underline-color:                   org.w3c.css.properties.css3.CssTextUlColor
+text-underline-mode:                    org.w3c.css.properties.css3.CssTextUlMode
+text-underline-position:                org.w3c.css.properties.css3.CssTextUlPos
+text-underline:                         org.w3c.css.properties.css3.CssTextUnderLine
+text-line-through-style:                org.w3c.css.properties.css3.CssTextLTStyle
+text-line-through-color:                org.w3c.css.properties.css3.CssTextLTColor
+text-line-through-mode:                 org.w3c.css.properties.css3.CssTextLTMode
+text-line-through:                      org.w3c.css.properties.css3.CssTextLineThrough
+text-overline-style:                    org.w3c.css.properties.css3.CssTextOLStyle
+text-overline-color:                    org.w3c.css.properties.css3.CssTextOLColor
+text-overline-mode:                     org.w3c.css.properties.css3.CssTextOLMode
+text-overline:                          org.w3c.css.properties.css3.CssTextOverLine
+text-combine:                           org.w3c.css.properties.css3.CssTextCombine
+display-model:                          org.w3c.css.properties.css3.CssDisplayModel
+display-role:                           org.w3c.css.properties.css3.CssDisplayRole
+margin-inside:                          org.w3c.css.properties.css1.CssMarginInside
+margin-outside:                         org.w3c.css.properties.css1.CssMarginOutside
+box-width:                              org.w3c.css.properties.css3.CssBoxWidth
+box-height:                             org.w3c.css.properties.css3.CssBoxHeight
+fit:                                    org.w3c.css.properties.css3.CssFit
+link:                                   org.w3c.css.properties.css3.CssLink
+background-clip:                        org.w3c.css.properties.css3.CssBackgroundClip
+handheld.background-clip:               org.w3c.css.properties.css3.CssBackgroundClip
+background-size:                        org.w3c.css.properties.css3.CssBackgroundSize
+background-quantity:                    org.w3c.css.properties.css3.CssBackgroundQuantity
+background-spacing:                     org.w3c.css.properties.css3.CssBackgroundSpacing
+background-origin:                      org.w3c.css.properties.css3.CssBackgroundOrigin
+all-space-treatment:                    org.w3c.css.properties.css3.CssAllSpaceTreatment
+hanging-punctuation:                    org.w3c.css.properties.css3.CssHangingPunctuation
+line-grid:                              org.w3c.css.properties.css3.CssLineGrid
+line-grid-mode:                         org.w3c.css.properties.css3.CssLineGridMode
+line-grid-progression:                  org.w3c.css.properties.css3.CssLineGridProgression
+linefeed-treatment:                     org.w3c.css.properties.css3.CssLinefeedTreatment
+text-script:                            org.w3c.css.properties.css3.CssScript
+text-overflow:                          org.w3c.css.properties.css3.CssTextOverflowCSS3
+text-overflow-ellipsis:                 org.w3c.css.properties.css3.CssTextOverflowEllipsis
+text-overflow-mode:                     org.w3c.css.properties.css3.CssTextOverflowMode
+white-space-treatment:                  org.w3c.css.properties.css3.CssWhiteSpaceTreatment
+wrap-option:                            org.w3c.css.properties.css3.CssWrapOption
+column-count:                           org.w3c.css.properties.css3.CssColumnCount
+column-width:                           org.w3c.css.properties.css3.CssColumnWidth
+column-gap:                             org.w3c.css.properties.css3.CssColumnGap
+column-rule:                            org.w3c.css.properties.css3.CssColumnRule
+column-rule-color:                      org.w3c.css.properties.css3.CssColumnRuleColor
+column-rule-style:                      org.w3c.css.properties.css3.CssColumnRuleStyle
+column-rule-width:                      org.w3c.css.properties.css3.CssColumnRuleWidth
+drop-initial-after-adjust:              org.w3c.css.properties.css3.CssDropInitialAfterAdjust
+drop-initial-before-adjust:             org.w3c.css.properties.css3.CssDropInitialBeforeAdjust
+drop-initial-size:                      org.w3c.css.properties.css3.CssDropInitialSize
+inline-box-align:                       org.w3c.css.properties.css3.CssInlineBoxAlign
+line-stacking-ruby:                     org.w3c.css.properties.css3.CssLineStackingRuby
+line-stacking-strategy:                 org.w3c.css.properties.css3.CssLineStackingStrategy
+icon:                                   org.w3c.css.properties.css3.CssIcon
+nav-up:                                 org.w3c.css.properties.css3.CssNavUp
+nav-right:                              org.w3c.css.properties.css3.CssNavRight
+nav-down:                               org.w3c.css.properties.css3.CssNavDown
+nav-left:                               org.w3c.css.properties.css3.CssNavLeft
+outline-offset:                         org.w3c.css.properties.css3.CssOutlineOffset
+overflow-x:                             org.w3c.css.properties.css3.CssOverflowX
+overflow-y:                             org.w3c.css.properties.css3.CssOverflowY
+ruby-span:                              org.w3c.css.properties.css3.CssRubySpan
+text-blink:                             org.w3c.css.properties.css3.CssTextBlink
+clear-after:                            org.w3c.css.properties.css3.CssClearAfter
+crop:                                   org.w3c.css.properties.css3.CssCrop
+fit-position:                           org.w3c.css.properties.css3.CssFitPosition
+float-displace:                         org.w3c.css.properties.css3.CssFloatDisplace
+indent-edge-reset:                      org.w3c.css.properties.css3.CssIndentEdgeReset
+marquee:                                org.w3c.css.properties.css3.CssMarquee
+marquee-direction:                      org.w3c.css.properties.css3.CssMarqueeDirection
+marquee-repetition:                     org.w3c.css.properties.css3.CssMarqueeRepetition
+marquee-speed:                          org.w3c.css.properties.css3.CssMarqueeSpeed
+marquee-style:                          org.w3c.css.properties.css3.CssMarqueeStyle
+overflow-clip:                          org.w3c.css.properties.css3.CssOverflowClip
+border-top-right-radius:                org.w3c.css.properties.css3.CssBorderTopRightRadius
+border-bottom-right-radius:             org.w3c.css.properties.css3.CssBorderBottomRightRadius
+border-bottom-left-radius:              org.w3c.css.properties.css3.CssBorderBottomLeftRadius
+border-top-left-radius:                 org.w3c.css.properties.css3.CssBorderTopLeftRadius
+border-radius:                          org.w3c.css.properties.css3.CssBorderRadius
+border-top-image:                       org.w3c.css.properties.css3.CssBorderTopImage
+border-right-image:                     org.w3c.css.properties.css3.CssBorderRightImage
+border-bottom-image:                    org.w3c.css.properties.css3.CssBorderBottomImage
+border-left-image:                      org.w3c.css.properties.css3.CssBorderLeftImage
+border-image:                           org.w3c.css.properties.css3.CssBorderImage
+border-top-left-image:                  org.w3c.css.properties.css3.CssBorderTopLeftImage
+border-top-right-image:                 org.w3c.css.properties.css3.CssBorderTopRightImage
+border-bottom-right-image:              org.w3c.css.properties.css3.CssBorderBottomRightImage
+border-bottom-left-image:               org.w3c.css.properties.css3.CssBorderBottomLeftImage
+border-corner-image:                    org.w3c.css.properties.css3.CssBorderCornerImage
+border-top-fit-length:                  org.w3c.css.properties.css3.CssBorderTopFitLength
+border-right-fit-length:                org.w3c.css.properties.css3.CssBorderRightFitLength
+border-bottom-fit-length:               org.w3c.css.properties.css3.CssBorderBottomFitLength
+border-left-fit-length:                 org.w3c.css.properties.css3.CssBorderLeftFitLength
+border-top-fit-width:                   org.w3c.css.properties.css3.CssBorderTopFitWidth
+border-right-fit-width:                 org.w3c.css.properties.css3.CssBorderRightFitWidth
+border-bottom-fit-width:                org.w3c.css.properties.css3.CssBorderBottomFitWidth
+border-left-fit-width:                  org.w3c.css.properties.css3.CssBorderLeftFitWidth
+border-fit-length:                      org.w3c.css.properties.css3.CssBorderFitLength
+border-fit-width:                       org.w3c.css.properties.css3.CssBorderFitWidth
+border-fit:                             org.w3c.css.properties.css3.CssBorderFit
+border-top-left-fit-length:             org.w3c.css.properties.css3.CssBorderTopLeftFitLength
+border-top-right-fit-length:            org.w3c.css.properties.css3.CssBorderTopRightFitLength
+border-bottom-right-fit-length:         org.w3c.css.properties.css3.CssBorderBottomRightFitLength
+border-bottom-left-fit-length:          org.w3c.css.properties.css3.CssBorderBottomLeftFitLength
+border-top-left-fit-width:              org.w3c.css.properties.css3.CssBorderTopLeftFitWidth
+border-top-right-fit-width:             org.w3c.css.properties.css3.CssBorderTopRightFitWidth
+border-bottom-right-fit-width:          org.w3c.css.properties.css3.CssBorderBottomRightFitWidth
+border-bottom-left-fit-width:           org.w3c.css.properties.css3.CssBorderBottomLeftFitWidth
+border-corner-fit:                      org.w3c.css.properties.css3.CssBorderCornerFit
+border-image-transform:                 org.w3c.css.properties.css3.CssBorderImageTransform
+border-break:                           org.w3c.css.properties.css3.CssBorderBreak
+box-shadow:                             org.w3c.css.properties.css3.CssBoxShadow
+block-progression:                      org.w3c.css.properties.css3.CssBlockProgression
+word-break-wrap:                        org.w3c.css.properties.css3.CssTextWrap
+text-decoration:                        org.w3c.css.properties.css3.CssTextDecorationCSS3
+text-shadow:                            org.w3c.css.properties.css1.CssTextShadow
+width:                                  org.w3c.css.properties.css3.CssWidthCSS3
+round-clip:                             org.w3c.css.properties.css3.CssBackgroundClip
+row-span:                               org.w3c.css.properties.css2.table.RowSpan
+tty.link:                               org.w3c.css.properties.css3.CssLink
+collapse:                               org.w3c.css.properties.css3.CssCollapse
+hanging-punctuation:                    org.w3c.css.properties.css3.CssHangingPunctuation
+                                        
+@page.padding-left:                     org.w3c.css.properties.css3.CssPaddingLeftCSS3
+@page.padding-right:                    org.w3c.css.properties.css3.CssPaddingRightCSS3
+@page.padding:                          org.w3c.css.properties.css3.CssPaddingCSS3
+@page.border-top-width:                 org.w3c.css.properties.css1.CssBorderTopWidth
+@page.border-right-width:               org.w3c.css.properties.css1.CssBorderRightWidth
+@page.border-left-width:                org.w3c.css.properties.css1.CssBorderLeftWidth
+@page.border-bottom-width:              org.w3c.css.properties.css1.CssBorderBottomWidth
+@page.border-top-color:                 org.w3c.css.properties.css1.CssBorderTopColor
+@page.border-right-color:               org.w3c.css.properties.css1.CssBorderRightColor
+@page.border-left-color:                org.w3c.css.properties.css1.CssBorderLeftColor
+@page.border-bottom-color:              org.w3c.css.properties.css1.CssBorderBottomColor
+@page.border-top-style:                 org.w3c.css.properties.css1.CssBorderTopStyle
+@page.border-right-style:               org.w3c.css.properties.css1.CssBorderRightStyle
+@page.border-left-style:                org.w3c.css.properties.css1.CssBorderLeftStyle
+@page.border-bottom-style:              org.w3c.css.properties.css1.CssBorderBottomStyle
+@page.border-width:                     org.w3c.css.properties.css1.CssBorderWidth
+@page.border-color:                     org.w3c.css.properties.css1.CssBorderColor
+@page.border-style:                     org.w3c.css.properties.css1.CssBorderStyle
+@page.border-top:                       org.w3c.css.properties.css1.CssBorderTop
+@page.border-right:                     org.w3c.css.properties.css1.CssBorderRight
+@page.border-left:                      org.w3c.css.properties.css1.CssBorderLeft
+@page.border-bottom:                    org.w3c.css.properties.css1.CssBorderBottom
+@page.border:                           org.w3c.css.properties.css1.CssBorder
+@page.float:                            org.w3c.css.properties.css3.CssFloatCSS3
+@page.clear:                            org.w3c.css.properties.css3.CssClear
+@page.display:                          org.w3c.css.properties.css1.CssDisplay
+@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.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
+@page.padding-bottom:                   org.w3c.css.properties.css3.CssPaddingBottomCSS3
+@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
+@preference.media:                      org.w3c.css.properties.css3.CssMedia
+@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
+
+mediafeature.device-width:              org.w3c.css.properties.css3.MediaDeviceWidth
+mediafeature.min-device-width:          org.w3c.css.properties.css3.MediaMinDeviceWidth
+mediafeature.max-device-width:          org.w3c.css.properties.css3.MediaMaxDeviceWidth
+mediafeature.device-height:             org.w3c.css.properties.css3.MediaDeviceHeight
+mediafeature.min-device-height:         org.w3c.css.properties.css3.MediaMinDeviceHeight
+mediafeature.max-device-height:         org.w3c.css.properties.css3.MediaMaxDeviceHeight
+mediafeature.device-aspect-ratio:       org.w3c.css.properties.css3.MediaDeviceAspectRatio
+mediafeature.min-device-aspect-ratio:   org.w3c.css.properties.css3.MediaMinDeviceAspectRatio
+mediafeature.max-device-aspect-ratio:   org.w3c.css.properties.css3.MediaMaxDeviceAspectRatio
+mediafeature.min-color:                 org.w3c.css.properties.css3.MediaMinColor
+mediafeature.max-color:                 org.w3c.css.properties.css3.MediaMaxColor
+mediafeature.color-index:               org.w3c.css.properties.css3.MediaColorIndex
+mediafeature.min-color-index:           org.w3c.css.properties.css3.MediaMinColorIndex
+mediafeature.max-color-index:           org.w3c.css.properties.css3.MediaMaxColorIndex
+mediafeature.monochrome:                org.w3c.css.properties.css3.MediaMonochrome
+mediafeature.min-monochrome:            org.w3c.css.properties.css3.MediaMinMonochrome
+mediafeature.max-monochrome:            org.w3c.css.properties.css3.MediaMaxMonochrome
+mediafeature.resolution:                org.w3c.css.properties.css3.MediaResolution
+mediafeature.min-resolution:            org.w3c.css.properties.css3.MediaMinResolution
+mediafeature.max-resolution:            org.w3c.css.properties.css3.MediaMaxResolution
+mediafeature.scan:                      org.w3c.css.properties.css3.MediaScan
+mediafeature.grid:                      org.w3c.css.properties.css3.MediaGrid
+mediafeature.color:                     org.w3c.css.properties.css3.MediaColor
+mediafeature.width:                     org.w3c.css.properties.css3.MediaWidth
+mediafeature.min-width:                 org.w3c.css.properties.css3.MediaMinWidth
+mediafeature.max-width:                 org.w3c.css.properties.css3.MediaMaxWidth
+mediafeature.min-height:                org.w3c.css.properties.css3.MediaMinHeight
+mediafeature.height:                    org.w3c.css.properties.css3.MediaHeight
+mediafeature.max-height:                org.w3c.css.properties.css3.MediaMaxHeight
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/properties/Config.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,30 @@
+# 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
+
+#media
+media: Media.properties
+
+# file containing the properties files for each profile
+profilesProperties: ProfilesProperties.properties
+
+#default profile
+defaultProfile: css21
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/properties/Media.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,380 @@
+font-style:                     handheld, print, projection, screen, tty, tv
+font-variant:                   handheld, print, projection, screen, tty, tv
+font-weight:                    handheld, print, projection, screen, tty, tv
+font-size:                      handheld, print, projection, screen, tty, tv
+font-family:                    handheld, print, projection, screen, tty, tv
+font-stretch:                   handheld, print, projection, screen, tty, tv
+font-size-adjust:               handheld, print, projection, screen, tty, tv
+font:                           handheld, print, projection, screen, tty, tv
+color:                          handheld, print, projection, screen, tty, tv
+background-color:               handheld, print, projection, screen, tty, tv
+background-image:               handheld, print, projection, screen, tty, tv
+background-repeat:              handheld, print, projection, screen, tty, tv
+background-attachment:          handheld, print, projection, screen, tty, tv
+background-position:            handheld, print, projection, screen, tty, tv
+background:                     handheld, print, projection, screen, tty, tv
+word-spacing:                   handheld, print, projection, screen, tty, tv
+letter-spacing:                 handheld, print, projection, screen, tty, tv
+text-decoration:                handheld, print, projection, screen, tty, tv
+text-shadow:                    handheld, print, projection, screen, tty, tv
+vertical-align:                 handheld, print, projection, screen, tty, tv
+text-transform:                 handheld, print, projection, screen, tty, tv
+text-align:                     handheld, print, projection, screen, tty, tv
+text-indent:                    handheld, print, projection, screen, tty, tv
+line-height:                    handheld, print, projection, screen, tty, tv
+margin-top:                     handheld, print, projection, screen, tty, tv
+margin-bottom:                  handheld, print, projection, screen, tty, tv
+margin-left:                    handheld, print, projection, screen, tty, tv
+margin-right:                   handheld, print, projection, screen, tty, tv
+margin:                         handheld, print, projection, screen, tty, tv
+padding-top:                    handheld, print, projection, screen, tty, tv
+padding-bottom:                 handheld, print, projection, screen, tty, tv
+padding-left:                   handheld, print, projection, screen, tty, tv
+padding-right:                  handheld, print, projection, screen, tty, tv
+padding:                        handheld, print, projection, screen, tty, tv
+border-top-width:               handheld, print, projection, screen, tty, tv
+border-right-width:             handheld, print, projection, screen, tty, tv
+border-bottom-width:            handheld, print, projection, screen, tty, tv
+border-left-width:              handheld, print, projection, screen, tty, tv
+border-top-color:               handheld, print, projection, screen, tty, tv
+border-right-color:             handheld, print, projection, screen, tty, tv
+border-bottom-color:            handheld, print, projection, screen, tty, tv
+border-left-color:              handheld, print, projection, screen, tty, tv
+border-top-style:               handheld, print, projection, screen, tty, tv
+border-right-style:             handheld, print, projection, screen, tty, tv
+border-bottom-style:            handheld, print, projection, screen, tty, tv
+border-left-style:              handheld, print, projection, screen, tty, tv
+border-width:                   handheld, print, projection, screen, tty, tv
+border-color:                   handheld, print, projection, screen, tty, tv
+border-style:                   handheld, print, projection, screen, tty, tv
+border-top:                     handheld, print, projection, screen, tty, tv
+border-right:                   handheld, print, projection, screen, tty, tv
+border-bottom:                  handheld, print, projection, screen, tty, tv
+border-left:                    handheld, print, projection, screen, tty, tv
+border:                         handheld, print, projection, screen, tty, tv
+width:                          handheld, print, projection, screen, tty, tv
+min-width:                      handheld, print, projection, screen, tty, tv
+max-width:                      handheld, print, projection, screen, tty, tv
+height:                         handheld, print, projection, screen, tty, tv
+min-height:                     handheld, print, projection, screen, tty, tv
+max-height:                     handheld, print, projection, screen, tty, tv
+float:                          handheld, print, projection, screen, tty, tv
+clear:                          handheld, print, projection, screen, tty, tv
+display:                        all
+position:                       handheld, print, projection, screen, tty, tv
+z-index:                        handheld, print, projection, screen, tty, tv
+direction:                      handheld, print, projection, screen, tty, tv
+unicode-bidi:                   handheld, print, projection, screen, tty, tv
+top:                            handheld, print, projection, screen, tty, tv
+right:                          handheld, print, projection, screen, tty, tv
+left:                           handheld, print, projection, screen, tty, tv
+bottom:                         handheld, print, projection, screen, tty, tv
+white-space:                    handheld, print, projection, screen, tty, tv
+list-style-type:                handheld, print, projection, screen, tty, tv
+list-style-image:               handheld, print, projection, screen, tty, tv
+list-style-position:            handheld, print, projection, screen, tty, tv
+list-style:                     handheld, print, projection, screen, tty, tv
+overflow:                       handheld, print, projection, screen, tty, tv
+clip:                           handheld, print, projection, screen, tty, tv
+visibility:                     handheld, print, projection, screen, tty, tv
+content:                        all
+quotes:                         handheld, print, projection, screen, tty, tv
+counter-reset:                  all
+counter-increment:              all
+marker-offset:                  handheld, print, projection, screen, tty, tv
+row-span:                       handheld, print, projection, screen, tty, tv
+column-span:                    handheld, print, projection, screen, tty, tv
+table-layout:                   handheld, print, projection, screen, tty, tv
+caption-side:                   handheld, print, projection, screen, tty, tv
+border-collapse:                handheld, print, projection, screen, tty, tv
+border-spacing:                 handheld, print, projection, screen, tty, tv
+empty-cells:                    handheld, print, projection, screen, tty, tv
+speak-header:                   aural
+cursor:                         handheld, projection, screen, tty, tv
+outline:                        handheld, print, projection, screen, tty, tv
+outline-width:                  handheld, print, projection, screen, tty, tv
+outline-style:                  handheld, print, projection, screen, tty, tv
+outline-color:                  handheld, print, projection, screen, tty, tv
+page-break-before:              embossed, handheld, print, projection, tv
+page-break-after:               embossed, handheld, print, projection, tv
+page-break-inside:              embossed, handheld, print, projection, tv
+page:                           embossed, handheld, print, projection, tv
+orphans:                        handheld, print, projection, screen, tty, tv
+widows:                         handheld, print, projection, screen, tty, tv
+
+volume:                         aural, speech
+pause-before:                   aural, speech
+pause-after:                    aural, speech
+pause:                          aural, speech
+cue-before:                     aural, speech
+cue-after:                      aural, speech
+cue:                            aural, speech
+play-during:                    aural, speech
+voice-family:                   aural, speech
+elevation:                      aural, speech
+speech-rate:                    aural, speech
+pitch:                          aural, speech
+pitch-range:                    aural, speech
+stress:                         aural, speech
+richness:                       aural, speech
+speak-punctuation:              aural, speech
+speak-date:                     aural, speech
+speak-numeral:                  aural, speech
+speak-time:                     aural, speech
+speak:                          aural, speech
+azimuth:                        aural, speech
+voice-volume:                   aural, speech
+voice-balance:                  aural, speech
+voice-rate:                     aural, speech
+voice-pitch:                    aural, speech
+voice-pitch-range:              aural, speech
+voice-duration:                 aural, speech
+phonemes:                       aural, speech
+interpret-as:                   aural, speech
+
+fill:                           handheld, print, projection, screen, tty, tv
+fill-rule:                      handheld, print, projection, screen, tty, tv
+stroke:                         handheld, print, projection, screen, tty, tv
+stroke-dashoffset:              handheld, print, projection, screen, tty, tv
+stroke-dasharray:               handheld, print, projection, screen, tty, tv
+stroke-linejoin:                handheld, print, projection, screen, tty, tv
+stroke-linecap:                 handheld, print, projection, screen, tty, tv
+stroke-miterlimit:              handheld, print, projection, screen, tty, tv
+stroke-width:                   handheld, print, projection, screen, tty, tv
+
+rendering-intent:               handheld, print, projection, screen, tty, tv
+font-effect:                    handheld, print, projection, screen, tty, tv
+font-smooth:                    handheld, print, projection, screen, tty, tv
+font-emphasize-style:           handheld, print, projection, screen, tty, tv
+font-emphasize-position:        handheld, print, projection, screen, tty, tv
+font-emphasize:                 handheld, print, projection, screen, tty, tv
+ruby-align:                     handheld, print, projection, screen, tty, tv
+ruby-overhang:                  handheld, print, projection, screen, tty, tv
+box-sizing:                     handheld, print, projection, screen, tty, tv
+resize:                         handheld, projection, screen, tty, tv
+key-equivalent:                 braille, emboss, handheld, screen, tty, tv
+tab-index                       braille, emboss, handheld, screen, tty, tv
+user-input:                     braille, emboss, handheld, screen, tty, tv
+user-modify:                    braille, emboss, handheld, screen, tty, tv
+user-select:                    braille, emboss, handheld, screen, tty, tv
+user-focus:                     braille, emboss, handheld, screen, tty, tv
+user-focus-key:                 braille, emboss, handheld, screen, tty, tv
+user-focus-pointer:             braille, emboss, handheld, screen, tty, tv
+toggle-group:                   all
+group-reset:                    all
+text-justify:                   handheld, print, projection, screen, tty, tv
+text-align-last:                handheld, print, projection, screen, tty, tv
+min-font-size:                  handheld, print, projection, screen, tty, tv
+max-font-size:                  handheld, print, projection, screen, tty, tv
+text-justify-trim:              handheld, print, projection, screen, tty, tv
+text-kashida-space:             handheld, print, projection, screen, tty, tv
+alignment-adjust:               handheld, print, projection, screen, tty, tv
+line-break:                     handheld, print, projection, screen, tty, tv
+word-break-cjk:                 handheld, print, projection, screen, tty, tv
+word-break-inside:              handheld, print, projection, screen, tty, tv
+word-break:                     handheld, print, projection, screen, tty, tv
+text-space:                     handheld, print, projection, screen, tty, tv
+text-end-overflow:              handheld, print, projection, screen, tty, tv
+text-after-overflow:            handheld, print, projection, screen, tty, tv
+punctuation-trim:               handheld, print, projection, screen, tty, tv
+text-autospace:                 handheld, print, projection, screen, tty, tv
+kerning-mode:                   handheld, print, projection, screen, tty, tv
+kerning-pair-treshold:          handheld, print, projection, screen, tty, tv
+text-underline-style:           handheld, print, projection, screen, tty, tv
+text-underline-color:           handheld, print, projection, screen, tty, tv
+text-underline-mode:            handheld, print, projection, screen, tty, tv
+text-underline-position:        handheld, print, projection, screen, tty, tv
+text-underline:                 handheld, print, projection, screen, tty, tv
+text-line-through-style:        handheld, print, projection, screen, tty, tv
+text-line-through-color:        handheld, print, projection, screen, tty, tv
+text-line-through-mode:         handheld, print, projection, screen, tty, tv
+text-line-through:              handheld, print, projection, screen, tty, tv
+text-overline-style:            handheld, print, projection, screen, tty, tv
+text-overline-color:            handheld, print, projection, screen, tty, tv
+text-overline-mode:             handheld, print, projection, screen, tty, tv
+text-overline:                  handheld, print, projection, screen, tty, tv
+text-combine:                   handheld, print, projection, screen, tty, tv
+display-model:                  handheld, print, projection, screen, tty, tv
+display-role:                   handheld, print, projection, screen, tty, tv
+margin-inside:                  handheld, print, projection, screen, tty, tv
+margin-outside:                 handheld, print, projection, screen, tty, tv
+box-width:                      handheld, print, projection, screen, tty, tv
+box-height:                     handheld, print, projection, screen, tty, tv
+fit:                            handheld, print, projection, screen, tty, tv
+link:                           handheld, print, projection, screen, tty, tv
+column-width-policy:            handheld, print, projection, screen, tty, tv
+column-space-distribution:      handheld, print, projection, screen, tty, tv
+column-count:                   handheld, print, projection, screen, tty, tv
+column-width:                   handheld, print, projection, screen, tty, tv
+background-clip:                handheld, print, projection, screen, tty, tv
+background-size:                handheld, print, projection, screen, tty, tv
+background-quantity:            handheld, print, projection, screen, tty, tv
+background-spacing:             handheld, print, projection, screen, tty, tv
+background-origin:              handheld, print, projection, screen, tty, tv
+all-space-treatment:            handheld, print, projection, screen, tty, tv
+hanging-punctuation:            handheld, print, projection, screen, tty, tv
+line-grid:                      handheld, print, projection, screen, tty, tv
+line-grid-mode:                 handheld, print, projection, screen, tty, tv
+line-grid-progression:          handheld, print, projection, screen, tty, tv
+linefeed-treatment:             handheld, print, projection, screen, tty, tv
+text-script:                    handheld, print, projection, screen, tty, tv
+text-overflow:                  handheld, print, projection, screen, tty, tv
+text-overflow-ellipsis:         handheld, print, projection, screen, tty, tv
+text-overflow-mode:             handheld, print, projection, screen, tty, tv
+white-space-treatment:          handheld, print, projection, screen, tty, tv
+wrap-option:                    handheld, print, projection, screen, tty, tv
+column-gap:                     handheld, print, projection, screen, tty, tv
+column-rule:                    handheld, print, projection, screen, tty, tv
+column-rule-color:              handheld, print, projection, screen, tty, tv
+column-rule-style:              handheld, print, projection, screen, tty, tv
+column-rule-width:              handheld, print, projection, screen, tty, tv
+drop-initial-after-adjust:      handheld, print, projection, screen, tty, tv
+drop-initial-after-align:       handheld, print, projection, screen, tty, tv
+drop-initial-before-adjust:     handheld, print, projection, screen, tty, tv
+drop-initial-before-align:      handheld, print, projection, screen, tty, tv
+drop-initial-size:              handheld, print, projection, screen, tty, tv
+drop-initial-value:             handheld, print, projection, screen, tty, tv
+inline-box-align:               handheld, print, projection, screen, tty, tv
+line-stacking:                  handheld, print, projection, screen, tty, tv
+line-stacking-ruby:             handheld, print, projection, screen, tty, tv
+line-stacking-shift:            handheld, print, projection, screen, tty, tv
+line-stacking-strategy:         handheld, print, projection, screen, tty, tv
+text-height:                    handheld, print, projection, screen, tty, tv
+appearance:                     handheld, projection, screen, tty, tv
+icon:                           all
+nav-index:                      braille, handheld, projection, screen, speech, tty, tv
+nav-right:                      braille, handheld, projection, screen, speech, tty, tv
+nav-up:                         braille, handheld, projection, screen, speech, tty, tv
+nav-down:                       braille, handheld, projection, screen, speech, tty, tv
+nav-left:                       braille, handheld, projection, screen, speech, tty, tv
+outline-offset:                 handheld, print, projection, screen, tty, tv
+overflow-x:                     handheld, print, projection, screen, tty, tv
+overflow-y:                     handheld, print, projection, screen, tty, tv
+ruby-span:                      handheld, print, projection, screen, tty, tv
+text-blink:                     handheld, print, projection, screen, tty, tv
+clear-after:                    handheld, print, projection, screen, tty, tv
+crop:                           handheld, print, projection, screen, tty, tv
+fit-position:                   handheld, print, projection, screen, tty, tv
+float-displace:                 handheld, print, projection, screen, tty, tv
+indent-edge-reset:              handheld, print, projection, screen, tty, tv
+marquee:                        handheld, print, projection, screen, tty, tv
+marquee-direction:              handheld, print, projection, screen, tty, tv
+marquee-repetition:             handheld, print, projection, screen, tty, tv
+marquee-speed:                  handheld, print, projection, screen, tty, tv
+marquee-style:                  handheld, print, projection, screen, tty, tv
+overflow-clip:                  handheld, print, projection, screen, tty, tv
+border-top-right-radius:        handheld, print, projection, screen, tty, tv
+border-bottom-right-radius:     handheld, print, projection, screen, tty, tv
+border-bottom-left-radius:      handheld, print, projection, screen, tty, tv
+border-top-left-radius:         handheld, print, projection, screen, tty, tv
+border-radius:                  handheld, print, projection, screen, tty, tv
+border-top-image:               handheld, print, projection, screen, tty, tv
+border-right-image:             handheld, print, projection, screen, tty, tv
+border-bottom-image:            handheld, print, projection, screen, tty, tv
+border-left-image:              handheld, print, projection, screen, tty, tv
+border-image:                   handheld, print, projection, screen, tty, tv
+border-top-left-image:          handheld, print, projection, screen, tty, tv
+border-top-right-image:         handheld, print, projection, screen, tty, tv
+border-bottom-right-image:      handheld, print, projection, screen, tty, tv
+border-bottom-left-image:       handheld, print, projection, screen, tty, tv
+border-corner-image:            handheld, print, projection, screen, tty, tv
+border-top-fit-length:          handheld, print, projection, screen, tty, tv
+border-right-fit-length:        handheld, print, projection, screen, tty, tv
+border-bottom-fit-length:       handheld, print, projection, screen, tty, tv
+border-left-fit-length:         handheld, print, projection, screen, tty, tv
+border-top-fit-width:           handheld, print, projection, screen, tty, tv
+border-right-fit-width:         handheld, print, projection, screen, tty, tv
+border-bottom-fit-width:        handheld, print, projection, screen, tty, tv
+border-left-fit-width:          handheld, print, projection, screen, tty, tv
+border-fit-length:              handheld, print, projection, screen, tty, tv
+border-fit-width:               handheld, print, projection, screen, tty, tv
+border-fit:                     handheld, print, projection, screen, tty, tv
+border-top-left-fit-length:     handheld, print, projection, screen, tty, tv
+border-top-right-fit-length:    handheld, print, projection, screen, tty, tv
+border-bottom-right-fit-length: handheld, print, projection, screen, tty, tv
+border-bottom-left-fit-length:  handheld, print, projection, screen, tty, tv
+border-top-left-fit-width:      handheld, print, projection, screen, tty, tv
+border-top-right-fit-width:     handheld, print, projection, screen, tty, tv
+border-bottom-right-fit-width:  handheld, print, projection, screen, tty, tv
+border-bottom-left-fit-width:   handheld, print, projection, screen, tty, tv
+border-corner-fit:              handheld, print, projection, screen, tty, tv
+border-image-transform:         handheld, print, projection, screen, tty, tv
+border-break:                   handheld, print, projection, screen, tty, tv
+box-shadow:                     handheld, print, projection, screen, tty, tv
+block-progression:              handheld, print, projection, screen, tty, tv
+word-break-wrap:                handheld, print, projection, screen, tty, tv
+collapse:                       handheld, print, projection, screen, tty, tv
+
+alignment-baseline:             handheld, print, projection, screen, tty, tv
+baseline-shift:                 handheld, print, projection, screen, tty, tv
+clip-path:                      handheld, print, projection, screen, tty, tv
+clip-rule:                      handheld, print, projection, screen, tty, tv
+color-interpolation:            handheld, print, projection, screen, tty, tv
+dominant-baseline:              handheld, print, projection, screen, tty, tv
+enable-background:              handheld, print, projection, screen, tty, tv
+fill-opacity:                   handheld, print, projection, screen, tty, tv
+filter:                         handheld, print, projection, screen, tty, tv
+flood-opacity:                  handheld, print, projection, screen, tty, tv
+flood-color:                    handheld, print, projection, screen, tty, tv
+glyph-orientation-horizontal:   handheld, print, projection, screen, tty, tv
+glyph-orientation-vertical:     handheld, print, projection, screen, tty, tv
+image-rendering:                handheld, print, projection, screen, tty, tv
+kerning:                        handheld, print, projection, screen, tty, tv
+mask:                           handheld, print, projection, screen, tty, tv
+opacity:                        handheld, print, projection, screen, tty, tv
+pointer-events:                 handheld, print, projection, screen, tty, tv
+shape-rendering:                handheld, print, projection, screen, tty, tv
+stop-color:                     handheld, print, projection, screen, tty, tv
+stop-opacity:                   handheld, print, projection, screen, tty, tv
+stroke-opacity:                 handheld, print, projection, screen, tty, tv
+text-anchor:                    handheld, print, projection, screen, tty, tv
+text-rendering:                 handheld, print, projection, screen, tty, tv
+writing-mode:                   handheld, print, projection, screen, tty, tv
+
+color-interpolation-filter:     handheld, print, projection, screen, tty, tv
+color-profile:                  handheld, print, projection, screen, tty, tv
+color-rendering:                handheld, print, projection, screen, tty, tv
+marker:                         handheld, print, projection, screen, tty, tv
+marker-start:                   handheld, print, projection, screen, tty, tv
+marker-end:                     handheld, print, projection, screen, tty, tv
+marker-mid:                     handheld, print, projection, screen, tty, tv
+lighting-color:                 handheld, print, projection, screen, tty, tv
+
+
+# properties not yet implemented
+
+background-break:               handheld, print, projection, screen, tty, tv
+image-orientation:              handheld, print, projection, screen, tty, tv
+image-resolution:               handheld, print, projection, screen, tty, tv
+move-to:                        all
+page-policy:                    embossed, handheld, print, projection, tv
+box-orient:                     handheld, print, projection, screen, tty, tv
+box-direction:                  handheld, print, projection, screen, tty, tv
+box-align:                      handheld, print, projection, screen, tty, tv
+box-flex:                       handheld, print, projection, screen, tty, tv
+box-pack:                       handheld, print, projection, screen, tty, tv
+box-flex-group:                 handheld, print, projection, screen, tty, tv
+box-lines:                      handheld, print, projection, screen, tty, tv
+target-name:                    handheld, projection, screen, tty, tv
+target-new:                     handheld, projection, screen, tty, tv
+target-position:                handheld, projection, screen, tty, tv
+target:                         handheld, projection, screen, tty, tv
+presentation-level:             all
+ruby-position:                  handheld, print, projection, screen, tty, tv
+rest-before:                    aural, speech
+rest-after:                     aural, speech
+rest:                           aural, speech
+mark-before:                    aural, speech
+mark-after:                     aural, speech
+mark:                           aural, speech
+voice-stress:                   aural, speech
+tab-position:                   handheld, print, projection, screen, tty, tv
+tab-align:                      handheld, print, projection, screen, tty, tv
+tab-leaders:                    handheld, print, projection, screen, tty, tv
+tab-leaders-alignment:          handheld, print, projection, screen, tty, tv
+tab:                            handheld, print, projection, screen, tty, tv
+white-space-collapse:           handheld, print, projection, screen, tty, tv
+hyphenate:                      handheld, print, projection, screen, tty, tv
+text-wrap:                      handheld, print, projection, screen, tty, tv
+word-wrap:                      handheld, print, projection, screen, tty, tv
+size:                           embossed, handheld, print, projection, tv
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/properties/MobileProperties.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,206 @@
+# Mobile Properties
+
+font-style:                     org.w3c.css.properties.css1.CssFontStyleCSS2
+font-variant:                   org.w3c.css.properties.css1.CssFontVariantCSS2
+font-weight:                    org.w3c.css.properties.css1.CssFontWeightCSS2
+font-size:                      org.w3c.css.properties.css1.CssFontSizeCSS2
+font-family:                    org.w3c.css.properties.css1.CssFontFamilyCSS2
+font:                           org.w3c.css.properties.css1.CssFontCSS2
+color:                          org.w3c.css.properties.css1.CssColorCSS2
+background-color:               org.w3c.css.properties.css1.CssBackgroundColorMob
+background-image:               org.w3c.css.properties.css1.CssBackgroundImageMob
+background-repeat:              org.w3c.css.properties.css1.CssBackgroundRepeatMob
+background-attachment:          org.w3c.css.properties.css1.CssBackgroundAttachmentMob
+background-position:            org.w3c.css.properties.css1.CssBackgroundPositionMob
+background:                     org.w3c.css.properties.css1.CssBackgroundMob
+text-decoration:                org.w3c.css.properties.css1.CssTextDecorationMob
+vertical-align:                 org.w3c.css.properties.css1.CssVerticalAlignMob
+text-transform:                 org.w3c.css.properties.css1.CssTextTransform
+text-align:                     org.w3c.css.properties.css1.CssTextAlignMob
+text-indent:                    org.w3c.css.properties.css1.CssTextIndentMob
+margin-top:                     org.w3c.css.properties.css1.CssMarginTop
+margin-bottom:                  org.w3c.css.properties.css1.CssMarginBottom
+margin-left:                    org.w3c.css.properties.css1.CssMarginLeft
+margin-right:                   org.w3c.css.properties.css1.CssMarginRight
+margin:                         org.w3c.css.properties.css1.CssMargin
+padding-top:                    org.w3c.css.properties.css1.CssPaddingTop
+padding-bottom:                 org.w3c.css.properties.css1.CssPaddingBottom
+padding-left:                   org.w3c.css.properties.css1.CssPaddingLeft
+padding-right:                  org.w3c.css.properties.css1.CssPaddingRight
+padding:                        org.w3c.css.properties.css1.CssPadding
+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-top-color:               org.w3c.css.properties.css1.CssBorderTopColorCSS2
+border-right-color:             org.w3c.css.properties.css1.CssBorderRightColorCSS2
+border-left-color:              org.w3c.css.properties.css1.CssBorderLeftColorCSS2
+border-bottom-color:            org.w3c.css.properties.css1.CssBorderBottomColorCSS2
+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
+border-width:                   org.w3c.css.properties.css1.CssBorderWidthCSS2
+border-color:                   org.w3c.css.properties.css1.CssBorderColorCSS2
+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:                         org.w3c.css.properties.css1.CssBorderCSS2
+width:                          org.w3c.css.properties.css1.CssWidthMob
+height:                         org.w3c.css.properties.css1.CssHeightMob
+float:                          org.w3c.css.properties.css1.CssFloat
+clear:                          org.w3c.css.properties.css1.CssClear
+display:                        org.w3c.css.properties.css1.CssDisplayCSS1
+white-space:                    org.w3c.css.properties.css1.CssWhiteSpace
+list-style-type:                org.w3c.css.properties.css1.CssListStyleTypeCSS1
+list-style-image:               org.w3c.css.properties.css1.CssListStyleImageCSS1
+list-style-position:            org.w3c.css.properties.css1.CssListStylePositionCSS1
+list-style:                     org.w3c.css.properties.css1.CssListStyleCSS1
+visibility:                     org.w3c.css.properties.css1.CssVisibility
+speak-date:                             org.w3c.css.properties.aural.ACssSpeakDate
+speak-time:                             org.w3c.css.properties.aural.ACssSpeakTime
+counter-increment:                  org.w3c.css.properties.css1.CssCounterIncrement
+counter-reset:                      org.w3c.css.properties.css1.CssCounterReset
+content:                                org.w3c.css.properties.css1.CssContentCSS2
+
+# Table properties
+
+row-span:                       org.w3c.css.properties.css2.table.RowSpan
+column-span:                    org.w3c.css.properties.css2.table.ColumnSpan
+table-layout:                       org.w3c.css.properties.css2.table.TableLayout
+caption-side:                   org.w3c.css.properties.css2.table.CaptionSide
+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
+speak-header:                   org.w3c.css.properties.css2.table.SpeakHeader
+cursor:                         org.w3c.css.properties.css2.user.CursorCSS2
+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
+font-stretch:                   org.w3c.css.properties.css1.CssFontStretchCSS2
+font-size-adjust:               org.w3c.css.properties.css1.CssFontSizeAdjustCSS2
+word-spacing:                   org.w3c.css.properties.css1.CssWordSpacing
+letter-spacing:                 org.w3c.css.properties.css1.CssLetterSpacing
+text-shadow:                    org.w3c.css.properties.css1.CssTextShadow
+line-height:                    org.w3c.css.properties.css1.CssLineHeightCSS2
+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
+position:                       org.w3c.css.properties.css1.CssPosition
+z-index:                        org.w3c.css.properties.css1.CssZIndex
+direction:                      org.w3c.css.properties.css1.CssDirection
+unicode-bidi:                   org.w3c.css.properties.css1.CssUnicodeBidi
+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
+overflow:                       org.w3c.css.properties.css1.CssOverflow
+clip:                           org.w3c.css.properties.css1.CssClip
+quotes:                         org.w3c.css.properties.css1.CssQuotes
+marker-offset:                  org.w3c.css.properties.css1.CssMarkerOffset
+                        
+# Aural Properties      
+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-numeral:                  org.w3c.css.properties.aural.ACssSpeakNumeral
+speak:                          org.w3c.css.properties.aural.ACssSpeak
+azimuth:                        org.w3c.css.properties.aural.ACssAzimuth
+
+# Paged properties
+
+@page.size:                     org.w3c.css.properties.paged.Size  #should be left out?
+@page.marks:                    org.w3c.css.properties.paged.Marks  #should be left out?
+@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
+@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.float:                    org.w3c.css.properties.css1.CssFloat
+@page.clear:                    org.w3c.css.properties.css1.CssClear
+@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
+
+
+
+# Font properties
+
+@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
+@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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/properties/ProfilesProperties.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,27 @@
+# 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
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/PropertiesLoader.class has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/properties/SVGBasicProperties.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,57 @@
+alignment-baseline:             org.w3c.css.properties.svg.AlignmentBaseline
+baseline-shift:                 org.w3c.css.properties.css3.CssBaselineShift
+clip:                           org.w3c.css.properties.css1.CssClip
+clip-path:                      org.w3c.css.properties.svg.ClipPath
+clip-rule:                      org.w3c.css.properties.svg.ClipRule
+color:                          org.w3c.css.properties.css1.CssColor
+color-interpolation:            org.w3c.css.properties.svg.ColorInterpolation
+color-interpolation-filters:    org.w3c.css.properties.svg.ColorInterpolation
+color-profile:                  org.w3c.css.properties.svg.ColorProfile
+color-rendering:                org.w3c.css.properties.svg.ColorRendering
+cursor:                         org.w3c.css.properties.css2.user.CssCursorCSS2
+direction:                      org.w3c.css.properties.css1.CssDirection
+display:                        org.w3c.css.properties.css1.CssDisplayCSS2
+dominant-baseline:              org.w3c.css.properties.svg.DominantBaseline
+enable-background:              org.w3c.css.properties.svg.EnableBackground
+fill:                           org.w3c.css.properties.svg.Fill
+fill-rule:                      org.w3c.css.properties.svg.FillRule
+fill-opacity:                   org.w3c.css.properties.svg.FillOpacity
+filter:                         org.w3c.css.properties.svg.Filter
+flood-opacity:                  org.w3c.css.properties.svg.FloodOpacity
+flood-color:                    org.w3c.css.properties.svg.FloodColor
+font:                           org.w3c.css.properties.css1.CssFontCSS2
+font-family:                    org.w3c.css.properties.css1.CssFontFamilyCSS2
+font-size-adjust:               org.w3c.css.properties.css1.CssFontSizeAdjustCSS2
+font-stretch:                   org.w3c.css.properties.css1.CssFontStretchCSS2
+font-style:                     org.w3c.css.properties.css1.CssFontStyleCSS2
+font-variant:                   org.w3c.css.properties.css1.CssFontVariantCSS2
+font-weight:                    org.w3c.css.properties.css1.CssFontWeightCSS2
+font-size:                      org.w3c.css.properties.css1.CssFontSizeCSS2
+glyph-orientation-horizontal:   org.w3c.css.properties.css3.CssGlyphHor
+glyph-orientation-vertical:     org.w3c.css.properties.css3.CssGlyphOrVert
+image-rendering:                org.w3c.css.properties.svg.ImageRendering
+kerning:                        org.w3c.css.properties.svg.Kerning
+letter-spacing:                 org.w3c.css.properties.css1.CssLetterSpacing
+mask:                           org.w3c.css.properties.svg.Mask
+opacity:                        org.w3c.css.properties.css3.CssOpacity
+overflow:                       org.w3c.css.properties.css1.CssOverflow
+pointer-events:                 org.w3c.css.properties.svg.PointerEvents
+shape-rendering:                org.w3c.css.properties.svg.ShapeRendering
+stop-color:                     org.w3c.css.properties.svg.StopColor
+stop-opacity:                   org.w3c.css.properties.svg.StopOpacity
+projection.stop-opacity:         org.w3c.css.properties.svg.StopOpacity
+stroke:                         org.w3c.css.properties.svg.Stroke
+stroke-dasharray:               org.w3c.css.properties.svg.StrokeDashArray
+stroke-dashoffset:              org.w3c.css.properties.svg.StrokeDashOffset
+stroke-linecap:                 org.w3c.css.properties.svg.StrokeLineCap
+stroke-linejoin:                org.w3c.css.properties.svg.StrokeLinejoin
+stroke-miterlimit:              org.w3c.css.properties.svg.StrokeMiterLimit
+stroke-opacity:                 org.w3c.css.properties.svg.StrokeOpacity
+stroke-width:                   org.w3c.css.properties.svg.StrokeWidth
+text-anchor:                    org.w3c.css.properties.svg.TextAnchor
+text-decoration:                org.w3c.css.properties.css1.CssTextDecoration
+text-rendering:                 org.w3c.css.properties.svg.TextRendering
+unicode-bidi:                   org.w3c.css.properties.css1.CssUnicodeBidi
+visibility:                     org.w3c.css.properties.css1.CssVisibility
+word-spacing:                   org.w3c.css.properties.css1.CssWordSpacing
+writing-mode:                   org.w3c.css.properties.svg.WritingModeSVG
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/properties/SVGProperties.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,65 @@
+alignment-baseline:             org.w3c.css.properties.svg.AlignmentBaseline
+baseline-shift:                 org.w3c.css.properties.css3.CssBaselineShift
+clip:                           org.w3c.css.properties.css1.CssClip
+clip-path:                      org.w3c.css.properties.svg.ClipPath
+clip-rule:                      org.w3c.css.properties.svg.ClipRule
+color:                          org.w3c.css.properties.css1.CssColor
+color-interpolation:            org.w3c.css.properties.svg.ColorInterpolation
+color-interpolation-filters:    org.w3c.css.properties.svg.ColorInterpolation
+color-profile:                  org.w3c.css.properties.svg.ColorProfile
+color-rendering:                org.w3c.css.properties.svg.ColorRendering
+cursor:                         org.w3c.css.properties.css2.user.CssCursorCSS2
+direction:                      org.w3c.css.properties.css1.CssDirection
+display:                        org.w3c.css.properties.css1.CssDisplayCSS2
+dominant-baseline:              org.w3c.css.properties.svg.DominantBaseline
+enable-background:              org.w3c.css.properties.svg.EnableBackground
+font:                           org.w3c.css.properties.css1.CssFontCSS2
+font-family:                    org.w3c.css.properties.css1.CssFontFamilyCSS2
+font-size-adjust:               org.w3c.css.properties.css1.CssFontSizeAdjustCSS2
+font-stretch:                   org.w3c.css.properties.css1.CssFontStretchCSS2
+font-style:                     org.w3c.css.properties.css1.CssFontStyleCSS2
+font-variant:                   org.w3c.css.properties.css1.CssFontVariantCSS2
+font-weight:                    org.w3c.css.properties.css1.CssFontWeightCSS2
+glyph-orientation-horizontal:   org.w3c.css.properties.css3.CssGlyphHor
+glyph-orientation-vertical:     org.w3c.css.properties.css3.CssGlyphOrVert
+letter-spacing:                 org.w3c.css.properties.css1.CssLetterSpacing
+opacity:                        org.w3c.css.properties.css3.CssOpacity
+overflow:                       org.w3c.css.properties.css1.CssOverflow
+text-decoration:                org.w3c.css.properties.css1.CssTextDecoration
+unicode-bidi:                   org.w3c.css.properties.css1.CssUnicodeBidi
+visibility:                     org.w3c.css.properties.css1.CssVisibility
+word-spacing:                   org.w3c.css.properties.css1.CssWordSpacing
+writing-mode:                   org.w3c.css.properties.svg.WritingModeSVG
+flood-opacity:                  org.w3c.css.properties.svg.FloodOpacity
+filter:                         org.w3c.css.properties.svg.Filter
+fill-rule:                      org.w3c.css.properties.svg.FillRule
+fill-opacity:                   org.w3c.css.properties.svg.FillOpacity
+image-rendering:                org.w3c.css.properties.svg.ImageRendering
+mask:                           org.w3c.css.properties.svg.Mask
+stop-opacity:                   org.w3c.css.properties.svg.StopOpacity
+projection.stop-opacity:        org.w3c.css.properties.svg.StopOpacity
+kerning:                        org.w3c.css.properties.svg.Kerning
+marker:                         org.w3c.css.properties.svg.Marker
+marker-start:                   org.w3c.css.properties.svg.MarkerStart
+projection.marker-start:        org.w3c.css.properties.svg.MarkerStart
+marker-end:                     org.w3c.css.properties.svg.MarkerEnd
+marker-mid:                     org.w3c.css.properties.svg.MarkerMid
+pointer-events:                 org.w3c.css.properties.svg.PointerEvents
+shape-rendering:                org.w3c.css.properties.svg.ShapeRendering
+text-rendering:                 org.w3c.css.properties.svg.TextRendering        
+text-anchor:                    org.w3c.css.properties.svg.TextAnchor
+stroke-linejoin:                org.w3c.css.properties.svg.StrokeLinejoin
+stroke-linecap:                 org.w3c.css.properties.svg.StrokeLineCap
+stroke-miterlimit:              org.w3c.css.properties.svg.StrokeMiterLimit
+stroke-opacity:                 org.w3c.css.properties.svg.StrokeOpacity
+stroke-width:                   org.w3c.css.properties.svg.StrokeWidth
+stroke-dashoffset:              org.w3c.css.properties.svg.StrokeDashOffset
+stroke-dasharray:               org.w3c.css.properties.svg.StrokeDashArray
+stop-color:                     org.w3c.css.properties.svg.StopColor
+lighting-color:                 org.w3c.css.properties.svg.LightingColor
+flood-color:                    org.w3c.css.properties.svg.FloodColor
+stroke:                         org.w3c.css.properties.svg.Stroke
+fill:                           org.w3c.css.properties.svg.Fill
+font-size:                      org.w3c.css.properties.css1.CssFontSizeCSS2
+solid-color:                    org.w3c.css.properties.svg.SolidColor
+solid-opacity:                  org.w3c.css.properties.svg.SolidOpacity
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/properties/SVGTinyProperties.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,17 @@
+color:                          org.w3c.css.properties.css1.CssColor
+display:                        org.w3c.css.properties.css1.CssDisplayCSS2
+fill:                           org.w3c.css.properties.svg.Fill
+fill-rule:                      org.w3c.css.properties.svg.FillRule
+font:                           org.w3c.css.properties.css1.CssFontCSS2
+font-family:                    org.w3c.css.properties.css1.CssFontFamilyCSS2
+font-size:                      org.w3c.css.properties.css1.CssFontSizeCSS2
+font-style:                     org.w3c.css.properties.css1.CssFontStyleCSS2
+font-weight:                    org.w3c.css.properties.css1.CssFontWeightCSS2
+stroke:                         org.w3c.css.properties.svg.Stroke
+stroke-dashoffset:              org.w3c.css.properties.svg.StrokeDashOffset
+stroke-dasharray:               org.w3c.css.properties.svg.StrokeDashArray
+stroke-linejoin:                org.w3c.css.properties.svg.StrokeLinejoin
+stroke-linecap:                 org.w3c.css.properties.svg.StrokeLineCap
+stroke-miterlimit:              org.w3c.css.properties.svg.StrokeMiterLimit
+stroke-width:                   org.w3c.css.properties.svg.StrokeWidth
+visibility:                     org.w3c.css.properties.css1.CssVisibility
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/properties/TVProperties.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,80 @@
+#TV profile properties
+
+background-color:      org.w3c.css.properties.css1.CssBackgroundColorCSS2
+background-image:      org.w3c.css.properties.css1.CssBackgroundImageCSS2
+background-repeat:     org.w3c.css.properties.css1.CssBackgroundRepeatCSS2
+background-position:   org.w3c.css.properties.css1.CssBackgroundPositionCSS2
+background:            org.w3c.css.properties.css1.CssBackgroundTV
+border:                org.w3c.css.properties.css1.CssBorderCSS2
+border-color:          org.w3c.css.properties.css1.CssBorderColorCSS2
+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-top-color:      org.w3c.css.properties.css1.CssBorderTopColorCSS2
+border-right-color:    org.w3c.css.properties.css1.CssBorderRightColorCSS2
+border-left-color:     org.w3c.css.properties.css1.CssBorderLeftColorCSS2
+border-bottom-color:   org.w3c.css.properties.css1.CssBorderBottomColorCSS2
+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
+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-width:          org.w3c.css.properties.css1.CssBorderWidthCSS2
+bottom:                org.w3c.css.properties.css1.CssBottom
+caption-side:          org.w3c.css.table.CaptionSide
+clear:                 org.w3c.css.properties.css1.CssClear
+clip:                  org.w3c.css.properties.css1.CssClip
+color:                 org.w3c.css.properties.css1.CssColorCSS2
+display:               org.w3c.css.properties.css1.CssDisplayCSS1
+float:                 org.w3c.css.properties.css1.CssFloatCSS2
+font:                  org.w3c.css.properties.css1.CssFontCSS2
+font-family:           org.w3c.css.properties.css1.CssFontFamilyCSS2
+font-size:             org.w3c.css.properties.css1.CssFontSizeCSS2
+font-style:            org.w3c.css.properties.css1.CssFontStyleCSS2
+font-variant:          org.w3c.css.properties.css1.CssFontVariantCSS2
+font-weight:           org.w3c.css.properties.css1.CssFontWeightCSS2
+height:                org.w3c.css.properties.css1.CssHeight
+left:                  org.w3c.css.properties.css1.CssLeft
+line-height:           org.w3c.css.properties.css1.CssLineHeightCSS2
+list-style-image:      org.w3c.css.properties.css1.CssListStyleImageCSS2
+list-style-position:   org.w3c.css.properties.css1.CssListStylePositionCSS2
+list-style:            org.w3c.css.properties.css1.CssListStyleCSS2
+list-style-type:       org.w3c.css.properties.css1.CssListStyleTypeTV
+margin-top:            org.w3c.css.properties.css1.CssMarginTop
+margin-bottom:         org.w3c.css.properties.css1.CssMarginBottom
+margin-left:           org.w3c.css.properties.css1.CssMarginLeft
+margin-right:          org.w3c.css.properties.css1.CssMarginRight
+margin:                org.w3c.css.properties.css1.CssMargin
+outline:               org.w3c.css.user.Outline
+outline-width:         org.w3c.css.user.OutlineWidth
+outline-style:         org.w3c.css.user.OutlineStyle
+outline-color:         org.w3c.css.user.OutlineColor
+padding-top:           org.w3c.css.properties.css1.CssPaddingTop
+padding-bottom:        org.w3c.css.properties.css1.CssPaddingBottom
+padding-left:          org.w3c.css.properties.css1.CssPaddingLeft
+padding-right:         org.w3c.css.properties.css1.CssPaddingRight
+padding:               org.w3c.css.properties.css1.CssPadding
+position:              org.w3c.css.properties.css1.CssPositionTV
+right:                 org.w3c.css.properties.css1.CssRight
+text-decoration:       org.w3c.css.properties.css1.CssTextDecorationTV
+vertical-align:        org.w3c.css.properties.css1.CssVerticalAlignTV
+text-align:            org.w3c.css.properties.css1.CssTextAlignTV
+text-indent:           org.w3c.css.properties.css1.CssTextIndent
+text-transform:        org.w3c.css.properties.css1.CssTextTransform
+top:                   org.w3c.css.properties.css1.CssTopright                
+visibility:            org.w3c.css.properties.css1.CssVisibility
+white-space:           org.w3c.css.properties.css1.CssWhiteSpace
+width:                 org.w3c.css.properties.css1.CssWidth
+z-index:               org.w3c.css.properties.css1.CssZIndex
+
+#CSS3 color properties
+
+opacity:                org.w3c.css.properties.css3.CssOpacity
+
+
+
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/ATSCColor.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/ATSCDynamicRefresh.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/ATSCNavDown.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/ATSCNavIndex.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/ATSCNavLeft.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/ATSCNavRight.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/ATSCNavUp.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/ATSCStyle.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/AscentATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/BaselineATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/BboxATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/CapHeightATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/CenterlineATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/CssBackgroundATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/CssBackgroundAttachmentATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/CssBackgroundColorATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/CssBackgroundImageATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/CssBackgroundPositionATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/CssBackgroundRepeatATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/CssBorderATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/CssBorderBottomATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/CssBorderBottomColorATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/CssBorderBottomStyleATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/CssBorderBottomWidthATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/CssBorderColorATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/CssBorderFaceColorATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/CssBorderFaceStyleATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/CssBorderFaceWidthATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/CssBorderLeftATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/CssBorderLeftColorATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/CssBorderLeftStyleATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/CssBorderLeftWidthATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/CssBorderRightATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/CssBorderRightColorATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/CssBorderRightStyleATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/CssBorderRightWidthATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/CssBorderStyleATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/CssBorderTopATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/CssBorderTopColorATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/CssBorderTopStyleATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/CssBorderTopWidthATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/CssBorderWidthATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/DefinitionSrcATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/DescentATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/MathlineATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/Panose1ATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/SlopeATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/SrcATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/StemhATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/StemvATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/ToplineATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/UnitsPerEmATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/WidthsATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/atsc/XHeightATSC.class has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/properties/aural/ACSSDefault.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,23 @@
+style: org.w3c.css.properties.aural.ACssStyle
+properties: AuralProperties.properties
+extended-parser: true
+
+volume.inherited:	true
+speak.inherited:        true
+pause.inherited:	false
+pause-after.inherited:	false
+pause-before.inherited:	false
+cue.inherited:		false
+cue-after.inherited:	false
+cue-before.inherited:	false
+play-during.inherited:	false
+azimuth.inherited:      true
+elevation.inherited:    true
+speech-rate.inherited:	true
+voice-family.inherited:	true
+pitch.inherited:	true
+pitch-range.inherited:	true
+stress.inherited:       true
+richness.inherited:     true
+speak-punctuation.inherited: true
+speak-numeral.inherited: true
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/aural/ACssAzimuth.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/aural/ACssCue.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/aural/ACssCueAfter.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/aural/ACssCueBefore.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/aural/ACssElevation.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/aural/ACssInterpretAs.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/aural/ACssPause.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/aural/ACssPauseAfter.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/aural/ACssPauseBefore.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/aural/ACssPhonemes.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/aural/ACssPitch.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/aural/ACssPitchRange.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/aural/ACssPlayDuring.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/aural/ACssProperties.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/aural/ACssProperty.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/aural/ACssRichness.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/aural/ACssSpeak.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/aural/ACssSpeakCSS3.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/aural/ACssSpeakDate.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/aural/ACssSpeakNumeral.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/aural/ACssSpeakPunctuation.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/aural/ACssSpeakTime.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/aural/ACssSpeechRate.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/aural/ACssStress.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/aural/ACssStyle.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/aural/ACssVoiceBalance.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/aural/ACssVoiceDuration.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/aural/ACssVoiceFamily.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/aural/ACssVoiceFamilyCSS3.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/aural/ACssVoicePitchRange.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/aural/ACssVoiceRate.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/aural/ACssVoiceStress.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/aural/ACssVoiceVolume.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/aural/ACssVolume.class has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/properties/aural/AuralDefault.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,56 @@
+# User agent specific
+pause-after.default:  0
+pause-before.default: 0
+
+# Volume :
+volume.silent: -1
+volume.x-soft: 0
+volume.soft:   25
+volume.medium: 50
+volume.loud:   75
+volume.x-loud: 100
+
+# azimuth
+azimuth.left-side: 270
+azimuth.behind.left-side: 270
+azimuth.far-left:  300
+azimuth.behind.far-left:  240
+azimuth.left:      320
+azimuth.behind.left:      220
+azimuth.center-left: 340
+azimuth.behind.center-left: 200
+azimuth.center:     0
+azimuth.behind.center:     180
+azimuth.center-right: 20
+azimuth.behind.center-right: 140
+azimuth.right:      40
+azimuth.behind.right:     120
+azimuth.far-right:  60
+azimuth.behind.far-right: 90
+azimuth.left-side:  90
+azimuth.behind.left-side: 90
+azimuth.leftwards:  20
+azimuth.rightwards: 20
+
+# elevation (funny values !)
+elevation.below:  10
+elevation.level:  30
+elevation.above:  50
+elevation.higher: 70
+elevation.lower:  90
+
+# speech-rate
+speech-rate.medium: 150
+speech-rate.x-slow: 50
+speech-rate.slow:   100
+speech-rate.fast:   200
+speech-rate.x-fast: 250
+speech-rate.faster: -1
+speech-rate.slower: -2
+
+# pitch
+pitch.x-low:  56 
+pitch.low:    85
+pitch.medium: 113
+pitch.high:   170
+pitch.x-high: 226
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/properties/aural/Makefile	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,214 @@
+SRCS = ACssPauseAfter.java ACssProperty.java\
+ACssCue.java ACssPauseBefore.java ACssSpeechRate.java\
+ACssCueAfter.java ACssPitch.java ACssStyle.java\
+ACssCueBefore.java ACssPlayDuring.java ACssVoiceFamily.java\
+ACssPause.java ACssProperties.java ACssVolume.java\
+ACssSpeakPunctuation.java ACssSpeakDate.java\
+ACssSpeakNumeral.java ACssSpeakTime.java\
+ACssRichness.java ACssStress.java\
+ACssPitchRange.java ACssElevation.java\
+ACssAzimuth.java
+
+OBJS = $(SRCS:.java=.class)
+
+PACKAGE = org.w3c.css.aural
+JAVAC = javac
+JAVADOC = javadoc
+JAVADOCFLAGS = -version -d docs -protected
+JAVACFLAGS = 
+MAKEDEPEND = jmakedepend
+
+.SUFFIXES: .class .java
+.java.class:; $(JAVAC) $(JAVACFLAGS) $<
+
+all: $(OBJS)
+
+javadoc:; $(JAVADOC) $(JAVADOCFLAGS) $(PACKAGE)
+
+clean:; -rm -f $(OBJS) *~ core
+
+depend:; $(MAKEDEPEND) $(SRCS)
+
+# DO NOT DELETE THIS LINE -- make depend depends on it.
+ACssPitchRange.class:: ACssPitchRange.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssNumber.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.properties/CssProperty.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+ACssProperty.class:: ACssProperty.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.properties/CssProperty.class
+ACssCueBefore.class:: ACssCueBefore.java\
+	/usr/local/java11/bin/../lib/classes.zip\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssURL.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.properties/CssProperty.class
+ACssSpeakDate.class:: ACssSpeakDate.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.properties/CssProperty.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+ACssPitch.class:: ACssPitch.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssFrequency.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.properties/CssProperty.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+ACssRichness.class:: ACssRichness.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssNumber.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.properties/CssProperty.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+ACssPauseBefore.class:: ACssPauseBefore.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssNumber.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssTime.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssPercentage.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.properties/CssProperty.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+ACssSpeechRate.class:: ACssSpeechRate.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssNumber.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.properties/CssProperty.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+ACssStyle.class:: ACssStyle.java\
+	/usr/local/java11/bin/../lib/classes.zip\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/Warnings.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/Warning.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.properties/Css1Style.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssPercentage.class
+ACssPlayDuring.class:: ACssPlayDuring.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssURL.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssOperator.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.properties/CssProperty.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class\
+	/usr/local/java11/bin/../lib/classes.zip
+ACssProperties.class:: ACssProperties.java\
+	/usr/local/java11/bin/../lib/classes.zip\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.properties/CssProperty.class
+ACssSpeakPunctuation.class:: ACssSpeakPunctuation.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.properties/CssProperty.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+ACssPauseAfter.class:: ACssPauseAfter.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssTime.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssNumber.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssPercentage.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.properties/CssProperty.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+ACssStress.class:: ACssStress.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssNumber.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.properties/CssProperty.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+ACssCueAfter.class:: ACssCueAfter.java\
+	/usr/local/java11/bin/../lib/classes.zip\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssURL.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.properties/CssProperty.class
+ACssAzimuth.class:: ACssAzimuth.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssNumber.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssAngle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.properties/CssProperty.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+ACssElevation.class:: ACssElevation.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssNumber.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssAngle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.properties/CssProperty.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+ACssVoiceFamily.class:: ACssVoiceFamily.java\
+	/usr/local/java11/bin/../lib/classes.zip\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.properties/CssProperty.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssOperator.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssString.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/Util.class
+ACssSpeakNumeral.class:: ACssSpeakNumeral.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.properties/CssProperty.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+ACssCue.class:: ACssCue.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssSelectors.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssOperator.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.properties/CssProperty.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+ACssVolume.class:: ACssVolume.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssNumber.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssPercentage.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.properties/CssProperty.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+ACssPause.class:: ACssPause.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssSelectors.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssOperator.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.properties/CssProperty.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+ACssSpeakTime.class:: ACssSpeakTime.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssNumber.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.properties/CssProperty.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CSS1Default.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,88 @@
+# inherited : true if this property is inherited ...
+
+background.inherited:		false
+background-attachment.inherited:false
+
+color.inherited:		 true
+background-color.inherited:	 false
+background-image.inherited:	 false
+background-position.inherited:	 false
+background-attachment.inherited: false
+background-repeat.inherited:	 false
+background.inherited:	         false
+font.inherited:			 true
+font-family.inherited:		 true
+font-size.inherited:		 true
+font-style.inherited:		 true
+font-variant.inherited:		 true
+font-weight.inherited:		 true
+font-stretch.inherited:		 true
+font-size-adjust.inherited:	 true
+text-ident.inherited:		 true
+text-align.inherited:		 true
+text-decoration.inherited:	 false
+text-shadow.inherited:	         false
+letter-spacing.inherited:	 true
+word-spacing.inherited:		 true
+text-transform.inherited:	 true
+white-space.inherited:		 true
+margin.inherited:		false
+margin-bottom.inherited:	false
+margin-left.inherited:		false
+margin-right.inherited:		false
+margin-top.inherited:		false
+padding.inherited:		false
+padding-bottom.inherited:	false
+padding-left.inherited:		false
+padding-right.inherited:	false
+padding-top.inherited:		false
+display.inherited:		false
+position.inherited:		false
+z-index.inherited:		false
+direction.inherited:		true
+unicode-bidi.inherited:		false
+vertical-align.inherited:	false
+width.inherited:		false
+min-width.inherited:		false
+max-width.inherited:		false
+min-height.inherited:		false
+max-height.inherited:		false
+clear.inherited:		false
+float.inherited:		false
+height.inherited:		false
+list-style.inherited:		true
+list-style-image.inherited:	true
+list-style-position.inherited:	true
+list-style-type.inherited:	true
+
+border.inherited:		false
+border-bottom.inherited:	false
+border-bottom-color.inherited:	false
+border-bottom-style.inherited:	false
+border-bottom-width.inherited:	false
+border-color.inherited:		false
+border-left.inherited:		false
+border-left-color.inherited:	false
+border-left-style.inherited:	false
+border-left-width.inherited:	false
+border-right.inherited:		false
+border-right-color.inherited:	false
+border-right-style.inherited:	false
+border-right-width.inherited:	false
+border-style.inherited:		false
+border-top.inherited:		false
+border-top-color.inherited:	false
+border-top-style.inherited:	false
+border-top-width.inherited:	false
+border-width.inherited:		false
+line-height.inherited:		true
+
+content.inherited:		false
+quotes.inherited:		true
+content.inherited:		false
+counter-reset.inherited:        false
+counter-increment.inherited:    false
+content.inherited:		false
+marker-offset.inherited:        false
+
+
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/Css1Style.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBackground.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBackgroundAttachment.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBackgroundAttachmentCSS1.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBackgroundAttachmentCSS2.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBackgroundAttachmentMob.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBackgroundCSS1.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBackgroundCSS2.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBackgroundColor.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBackgroundColorCSS1.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBackgroundColorCSS2.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBackgroundColorMob.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBackgroundConstants.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBackgroundImage.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBackgroundImageCSS1.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBackgroundImageCSS2.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBackgroundImageMob.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBackgroundMob.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBackgroundPosition.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBackgroundPositionCSS1.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBackgroundPositionCSS2.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBackgroundPositionMob.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBackgroundRepeat.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBackgroundRepeatCSS1.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBackgroundRepeatCSS2.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBackgroundRepeatMob.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBackgroundTV.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorder.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderBottom.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderBottomCSS1.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderBottomCSS2.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderBottomColor.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderBottomColorCSS1.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderBottomColorCSS2.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderBottomStyle.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderBottomStyleCSS1.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderBottomStyleCSS2.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderBottomWidth.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderBottomWidthCSS1.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderBottomWidthCSS2.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderCSS1.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderCSS2.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderColor.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderColorCSS1.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderColorCSS2.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderFaceColor.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderFaceColorCSS1.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderFaceColorCSS2.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderFaceStyle.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderFaceStyleCSS1.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderFaceStyleCSS2.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderFaceWidth.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderFaceWidthCSS1.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderFaceWidthCSS2.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderLeft.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderLeftCSS1.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderLeftCSS2.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderLeftColor.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderLeftColorCSS1.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderLeftColorCSS2.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderLeftStyle.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderLeftStyleCSS1.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderLeftStyleCSS2.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderLeftWidth.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderLeftWidthCSS1.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderLeftWidthCSS2.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderRight.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderRightCSS1.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderRightCSS2.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderRightColor.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderRightColorCSS1.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderRightColorCSS2.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderRightStyle.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderRightStyleCSS1.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderRightStyleCSS2.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderRightWidth.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderRightWidthCSS1.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderRightWidthCSS2.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderStyle.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderStyleCSS1.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderStyleCSS2.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderTop.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderTopCSS1.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderTopCSS2.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderTopColor.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderTopColorCSS1.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderTopColorCSS2.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderTopStyle.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderTopStyleCSS1.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderTopStyleCSS2.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderTopWidth.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderTopWidthCSS1.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderTopWidthCSS2.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderWidth.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderWidthCSS1.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBorderWidthCSS2.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBottom.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssBoxOffsetFace.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssClear.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssClip.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssColor.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssColorCSS1.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssColorCSS2.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssContent.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssContentCSS2.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssCounterIncrement.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssCounterReset.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssDirection.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssDirectionATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssDisplay.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssDisplayCSS1.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssDisplayCSS2.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssFloat.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssFont.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssFontCSS1.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssFontCSS2.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssFontConstant.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssFontConstantCSS1.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssFontConstantCSS2.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssFontFamily.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssFontFamilyCSS1.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssFontFamilyCSS2.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssFontSize.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssFontSizeAdjust.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssFontSizeAdjustCSS2.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssFontSizeCSS1.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssFontSizeCSS2.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssFontStretch.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssFontStretchCSS1.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssFontStretchCSS2.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssFontStyle.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssFontStyleCSS1.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssFontStyleCSS2.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssFontVariant.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssFontVariantCSS1.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssFontVariantCSS2.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssFontWeight.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssFontWeightCSS1.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssFontWeightCSS2.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssHeight.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssHeightMob.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssLeft.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssLetterSpacing.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssLineHeight.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssLineHeightCSS1.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssLineHeightCSS2.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssListStyle.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssListStyleCSS1.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssListStyleCSS2.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssListStyleConstants.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssListStyleImage.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssListStyleImageCSS1.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssListStyleImageCSS2.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssListStylePosition.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssListStylePositionCSS1.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssListStylePositionCSS2.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssListStyleTV.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssListStyleType.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssListStyleTypeCSS1.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssListStyleTypeCSS2.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssListStyleTypeTV.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssMargin.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssMarginBottom.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssMarginLeft.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssMarginRight.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssMarginSide.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssMarginTop.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssMarkerOffset.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssMarkerOffsetATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssMaxHeight.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssMaxHeightATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssMaxWidth.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssMaxWidthATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssMinHeight.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssMinHeightATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssMinWidth.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssMinWidthATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssOverflow.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssPadding.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssPaddingBottom.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssPaddingLeft.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssPaddingRight.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssPaddingSide.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssPaddingTop.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssPosition.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssPositionTV.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssProperties.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssProperty.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssQuotes.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssQuotesATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssRight.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssTextAlign.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssTextAlignMob.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssTextAlignTV.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssTextDecoration.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssTextDecorationMob.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssTextDecorationTV.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssTextIndent.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssTextIndentMob.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssTextPropertiesConstants.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssTextShadow.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssTextShadowATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssTextTransform.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssTop.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssUnicodeBidi.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssUnicodeBidiATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssVerticalAlign.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssVerticalAlignCSS1.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssVerticalAlignMob.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssVerticalAlignTV.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssVisibility.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssWhiteSpace.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssWidth.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssWidthMob.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssWordSpacing.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/CssZIndex.class has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/Makefile	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,512 @@
+SRCS = CssBackground.java CssFontSize.java\
+CssBackgroundAttachment.java CssFontStyle.java\
+CssBackgroundColor.java CssFontVariant.java\
+CssBackgroundConstants.java CssFontWeight.java\
+CssBackgroundImage.java CssHeight.java\
+CssBackgroundPosition.java CssLetterSpacing.java\
+CssBackgroundRepeat.java CssLineHeight.java\
+CssBorder.java CssListStyle.java\
+CssBorderBottom.java CssListStyleConstants.java\
+CssBorderBottomColor.java CssListStyleImage.java\
+CssBorderBottomStyle.java CssListStylePosition.java\
+CssBorderBottomWidth.java CssListStyleType.java\
+CssBorderColor.java CssMargin.java\
+CssMarginBottom.java\
+CssBorderFaceColor.java CssMarginLeft.java\
+CssBorderFaceStyle.java CssMarginRight.java\
+CssBorderFaceWidth.java CssMarginSide.java\
+CssBorderLeft.java CssMarginTop.java\
+CssBorderLeftColor.java CssPadding.java\
+CssBorderLeftStyle.java CssPaddingBottom.java\
+CssBorderLeftWidth.java CssPaddingLeft.java\
+CssBorderRight.java CssPaddingRight.java\
+CssBorderRightColor.java CssPaddingSide.java\
+CssBorderRightStyle.java CssPaddingTop.java\
+CssBorderRightWidth.java\
+CssBorderStyle.java CssProperties.java\
+CssBorderStyleFace.java CssProperty.java\
+CssBorderTop.java\
+CssBorderTopColor.java Css1Style.java\
+CssBorderTopStyle.java CssTextAlign.java\
+CssBorderTopWidth.java CssTextDecoration.java\
+CssBorderWidth.java CssTextIndent.java\
+CssClear.java CssTextPropertiesConstants.java\
+CssColor.java CssTextTransform.java\
+CssDisplay.java CssVerticalAlign.java\
+CssFloat.java CssWhiteSpace.java\
+CssFont.java CssWidth.java\
+CssFontConstant.java CssWordSpacing.java\
+CssFontFamily.java
+
+OBJS = $(SRCS:.java=.class)
+
+PACKAGE = org.w3c.css.properties
+JAVAC = javac
+JAVADOC = javadoc
+JAVADOCFLAGS = -version -d docs -protected
+JAVACFLAGS =
+MAKEDEPEND = jmakedepend
+
+.SUFFIXES: .class .java
+.java.class:; $(JAVAC) $(JAVACFLAGS) $<
+
+all: $(OBJS)
+
+javadoc:; $(JAVADOC) $(JAVADOCFLAGS) $(PACKAGE)
+
+clean:; -rm -f $(OBJS) *~ core
+
+depend:; $(MAKEDEPEND) $(SRCS)
+
+# DO NOT DELETE THIS LINE -- make depend depends on it.
+CssFloat.class:: CssFloat.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBorderLeftStyle.class:: CssBorderLeftStyle.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssTextPropertiesConstants.class:: CssTextPropertiesConstants.java
+CssBorderRightStyle.class:: CssBorderRightStyle.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssMarginSide.class:: CssMarginSide.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssLength.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssPercentage.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssNumber.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBorderFaceColor.class:: CssBorderFaceColor.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssFontStyle.class:: CssFontStyle.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssListStyleImage.class:: CssListStyleImage.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssURL.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssFontFamily.class:: CssFontFamily.java\
+	/usr/local/java11/bin/../lib/classes.zip\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/Util.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssOperator.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssString.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssVerticalAlign.class:: CssVerticalAlign.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssNumber.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssPercentage.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssColor.class:: CssColor.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBorderFaceStyle.class:: CssBorderFaceStyle.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBorderLeftWidth.class:: CssBorderLeftWidth.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssHeight.class:: CssHeight.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssLength.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssNumber.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssWordSpacing.class:: CssWordSpacing.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssLength.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssNumber.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssFontSize.class:: CssFontSize.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssPercentage.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssNumber.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssLength.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBorderBottom.class:: CssBorderBottom.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssSelectors.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssOperator.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBorderLeft.class:: CssBorderLeft.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssSelectors.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssOperator.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssPaddingBottom.class:: CssPaddingBottom.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBackgroundConstants.class:: CssBackgroundConstants.java
+CssMargin.class:: CssMargin.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssSelectors.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssOperator.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssListStyleType.class:: CssListStyleType.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBorderBottomColor.class:: CssBorderBottomColor.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBorderFaceWidth.class:: CssBorderFaceWidth.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssLength.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssNumber.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssListStyle.class:: CssListStyle.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssSelectors.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssOperator.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssProperty.class:: CssProperty.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssSelectors.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.css/StyleSheetOrigin.class
+CssTextDecoration.class:: CssTextDecoration.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBorderBottomStyle.class:: CssBorderBottomStyle.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssTextTransform.class:: CssTextTransform.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssFontWeight.class:: CssFontWeight.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssNumber.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssDisplay.class:: CssDisplay.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBorderTop.class:: CssBorderTop.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssSelectors.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssOperator.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBorderStyle.class:: CssBorderStyle.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssSelectors.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssOperator.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBorderRight.class:: CssBorderRight.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssSelectors.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssOperator.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssMarginTop.class:: CssMarginTop.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBackground.class:: CssBackground.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssSelectors.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssOperator.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssLetterSpacing.class:: CssLetterSpacing.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssLength.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssNumber.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBackgroundImage.class:: CssBackgroundImage.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssURL.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssFontConstant.class:: CssFontConstant.java
+CssWhiteSpace.class:: CssWhiteSpace.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssMarginBottom.class:: CssMarginBottom.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssPadding.class:: CssPadding.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssSelectors.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssOperator.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBorderStyleFace.class:: CssBorderStyleFace.java
+CssBorderBottomWidth.class:: CssBorderBottomWidth.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBackgroundAttachment.class:: CssBackgroundAttachment.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBorderWidth.class:: CssBorderWidth.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssSelectors.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssOperator.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssProperties.class:: CssProperties.java\
+	/usr/local/java11/bin/../lib/classes.zip
+CssTextIndent.class:: CssTextIndent.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssPercentage.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssLength.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssNumber.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBackgroundColor.class:: CssBackgroundColor.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssColor.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssClear.class:: CssClear.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssMarginRight.class:: CssMarginRight.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssPaddingLeft.class:: CssPaddingLeft.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssTextAlign.class:: CssTextAlign.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssListStylePosition.class:: CssListStylePosition.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBorderTopWidth.class:: CssBorderTopWidth.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBorderTopColor.class:: CssBorderTopColor.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssPaddingRight.class:: CssPaddingRight.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssPaddingSide.class:: CssPaddingSide.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssLength.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssPercentage.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssNumber.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBorder.class:: CssBorder.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssSelectors.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssFont.class:: CssFont.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssSelectors.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssOperator.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBackgroundPosition.class:: CssBackgroundPosition.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssPercentage.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssLength.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssNumber.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssOperator.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssFontVariant.class:: CssFontVariant.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBorderColor.class:: CssBorderColor.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssSelectors.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssOperator.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssListStyleConstants.class:: CssListStyleConstants.java
+CssBorderRightWidth.class:: CssBorderRightWidth.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBorderRightColor.class:: CssBorderRightColor.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+Css1Style.class:: Css1Style.java\
+	/usr/local/java11/bin/../lib/classes.zip\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssSelectors.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssPercentage.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssLength.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.css/StyleSheet.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/Warning.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/Warnings.class
+CssBorderLeftColor.class:: CssBorderLeftColor.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssPaddingTop.class:: CssPaddingTop.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBorderTopStyle.class:: CssBorderTopStyle.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssWidth.class:: CssWidth.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssNumber.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssLength.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssPercentage.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssMarginLeft.class:: CssMarginLeft.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssLineHeight.class:: CssLineHeight.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssNumber.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssLength.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssPercentage.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBackgroundRepeat.class:: CssBackgroundRepeat.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/RelativeAndAbsolute.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css1/TextShadowFace.class has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/CSS2Default.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,1 @@
+# empty :-)
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/Css2Properties.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/Css2Property.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/Css2Style.class has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/Makefile	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,33 @@
+SRCS = Css2Properties.java Css2Property.java Css2Style.java
+
+OBJS = $(SRCS:.java=.class)
+
+PACKAGE = org.w3c.css.properties2
+JAVAC = /usr/local/java11/bin/javac
+JAVADOC = javadoc
+JAVADOCFLAGS = -version -d docs -protected
+JAVACFLAGS = 
+MAKEDEPEND = jmakedepend
+
+.SUFFIXES: .class .java
+.java.class:; $(JAVAC) $(JAVACFLAGS) $<
+
+all: $(OBJS)
+
+javadoc:; $(JAVADOC) $(JAVADOCFLAGS) $(PACKAGE)
+
+clean:; -rm -f $(OBJS) *~ core
+
+depend:; $(MAKEDEPEND) $(SRCS)
+
+# DO NOT DELETE THIS LINE -- make depend depends on it.
+Css2Style.class:: Css2Style.java\
+	/usr/local/java11/lib/classes.zip\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.util/Warnings.class\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.aural/ACssStyle.class
+Css2Properties.class:: Css2Properties.java\
+	/usr/local/java11/lib/classes.zip\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.properties/CssProperty.class
+Css2Property.class:: Css2Property.java\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.aural/ACssProperty.class
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/font/Ascent.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/font/Baseline.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/font/Bbox.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/font/CapHeight.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/font/Centerline.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/font/Css2Style.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/font/DefinitionSrc.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/font/Descent.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/font/FontConstant.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/font/FontFamily.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/font/FontProperty.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/font/FontSize.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/font/FontStretch.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/font/FontStyle.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/font/FontVariant.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/font/FontWeight.class has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/font/Makefile	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,33 @@
+SRCS = Css2Properties.java Css2Property.java Css2Style.java
+
+OBJS = $(SRCS:.java=.class)
+
+PACKAGE = org.w3c.css.properties2
+JAVAC = /usr/local/java11/bin/javac
+JAVADOC = javadoc
+JAVADOCFLAGS = -version -d docs -protected
+JAVACFLAGS = 
+MAKEDEPEND = jmakedepend
+
+.SUFFIXES: .class .java
+.java.class:; $(JAVAC) $(JAVACFLAGS) $<
+
+all: $(OBJS)
+
+javadoc:; $(JAVADOC) $(JAVADOCFLAGS) $(PACKAGE)
+
+clean:; -rm -f $(OBJS) *~ core
+
+depend:; $(MAKEDEPEND) $(SRCS)
+
+# DO NOT DELETE THIS LINE -- make depend depends on it.
+Css2Style.class:: Css2Style.java\
+	/usr/local/java11/lib/classes.zip\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.util/Warnings.class\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.aural/ACssStyle.class
+Css2Properties.class:: Css2Properties.java\
+	/usr/local/java11/lib/classes.zip\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.properties/CssProperty.class
+Css2Property.class:: Css2Property.java\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.aural/ACssProperty.class
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/font/Mathline.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/font/Panose1.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/font/Slope.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/font/Src.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/font/Stemh.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/font/Stemv.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/font/Topline.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/font/UnicodeRange.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/font/UnitsPerEm.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/font/Widths.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/font/XHeight.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/table/BorderCollapse.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/table/BorderCollapseATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/table/BorderSpacing.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/table/BorderSpacingATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/table/CaptionSide.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/table/ColumnSpan.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/table/ColumnSpanATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/table/Css2Style.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/table/EmptyCells.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/table/EmptyCellsATSC.class has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/table/Makefile	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,33 @@
+SRCS = Css2Properties.java Css2Property.java Css2Style.java
+
+OBJS = $(SRCS:.java=.class)
+
+PACKAGE = org.w3c.css.properties2
+JAVAC = /usr/local/java11/bin/javac
+JAVADOC = javadoc
+JAVADOCFLAGS = -version -d docs -protected
+JAVACFLAGS = 
+MAKEDEPEND = jmakedepend
+
+.SUFFIXES: .class .java
+.java.class:; $(JAVAC) $(JAVACFLAGS) $<
+
+all: $(OBJS)
+
+javadoc:; $(JAVADOC) $(JAVADOCFLAGS) $(PACKAGE)
+
+clean:; -rm -f $(OBJS) *~ core
+
+depend:; $(MAKEDEPEND) $(SRCS)
+
+# DO NOT DELETE THIS LINE -- make depend depends on it.
+Css2Style.class:: Css2Style.java\
+	/usr/local/java11/lib/classes.zip\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.util/Warnings.class\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.aural/ACssStyle.class
+Css2Properties.class:: Css2Properties.java\
+	/usr/local/java11/lib/classes.zip\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.properties/CssProperty.class
+Css2Property.class:: Css2Property.java\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.aural/ACssProperty.class
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/table/RowSpan.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/table/RowSpanATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/table/SpeakHeader.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/table/SpeakHeaderATSC.class has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/table/TableDefault.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,8 @@
+row-span.inherited:        false
+column-span.inherited:     false
+table-layout.inherited:    false
+border-collapse.inherited: false
+border-spacing.inherited:  true
+empty-cells.inherited:     true
+
+
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/table/TableLayout.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/table/TableLayoutATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/table/TableProperties.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/table/TableProperty.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/user/Css2Style.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/user/Cursor.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/user/CursorATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/user/CursorCSS2.class has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/user/Makefile	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,33 @@
+SRCS = Css2Properties.java Css2Property.java Css2Style.java
+
+OBJS = $(SRCS:.java=.class)
+
+PACKAGE = org.w3c.css.properties2
+JAVAC = /usr/local/java11/bin/javac
+JAVADOC = javadoc
+JAVADOCFLAGS = -version -d docs -protected
+JAVACFLAGS = 
+MAKEDEPEND = jmakedepend
+
+.SUFFIXES: .class .java
+.java.class:; $(JAVAC) $(JAVACFLAGS) $<
+
+all: $(OBJS)
+
+javadoc:; $(JAVADOC) $(JAVADOCFLAGS) $(PACKAGE)
+
+clean:; -rm -f $(OBJS) *~ core
+
+depend:; $(MAKEDEPEND) $(SRCS)
+
+# DO NOT DELETE THIS LINE -- make depend depends on it.
+Css2Style.class:: Css2Style.java\
+	/usr/local/java11/lib/classes.zip\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.util/Warnings.class\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.aural/ACssStyle.class
+Css2Properties.class:: Css2Properties.java\
+	/usr/local/java11/lib/classes.zip\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.properties/CssProperty.class
+Css2Property.class:: Css2Property.java\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.aural/ACssProperty.class
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/user/Outline.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/user/OutlineATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/user/OutlineColor.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/user/OutlineColorATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/user/OutlineStyle.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/user/OutlineStyleATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/user/OutlineWidth.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/user/OutlineWidthATSC.class has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/user/UserDefault.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,5 @@
+cursor.inherited:  true
+outline.inherited:  false
+outline-color.inherited:  false
+outline-style.inherited:  false
+outline-width.inherited:  false
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/user/UserProperties.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css2/user/UserProperty.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css21/Css21Style.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css21/CssBackgroundCSS21.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css21/CssBackgroundColorCSS21.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css21/CssBackgroundPositionCSS21.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css21/CssBorderBottomCSS21.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css21/CssBorderBottomColorCSS21.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css21/CssBorderCSS21.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css21/CssBorderColorCSS21.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css21/CssBorderFaceColorCSS21.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css21/CssBorderLeftCSS21.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css21/CssBorderLeftColorCSS21.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css21/CssBorderRightCSS21.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css21/CssBorderRightColorCSS21.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css21/CssBorderTopCSS21.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css21/CssBorderTopColorCSS21.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css21/CssColorCSS21.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css21/CssContentCSS21.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css21/CssCursorCSS21.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css21/CssDisplayCSS21.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css21/CssListStyleCSS21.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css21/CssListStyleTypeCSS21.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css21/CssTextAlignCSS21.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css21/CssWhiteSpaceCSS21.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css21/table/CssCaptionSideCSS21.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css21/user/CssCursorCSS21.class has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CSS3Default.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,73 @@
+# inherited : true if this property is inherited ...
+
+opacity.inherited:			false
+color-profile.inherited:		true
+rendering-intent.inherited:		true
+font-effect.inherited:			true
+font-smooth.inherited:			true
+font-emphasize-style.inherited:		true
+font-emphasize-position.inherited:	true
+font-emphasize.inherited:		true
+ruby-position.inherited:		true	
+ruby-align.inherited:			true
+ruby-overhang.inherited:		true
+box-sizing.inherited:			false
+resizer.inherited:			false
+key-equivalent.inherited:		false
+tab-index.inherited:			false
+user-input.inherited:			false
+user-modify.inherited:			true
+user-select.inherited:			false
+user-focus.inherited:			true
+user-focus-key.inherited:		true
+user-focus-pointer.inherited:		true
+toggle-group.inherited:			false
+group-reset.inherited:			false
+writing-mode.inherited:			true
+glyph-orientation-vertical.inherited:	true
+glyph-orientation-horizontal.inherited:	true
+text-justify.inherited:			true
+text-align-last.inherited:		true
+min-font-size.inherited:		true
+max-font-size.inherited:		true
+text-justify-trim.inherited:		true
+text-kashida-space.inherited:		true
+dominant-baseline.inherited:		false
+alignment-baseline.inherited:		false
+alignment-adjust.inherited:		false
+baseline-shift.inherited:		false
+line-break.inherited:			true
+word-break-cjk.inherited:		true
+word-break-wrap.inherited:		true
+word-break-inside.inherited:		true
+word-break.inherited:			true
+text-space.inherited:			true
+text-wrap.inherited:			true
+text-end-overflow.inherited:		false
+text-after-overflow.inherited:		false
+punctuation-trim.inherited:		true
+text-autospace.inherited:		true
+kerning-mode.inherited:			true
+kerning-pair-treshold.inherited:	true
+text-underline-style.inherited:		false
+text-underline-color.inherited:		false
+text-underline-mode.inherited:		false
+text-underline-position.inherited:	false
+text-underline.inherited:		false
+text-line-through-style.inherited:	false
+text-line-through-color.inherited:	false
+text-line-through-mode.inherited:	false
+text-line-through.inherited:		false
+text-overline-style.inherited:		false
+text-overline-color.inherited:		false
+text-overline-mode.inherited:		false
+text-overline.inherited:		false
+layout-grid-type.inherited:		true
+layout-grid-line.inherited:		true
+layout-grid-mode.inherited:		true
+layout-grid-char.inherited:		true
+layout-grid.inherited:			true
+punctuation-wrap.inherited:		true
+text-combine.inherited:			false
+text-fit.inherited:			false
+media.inherited:			false
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/Css3Properties.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/Css3Property.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/Css3Style.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssAlignmentAdjust.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssAlignmentBaseLine.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssAllSpaceTreatment.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssAppearance.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssBackgroundCSS3.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssBackgroundClip.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssBackgroundOrigin.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssBackgroundQuantity.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssBackgroundSize.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssBackgroundSpacing.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssBaselineShift.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssBlockProgression.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssBorderBottomFitLength.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssBorderBottomFitWidth.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssBorderBottomImage.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssBorderBottomLeftFitLength.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssBorderBottomLeftFitWidth.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssBorderBottomLeftImage.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssBorderBottomLeftRadius.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssBorderBottomRightFitLength.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssBorderBottomRightFitWidth.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssBorderBottomRightImage.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssBorderBottomRightRadius.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssBorderBreak.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssBorderCornerFit.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssBorderCornerImage.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssBorderFit.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssBorderFitLength.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssBorderFitWidth.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssBorderImage.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssBorderImageTransform.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssBorderLeftFitLength.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssBorderLeftFitWidth.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssBorderLeftImage.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssBorderRadius.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssBorderRightFitLength.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssBorderRightFitWidth.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssBorderRightImage.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssBorderTopFitLength.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssBorderTopFitWidth.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssBorderTopImage.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssBorderTopLeftFitLength.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssBorderTopLeftFitWidth.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssBorderTopLeftImage.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssBorderTopLeftRadius.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssBorderTopRightFitLength.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssBorderTopRightFitWidth.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssBorderTopRightImage.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssBorderTopRightRadius.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssBoxHeight.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssBoxShadow.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssBoxSizing.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssBoxWidth.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssClearAfter.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssClearCSS3.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssCollapse.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssColorProfile.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssColumnCount.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssColumnGap.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssColumnRule.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssColumnRuleColor.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssColumnRuleStyle.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssColumnRuleWidth.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssColumnSpan.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssColumnWidth.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssCrop.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssDisplayModel.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssDisplayRole.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssDominantBaseLine.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssDropInitialAfterAdjust.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssDropInitialAfterAlign.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssDropInitialBeforeAdjust.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssDropInitialBeforeAlign.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssDropInitialSize.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssDropInitialValue.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssFit.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssFitPosition.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssFloatCSS3.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssFloatDisplace.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssFontEffect.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssFontEmphasize.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssFontEmphasizePos.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssFontEmphasizeStyle.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssFontSmooth.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssGlyphHor.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssGlyphOrVert.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssGroupReset.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssHangingPunctuation.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssHeightCSS3.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssIcon.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssIndentEdgeReset.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssInlineBoxAlign.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssKerningMode.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssKerningPairTreshold.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssKeyEq.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssLineBoxContain.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssLineBreak.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssLineGrid.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssLineGridMode.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssLineGridProgression.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssLineHeightPolicy.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssLineStacking.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssLineStackingRuby.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssLineStackingShift.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssLineStackingStrategy.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssLinefeedTreatment.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssLink.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssLinkBehavior.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssMarginInside.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssMarginOutside.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssMarquee.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssMarqueeDirection.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssMarqueeRepetition.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssMarqueeSpeed.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssMarqueeStyle.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssMaxFontSize.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssMaxHeightCSS3.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssMaxWidthCSS3.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssMedia.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssMinFontSize.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssMinHeightCSS3.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssMinWidthCSS3.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssNavDown.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssNavIndex.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssNavLeft.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssNavRight.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssNavUp.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssOpacity.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssOutlineOffset.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssOverflowCSS3.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssOverflowClip.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssOverflowX.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssOverflowY.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssPaddingBottomCSS3.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssPaddingCSS3.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssPaddingLeftCSS3.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssPaddingRightCSS3.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssPaddingSideCSS3.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssPaddingTopCSS3.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssPunctuationTrim.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssRenderIntent.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssResizer.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssRubyAlign.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssRubyOverhang.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssRubyPosition.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssRubySpan.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssScript.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssTabIndex.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssTextAfterOverflow.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssTextAlignLast.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssTextAutoSpace.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssTextBlink.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssTextCombine.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssTextDecorationCSS3.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssTextEndOverflow.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssTextHeight.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssTextIndentCSS3.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssTextJustify.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssTextJustifyTrim.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssTextKashidaSpace.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssTextLTColor.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssTextLTMode.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssTextLTStyle.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssTextLineThrough.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssTextOLColor.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssTextOLMode.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssTextOLStyle.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssTextOverLine.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssTextOverflow.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssTextOverflowEllipsis.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssTextOverflowMode.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssTextPropertiesConstantsCSS3.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssTextSpace.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssTextUlColor.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssTextUlMode.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssTextUlPos.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssTextUlStyle.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssTextUnderLine.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssToggleGroup.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssUserFocus.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssUserFocusKey.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssUserFocusPointer.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssUserInput.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssUserModify.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssUserSelect.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssVisibilityCSS3.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssWhiteSpaceCSS3.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssWhiteSpaceTreatment.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssWidthCSS3.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssWordBreak.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssWordBreakCJK.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssWordBreakInside.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssWordSpacingCSS3.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssWrapOption.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/CssWritingMode.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/MediaColor.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/MediaColorIndex.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/MediaDeviceAspectRatio.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/MediaDeviceHeight.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/MediaDeviceWidth.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/MediaGrid.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/MediaHeight.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/MediaMaxColor.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/MediaMaxColorIndex.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/MediaMaxDeviceAspectRatio.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/MediaMaxDeviceHeight.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/MediaMaxDeviceWidth.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/MediaMaxHeight.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/MediaMaxMonochrome.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/MediaMaxResolution.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/MediaMaxWidth.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/MediaMinColor.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/MediaMinColorIndex.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/MediaMinDeviceAspectRatio.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/MediaMinDeviceHeight.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/MediaMinDeviceWidth.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/MediaMinHeight.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/MediaMinMonochrome.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/MediaMinResolution.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/MediaMinWidth.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/MediaMonochrome.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/MediaResolution.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/MediaScan.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/css3/MediaWidth.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/paged/Css2Style.class has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/properties/paged/Makefile	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,33 @@
+SRCS = Css2Properties.java Css2Property.java Css2Style.java
+
+OBJS = $(SRCS:.java=.class)
+
+PACKAGE = org.w3c.css.properties2
+JAVAC = /usr/local/java11/bin/javac
+JAVADOC = javadoc
+JAVADOCFLAGS = -version -d docs -protected
+JAVACFLAGS = 
+MAKEDEPEND = jmakedepend
+
+.SUFFIXES: .class .java
+.java.class:; $(JAVAC) $(JAVACFLAGS) $<
+
+all: $(OBJS)
+
+javadoc:; $(JAVADOC) $(JAVADOCFLAGS) $(PACKAGE)
+
+clean:; -rm -f $(OBJS) *~ core
+
+depend:; $(MAKEDEPEND) $(SRCS)
+
+# DO NOT DELETE THIS LINE -- make depend depends on it.
+Css2Style.class:: Css2Style.java\
+	/usr/local/java11/lib/classes.zip\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.util/Warnings.class\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.aural/ACssStyle.class
+Css2Properties.class:: Css2Properties.java\
+	/usr/local/java11/lib/classes.zip\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.properties/CssProperty.class
+Css2Property.class:: Css2Property.java\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.aural/ACssProperty.class
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/paged/Marks.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/paged/Orphans.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/paged/OrphansATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/paged/Page.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/paged/PageATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/paged/PageBreakAfter.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/paged/PageBreakAfterATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/paged/PageBreakBefore.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/paged/PageBreakBeforeATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/paged/PageBreakInside.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/paged/PageBreakInsideATSC.class has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/properties/paged/PagedDefault.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,6 @@
+size.inherited:  false
+marks.inherited:  false
+page-break-before.inherited:  true
+page-break-after.inherited:  true
+page-break-inside.inherited:  true
+
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/paged/PagedProperties.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/paged/PagedProperty.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/paged/Size.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/paged/Widows.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/paged/WidowsATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/svg/AlignmentBaseline.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/svg/AtRuleColorProfile.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/svg/ClipPath.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/svg/ClipRule.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/svg/ColorInterpolation.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/svg/ColorInterpolationFilters.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/svg/ColorProfile.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/svg/ColorProfileName.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/svg/ColorProfileSrc.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/svg/ColorRendering.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/svg/CssRenderIntent.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/svg/DominantBaseLine.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/svg/EnableBackground.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/svg/Fill.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/svg/FillOpacity.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/svg/FillRule.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/svg/Filter.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/svg/FloodColor.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/svg/FloodOpacity.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/svg/ImageRendering.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/svg/Kerning.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/svg/LightingColor.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/svg/Marker.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/svg/MarkerEnd.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/svg/MarkerMid.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/svg/MarkerStart.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/svg/Mask.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/svg/PointerEvents.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/svg/SVGBasicStyle.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/svg/SVGStyle.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/svg/SVGTinyStyle.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/svg/ShapeRendering.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/svg/SolidColor.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/svg/SolidOpacity.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/svg/StopColor.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/svg/StopOpacity.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/svg/Stroke.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/svg/StrokeDashArray.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/svg/StrokeDashOffset.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/svg/StrokeLineCap.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/svg/StrokeLinejoin.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/svg/StrokeMiterLimit.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/svg/StrokeOpacity.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/svg/StrokeWidth.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/svg/TextAnchor.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/svg/TextRendering.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/properties/svg/WritingModeSVG.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/selectors/AdjacentSiblingSelector.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/selectors/AttributeSelector.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/selectors/ChildSelector.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/selectors/ClassSelector.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/selectors/DescendantSelector.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/selectors/GeneralSiblingSelector.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/selectors/IdSelector.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/selectors/PseudoClassSelector.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/selectors/PseudoElementSelector.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/selectors/PseudoFactory.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/selectors/PseudoFunctionSelector.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/selectors/Selector.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/selectors/SelectorsList.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/selectors/TypeSelector.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/selectors/UniversalSelector.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/selectors/attributes/AttributeAny.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/selectors/attributes/AttributeBegin.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/selectors/attributes/AttributeExact.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/selectors/attributes/AttributeOneOf.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/selectors/attributes/AttributeStart.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/selectors/attributes/AttributeSubstr.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/selectors/attributes/AttributeSuffix.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/selectors/pseudofunctions/PseudoFunctionContains.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/selectors/pseudofunctions/PseudoFunctionLang.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/selectors/pseudofunctions/PseudoFunctionNot.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/selectors/pseudofunctions/PseudoFunctionNthChild.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/selectors/pseudofunctions/PseudoFunctionNthLastChild.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/selectors/pseudofunctions/PseudoFunctionNthLastOfType.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/selectors/pseudofunctions/PseudoFunctionNthOfType.class has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/.cvsignore	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,1 @@
+variables.test
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/util/ApplContext.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/util/Codecs.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/util/CompareFunction.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/util/CompareString.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/util/Date.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/util/FakeFile.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/util/HTTP.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/util/HTTPURL.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/util/InterruptedGetException.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/util/InvalidAccesException.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/util/InvalidHTTPAccesException.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/util/InvalidParamException.class has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/Makefile	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,49 @@
+SRCS = Messages.java Warning.java\
+Codecs.java NVPair.java Warnings.java\
+InvalidParamException.java Util.java\
+FakeFile.java Date.java SortedHashtable.java
+
+OBJS = $(SRCS:.java=.class)
+
+PACKAGE = org.w3c.css.util
+JAVAC = /usr/local/java11/bin/javac
+JAVADOC = javadoc
+JAVADOCFLAGS = -version -d docs -protected
+JAVACFLAGS =
+MAKEDEPEND = jmakedepend
+
+.SUFFIXES: .class .java
+.java.class:; $(JAVAC) $(JAVACFLAGS) $<
+
+all: $(OBJS) Messages.properties.ja Messages.properties.zh-cn
+
+javadoc:; $(JAVADOC) $(JAVADOCFLAGS) $(PACKAGE)
+
+clean:; -rm -f $(OBJS) *~ core
+
+depend:; $(MAKEDEPEND) $(SRCS)
+
+# DO NOT DELETE THIS LINE -- make depend depends on it.
+InvalidParamException.class:: InvalidParamException.java\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.parser.analyzer/ParseException.class
+Warning.class:: Warning.java\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.parser/CssSelectors.class\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.properties/CssProperty.class
+Util.class:: Util.java
+Codecs.class:: Codecs.java\
+	/usr/local/java11/lib/classes.zip
+SortedHashtable.class:: SortedHashtable.java\
+	/usr/local/java11/lib/classes.zip
+FakeFile.class:: FakeFile.java\
+	/usr/local/java11/lib/classes.zip
+Warnings.class:: Warnings.java
+Date.class:: Date.java\
+	/usr/local/java11/lib/classes.zip
+Messages.class:: Messages.java\
+	/usr/local/java11/lib/classes.zip
+NVPair.class:: NVPair.java
+
+#Messages.properties.ja: Messages.properties.ja.EUCJIS
+#	native2ascii -encoding EUCJIS Messages.properties.ja.EUCJIS Messages.properties.ja 
+#Messages.properties.zh-cn: Messages.properties.zh-cn.GB
+#	native2ascii -encoding euc-cn Messages.properties.zh-cn.GB Messages.properties.zh-cn
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/util/Messages.class has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/Messages.properties.bg	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,374 @@
+language_name: Български
+direction: ltr
+more_options: Още Опции
+title_more_options: Показване/Скриване на допълнителни настройки за валидация
+all: Всички
+normal_report: Нормален доклад
+most_important: Най-важното
+no_warnings: Без прупреждения
+no_warnings: Без предупреждения
+profile: Профил
+no_special_profile: Без определен профил
+css1: CSS level 1
+css2: CSS level 2
+css21: CSS level 2.1
+css3: CSS level 3
+SVG: SVG
+svgbasic: SVG Basic
+svgtiny: SVG tiny
+mobile: Mobile
+ATSC_TV_profile: ATSC TV profile
+TV_profile: TV profile
+medium: Медия
+aural: aural
+braille: braille
+embossed: embossed
+handheld: handheld
+print: print
+projection: projection
+screen: screen
+tty: TTY
+tv: TV
+presentation: presentation
+type: Тип
+no_special_type: Автоматично
+html_doc: HTML
+css_doc: CSS
+check: Проверка
+W3C_CSS_validation_service: The W3C CSS Validation Service
+check_CSS: Проверка на Cascading Style Sheets (CSS) и (X)HTML документи със style sheets
+by_URI: По URI
+by_file_upload: Чрез изпращане на файл
+by_direct_input: Чрез директно въвеждане
+validate_by_URI: Валидиране по URI
+enter_uri: Въведете URI на документ (HTML с CSS или само CSS), който желаете да бъде валидиран
+page_address: Адрес на страница за Валидиране
+address: Адрес
+submit_uri: Изпращане на URI за валидация
+validate_by_file_upload: Валидиране чрез изпращане на файл
+choose_document: Изберете документ, който да бъде валидиран (само CSS файлове)
+choose_local_file: Изберете Локален Файл за Изпращане и Валидиране
+local_CSS_file: Локален CSS файл
+submit_file: Изпращане на файл за валидиране
+validate_by_input: Валидиране чрез директно въвеждане
+enter_CSS: Въведете CSS, който желаете да се валидира
+submit_input: Изпратете въведеното за валидиране
+note: Пояснение
+note_xhtml_valid: Ако желаете да валидирате CSS style sheet, вписана в (X)HTML документ, трябва първо <a href="http://validator.w3.org/">да проверите дали използваният (X)HTML е валиден</a>
+# End of variables added along with Index page template
+
+W3C_validator_results: Резултати на W3C CSS Validator за
+# file_title: <!-- provided by the user -->
+CSS_validation_service: CSS validation Service
+jump_to: Прехвърли се на
+# errors_count: <!-- generated on the fly -->
+errors: Грешки
+# warnings_count <!-- generated on the fly -->
+warnings: Предупреждения
+validated_CSS: Валидиран CSS
+congrats: Поздравления! Не Бяха Намерени Грешки.
+# The sentence defined by doc_validates_before_link and doc_validates_after_link variables goes: \
+# "This document validates as CSSXX!" where XX stands for the CSS version used \
+# Since the content of the link about the CSS version is generated on the fly, \
+# it is important to define what goes before the link and what goes afterwards in 2 separate \
+# variables because the position of the link in the sentence varies in different languages
+doc_validates_before_link: Този документ се валидира като
+doc_validates_after_link: !
+no_errors_interoperable_msg: За да покажете на читателите си, че Ви е грижа за създаването на оперативно \
+съвместими Уеб страници, можете да покажете тази картинка на всяка валидирана страница. Следва XHTML, \
+който можете да използвате за да добавите тази картинка към Уеб страницата си:
+valid_CSS: Валиден CSS!
+# <!-- close the img tag with > instead of /> if using HTML<= 4.01 -->
+no_errors_close_tags_msg: затваряйте img тага с &gt; вместо с /&gt; ако използвате HTML &lt;= 4.01
+no_errors_dl_local_msg: Ако предпочитате, може да съхраните копие на картинката във Ваша локална уеб \
+директория и да промените XHTML откъса по-горе да сочи към локалния файл \
+вместо файла на този сървър.
+no_errors_create_link_msg: Ако желаете да създадете линк към тази страница (например, този резултат \
+от валидацията) за да улесните повторно валидиране на страницата в бъдеще или да дадете възможност \
+на други да валидират страницата Ви, URI е:
+no_errors_forHTML_only_msg: само за HTML/XML документ
+no_errors_bookmark_msg: Или, можете просто да добавите настоящата страница към Вашите bookmarks или hotlist.
+note_valide_html: За да функционира според очакванията, Вашият CSS style sheet се нуждае от правилно дърво за парсване на документа. Това означава, че трябва да изпозлвате <a href="http://validator.w3.org/">валиден HTML</a>.
+top: Горе
+# hook_html_validator <!-- generated on the fly -->
+not-css1-style: /* ВНИМАВАЙТЕ ! Това не е CSS1 свойство ! */
+errors_sorry_msg: За съжаление, намерихме следните грешки
+# errors_list: <!-- generated on the fly -->
+# warnings_list: <!-- generated on the fly -->
+# rules_count: <!-- generated on the fly -->
+valid_CSS_info: Валидна CSS информация
+# charset: <!-- generated on the fly -->
+# rules_list: <!-- generated on the fly -->
+CSS_not_found: Не бе намерен style sheet
+home: Начало
+about: За нас
+doc: Документация
+dl: Изтегляне
+feedback: Обратна връзка
+credits: Признания
+home_title: Главна страница на W3C CSS Validation Service
+about_title: За тази услуга
+doc_title: Документация за W3C CSS Validation Service
+dl_title: Изтегляне и инсталиране на CSS валидатор
+feedback_title: Как да споделим мнение за тази услуга
+credits_title: Признания и Благодарности
+W3C_quality_msg: Quality Assurance Activity на W3C, Ви предоставя инструменти за качество на мрежата и други
+learn_more_msg: Научете повече за Cascading Style Sheets
+support: Помогнете за този инструмент, станете
+supporter: W3C Поддръжник
+# End of variables added along with Velocity
+
+# Defines your own error and warning message here
+content-type: text/html; charset=utf-8
+content-language: bg
+output-encoding-name: utf-8
+
+# You can change the level warning like this (example) :
+# warning.redefinition.level: 5
+#  level is an integer between 0 and 9 (all others values are ignored)
+warning.redefinition: Презаписване на %s
+
+# used by xml parser 
+warning.style-inside-comment: Не слагайте правила за стил в HTML коментари, защото може да бъдат премахнати от потребителския агент
+
+# used by org.w3c.css.properties.Css1Style
+warning.same-colors: Еднакъв цвят за %s и за %s
+warning.no-color: Не сте определили color (или цветът е transparent), но сте задали background-color. Убедете се, че подреждането на цветовете прави текста достатъчно четлив.
+warning.no-background-color: Няма зададен background-color (или background-color е transparent) но сте задали color. Убедете се, че подреждането на цветовете прави текста достатъчно четлив.
+#warning.color.mixed-capitalization is now obsolete
+#warning.color.mixed-capitalization: Тъй като имената на цветовете не са case-insensitive, препоръчва се да използвате mixed capitalization, за да направите имената по-четливи: %s
+warning.no-generic-family: %s: Препоръчва се да предлагате generic family като последна алтернатива
+warning.with-space: Имената на фамилиите, съдържащи празно място, трябва да са в кавички. Ако пропуснете кавичките, всяко празно място \
+преди и след името ще бъде игнорирано и всяка последователсност от празни места в името ще бъде отчетена като само \
+едно празно място. 
+warning.no-padding: Препоръчва се да имате a padding област заедно с background color
+warning.same-colors2: Еднакви цветове за color и за background-color в два контекста %s и %s
+warning.relative-absolute: Имате някои абсолютни и някои относителни разстояния в %s. Това прави един style sheet неясен.
+# used by org.w3c.css.properties.CssSelectors
+warning.unknown-html: %s не е HTML Елемент
+warning.html-inside: HTML елемент не може да се съдържа в друг елемент
+warning.body-inside: BODY елемент не може да се съдържа в друг елемент, освен в HTML
+warning.pseudo-classes: Псевдо-класът за връзка %s няма ефект при елементи различни от 'A'
+
+# not used by org.w3c.css.properties.CssSelectors for the moment
+warning.noinside: %s не може да се съдържа в inline елемент
+warning.withblock: Бъдете внимателни. Псевдо-елементи могат да бъдат прикачени само към block-level елемент
+warning.block-level: Това свойство се отнася за block-level елементи.
+
+# used by org.w3c.css.parser.Frame
+warning.no-declaration: Липсват декларации в правилото
+
+# used by org.w3c.css.parser.CssFouffa
+warning.unsupported-import: Импортирани style sheets не се проверяват в режим на директно въвеждане или изпращане на файл
+
+# used by org.w3c.css.values.CssColor
+warning.out-of-range: %s е извън обсег
+error.invalid-color: Невалидна RGB функция
+
+warning.marker: Свойството marker-offset се отнася към елементи с 'display: marker'
+
+# used by org.w3c.css.properties.ACssStyle
+warning.relative: Използването на относителни единици дава по-голяма яснота на stylesheets със свойство %s
+
+# used by org.w3c.css.css.StyleSheetParser and org.w3c.css.css.StyleSheetXMLParser
+error.at-rule: За съжаление, at-правилото %s не е имплементирано.
+
+# used by all properties and values
+error.operator: %s е невалиден оператор
+error.negative-value: %s не се разрешават отрицателни стойности
+error.few-value: също някои стойности на свойство %s
+
+# be careful here, values comes first
+# You can't write something like this : For the color, blue is an incorrect value
+error.value: %s не е стойност на %s
+
+#used by org.w3c.css.properties3.CssToggleGroup
+error.groupname: %s не е правилно име на група. Използвайте валиден идентификатор
+
+#used by org.w3c.css.properties3.CssGroupReset
+error.nogroup: %s не е зададено от toggle-group свойство
+
+#used by org.w3c.css.properties3.CssGlyphOrVert
+error.anglevalue: Стойността трябва да е между -360 и 360 и да е делима на 90
+
+#used by org.w3c.css.properties3.CssTextKashidaSpace
+error.percentage: очаква се процентна стойност
+
+#used by org.w3c.css.properties.CssTextAlign
+warning.xsl: стойност %s се отнася само за XSL
+
+#used by org.w3c.css.parser.analyzer.CssParser
+warning.medialist: списъкът с медии трябва да започва с 'media :' %s
+error.nocomb: Комбинатор %s между селекторите не се допуска в този профил или версия
+
+#used by org.w3c.css.properties.CssDirection
+warning.direction: вместо използване на 'direction' за block-level елементи, използвайте новото CSS3 свойство 'writing-mode'
+
+# used by org.w3c.css.properties.CssTextDecoration
+error.same-value: %s присъства два пъти
+
+error.generic-family.quote: Generic family имена са ключови думи и затова не трябва да са в кавички.
+
+# used by org.w3c.css.properties.CssClip
+error.shape: Невалидна shape-дефиниция за rect(<top>,<right>,<bottom>,<left>)
+error.shape-separator: Невалиден разделител в дефиницията за shape. Трябва да е запетая.
+
+# used by org.w3c.css.properties.CssContent
+error.attr: Невалидна attr-дефиниция attr(X)
+error.function: Невалидна дефиниция на функция 
+error.counter: Невалидна counter-дефиниция counter(<identifier>[,<list-style-type>]?)
+error.counters: Невалидна counters-дефиниция counters(<identifier>,<string>[,<list-style-type>]?)
+
+# used by org.w3c.css.font.Src
+error.format: Невалидна format-дефиниция format(<string>[,<string>]*)
+error.local: Невалидна format-дефиниция local(<string>|<ident>+)
+
+# used by org.w3c.css.values.CssAngle, org.w3c.css.values.CssFrequency, org.w3c.css.values.CssTime, org.w3c.css.values.CssLength
+error.unit: %s е неправилна единица
+
+# used by org.w3c.css.aural.ACssAzimuth
+error.degree: Позиция се описва според правилата за градуси.
+
+# used by org.w3c.css.aural.ACssElevation
+error.elevation.range: Определя височината като ъгъл, между '-90deg' и '90deg'.
+
+# used by org.w3c.css.aural.ACssPitchRange
+error.range: Стойността е извън обсег. Стойността трябва да е между '0' и '100'.
+
+# used by org.w3c.css.properties.CssTextShadow
+error.two-lengths: Изместване на сянка се определя от две <length> стойности (Радиус на замъгляване може да бъде допълнително определен след изместването на сянката.)
+
+error.integer: This number should be an integer.
+error.comma: Липсва разделителна запетая.
+
+# used by org.w3c.css.values.CssPercentage
+error.percent: %s е грешен процент
+
+# used by org.w3c.css.values.CssString
+error.string: %s е грешен низ
+
+# used by org.w3c.css.values.CssURL
+error.url: %s е грешен URL
+
+# used by org.w3c.css.values.CssColor
+error.rgb: %s е невалиден цвят 3 или 6 шестнадесетични номера
+error.angle: %s е невалиден ъгъл. Стойността трябва да е между 0 и 360
+
+# used by org.w3c.css.values.CssNumber
+error.zero: само 0 може да бъде %s. Трябва да въведете мерна единица след числото
+
+# used by org.w3c.css.parser.CssPropertyFactory
+error.noexistence-at-all: Свойство %s не съществува
+error.noexistence-media: Свойство %s не съществува за медия %s
+error.noexistence: Свойство %s не съществува в %s, но съществува в %s
+warning.noexistence: Свойство %s не съществува в %s, но съществува в %s
+warning.noexistence-media: Свойство %s не съществува за медия %s
+warning.notforusermedium : Свойство %s не съществува за тази потребителска медия
+warning.noothermedium : Свойства от друга медиа може да не функционират за тази потребителска медия
+# used by org.w3c.css.parser.AtRule*
+error.noatruleyet: Други @rules освен @import не се поддържат от CSS1 %s
+# used by org.w3c.css.parser.analyzer.CssParser
+error.notforcss1: Стойност %s не съществува за CSS1
+warning.pseudo: Непознат псевдо-елемент или псевдо-клас %s в профила по подразбиране (%s)
+warning.nocomb: Комбинатор %s между селекторите не е разрешен в този профил (%s)
+warning.charsetspecial: Този профил има много специфичен синтаксис за @charset: \
+@charset следвано от точно едно празно място, следвано от името на encoding \
+в кавички, веднага следвано от точка и запетая.
+warning.notversion: %s не може да се използва в тази версия на CSS : %s
+
+# used by org.w3c.css.parser.CssFouffa
+error.unrecognize: Твърде много стойности или неразпознати стойности
+
+# used by org.w3c.css.parser.CssFouffa
+generator.unrecognize: Грешка при разбора
+generator.dontmixhtml: Грешка при разбора. Style sheets не трябва да съдържат HTML синтаксис.  
+
+# used by org.w3c.css.css.StyleSheetGeneratorHTML2
+error.unknown: Неизвестна грешка
+
+# used by org.w3c.css.parser.CssSelectors
+error.pseudo-element: Псевдо-елементът :%s не може да се съдържа тук в контекст %s
+error.pseudo-class: Псевдо-елементът .%s не може да се съдържа тук в HTML контекст %s
+error.pseudo: Непознат псевдо-елемент или псевдо-клас %s
+error.id: ID селектор #%s е невалиден ! Само един ID селектор може да бъде определен в прост селектор: %s.
+error.space: Ако атрибут селектор ~= е използван, думата в стойността %s не трябва да съдържа празно място.
+error.todo : За съжаление тази функционалност %s все още не е имплементирана.
+error.incompatible: %s и %s са несъвместими
+warning.incompatible: %s и %s са несъвместими
+error.notformobile: %s не може да бъде използван с mobile профил
+error.notforatsc: %s не може да бъде използван с ATSC профил
+error.notfortv: %s не може да бъде използван с TV профил
+error.notversion: %s не може да бъде използван с тази версия на CSS : %s
+
+error.media: непозната медия %s 
+error.page: непозната псевдо-именувана страница %s
+
+error.unrecognized.link: Непознат елемент за връзка или xml-stylesheet PI.
+
+# used by StyleSheetGeneratorHTML
+generator.context: Контекст
+generator.request: Грешка при извеждане на Вашата style sheet. \
+Моля, коригирайте заявката си или пишете до plh@w3.org.
+generator.unrecognized: Непознат
+generator.invalid-number: Грешен номер
+generator.property: Грешка на стойността
+generator.line: Ред
+generator.not-found: Файлът не бе намерен
+
+generator.doc-html:   <!-- removed this confusing message olivier 2006-12-14 -->
+generator.doc:  <!-- removed this confusing message olivier 2006-12-14 -->
+
+
+# used by the parser
+parser.semi-colon: опит за търсене на точка и запетая преди името на свойството. добавяне
+
+parser.unknown-dimension: Неизвестна величина
+
+parser.old_class: В CSS1 име на клас може да започва с цифра (".55ft"), \
+стига да не е величина (".55in"). В CSS2 подобни класове се приемат за \
+неизвестни величини (за да се позволи бъдещо добавяне на нови единици). \
+За да бъде ".%s" валиден клас, CSS2 изисква първата цифра да бъде защитена ".\3%s"
+
+parser.old_id: В CSS1 име на id може да започва с цифра ("#55ft"), \
+стига да не е величина ("#55in"). В CSS2 подобни идентификатори се приемат за \
+неизвестни величини (за да се позволи бъдещо добавяне на нови единици).
+
+parser.class_dim: В CSS1 име на клас може да започва с цифра (".55ft"), \
+стига да не е величина (".55in").
+
+parser.id_dim: В CSS1 име на id може да започва с цифра ("#55ft"), \
+стига да не е величина ("#55in").
+
+parser.charset: Правилото @charset може да се използва само в началото на style \
+sheet. Моля, проверете дали няма празно място преди това.
+
+parser.charsetspecial: Този профил има много специфичен синтаксис за @charset: \
+@charset следвано от точно едно празно място, следвано от име на encoding \
+в кавични, веднага последвано от точка и запетая.
+
+warning.old_id: В CSS1 име на id може да започва с цифра ("#55ft"), \
+стига да не е величина ("#55in"). В CSS2 подобни идентификатори се приемат за \
+неизвестни величини (за да се позволи бъдещо добавяне на нови величини).
+
+warning.old_class: В CSS1 име на клас може да започва с цифра (".55ft"), \
+стига да не е величина (".55in"). В CSS2 подобни идентификатори се приемат за \
+неизвестни величини (за да се позволи бъдещо добавяне на нови единици).
+
+# used by the servlet
+servlet.invalid-request: Изпратихте невалидна заявка.
+servlet.process: Обектът не може да бъде обработен
+
+warning.atsc: %s е възможно да не се поддържа от медия atsc-tv
+error.onlyATSC: %s тази функция е само за медия atsc-tv
+
+warning.otherprofile: свойство %s не съществува за този профил, но е валидно за друг профил
+warning.deprecated: тази стойност вече не се използва
+
+warning.float-no-width: В (x)HTML+CSS, елементите използващи float трябва да имат декларирана ширина. Само елементи с онаследена ширинаю (html, img, input, textarea, select или object) не се влияят
+
+parser.charsetcss1: @charset правила не могат да се използват в CSS1
+parser.attrcss1: Селекторите на атрибути са невалидни в CSS1
+
+parser.invalid_id_selector: Невалиден ID селектор
+parser.import_not_allowed: @import правила не се допускат след какво да е валидно заявление различно от @charset и @import.
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/Messages.properties.de	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,367 @@
+# German translation, last updated in sync with Messages.properties.en,v 1.31
+
+direction: ltr
+language_name: Deutsch
+more_options: Weitere Optionen
+title_more_options: Weitere Validierungsoptionen anzeigen/verbergen
+all: Alle
+normal_report: Normal
+most_important: Nur die wichtigsten
+no_warnings: Keine Warnungen
+profile: Profile
+no_special_profile: Kein spezielles Profil
+css1: CSS level 1
+css2: CSS level 2
+css21: CSS level 2.1
+css3: CSS level 3
+SVG: SVG
+svgbasic: SVG Basic
+svgtiny: SVG tiny
+mobile: Mobile
+ATSC_TV_profile: ATSC TV profil
+TV_profile: TV profil
+medium: Medium
+aural: aural
+braille: braille
+embossed: embossed
+handheld: handheld
+print: print
+projection: projection
+screen: screen
+tty: TTY
+tv: TV
+presentation: presentation
+
+type: Typ
+no_special_type: Automatisch
+html_doc: HTML
+css_doc: CSS
+
+check: Prüfen
+W3C_CSS_validation_service: Der W3C CSS Validierungsdienst
+check_CSS:Cascading Style Sheets (CSS) und (X)HTML-Dokumente mit CSS validieren
+by_URI: per URI
+by_file_upload: per File-Upload
+by_direct_input: per Direkteingabe
+validate_by_URI: Validierung per URI
+enter_uri: Geben Sie die URI eines Dokuments ein, das Sie validieren möchten (CSS oder HTML mit CSS)
+page_address: Adresse des zu prüfenden Dokuments
+address: Adresse
+submit_uri: Validierung starten
+validate_by_file_upload: Validierung per Datei-Upload
+choose_document: Wählen Sie eine lokale Datei, die Sie validieren möchten
+choose_local_file: Wählen Sie eine lokale Datei zum Hochladen und Validieren
+local_CSS_file: Lokale CSS-Datei
+submit_file: Datei zum Validieren abschicken
+validate_by_input: Validierung per Direkteingabe
+enter_CSS: Geben Sie den CSS Code ein, den Sie überprüfen möchten
+submit_input: Code validieren
+note: Achtung
+note_xhtml_valid: Wenn Sie CSS-Code in einem (X)HTML-Dokument validieren möchten, sollten Sie zunächst <a href="http://validator.w3.org/">prüfen, ob das (X)HTML-Dokument valide ist</a>
+# End of variables added along with Index page template
+
+W3C_validator_results: Ergebnisse des CSS-Validators 
+# file_title: <!-- provided by the user -->
+CSS_validation_service: CSS Validierungsservice
+jump_to: Zu
+# errors_count: <!-- generated on the fly -->
+errors: Fehlern 
+# warnings_count <!-- generated on the fly -->
+warnings: Warnungen
+validated_CSS: Ihrem validierten Cascading Style Sheet
+congrats: Gratuliere! Keine Fehler gefunden.
+# The sentence defined by doc_validates_before_link and doc_validates_after_link variables goes: \
+# "This document validates as CSSXX!" where XX stands for the CSS version used \
+# Since the content of the link about the CSS version is generated on the fly, \
+# it is important to define what goes before the link and what goes afterwards in 2 separate \
+# variables because the position of the link in the sentence varies in different languages
+doc_validates_before_link: Dieses Dokument wurde als 
+doc_validates_after_link: validiert!
+no_errors_interoperable_msg: Sie können dieses Icon auf jeder validierten Seite darstellen, um zu zeigen, \
+daß Sie sich die Mühe gemacht haben interoperable Web-Seiten zu erstellen.  \
+Nachfolgend finden Sie den XHTML-Code, den Sie verwenden können um das Icon \
+in Ihre Web-Seiten einzubauen:
+valid_CSS: CSS ist valide!
+no_errors_close_tags_msg: beenden Sie ein img Tag mit &gt; anstatt /&gt; wenn Sie HTML &lt;= 4.01 verwenden
+no_errors_dl_local_msg: Sie können das Bild auch herunterladen und in Ihrem lokalen \
+Web-Verzeichnis speichern.  In diesem Fall müssen sie das \
+obere XHTML-Fragment so verändern, daß es auf Ihr lokales Bild verweist. 
+no_errors_create_link_msg: Wenn Sie einen Verweis auf diese Seite anlegen möchten \
+(d.h. auf diese Validierungsergebnis) um die erneute Validierung dieser \
+Seite zu erleichtern oder um es anderen zu ermöglichen Ihre Seite zu \
+validieren, so verwenden Sie folgenden URI:
+no_errors_forHTML_only_msg: nur für HTML/XML-Dokumente
+no_errors_bookmark_msg: Sie können die aktuelle Seite auch einfach in Ihre Bookmarks aufnehmen.
+note_valide_html: To work as intended, your CSS style sheet needs a correct document parse tree. This means you should use <a href="http://validator.w3.org/">valid HTML</a>.
+top: Top
+# hook_html_validator <!-- generated on the fly -->
+not-css1-style: /* Vorsicht: Dies ist keine CSS1-Eigenschaft! */
+errors_sorry_msg: Entschuldigung! Es wurden die folgenden Fehler gefunden
+# errors_list: <!-- generated on the fly -->
+# warnings_list: <!-- generated on the fly -->
+# rules_count: <!-- generated on the fly -->
+valid_CSS_info: Ihr validiertes Cascading Style Sheet:
+# charset: <!-- generated on the fly -->
+# rules_list: <!-- generated on the fly -->
+CSS_not_found: Kein Stylesheet gefunden
+home: Home
+about: About
+doc: Documentation
+dl: Download
+feedback: Feedback
+credits: Credits
+home_title: Homepage des W3C CSS Validierungsdienstes
+about_title: Über den Dienst
+doc_title: Dokumentation zum W3C CSS Validation Service
+dl_title: Den CSS Validator herunterladen und installieren
+feedback_title: Wie Sie Feedback zu diesem Service geben können
+credits_title: Referenzen und Danksagungen
+W3C_quality_msg: W3C's Quality Assurance Activity, bringing you free Web quality tools and more
+learn_more_msg: Learn more about Cascading Style Sheets
+support: Support this tool, become a
+supporter: W3C Supporter
+# End of variables added along with Velocity
+
+# Defines your own error and warning message here
+content-type: text/html; charset=UTF-8
+content-language: de
+output-encoding-name: utf-8
+
+# You can change the level warning like this (example) :
+# warning.redefinition.level: 5
+#  level is an integer between 0 and 9 (all others values are ignored)
+warning.redefinition: Erneute Definition von %s
+
+# used by xml parser
+warning.style-inside-comment: Do not put style rules inside HTML comments as they may be removed by user agent
+
+# used by org.w3c.css.properties.Css1Style
+warning.same-colors: Gleiche Farbe für %s und %s
+warning.no-color: Sie haben keine Vordergrundfarbe zu der Hintergrundfarbe angegeben
+warning.no-background-color: Sie haben keine Hintergrundfarbe zu der Vordergrundfarbe angegeben
+#warning.color.mixed-capitalization is now obsolete
+#warning.color.mixed-capitalization: Obwohl bei Farbnamen die Groß-/Kleinschreibung irrelevant ist, wird empfohlen die gemischte Schreibweise zu verwenden, um die Namen besser lesbar zu machen: %s
+warning.no-generic-family: %s: Es wird empfohlen, daß Sie eine generische Familie als letzte Alternative angeben
+warning.with-space: Namen von Schriftfamilien, die Leerzeichen enthalten, sollten in (doppelte) Anführungszeichen eingeschlossen werden.  Ohne Anführungszeichen werden alle Leerraumzeichen (Leerzeichen, Tabulatoren, etc.) vor und nach dem Namen ignoriert, und jede Sequenz von Leerraumzeichen innerhalb des Namens wird durch ein einzelnes Leerzeichen ersetzt.
+warning.no-padding: Es wird empfohlen, eine freie Umgebung (padding) mit der Hintergrundfarbe zu haben
+warning.same-colors2: Die gleichen Farben für den Vordergrund und den Hintergrund in den zwei Kontexten %s und %s
+warning.relative-absolute: Sie haben einige absolute und relative Längen in %s. Das Stylesheet wird dadurch weniger robust.
+
+warning.direction: anstatt 'direction' für Blockelemente zu verwenden nutzen Sie besser die neue CSS3 Eigenschaft 'writing-mode'
+warning.medialist: die Medienliste sollte mit 'media :' beginnen %s
+
+
+# used by org.w3c.css.properties.CssSelectors
+warning.unknown-html: %s ist kein HTML-Element
+warning.html-inside: Das HTML-Element kann nicht innerhalb eines anderen Elements vorkommen
+warning.body-inside: Das BODY-Element darf nur direkt innerhalb des HTML-Elements vorkommen
+warning.pseudo-classes: Die Anker-Pseudoklasse %s hat keinen Effekt auf andere Elemente als 'A'
+
+# not used by org.w3c.css.properties.CssSelectors for the moment
+warning.noinside: %s kann nicht innerhalb eines Inline-Elements vorkommen
+warning.withblock: Vorsicht: Pseudoelemente können nur an Elemente auf Block-Level angebunden werden.
+warning.block-level: Diese Eigenschaft gilt für Elemente auf Block-Level.
+
+# used by org.w3c.css.parser.Frame
+warning.no-declaration: Keine Deklaration in der Regel
+
+# used by org.w3c.css.parser.CssFouffa 
+warning.unsupported-import: Importierte Style Sheets werden bei den Modi Direkteingabe und Datei-Upload nicht &uuml;berpr&uuml;ft
+
+# used by org.w3c.css.values.CssColor
+warning.out-of-range: %s ist außerhalb des Wertebereichs
+error.invalid-color: Ungültige RGB-Funktion
+
+warning.marker: Die 'marker-offset'-Eigenschaft gilt für Elemente mit 'display: marker'
+
+# used by org.w3c.css.properties.ACssStyle
+warning.relative: Die Verwendung von relativen Einheiten bei der Eigenschaft %s führt zu robusteren Stylesheets
+
+# used by org.w3c.css.css.StyleSheetParser and org.w3c.css.css.StyleSheetXMLParser
+error.at-rule: Leider ist die At-Regel %s nicht implementiert.
+
+# used by all properties and values
+error.operator: %s ist kein ungültiger Operator
+error.negative-value: %s negative Werte sind nicht erlaubt
+error.few-value: zu wenige Werte für die Eigenschaft %s
+
+# be careful here, values comes first
+# You can't write something like this : For the color, blue is an incorrect value
+error.value: %s ist kein %s-Wert
+
+# used by org.w3c.css.properties.CssTextDecoration
+error.same-value: %s kommt zweimal vor
+
+error.generic-family.quote: Namen von generischen Schriftfamilien sind Schlüsselwörter und dürfen deshalb nicht in Anführungszeichen eingeschlossen werden.
+
+# used by org.w3c.css.properties.CssClip
+error.shape: Ungültige rect-Definition rect(<top>,<right>,<bottom>,<left>)
+error.shape-separator: Unzulässiges Trennzeichen in rect(...), es muß ein Komma verwendet werden.
+
+# used by org.w3c.css.properties.CssContent
+error.attr: Ungültige attr-Definition attr(X)
+error.counter: Ungültige Zählerdefinition counter(<identifier>[,<list-style-type>]?)
+error.counters: Ungültige Zählerdefinition counters(<identifier>,<string>[,<list-style-type>]?)
+
+# used by org.w3c.css.font.Src
+error.format: Ungültige Formatdefinition format(<string>[,<string>]*)
+error.local: Ungültige Formatdefinition local(<string>|<ident>+)
+
+# used by org.w3c.css.values.CssAngle, org.w3c.css.values.CssFrequency, org.w3c.css.values.CssTime, org.w3c.css.values.CssLength
+error.unit: %s ist keine gültige Einheit
+
+# used by org.w3c.css.aural.ACssAzimuth
+error.degree: Die Position muß mit Gradangaben beschrieben werden.
+
+# used by org.w3c.css.aural.ACssElevation
+error.elevation.range: Spezifiziert die Höhe als Winkel zwischen '-90deg' und '90deg'.
+
+# used by org.w3c.css.aural.ACssPitchRange
+error.range: Der Wert ist außerhalb des gültigen Wertebereichs.  Der wert muß zwischen '0' und '100' liegen.
+
+# used by org.w3c.css.properties.CssTextShadow
+error.two-lengths: Ein Schattenoffset wird durch zwei <length>-Werte spezifiziert (ein Unschärfe-Radius kann optional nach dem Schattenoffset angegeben werden.)
+
+error.integer: Diese Nummer sollte eine ganze Zahle sein.
+error.comma: Fehlender Komma-Separator.
+
+# used by org.w3c.css.values.CssPercentage
+error.percent: %s ist eine unkorrekte Prozentangabe
+
+# used by org.w3c.css.values.CssString
+error.string: %s ist kein gültiger String
+
+# used by org.w3c.css.values.CssURL
+error.url: %s ist kein gültiger URL
+
+# used by org.w3c.css.values.CssColor
+error.rgb: %s ist keine gültige Farbe mit 3 oder 6 Hexadezimalzahlen
+error.angle: %s ist kein gültiger Winkelwert. Wert muß zwischen 0 und 360 liegen.
+
+# used by org.w3c.css.values.CssNumber
+error.zero: nur 0 kann ein %s sein.  Nach der Zahl muß eine Einheit stehen.
+
+# used by org.w3c.css.parser.CssPropertyFactory
+error.noexistence-at-all: Die Eigenschaft %s existiert nicht
+warning.noexistence-media: Die Eigenschaft %s existiert nicht für das Medium %s
+error.noexistence: Die Eigenschaft %s existiert nicht in %s, aber in %s
+warning.noexistence: Die Eigenschaft %s existiert nicht in %s, aber in %s
+error.noexistence-media: Die Eigenschaft %s existiert nicht für das Medium %s
+
+# used by org.w3c.css.parser.CssFouffa
+error.unrecognize: Zu viele Werte oder die Werte werden nicht erkannt
+
+# used by org.w3c.css.parser.CssFouffa
+generator.unrecognize: Einlese-Fehler
+generator.dontmixhtml: Einlese-Fehler. Style Sheets sollte keine HTML-Syntax.
+
+# used by org.w3c.css.parser.CssSelectors 
+error.pseudo-element: Das Pseudoelement %s kann hier nicht in dem Kontext %s vorkommen
+error.pseudo-class: Die Pseudoklasse .%s kann hier nicht in dem HTML-Kontext %s vorkommen
+error.pseudo: Unbekanntes Pseudoelement oder Pseudoklasse: %s
+warning.pseudo: Unbekanntes Pseudoelement oder unbekannte Pseudoklasse %s im Standard Profile (%s)
+error.id: ID-Selektor #%s ist ungültig!  Nur ein ID-Selektor kann in einem einfachen Selektor angegeben werden: %s.
+error.space: Wenn der Attributselektor ~= verwendet wird, darf der Wert %s keine Leerzeichen enthalten.
+error.todo : Leider ist das Feature %s noch nicht implementiert.
+error.incompatible: %s und %s sind inkompatibel
+warning.incompatible: %s und %s sind inkompatibel
+
+error.media: unbekanntes Medium %s 
+error.page: unbekannte Pseudo-benannte Seite %s
+
+
+# used by StyleSheetGeneratorHTML
+generator.context: Kontext
+generator.request: Ein Fehler trat während der Ausgabe Ihres Stylesheets auf. \
+Bitte korrigieren Sie Ihre Anfrage oder senden Sie eine E-Mail an plh@w3.org.
+generator.unrecognized: Unbekannt
+generator.invalid-number: Ungültige Nummer
+generator.property: Ungültige Nummer
+generator.line: Zeile
+generator.not-found: Datei nicht gefunden
+
+generator.doc-html: <!-- removed this confusing message olivier 2006-12-14 -->
+generator.doc: <!-- removed this confusing message olivier 2006-12-14 -->
+
+
+# used by the parser
+parser.semi-colon: Versuche ein Semikolon vor dem Eigenschaftsnamen zu finden. Füge es hinzu.
+
+parser.unknown-dimension: Unbekanntes dimension
+
+parser.old_class: In CSS1 konnte ein Klassenname mit einer Ziffer beginnen  (".55ft"), \
+es sei denn es handelte sich um eine Dimension (".55in"). In CSS2 werden solche Klassen als \
+unbekannte Dimensionen gelesen (um zukünftige Erweiterungen durch weitere Einheiten zu erlauben)
+
+parser.old_id: In CSS1 konnte ein id Bezeichner, außer wenn es sich um eine Dimension handelte ("#55in"), \
+mit einer Ziffer beginnen ("#55ft"). In CSS2 werden solche ids als \
+unbekannte Dimensionen gelesen (um zukünftige Erweiterungen durch weitere Einheiten zu erlauben)
+
+parser.class_dim: In CSS1 kann ein Klassenname mit einer Ziffer beginnen (".55ft"), \
+es sei denn es handelt sich um eine Dimension (".55in").
+
+parser.id_dim: In CSS1 kann ein id Bezeichner, außer wenn es sich um eine Dimension ("#55in") handelt, \
+mit einer Ziffer beginnen ("#55ft").
+
+parser.charset: Die Regel @charset darf nur zu Beginn eines Stylesheets verwendet werden. \
+Bitte überprüfen Sie, dass keine Leerzeichen davor zu finden sind.
+
+parser.charsetspecial: In diesem Profil gilt eine sehr spezielle Syntax für die @charset Regel: \
+Auf @charset muss genau ein Leerzeichen folgen, gefolgt vom Namen der Enkodierung in Anführungszeichen, \
+direkt danach ein Semikolon.
+warning.charsetspecial: Dieses Profil nutzt eine sehr spezielle Syntax für @charset: \
+@charset gefolgt von genau einem Leerzeichen, gefolgt von der Bezeichnung der Encodingtechnik in Anf&uuml;hrungszeichen, \
+gefolgt ohne weitere Zwischenr&auml;ume von einem Semikolon.
+
+warning.old_id: In CSS1 konnte ein id Bezeichner, außer wenn es sich um eine Dimension handelte ("#55in"), \
+mit einer Ziffer beginnen ("#55ft"). In CSS2 werden solche ids als \
+unbekannte Dimensionen gelesen (um zukünftige Erweiterungen durch weitere Einheiten zu erlauben)
+
+warning.old_class: In CSS1 konnte ein Klassenname mit einer Ziffer beginnen  (".55ft"), \
+es sei denn es handelte sich um eine Dimension (".55in"). In CSS2 werden solche Klassen als \
+unbekannte Dimensionen gelesen (um zukünftige Erweiterungen durch weitere Einheiten zu erlauben)
+
+# used by the servlet
+servlet.invalid-request: Sie haben eine ungültige Anfrage gesendet.
+servlet.process: Kann das Objekt nicht ausführen
+
+error.groupname : %s ist kein gültiger Gruppen-Name. Bitte benutzen Sie einen 
+gültigen Wert.
+
+error.notforcss1 : Die Variable %s ist in CSS1 nicht vorhanden
+error.notforatsc: %s kann nicht mit dem ATSC Profil genutzt werden
+error.onlyATSC: %s diese Funktion ist nur für atsc-tv Medien verf&uuml;gbar
+error.notfortv: %s kann nicht mit dem TV Profil genutzt werden
+error.notversion: %s kann nicht mit dieser Version von CSS verwendet werden : %s
+warning.notversion: %s kann nicht mit dieser CSS Version verwendet werden: %s
+error.nogroup : Die Variable %s wurde durch toggle-group nicht gesetzt
+error.anglevalue : Der Wert muss durch 90 teilbar sein und zwischen -360 und 360 (Grad) liegen
+error.percentage : Es wurde ein Prozent-Wert erwartet
+error.noothermedium : Eigenschaften anderer Endger&auml;te k&ouml;nnten f&uuml;r das aktuelle Endger&auml; nicht funktionieren
+warning.noothermedium: Eigenschaften für andere Medien werden m&ouml;glicherweise mit dem gew&auml;hlten Medium nicht funktionieren
+error.notforusermedium : Die Eigenschaft %s existiert nicht f&uuml;r dieses Endger&auml;te-Profil
+warning.notforusermedium: die Eigenschaft %s existiert nicht für das gewählte Medium
+error.noatruleyet : Andere At-Regeln als @import werden von CSS1 nicht unterst&uuml;tzt.
+error.notformobile : Dieser Befehl funktioniert im Mobil-Profil nicht
+
+warning.atsc : %s ist unter Umständen nicht im Funktionsumfang von atsc-tv enthalten.
+
+error.unrecognized.link: Nicht erkanntes Linkelement oder xml-stylesheet PI.
+
+warning.otherprofile : Die Eigenschaft %s existiert in der angegebenen Version von CSS nicht, ist aber in einer anderen Version vorhanden und valide 
+warning.deprecated : Dieser Wert ist abgelehnt
+
+#used by org.w3c.css.parser.analyzer.CssParser
+error.nocomb: Die Kombination %s von Selektoren ist in diesem Profil oder dieser Version nicht erlaubt.
+warning.nocomb: die Kombinator %s zwischen Selektoren ist in diesem Profil (%s) nicht erlaubt
+warning.xsl: der Wert %s funktioniert nur mit XSL
+error.function: Invalide Funktionsdefinition
+error.unknown: Unbekannter Fehler
+generator.dontmixhtml: Syntax Fehler. Style sheets dürfen keine HTML Syntax enthalten.
+
+warning.float-no-width: In (x)HTML+CSS müssen umfließende Elemente mit einer festen Breite deklariert werden. Nur Elemente mit einer von Natur aus festen Breite (html, img, input, textarea oder object) sind davon nicht betroffen.
+
+parser.charsetcss1: @charset-Regeln können im CSS1-Profil nicht benutzt werden.
+parser.attrcss1: Attribut-Selektoren sind in CSS1 ungültig
+parser.invalid_id_selector: Ungültiger ID-Selektor
+parser.import_not_allowed:  @import-Regeln sind nach jeglichen gültigen Ausdrücken außer @charset und weiteren @import-Regeln verboten
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/Messages.properties.en	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,379 @@
+# Master localization string file: $Id: Messages.properties.en,v 1.40 2009-12-15 17:00:03 ylafon Exp $
+
+direction: ltr
+language_name: English
+more_options: More Options
+title_more_options: Show/Hide extra validation options
+all: All
+normal_report: Normal report
+most_important: Most important
+no_warnings: No warnings
+profile: Profile
+no_special_profile: No special profile
+css1: CSS level 1
+css2: CSS level 2
+css21: CSS level 2.1
+css3: CSS level 3
+SVG: SVG
+svgbasic: SVG Basic
+svgtiny: SVG tiny
+mobile: Mobile
+ATSC_TV_profile: ATSC TV profile
+TV_profile: TV profile
+medium: Medium
+aural: aural
+braille: braille
+embossed: embossed
+handheld: handheld
+print: print
+projection: projection
+screen: screen
+tty: TTY
+tv: TV
+presentation: presentation
+type: Type
+no_special_type: Automatic
+html_doc: HTML
+css_doc: CSS
+check: Check
+W3C_CSS_validation_service: The W3C CSS Validation Service
+check_CSS: Check Cascading Style Sheets (CSS) and (X)HTML documents with style sheets
+by_URI: By URI
+by_file_upload: By file upload
+by_direct_input: By direct input
+validate_by_URI: Validate by URI
+enter_uri: Enter the URI of a document (HTML with CSS or CSS only) you would like validated
+page_address: Address of page to Validate
+address: Address
+submit_uri: Submit URI for validation
+validate_by_file_upload: Validate by file upload
+choose_document: Choose the document you would like validated
+choose_local_file: Choose a Local File to Upload and Validate
+local_CSS_file: Local CSS file
+submit_file: Submit file for validation
+validate_by_input: Validate by direct input
+enter_CSS: Enter the CSS you would like validated
+submit_input: Submit your input for validation
+note: Note
+note_xhtml_valid: If you want to validate your CSS style sheet embedded in an (X)HTML document, you should first <a href="http://validator.w3.org/">check that the (X)HTML you use is valid</a>
+# End of variables added along with Index page template
+
+W3C_validator_results: W3C CSS Validator results for
+# file_title: <!-- provided by the user -->
+CSS_validation_service: CSS validation Service
+jump_to: Jump to
+# errors_count: <!-- generated on the fly -->
+errors: Errors
+# warnings_count <!-- generated on the fly -->
+warnings: Warnings
+validated_CSS: Validated CSS
+congrats: Congratulations! No Error Found.
+# The sentence defined by doc_validates_before_link and doc_validates_after_link variables goes: \
+# "This document validates as CSSXX!" where XX stands for the CSS version used \
+# Since the content of the link about the CSS version is generated on the fly, \
+# it is important to define what goes before the link and what goes afterwards in 2 separate \
+# variables because the position of the link in the sentence varies in different languages
+doc_validates_before_link: This document validates as
+doc_validates_after_link: !
+no_errors_interoperable_msg: To show your readers that you've taken the care to create an interoperable Web \
+page, you may display this icon on any page that validates. Here is the XHTML \
+you could use to add this icon to your Web page:
+valid_CSS: Valid CSS!
+# <!-- close the img tag with > instead of /> if using HTML<= 4.01 -->
+no_errors_close_tags_msg: close the img tag with &gt; instead of /&gt; if using HTML &lt;= 4.01
+no_errors_dl_local_msg: If you like, you can download a copy of this image to keep in your local web \
+directory, and change the XHTML fragment above to reference your local image \
+rather than the one on this server.
+no_errors_create_link_msg: If you would like to create a link to this page (i.e., this validation \
+result) to make it easier to re-validate this page in the future or to allow \
+others to validate your page, the URI is:
+no_errors_forHTML_only_msg: for HTML/XML document only
+no_errors_bookmark_msg: Or, you can just add the current page to your bookmarks or hotlist.
+note_valide_html: To work as intended, your CSS style sheet needs a correct document parse tree. This means you should use <a href="http://validator.w3.org/">valid HTML</a>.
+top: Top
+# hook_html_validator <!-- generated on the fly -->
+not-css1-style: /* BE CAREFUL ! This is not a CSS1 property ! */
+errors_sorry_msg: Sorry! We found the following errors
+# errors_list: <!-- generated on the fly -->
+# warnings_list: <!-- generated on the fly -->
+# rules_count: <!-- generated on the fly -->
+valid_CSS_info: Valid CSS information
+# charset: <!-- generated on the fly -->
+# rules_list: <!-- generated on the fly -->
+CSS_not_found: No style sheet found
+home: Home
+about: About
+doc: Documentation
+dl: Download
+feedback: Feedback
+credits: Credits
+home_title: Home page for the W3C CSS Validation Service
+about_title: About this service
+doc_title: Documentation for the W3C CSS Validation Service
+dl_title: Download and install the CSS validator
+feedback_title: How to provide feedback on this service
+credits_title: Credits and Acknowlegments
+W3C_quality_msg: W3C's Quality Assurance Activity, bringing you free Web quality tools and more
+learn_more_msg: Learn more about Cascading Style Sheets
+support: Support this tool, become a
+supporter: W3C Supporter
+# End of variables added along with Velocity
+
+# Defines your own error and warning message here
+content-type: text/html; charset=utf-8
+content-language: en
+output-encoding-name: utf-8
+
+# You can change the level warning like this (example) :
+# warning.redefinition.level: 5
+#  level is an integer between 0 and 9 (all others values are ignored)
+warning.redefinition: Redefinition of %s
+
+# used by xml parser 
+warning.style-inside-comment: Do not put style rules inside HTML comments as they may be removed by user agent
+
+# used by org.w3c.css.properties.Css1Style
+warning.same-colors: Same color for %s and %s
+warning.no-color: You have no color set (or color is set to transparent) but you have set a background-color. Make sure that cascading of colors keeps the text reasonably legible.
+warning.no-background-color: You have no background-color set (or background-color is set to transparent) but you have set a color. Make sure that cascading of colors keeps the text reasonably legible.
+#warning.color.mixed-capitalization is now obsolete
+#warning.color.mixed-capitalization: Although color names are case-insensitive, it is recommended to use the mixed capitalization, to make the names more legible: %s
+warning.no-generic-family: %s: You are encouraged to offer a generic family as a last alternative
+warning.with-space: Family names containing whitespace should be quoted. If quoting is omitted, any whitespace \
+characters before and after the name are ignored and any sequence of whitespace characters inside the \
+name is converted to a single space. 
+warning.no-padding: You are encouraged to have a padding area with a background color
+warning.same-colors2: Same colors for color and background-color in two contexts %s and %s
+warning.relative-absolute: You have some absolute and relative lengths in %s. This is not a robust style sheet.
+# used by org.w3c.css.properties.CssSelectors
+warning.unknown-html: %s is not an HTML Element
+warning.html-inside: HTML element can't be inside another element
+warning.body-inside: BODY element can't be inside another element except HTML
+warning.pseudo-classes: Anchor pseudo-class %s have no effect on elements other than 'A'
+
+# not used by org.w3c.css.properties.CssSelectors for the moment
+warning.noinside: %s can't be inside an inline element
+warning.withblock: Be careful. Pseudo-elements can only be attached to a block-level element
+warning.block-level: This property applies to block-level elements.
+
+# used by org.w3c.css.parser.Frame
+warning.no-declaration: No declarations in the rule
+
+# used by org.w3c.css.parser.CssFouffa
+warning.unsupported-import: Imported style sheets are not checked in direct input and file upload modes
+
+# used by org.w3c.css.values.CssColor
+warning.out-of-range: %s is out of range
+error.invalid-color: Invalid RGB function
+
+warning.marker: The marker-offset property applies on elements with 'display: marker'
+
+# used by org.w3c.css.properties.ACssStyle
+warning.relative: Using relative units gives more robust stylesheets in property %s
+
+# used by org.w3c.css.css.StyleSheetParser and org.w3c.css.css.StyleSheetXMLParser
+error.at-rule: Sorry, the at-rule %s is not implemented.
+
+# used by all properties and values
+error.operator: %s is an incorrect operator
+error.negative-value: %s negative values are not allowed
+error.few-value: too few values for the property %s
+
+# be careful here, values comes first
+# You can't write something like this : For the color, blue is an incorrect value
+error.value: %s is not a %s value
+
+#used by org.w3c.css.properties3.CssToggleGroup
+error.groupname: %s is not a correct groupname. Use a valid identifier
+
+#used by org.w3c.css.properties3.CssGroupReset
+error.nogroup: %s has not been set by the toggle-group property
+
+#used by org.w3c.css.properties3.CssGlyphOrVert
+error.anglevalue: Value must be between -360 and 360 and be divisable by 90
+
+#used by org.w3c.css.properties3.CssTextKashidaSpace
+error.percentage: percentage value expected
+
+#used by org.w3c.css.properties.CssTextAlign
+warning.xsl: value %s only applies to XSL
+
+#used by org.w3c.css.parser.analyzer.CssParser
+warning.medialist: medialist should start with 'media :' %s
+error.nocomb: Combinator %s between selectors is not allowed in this profile or version
+
+#used by org.w3c.css.properties.CssDirection
+warning.direction: instead of using 'direction' for block-level elements use the new CSS3 'writing-mode' property
+
+# used by org.w3c.css.properties.CssTextDecoration
+error.same-value: %s appears twice
+
+error.generic-family.quote: Generic family names are keywords, and therefore must not be quoted.
+
+# used by org.w3c.css.properties.CssClip
+error.shape: Invalid shape definition rect(<top>,<right>,<bottom>,<left>)
+error.shape-separator: Invalid separator in shape definition. It must be a comma.
+
+# used by org.w3c.css.properties.CssContent
+error.attr: Invalid attr definition attr(X)
+error.function: Invalid function definition 
+error.counter: Invalid counter definition counter(<identifier>[,<list-style-type>]?)
+error.counters: Invalid counters definition counters(<identifier>,<string>[,<list-style-type>]?)
+
+# used by org.w3c.css.font.Src
+error.format: Invalid format definition format(<string>[,<string>]*)
+error.local: Invalid format definition local(<string>|<ident>+)
+
+# used by org.w3c.css.values.CssAngle, org.w3c.css.values.CssFrequency, org.w3c.css.values.CssTime, org.w3c.css.values.CssLength
+error.unit: %s is an incorrect unit
+
+# used by org.w3c.css.aural.ACssAzimuth
+error.degree: Position must be described in terms of degrees.
+
+# used by org.w3c.css.aural.ACssElevation
+error.elevation.range: Specifies the elevation as an angle, between '-90deg' and '90deg'.
+
+# used by org.w3c.css.aural.ACssPitchRange
+error.range: The value is out of range.This value must be between '0' and '100'.
+
+# used by org.w3c.css.properties.CssTextShadow
+error.two-lengths: A shadow offset is specified with two <length> values (A blur radius may optionally be specified after the shadow offset.)
+
+error.integer: This number should be an integer.
+error.comma: Missing comma separator.
+
+# used by org.w3c.css.values.CssPercentage
+error.percent: %s is an incorrect percentage
+
+# used by org.w3c.css.values.CssString
+error.string: %s is an incorrect string
+
+# used by org.w3c.css.values.CssURL
+error.url: %s is an incorrect URL
+
+# used by org.w3c.css.values.CssColor
+error.rgb: %s is not a valid color 3 or 6 hexadecimals numbers
+error.angle: %s is not a valid angle. Value should be between 0 and 360
+
+# used by org.w3c.css.values.CssNumber
+error.zero: only 0 can be a %s. You must put a unit after your number
+
+#used by org.w3c.css.properties.CssColumnCount
+error.strictly-positive: %s is not valid, only values greater than 0 allowed.
+
+# used by org.w3c.css.parser.CssPropertyFactory
+error.noexistence-at-all: Property %s doesn't exist
+error.noexistence-media: Property %s doesn't exist for media %s
+error.noexistence: Property %s doesn't exist in %s but exists in %s
+warning.noexistence: Property %s doesn't exist in %s but exists in %s
+warning.noexistence-media: Property %s doesn't exist for media %s
+warning.notforusermedium : Property %s doesn't exist for this usermedium
+warning.noothermedium : Properties for other media might not work for usermedium
+# used by org.w3c.css.parser.AtRule*
+error.noatruleyet: Other @rules than @import are not supported by CSS1 %s
+# used by org.w3c.css.parser.analyzer.CssParser
+error.notforcss1: Value %s does not exist for CSS1
+warning.pseudo: Unknown pseudo-element or pseudo-class %s in the default profile (%s)
+warning.nocomb: Combinator %s between selectors is not allowed in this profile (%s)
+warning.charsetspecial: This profile has a very specific syntax for @charset: \
+@charset followed by exactly one space, followed by the name of the encoding \
+in quotes, followed immediately by a semicolon.
+warning.notversion: %s can not be used with this version of CSS : %s
+
+# used by org.w3c.css.parser.CssFouffa
+error.unrecognize: Too many values or values are not recognized
+
+# used by org.w3c.css.parser.CssFouffa
+generator.unrecognize: Parse Error
+generator.dontmixhtml: Parse Error. Style sheets should not include HTML syntax.  
+
+# used by org.w3c.css.css.StyleSheetGeneratorHTML2
+error.unknown: Unknown error
+
+# used by org.w3c.css.parser.CssSelectors
+error.pseudo-element: The pseudo-element %s can't appear here in the context %s
+error.pseudo-class: The pseudo-class .%s can't appear here in the HTML context %s
+error.pseudo: Unknown pseudo-element or pseudo-class %s
+error.id: ID selector #%s is invalid ! Only one ID selector can be specified in a simple selector: %s.
+error.space: If the attribute selector ~= is used, the word in the value %s must not contain spaces.
+error.todo : Sorry the feature %s is not implemented yet.
+error.incompatible: %s and %s are incompatible
+warning.incompatible: %s and %s are incompatible
+error.notformobile: %s can not be used with mobile profile
+error.notforatsc: %s can not be used with ATSC profile
+error.notfortv: %s can not be used with TV profile
+error.notversion: %s can not be used with this version of CSS : %s
+
+error.media: unrecognized media %s 
+error.page: unrecognized pseudo named page %s
+
+error.unrecognized.link: Unrecognized link element or xml-stylesheet PI.
+
+# used by StyleSheetGeneratorHTML
+generator.context: Context
+generator.request: An error occured during the output of your style sheet. \
+Please correct your request or send a mail to plh@w3.org.
+generator.unrecognized: Unrecognized
+generator.invalid-number: Invalid number
+generator.property: Value Error
+generator.line: Line
+generator.not-found: File not found
+
+generator.doc-html:   <!-- removed this confusing message olivier 2006-12-14 -->
+generator.doc:  <!-- removed this confusing message olivier 2006-12-14 -->
+
+
+# used by the parser
+parser.semi-colon: attempt to find a semi-colon before the property name. add it
+
+parser.unknown-dimension: Unknown dimension
+
+parser.old_class: In CSS1, a class name could start with a digit (".55ft"), \
+unless it was a dimension (".55in"). In CSS2, such classes are parsed as \
+unknown dimensions (to allow for future additions of new units) \
+To make "%s" a valid class, CSS2 requires the first digit to be escaped "%s"
+
+parser.old_id: In CSS1, an id name could start with a digit ("#55ft"), \
+unless it was a dimension ("#55in"). In CSS2, such ids are parsed as \
+unknown dimensions (to allow for future additions of new units)
+
+parser.class_dim: In CSS1, a class name can start with a digit (".55ft"), \
+unless it is a dimension (".55in").
+
+parser.id_dim: In CSS1, an id name can start with a digit ("#55ft"), \
+unless it is a dimension ("#55in").
+
+parser.charset: The @charset rule may only occur at the start of the style \
+sheet. Please check that there are no spaces before it.
+
+parser.charsetspecial: This profile has a very specific syntax for @charset: \
+@charset followed by exactly one space, followed by the name of the encoding \
+in quotes, followed immediately by a semicolon.
+
+warning.old_id: In CSS1, an id name can start with a digit ("#55ft"), \
+unless it is a dimension ("#55in"). In CSS2, such ids are parsed as \
+unknown dimensions (to allow for future additions of new units)
+
+warning.old_class: In CSS1, a class name can start with a digit ("#55ft"), \
+unless it is a dimension ("#55in"). In CSS2, such ids are parsed as \
+unknown dimensions (to allow for future additions of new units).
+
+# used by the servlet
+servlet.invalid-request: You have sent an invalid request.
+servlet.process: Can't process the object
+
+warning.atsc: %s might not be supported by the medium atsc-tv
+error.onlyATSC: %s this function is only for the atsc-tv medium
+
+warning.otherprofile: property %s does not exist for this profile, but is validated conforming to another profile
+warning.deprecated: this value is deprecated
+
+warning.float-no-width: In (x)HTML+CSS, floated elements need to have a width declared. Only elements with an intrinsic width (html, img, input, textarea, select, or object) are not affected
+
+parser.charsetcss1: @charset rules can not be used in CSS1
+parser.attrcss1: Attribute selectors are invalid in CSS1
+
+parser.invalid_id_selector: Invalid ID selector
+parser.import_not_allowed: @import are not allowed after any valid statement other than @charset and @import.
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/Messages.properties.es	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,372 @@
+# Spanish translation, last updated in sync with Messages.properties.en,v 1.31
+
+direction: ltr
+language_name: Español
+more_options: Más opciones
+title_more_options: Show/Hide extra validation options
+all: Todos
+normal_report: Informe normal
+most_important: Las más importantes
+no_warnings: Sin advertencias
+profile: Perfil
+no_special_profile: Ninguno en especial
+css1: CSS versión 1
+css2: CSS versión 2
+css21: CSS versión 2.1
+css3: CSS versión 3
+SVG: SVG
+svgbasic: SVG Básico
+svgtiny: SVG Reducido
+mobile: Móvil
+ATSC_TV_profile: Perfil de TV ATSC
+TV_profile: Perfil de TV
+medium: Medio
+aural: auditivo
+braille: braille
+embossed: relieve
+handheld: pequeños dispositivos
+print: impresión
+projection: proyección
+screen: pantalla
+tty: teletipo
+tv: televisión
+presentation: presentación
+
+type: Tipo
+no_special_type: Automático
+html_doc: HTML
+css_doc: CSS
+
+check: Check
+W3C_CSS_validation_service: El Servicio de Validación de CSS del W3C
+check_CSS: Verifica Hojas de Estilo en Cascada (CSS) y documentos (X)HTML con hojas de estilo
+by_URI: mediante URI
+by_file_upload: mediante Carga de Archivo
+by_direct_input: mediante Entrada directa
+validate_by_URI: Validar mediante URI
+enter_uri: Introduce la URI de un documento (HTML con CSS o sólo CSS) que desees validar
+page_address: Dirección de la página a Validar
+address: Dirección
+submit_uri: Enviar archivo para su validación
+validate_by_file_upload: Validar mediante Carga de un Archivo
+choose_document: Elige el documento que desees validar
+choose_local_file: Elige un Archivo Local para su Carga y Validación
+local_CSS_file: Archivo CSS local
+submit_file: Enviar archivo para su validación
+validate_by_input: Validar mediante entrada directa
+enter_CSS: Introduce el código CSS que desees validar
+submit_input: Enviar archivo para su validación
+note: Nota
+note_xhtml_valid: Si deseas validar tu hoja de estilo CSS incrustada en un documento (X)HTML, deberías antes <a href="http://validator.w3.org/">comprobar que el  (X)HTML utilizado es válido</a>
+# End of variables added along with Index page template
+
+W3C_validator_results: Resultados del Validador CSS del W3C para 
+# file_title: <!-- provided by the user -->
+CSS_validation_service: Servicio de Validación CSS
+jump_to: Ir a
+# errors_count: <!-- generated on the fly -->
+errors: Los Errores 
+# warnings_count <!-- generated on the fly -->
+warnings: Las Advertencias 
+validated_CSS: Su Hoja de Estilo validada
+congrats: ¡Enhorabuena! No error encontrado.
+# The sentence defined by doc_validates_before_link and doc_validates_after_link variables goes: \
+# "This document validates as CSSXX!" where XX stands for the CSS version used \
+# Since the content of the link about the CSS version is generated on the fly, \
+# it is important to define what goes before the link and what goes afterwards in 2 separate \
+# variables because the position of the link in the sentence varies in different languages
+doc_validates_before_link: ¡Este documento es
+doc_validates_after_link: válido!
+no_errors_interoperable_msg: Puede mostrar este icono en cualquier página que valide para que los usuarios vean \
+que se ha preocupado por crear una página Web interoperable. A continuación \
+se encuentra el XHTML que puede usar para añadir el icono a su página Web:
+valid_CSS: ¡CSS Válido!
+# <!-- close the img tag with > instead of /> if using HTML<= 4.01 -->
+no_errors_close_tags_msg: cierre la etiqueta img con &gt; en lugar de /&gt; si utiliza HTML &lt;= 4.01
+no_errors_dl_local_msg: Si lo desea, puede descargar una copia de la imagen para guardarla en su \
+directorio web local y cambiar el fragmento anterior de XHTML para referenciar \
+a la imagen en local en lugar de a la de éste servidor.
+no_errors_create_link_msg: Si desea crear un enlace con esta página (es decir, con los resultados \
+de la validación) para hacer que sea más fácil revalidar la página en el futuro, \
+o para permitir que otras personas validen su página, el URI es:
+no_errors_forHTML_only_msg: para documentos HTML/XML únicamente
+no_errors_bookmark_msg: O, simplemente, puede añadir la página actual a su lista de marcadores o favoritos.
+note_valide_html: Para funcionar como previsto, tu hoja de estilo CSS necesita un "arbol sintactico". Esto significa que usted necesita usar <a href="http://validator.w3.org/"> un valido codigo HTML</a>.
+top: Top
+# hook_html_validator <!-- generated on the fly -->
+not-css1-style: /* ¡ TENGA CUIDADO ! ¡ Esta propiedad no está incluida en CSS1 ! */
+errors_sorry_msg: Disculpas! Hemos encontrado las siguientes errores
+# errors_list: <!-- generated on the fly -->
+# warnings_list: <!-- generated on the fly -->
+# rules_count: <!-- generated on the fly -->
+valid_CSS_info: Información de CSS válida
+# charset: <!-- generated on the fly -->
+# rules_list: <!-- generated on the fly -->
+CSS_not_found: No se ha encontrado ninguna hoja de estilo
+home: Inicio
+about: Acerca de este servicio
+doc: Documentación
+dl: Download
+feedback: Comentarios
+credits: Créditos
+home_title: Página de inicio del Servicio de Validación CSS del  W3C
+about_title: Acerca de este servicio
+doc_title: Documentación del Servicio de Validación CSS del W3C
+dl_title: Descargar y installar el validador CSS
+feedback_title: Cómo realizar comentarios sobre este servicio
+credits_title: Créditos y Agradecimientos
+W3C_quality_msg: Actividad de Garantí de Calidad del W3C, ofreciéndole herramientas de calidad Web gratuítas y más 
+learn_more_msg: Aprenda má sobre las Hojas de Estilo en Cascada
+support: Apoye esta herramienta, conviértase en un 
+supporter: Contribuidor del W3C
+# End of variables added along with Velocity
+
+# Defines your own error and warning message here
+content-type: text/html; charset=utf-8
+content-language: es
+output-encoding-name: utf-8
+
+# You can change the level warning like this (example) :
+# warning.redefinition.level: 5
+#  level is an integer between 0 and 9 (all others values are ignored)
+warning.redefinition: Redefinición de %s
+
+# used by xml parser
+warning.style-inside-comment: Do not put style rules inside HTML comments as they may be removed by user agent
+
+# used by org.w3c.css.properties.Css1Style
+warning.same-colors: Colores iguales para %s y %s
+warning.no-color: Hay un color de fondo establecido y no hay color de primer plano
+warning.no-background-color: Hay un color de primer plano establecido y no hay color de fondo
+#warning.color.mixed-capitalization is now obsolete
+#warning.color.mixed-capitalization: Aunque los nombres de los colores no son sensibles a las mayúsculas, es recomendable utilizar capitalización mixta para hacerlos más legibles: %s
+warning.no-generic-family: %s: Es recomendable ofrecer una familia genérica como última alternativa
+warning.with-space: Los nombres de familias que contengan espacios en blanco deben entrecomillarse. Si no se hace, cualquier espacio \
+en blanco anterior o posterior al nombre será ignorado y cualquier secuencia de espacios en blanco dentro del nombre \
+será convertida a un único espacio. 
+warning.no-padding: Es recomendable tener un área de relleno (padding) con el color de fondo
+warning.same-colors2: Color de primer plano y color de fondo iguales en dos contextos %s y %s
+warning.relative-absolute: Hay algunas longitudes absolutas y relativas en %s. No es una hoja de estilo robusta.
+
+# used by org.w3c.css.properties.CssSelectors
+warning.unknown-html: %s no es un elemento de HTML
+warning.html-inside: El elemento HTML no puede estar dentro de otro elemento
+warning.body-inside: El elemento BODY no puede estar dentro de otro elemento que no sea el elemento HTML
+warning.pseudo-classes: La pseudo-clase de Anchor %s sólo tiene efecto en los elementos 'A'
+warning.pseudo:  Pseudo-elemento o pseudo-clase %s desconocido(a) en el perfil por defecto (%s)
+# not used by org.w3c.css.properties.CssSelectors for the moment
+warning.noinside: %s no puede estar dentro de un elemento de línea
+warning.withblock: Cuidado. Los pseudo-elementos sólo se pueden unir a elementos de bloque
+warning.block-level: Estas propiedad se aplica a elementos de bloque.
+
+# used by org.w3c.css.parser.Frame
+warning.no-declaration: No hay declaraciones en la regla
+
+# used by org.w3c.css.parser.CssFouffa
+warning.unsupported-import: Las hojas de estilo importadas no se comprueban en los modos de entrada directa y carga de archivo
+
+# used by org.w3c.css.values.CssColor
+warning.out-of-range: %s está fuera de rango
+error.invalid-color: Función RGB no válida
+
+warning.marker: La propiedad marker-offset se aplica a elementos con 'display: marker'
+
+# used by org.w3c.css.properties.ACssStyle
+warning.relative: Utilizar unidades relativas da lugar a hojas de estilo más robustas en la propiedad %s
+
+# used by org.w3c.css.css.StyleSheetParser and org.w3c.css.css.StyleSheetXMLParser
+error.at-rule: Lo lamentamos, la regla-arroba %s no está implementada.
+
+# used by all properties and values
+error.operator: %s es un operador incorrecto
+error.negative-value: Valores negativos de %s no están permitidos
+error.few-value: Faltan valores para la propiedad %s
+
+# be careful here, values comes first
+# You can't write something like this : For the color, blue is an incorrect value
+error.value: %s no es un valor de %s
+
+#used by org.w3c.css.properties3.CssToggleGroup
+error.groupname: %s no es un nombre de grupo correcto. Use un identificador válido
+
+#used by org.w3c.css.properties3.CssGroupReset
+error.nogroup: %s no ha sido establecido por la propiedad toggle-group
+
+#used by org.w3c.css.properties3.CssGlyphOrVert
+error.anglevalue: El valor tiene que estar comprendido entre -360 y 360, y ser divisible por 90
+
+#used by org.w3c.css.properties3.CssTextKashidaSpace
+error.percentage: se espera un valor en porcentaje
+
+#used by org.w3c.css.properties.CssTextAlign
+warning.xsl: el valor %s sólo se aplica a XSL
+
+#used by org.w3c.css.parser.analyzer.CssParser
+warning.medialist : la lista de medios (medialist) debería comenzar por 'media :' %s
+error.nocomb: El combinador %s entre selectores no está permitido en este perfil o versión
+
+#used by org.w3c.css.properties.CssDirection
+warning.direction: use la nueva propiedad de CSS3 'writing-mode' en lugar de usar 'direction' para los elementos de bloque
+
+# used by org.w3c.css.properties.CssTextDecoration
+error.same-value: %s aparece dos veces
+
+error.generic-family.quote: Los nombres de familia genéricos son palabras reservadas y, por tanto, no deben entrecomillarse.
+
+# used by org.w3c.css.properties.CssClip
+error.shape: Definición de figura no válida rect(<top>,<right>,<bottom>,<left>)
+error.shape-separator: Separador no válido en la definición de figura. Debe ser una coma.
+
+# used by org.w3c.css.properties.CssContent
+error.attr: Definición de attr no válida attr(X)
+error.function: Definición de función no válida 
+error.counter: Definición de contador no válida counter(<identifier>[,<list-style-type>]?)
+error.counters: Definición de contadores no válida counters(<identifier>,<string>[,<list-style-type>]?)
+
+# used by org.w3c.css.font.Src
+error.format: Definición de formato no válida format(<string>[,<string>]*)
+error.local: Definición de localización no válida local(<string>|<ident>+)
+
+# used by org.w3c.css.values.CssAngle, org.w3c.css.values.CssFrequency, org.w3c.css.values.CssTime, org.w3c.css.values.CssLength
+error.unit: %s es una unidad incorrecta
+
+# used by org.w3c.css.aural.ACssAzimuth
+error.degree: La posición debe estar especificada en términos de grados.
+
+# used by org.w3c.css.aural.ACssElevation
+error.elevation.range: Especificar la elevación como un ángulo entre '-90deg' y '90deg'.
+
+# used by org.w3c.css.aural.ACssPitchRange
+error.range: El valor está fuera del rango. Este valor debe estar comprendido entre '0' y '100'.
+
+# used by org.w3c.css.properties.CssTextShadow
+error.two-lengths: Un offset de sombra se especifica con dos valores <length> (Opcionalmente, depués del offset de sombra puede especificarse un ratio de difuminado.)
+
+error.integer: Éste número debe ser un entero.
+error.comma: Falta una coma para separar.
+
+# used by org.w3c.css.values.CssPercentage
+error.percent: %s no es un porcentaje correcto
+
+# used by org.w3c.css.values.CssString
+error.string: %s no es una cadena correcta
+
+# used by org.w3c.css.values.CssURL
+error.url: %s no es un URL correcto
+
+# used by org.w3c.css.values.CssColor
+error.rgb: %s no es un color válido de 3 o 6 cifras hexadecimales
+error.angle: %s no es un ángulo válido. El valor debe estar comprendido entre 0 y 360
+
+# used by org.w3c.css.values.CssNumber
+error.zero: Únicamente 0 puede ser un %s. Debe especificarse una unidad detrás de la cifra
+
+# used by org.w3c.css.parser.CssPropertyFactory 
+error.noexistence-at-all: La propiedad %s no existe
+error.noexistence-media: La propiedad %s no existe en el medio %s
+error.noexistence: La propiedad %s no existe en %s pero existe en %s
+warning.noexistence: La propiedad %s no existe en %s pero existe en %s
+warning.noexistence-media: La propiedad %s no existe en el medio %s
+warning.notforusermedium : La propiedad %s no existe en este medio de usuario
+warning.noothermedium : Las propiedades de otros medios podrían no funcionar en el medio de usuario
+# used by org.w3c.css.parser.AtRule*
+error.noatruleyet : Las reglas-arroba que no sean @import no son soportadas por CSS1 %s
+# used by org.w3c.css.parser.analyzer.CssParser
+error.notforcss1 : El valor %s no existe en CSS1
+
+# used by org.w3c.css.parser.CssFouffa
+error.unrecognize: Faltan valores o no se reconocen los valores
+
+# used by org.w3c.css.parser.CssFouffa
+generator.unrecognize: Error de análisis sintáctico
+generator.dontmixhtml: Error sintáctica. Hoja de estilo ne pueden incluir fragmentos de HTML. 
+
+# used by org.w3c.css.parser.CssSelectors
+error.pseudo-element: El pseudo-elemento %s no puede aparecer aquí en el contexto %s
+error.pseudo-class: La pseudo-clase .%s no puede aparecer aquí en el contexto de HTML %s
+error.pseudo: Pseudo-clase o pseudo-elemento %s desconocido(a)
+error.id: ¡El selector de ID #%s no es válido! En un selector simple sólo puede especificarse un selector de ID: %s.
+error.space: Si se utiliza el selector de atributo ~= entonces el valor de %s no puede contener espacios.
+error.todo: Lo lamentamos, esta función %s todavía no está implementada.
+error.incompatible: %s y %s son incompatibles
+warning.incompatible: %s y %s son incompatibles
+error.notformobile : %s no puede usarse en perfiles móviles
+error.notforatsc : %s no puede usarse en perfiles ATSC
+error.notfortv : %s no puede usarse en perfiles de televisión
+error.notversion : %s no puede usarse en esta versión de CSS: %s
+warning.notversion: %s no se puede utilizar en esta versión de CSS: %s
+
+error.media: medio no reconocido %s 
+error.page: página pseudo-nombrada no reconocida %s
+
+error.unrecognized.link: elemento de enlace o instrucción de procesamiento de hoja de estilo xml no reconocida.
+
+# used by StyleSheetGeneratorHTML
+generator.context: Contexto
+generator.request: Se ha producido un error en el procesado de su hoja de estilo. \
+Por favor, corrija su petición o envíe un correo a plh@w3.org.
+generator.unrecognized: No reconocido
+generator.invalid-number: Número no válido
+generator.property: Propiedad no válida
+generator.line: Línea
+generator.not-found: Archivo no encontrado
+generator.doc-html: <!-- removed this confusing message olivier 2006-12-14 -->
+generator.doc: <!-- removed this confusing message olivier 2006-12-14 -->
+
+# used by the parser
+parser.semi-colon: Tentativa de encontrar un punto y coma antes del nombre de la propiedad. Añádalo
+
+parser.unknown-dimension: dimensión desconocida
+
+parser.old_class: En CSS1, un nombre de clase puede empezar por un dígito (".55ft"), \
+excepto si es una magnitud de medida (".55in"). En CSS2, esas clases son interpretadas como \
+magnitudes de medida desconocidas (para permitir añadir nuevas magnitudes en un futuro)
+
+parser.old_id: En CSS1, un nombre de id puede empezar por un dígito ("#55ft"), \
+excepto si es una magnitud de medida ("#55in"). En CSS2, esos nombres son interpretados como \
+magnitudes de medida desconocidas (para permitir añadir nuevas magnitudes en un futuro)
+
+parser.class_dim: En CSS1, un nombre de clase puede empezar por un dígito (".55ft"), \
+excepto si es una magnitud de medida (".55in")
+
+parser.id_dim: En CSS1, un nombre de id puede empezar por un dígito ("#55ft"), \
+excepto si es una magnitud de medida ("#55in")
+
+parser.charset:La regla @charset sólo puede aparecer al comienzo de la hoja \
+de estilo. Por favor, compruebe que no hay espacios antes.
+
+parser.charsetspecial:Este perfil tiene una sintaxis muy específica para @charset: \
+@charset seguido de un espacio exactamente, seguido por el nombre de la codificación \
+entre comillas, seguido inmediatamente por un punto y coma.
+warning.charsetspecial:Este perfil tiene una sintaxis muy específica para @charset: \
+@charset seguido de un espacio exactamente, seguido por el nombre de la codificación \
+entre comillas, seguido inmediatamente por un punto y coma.
+
+warning.old_id:En CSS1, un nombre de id puede empezar por un dígito ("#55ft"), \
+excepto si es una magnitud de medida ("#55in"). En CSS2, esos nombres son interpretados como \
+magnitudes de medida desconocidas (para permitir añadir nuevas magnitudes en un futuro)
+
+warning.old_class:En CSS1, un nombre de id puede empezar por un dígito (".55ft"), \
+excepto si es una magnitud de medida (".55in"). En CSS2, esos nombres son interpretados como \
+magnitudes de medida desconocidas (para permitir añadir nuevas magnitudes en un futuro)
+
+# used by the servlet
+servlet.invalid-request: Se ha enviado una petición no válida.
+servlet.process: No se puede procesar el objeto
+
+warning.atsc : %s podría no ser compatible con el medio atsc-tv
+error.onlyATSC : %s esta función es sólo para el medio atsc-tv
+
+warning.otherprofile : la propiedad %s no existe en este perfil, pero es válida conforme a otro perfil
+warning.deprecated : este valor está desaprobado
+
+#used by org.w3c.css.parser.analyzer.CssParser
+error.nocomb: La combinación %s entre selectores no está permitida en este perfil o versión
+warning.nocomb: No se permite el combinador %s entre selectores en este perfil (%s)
+error.unknown: Error desconocido
+
+warning.float-no-width: En (x)HTML+CSS, los elementos flotados han de tener un ancho (width) declarado. Únicamente elementos con un ancho intrínseco (html, img, input, textarea, select u object) no se ven afectados
+parser.charsetcss1: En CSS1 no se pueden utilizar reglas @charset
+parser.attrcss1: Los selectores de atributo no son válidos en CSS1
+parser.invalid_id_selector: Selector ID no válido
+parser.import_not_allowed: Sólo se permite @import después de una declaración válida @charset y @import
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/Messages.properties.fa	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,339 @@
+direction: rtl
+language_name: فارسی
+more_options: گزینه های بیشتر
+title_more_options: نمایش/پنهان کردن گزینه های اعتبار سنجی اضافی
+all: تمام
+normal_report: گزارش معمولی
+most_important: مهمترین
+no_warnings: بدون اخطار
+profile: پروفایل
+no_special_profile: بدون پروفایل خاص
+css1: سطح 1 CSS
+css2: سطح 2 CSS
+css21: سطح 2.1 CSS
+css3: سطح 3 CSS
+SVG: SVG
+svgbasic: بیسیک SVG
+svgtiny: SVG tiny
+mobile: موبایل
+ATSC_TV_profile: ATSC TV پروفایل
+TV_profile: TV پروفایل
+medium: رسانه
+aural: شنیداری
+braille: بریل
+embossed: برجسته شده
+handheld: دستی
+print: پرینت
+projection: طرح ریزی
+screen: صفحه نمایش
+tty: تله تایپ
+tv: تلویزیون
+presentation: نمایش
+type: نوع
+no_special_type: خودکار
+html_doc: HTML
+css_doc: CSS
+check: بررسی
+W3C_CSS_validation_service: W3C CSS سرویس اعتبار سنجی
+check_CSS: دارای شیوه نامه X(HTML) و اسناد (CSS) بررسی شیوه نامه های آبشاری
+by_URI: URI توسط
+by_file_upload: با آپلود فایل
+by_direct_input: با ورودی مستقیم
+validate_by_URI: URI تایید اعتبار با
+enter_uri: ای که می خواهید معتبر نمایید را، وارد نمایید (CSS یا تنها CSS دارای HTML) سند URI
+page_address: آدرس صفحه جهت تایید اعتبار
+address: آدرس
+submit_uri: برای اعتبار سنجی URI ارایه ی
+validate_by_file_upload: تایید اعتبار با آپلود فایل
+choose_document: (CSS سندی که می خواهید معتبر نمایید را انتخاب کنید (تنها فایلهای
+choose_local_file: یک فایل محلی (در سیستم خودتان) را جهت آپلود و تایید اعتبار انتخاب نمایید
+local_CSS_file: CSS فایل محلی
+submit_file: فایل را برای اعتبار سنجی ارایه نمایید
+validate_by_input: تایید اعتبار با ورودی مستقیم
+enter_CSS: ای را که می خواهید تایید اعتبار شود را وارد نمایید CSS
+submit_input: ورودیتان را برای اعتبار سنجی ارایه نمایید
+note: توجه
+note_xhtml_valid: <a href="http://validator.w3.org"> مورد استفاده معتبر باشد (X)HTML بررسی نمایید که <a/> خودتان را تایید اعتبار نمایید، نخست باید (X)HTML جاسازی شده در یک سند CSS اگر بخواهید شیوه نامه ی 
+# انتهای متغیرهای اضافه شده همراه با الگوی صفحه ی فهرست 
+
+W3C_validator_results: برای W3C CSS نتایج اعتبار سنج
+# file_title: <!-- تهیه شده توسط کاربر -->
+CSS_validation_service: CSS سرویس اعتبار سنجی
+jump_to: جهش کنید به
+# errors_count: <!-- تولید شده در اجرا -->
+errors: خطاها
+# warnings_count: <!-- تولید شده در اجرا -->
+warnings: اخطارها
+validated_CSS: معتبر شده CSS
+congrats: .تبریک! هیچ خطایی یافت نشد
+# doc_validates_before_link و doc_validates_after_link راهی شدن متغیرهای: \
+# باشد CSS نمادهایی برای نسخه ی مورد استفاده ی XX تایید اعتبار می شود!" جاییکه CSSXX این سند بصورت" \
+# ،در هنگام اجرا تولید شده است CSS از آنجایی که محتوای لینک در مورد نسخه ی \
+# این مهم است که آنچه را که قبل از لینک می رود و آنچه را که پس از آن در 2 قسمت مجزا می رود را تعریف نماید \
+# متغیرها برای اینکه وضعیت لینک در جمله در زبانهای متفاوت تغییر می کند
+doc_validates_before_link: این سند تایید اعتبار می شود بصورت
+doc_validates_after_link: !
+no_errors_interoperable_msg: برای نشان دادن به کاربرانتان مبنی بر اینکه شما د قت کافی را جهت ایجاد یک قابلیت عمل بینابینی وب مبذول داشته اید مورد نظر است XHTML صفحه، شما می توانید این آیکون را در هر صفحه ای که تایید اعتبار شده نمایش دهید. در اینجا :شما می توانید اینرا بکار برید تا این آیکون به صفحه ی وب شما اضافه شود
+valid_CSS: !معتبر CSS
+# <--! را بجای </ با < ببندید img استفاده می کنید، تگ HTML <= 4.01 اگر از -->
+no_errors_close_tags_msg: ببندید &lt; با /&lt; را بجای img استفاده می کنید، تگ HTML &lt;= 4.01 اگر از
+no_errors_dl_local_msg: اگر می خواهید، می توانید یک کپی از این تصویر را جهت نگهداری در وب محلی تان دانلود نمایید مذکور در بالا را جهت مراجعه ی تصویر محلی تان انتخاب نمایید XHTML دایرکتوری، و تکه ی .بجای این یکی بر روی این سرور
+no_errors_create_link_msg: اگر شما می خواهید لینکی به این صفحه ایجاد نمایید (یعنی، نتایج \ این اعتبار سنجی) اجازه می دهد جهت اجازه یا تایید اعتبار مجدد این صفحه در آینده آسانتر ساخته شود هست URI ،دیگران که صفحه ی شما را تایید اعتبار می نمایند:
+no_errors_forHTML_only_msg: HTML/XML تنها برای سند
+no_errors_bookmark_msg: .یا، شما فقط می توانید صفحه ی فعلی را به بوکمارک ها یا هات لیست خود اضافه نمایید
+note_valide_html: .شما نیازمند یک نمودار درختی تجزیه سند صحیح است CSS جهت فعالیت بصورت مورد نظر، شیوه نامه .را بکار برید <a href="http://validator.w3.org/">valid HTML</a> این بدین منظور است که باید
+top: بالا
+# hook_html_validator: <!-- تولید شده در اجرا -->
+not-css1-style: /* نیست CSS1 مواظب باشید! این یک مشخصه ی */
+errors_sorry_msg: با تأسف! خطاهای ذیل را یافتیم
+# errors_list: <!-- تولید شده در اجرا -->
+# warnings_list: <!-- تولید شده در اجرا -->
+# rules_count: <!-- تولید شده در اجرا -->
+valid_CSS_info: معتبر CSS اطلاعات
+# charset: <!-- تولید شده در اجرا -->
+# rules_list: <!-- تولید شده در اجرا -->
+CSS_not_found: هیچ شیوه نامه ای یافت نشد
+home: خانه
+about: در مورد
+doc: مستند سازی
+dl: دانلود
+feedback: بازخورد
+credits: قدردانی
+home_title: W3C CSS صفحه اصلی برای سرویس اعتبار سنجی
+about_title: در مورد این سرویس
+doc_title: W3C CSS مستند سازی برای سرویس اعتبار سنجی
+dl_title: CSS دانلود و نصب اعتبار سنج
+feedback_title: چگونگی تهیه ی بازخورد در این سرویس
+credits_title: قدردانی و سپاسگزاریها
+W3C_quality_msg: موجب رساندن ابزارهای رایگان کیفیت وب و سایر موارد به شما می شود ،W3C فعالیت تضمین کیفیت
+learn_more_msg: در مورد شیوه نامه های آبشاری بیشتر یاد بگیرید
+support: حمایت از این ابزار و تبدیل شدن به
+supporter: حامی کنسرسیوم وب جهانی
+# انتهای متغیرهای بسرعت اضافه شده
+
+# تعاریف خطاهای شما و پیغام اخطار در اینجا
+content-type: text/html; charset=utf-8
+content-language: en
+output-encoding-name: utf-8
+
+# :(شما اینگونه می توانید سطح اخطار را تغییر دهید (مثال
+# warning.redefinition.level: 5
+# (سطح یک عدد صحیح مابین 0 و 9 است (تمامی مقادیر دیگر نادیده گرفته می شوند
+warning.redefinition: %s تعریف دوباره ی
+
+# xml استفاده شده توسط تجزیه کننده ی
+warning.style-inside-comment: را بصورتی قرار ندهید که احتمالا توسط مرورگر برداشته شوند HTML دستورات سبک درون توضیحات
+
+# org.w3c.css.properties.Css1Style استفاده شده توسط
+warning.same-colors: %s و %s رنگ یکسان برای
+warning.no-color: .شما هیچ مجموعه رنگ (یا رنگی که بصورت شفاف است) را ندارید اما شما مجموعه ای از یک رنگ پس زمینه را دارید. مطمئن شوید که با آبشار رنگها متن بخوبی خوانده شود
+warning.no-background-color: .شما هیچ رنگ پس زمینه (یا رنگ پس زمینه ای که بصورت شفاف است) را ندارید اما شما یک رنگ را انتخاب کرده اید. مطمئن شوید که آبشار رنگها متن را بخوبی خوانا می نماید
+#هم اکنون منسوخ شده است warning.color.mixed-capitalization
+#warning.color.mixed-capitalization: %s:اگرچه نامهای رنگ نسبت به حروف بزرگ و کوچک غیر حساسند، جهت خواناتر شدن نامها، نوشتن با حروف بزرگ ترکیبی توصیه شده است
+warning.no-generic-family: %s: به شما توصیه می شود تا یک گروه کلی را بعنوان آخرین جایگزین پیشنهاد نمایید
+warning.with-space: نامهای خانوادگی شامل فضای خالی بایستی نقل قول شده باشند. اگر نقل قول از قلم انداخته شده، هر فضای خالی کاراکترها قبل و بعد از نام رد شده اند و هر رشته ی فضای خالی کاراکترها درون .نام به یک تک فاصله تبدیل شده است 
+warning.no-padding: را با یک رنگ پس زمینه داشته باشید padding به شما توصیه می شود که یک ناحیه ی
+warning.same-colors2: %s و %s رنگهای یکسان برای رنگ و رنگ پس زمینه در دو مضمون
+warning.relative-absolute: .دارید. این شیوه نامه ی صحیحی نیست %s شما طولهای نسبی و مطلق اندکی در
+# بکار برده شده است org.w3c.css.properties.CssSelectors توسط
+warning.unknown-html: نیست HTML یک عنصر %s
+warning.html-inside: نمی تواند درون عنصر دیگری باشد HTML عنصر
+warning.body-inside: نمی تواند در داخل عنصر دیگری باشد HTML بجز درون عنصر BODY عنصر
+warning.pseudo-classes: در عناصر دیگر تاثیری ندارد 'A' غیر از %s لینک انچور شبه کلاس
+
+# .برای حالا بکار نرفته است org.w3c.css.properties.CssSelectors توسط
+warning.noinside: باشد inline نمی تواند درون یک عنصر %s
+warning.withblock: اضافه شده باشند block-level دقت کنید. شبه عناصر تنها می توانند به یک عنصر
+warning.block-level: .کاربرد دارد block-level این مشخصه برای عناصر
+
+# org.w3c.css.parser.Frame استفاده شده توسط
+warning.no-declaration: هیچ اعلانی در دستور نیست
+
+# org.w3c.css.parser.CssFouffa استفاده شده توسط
+warning.unsupported-import: شیوه نامه های وارد شده به شیوه های ورودی مستقیم و آپلود فایل بررسی نشده اند
+
+# org.w3c.css.values.CssColor استفاده شده توسط
+warning.out-of-range: خارج از محدوده است %s
+error.invalid-color: بی اعتبار RGB تابع
+
+warning.marker: کاربرد دارد 'display: marker' ویژگی نشانه گذار افست در عناصری با
+
+# org.w3c.css.properties.ACssStyle استفاده شده توسط
+warning.relative: بدست می آید %s با کاربرد واحدهای نسبی شیوه نامه های صحیح  بیشتری در ویژگی
+
+# org.w3c.css.css.StyleSheetParser و org.w3c.css.css.StyleSheetXMLParser استفاده شده توسط
+error.at-rule: .نمی تواند از ویژگی درخواست شده پشتیبانی نماید at-rule %s ،با تاسف
+
+# استفاده شده توسط تمامی مشخصات و مقادیر
+error.operator: اپراتور نادرستی می باشد %s
+error.negative-value: مقادیر منفی غیر مجازند %s
+error.few-value: %s مقادیر بسیار اندک برای ویژگی
+
+# در اینجا دقت کنید، نخست مقادیر می آیند
+# مقدار نادرستی است blue ،شما نمی توانید چنین چیزی را بنویسید : برای رنگ 
+error.value: نیست %s یک مقدار %s
+
+#org.w3c.css.properties3.CssToggleGroup استفاده شده توسط
+error.groupname: نام گروه صحیحی نیست. شناسه ی معتبری را بکار برید %s
+
+#org.w3c.css.properties3.CssGroupReset استفاده شده با
+error.nogroup: توسط ویژگی گروه ضامن تخصیص داده نشده است %s
+
+#org.w3c.css.properties3.CssGlyphOrVert استفاده شده توسط
+error.anglevalue: مقدار بایستی مابین 360- و 360 بوده و بر 90 قابل تقسیم باشد
+
+#org.w3c.css.properties3.CssTextKashidaSpace استفاده شده توسط
+error.percentage: مقدار درصدی مورد انتظار است
+
+#org.w3c.css.properties.CssTextAlign استفاده شده توسط
+warning.xsl: کاربرد دارد XSL تنها در %s مقدار
+
+#org.w3c.css.parser.analyzer.CssParser استفاده شده توسط
+warning.medialist: شروع شده باشد 'media :' %s لیست رسانه می بایستی با
+error.nocomb: مابین گزینشگرها در این پروفایل یا ورژن غیر مجاز است %s ترکیب کننده ی
+
+#org.w3c.css.properties.CssDirection استفاده شده توسط
+warning.direction: استفاده کنید CSS3 از 'writing-mode' برای عناصر سطح بلوک ویژگی جدید 'direction' بجای استفاده از
+
+# org.w3c.css.properties.CssTextDecoration استفاده شده توسط
+error.same-value: دوبار ظاهر می شود %s 
+
+error.generic-family.quote: .نامهای خانوادگی عمومی کلمات کلیدی هستند و بنابراین نبایستی نقل شده باشند
+
+# org.w3c.css.properties.CssClip استفاده شده توسط
+error.shape: (<top>,<right>,<bottom>,<left>) تعریف شکل نامعتبر دریافتی
+error.shape-separator: .جداساز نامعتبر در تعریف شکل. آن بایستی یک ویرگول باشد
+
+# org.w3c.css.properties.CssContent استفاده شده توسط
+error.attr: attr(X) بی اعتبار attr تعریف
+error.function: تعریف عمل نامعتبر 
+error.counter: (<identifier>[,<list-style-type>]?) شمارشگر بی اعتبار شمارشگر تعریف
+error.counters: (<identifier>,<string>[,<list-style-type>]?) شمارشگرهای بی اعتبار شمارشگرهای تعریف
+
+# org.w3c.css.font.Src استفاده شده توسط
+error.format: (<string>[,<string>]*) فرمت بی اعتبار فرمت تعریف
+error.local: (<string>|<ident>+) فرمت بی اعتبار تعریف محلی
+
+# org.w3c.css.values.CssAngle, org.w3c.css.values.CssFrequency, org.w3c.css.values.CssTime, org.w3c.css.values.CssLength استفاده شده توسط
+error.unit: یک واحد نادرست است %s
+
+# org.w3c.css.aural.ACssAzimuth استفاده شده توسط
+error.degree: .موقعیت بایستی بر حسب درجات تشریح شده باشد
+
+# org.w3c.css.aural.ACssElevation استفاده شده توسط
+error.elevation.range: .ارتقا بصورت یک زاویه، مابین 'درجه90-' و 'درجه90' را تبیین می کند
+
+# org.w3c.css.aural.ACssPitchRange استفاده شده توسط
+error.range: .مقدار خارج از محدوده است. این مقدار بایستی مابین '0' و '100' باشد
+
+# org.w3c.css.properties.CssTextShadow استفاده شده توسط
+error.two-lengths: (.تعیین شده است (یک شعاع تیرگی ممکن است پس از افست سایه بصورت اختیاری تعریف شده باشد <length> یک افست سایه با دو مقدار
+
+error.integer: .این عدد بایستی یک عدد صحیح باشد
+error.comma: .جداساز ویرگول گم شده است
+
+# org.w3c.css.values.CssPercentage استفاده شده توسط
+error.percent: درصدی نادرست است %s
+
+# org.w3c.css.values.CssString استفاده شده توسط
+error.string: رشته ای نادرست است %s
+
+# org.w3c.css.values.CssURL استفاده شده توسط
+error.url: نادرست است URL یک %s
+
+# org.w3c.css.values.CssColor استفاده شده توسط
+error.rgb: اعداد هگزا دسیمال رنگ 3 یا 6 معتبر نیست %s
+error.angle: زاویه ی معتبری نیست. مقدار بایستی مابین 0 و 360 باشد %s
+
+# org.w3c.css.values.CssNumber استفاده شده توسط
+error.zero: باشد. شما بایستی بعد از عددتان یک واحد بگذارید %s تنها 0 می تواند یک
+
+# org.w3c.css.parser.CssPropertyFactory استفاده شده توسط
+error.noexistence-at-all: وجود ندارد %s مشخصه ی
+error.noexistence-media: وجود ندارد %s برای رسانه ی %s مشخصه ی
+error.noexistence: موجود است %s وجود ندارد اما در %s در %s مشخصه ی
+warning.noexistence: موجود است %s وجود ندارد اما در %s در %s مشخصه ی
+warning.noexistence-media: وجود ندارد %s برای رسانه ی %s مشخصه ی
+warning.notforusermedium : برای این واسط کار بر وجود ندارد %s مشخصه ی
+warning.noothermedium : مشخصات برای رسانه های دیگر توانایی کار برای واسط کاربر را ندارند
+# org.w3c.css.parser.AtRule* استفاده شده توسط
+error.noatruleyet: پشتیبانی نشده است CSS1 %s توسط @import دیگر از @rules 
+# org.w3c.css.parser.analyzer.CssParser استفاده شده توسط
+error.notforcss1: وجود ندارد CSS1 برای %s مقدار
+warning.pseudo: (%s) در پروفایل پیش فرض %s شبه عنصر یا شبه کلاس ناشناخته ی
+warning.nocomb: غیر مجاز است (%s) مابین گزینشگرها در این پروفایل %s ترکیب گر
+warning.charsetspecial: :دارد @charset این پرفایل ترکیب نحوی بسیار ویژه ای برای ادامه داده شده با فضایی دقیق، توسط نام رمزگذاری ادامه یافته است @charset .در گیومه ها، فورا توسط یک ویرگول نقطه ادامه یافته اند
+warning.notversion: نمی تواند بکار رفته باشد CSS: %s با این ورژن %s
+
+# org.w3c.css.parser.CssFouffa استفاده شده توسط
+error.unrecognize: مقادیر زیادند یا تشخیص داده نشده اند
+
+# org.w3c.css.parser.CssFouffa استفاده شده توسط
+generator.unrecognize: خطای تجزیه
+generator.dontmixhtml: .باشند HTML خطای تجزیه. شیوه نامه ها نبایستی شامل ترکیب نحوی 
+
+# org.w3c.css.css.StyleSheetGeneratorHTML2 استفاده شده توسط
+error.unknown: خطای ناشناخته
+
+# org.w3c.css.parser.CssSelectors استفاده شده توسط
+error.pseudo-element: نمی تواند ظاهر شود %s اینجا در بافت :%s شبه عنصر
+error.pseudo-class: نمی تواند ظاهر شود HTML از %s اینجا در بافت .%s شبه کلاس
+error.pseudo: %s شبه عنصر ناشناخته یا شبه کلاس
+error.id: .تعیین شده باشد %s :می تواند در یک گزینشگر ساده ی ID بی اعتبار است! تنها یک گزینشگر #%s ی ID گزینشگر
+error.space: .نبایستی محتوی فواصل باشد %s اگر گزینشگر ویژگی =~ بکار رفته است، واژه در مقدار
+error.todo : .مورد پشتیبانی قرار نگرفته است %s متاسفانه هنوز ویژگی
+error.incompatible: ناسازگارند %s و %s
+warning.incompatible: ناسازگارند %s و %s
+error.notformobile: نمی تواند با پروفایل سیار بکار رفته باشد %s
+error.notforatsc: بکار رفته باشد ATSC نمی تواند با پروفایل %s
+error.notfortv: بکار رفته باشد TV نمی تواند با پروفایل %s
+error.notversion: بکار رفته باشد CSS: %s نمی تواند با این ورژن %s
+
+error.media: %s رسانه های ناشناس 
+error.page: %s صفحه ی نام برده ی ساختگی ناشناس
+
+error.unrecognized.link: .xml-stylesheet PI عنصر لینک ناشناس یا
+
+# StyleSheetGeneratorHTML استفاده شده توسط
+generator.context: مفهوم
+generator.request: .خطایی در جریان برونداد شیوه نامه رخ داده است .بفرستید plh@w3.org لطفا درخواست خود را تصحیح کنید یا ایمیلی به.
+generator.unrecognized: ناشناس
+generator.invalid-number: شماره ی بی اعتبار
+generator.property: خطای مقدار
+generator.line: خط
+generator.not-found: فایل پیدا نشد
+
+generator.doc-html: <!-- برداشته شده است olivier 2006-12-14 این پیغام گنگ -->
+generator.doc: <!-- برداشته شده است olivier 2006-12-14 این پیغام گنگ -->
+
+
+# استفاده شده توسط تجزیه گر
+parser.semi-colon: سعی نمایید که قبل از نام مشخصه یک ویرگول نقطه را بیابید. آنرا اضافه نمایید
+
+parser.unknown-dimension: بُعد ناشناخته
+
+parser.old_class: ،(".55ft") یک نام کلاس می توانست شروع شود با یک رقم ،CSS1 در دارای چنین کلاس هایی است که تجزیه شده اند بصورت CSS2 ،("#55ft") اگر نبود یک بُعد (ابعاد ناشناخته (با در نظر گرفتن افزایش واحدهای جدید در آینده ".3%s" نیازمند آن است که صرف نظر کرده باشد از نخستین رقم CSS2 ،به یک کلاس معتبر ".%s" جهت تبدیل
+
+parser.old_id: ،("#55ft") می توانست شروع شود با یک عدد id یک نام ،CSS1 در هایی است که تجزیه شده اند بصورت id دارای چنین CSS2 ،("#55ft") اگر نبود بُعد (ابعاد ناشناخته (با مجاز بودن افزایش واحدهای جدید در آینده
+
+parser.class_dim: ،("#55ft") یک نام کلاس می تواند شروع شود با یک عدد ،CSS1 در .(".55in") اگر نباشد بُعد
+
+parser.id_dim: ،("#55ft") می تواند شروع شود با یک عدد id یک نام ،CSS1 در .(".55in") اگر نباشد بُعد
+
+parser.charset: تنها می تواند در شروع استایل واقع شود @charset دستور .ورق. لطفا بررسی نمایید که در آنجا قبل از آن فواصلی موجود نباشند
+
+parser.charsetspecial: :دارد @charset این پروفایل ترکیب نحوی بسیار ویژه ای برای ادامه یافته دقیقا با یک فضا، ادامه داده شده توسط نام رمزگذاری @charset .در گیومه ها، فورا با یک ویرگول نقطه ادامه یافته است 
+
+warning.old_id: ،("#55ft") می تواند شروع شود با یک عدد id یک نام ،CSS1 در هایی است که تجزیه شده اند بصورت id دارای چنین CSS2 ،("#55ft") اگر نباشد بُعد (ابعاد ناشناخته (با در نظر گرفتن افزایش واحدهای جدید در آینده
+
+warning.old_class: ،("#55ft") یک نام کلاس می تواند شروع شود با یک عدد ،CSS1 در هایی است که تجزیه شده اند بصورت id دارای چنین CSS2 ،("#55ft") اگر نباشد بُعد .(ابعاد ناشناخته (با در نظر گرفتن افزایش واحدهای جدید در آینده
+
+# (servlet) استفاده شده توسط سرولت
+servlet.invalid-request: .شما درخواست بی اعتباری فرستاده اید
+servlet.process: نمی تواند شیء را پردازش نماید
+
+warning.atsc: پشتیبانی شده باشد atsc-tv نمی تواند توسط رسانه ی %s
+error.onlyATSC: می باشد atsc-tv این تابع تنها برای رسانه ی %s
+
+warning.otherprofile: برای این پروفایل وجود ندارد، اما در انطباق با پروفایل دیگری تایید اعتبار شده است %s مشخصه ی
+warning.deprecated: این مقدار نامناسب شناخته شده است
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/Messages.properties.fr	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,399 @@
+# French translation, last updated in sync with Messages.properties.en,v 1.31
+
+direction: ltr
+language_name: Français
+more_options: Options supplémentaires
+title_more_options: Cacher/Révéler les options supplémentaires de validation
+all: Tous
+normal_report: Rapport normal
+most_important: Les plus importants
+no_warnings: Aucun avertissement
+profile: Profil
+no_special_profile: Aucun profil particulier
+css1: CSS niveau 1
+css2: CSS niveau 2
+css21: CSS niveau 2.1
+css3: CSS niveau 3
+SVG: SVG
+svgbasic: SVG Basic
+svgtiny: SVG tiny
+mobile: Mobile
+ATSC_TV_profile: Profil ATSC TV
+TV_profile: Profil TV
+medium: Média
+aural: aural
+braille: braille
+embossed: embossed
+handheld: handheld
+print: print
+projection: projection
+screen: screen
+tty: TTY
+tv: TV
+presentation: presentation
+
+type: Type
+no_special_type: Automatique
+html_doc: HTML
+css_doc: CSS
+
+check: Vérifier
+W3C_CSS_validation_service: Service de validation CSS du W3C
+check_CSS: Vérifiez vos feuilles de style CSS et vos documents HTML stylés avec CSS
+by_URI: par adresse URI
+by_file_upload: par chargement de Fichier
+by_direct_input: par Saisie Directe
+validate_by_URI: Validation par adresse URI
+enter_uri: Saisissez l'adresse URI du document (HTML avec CSS, ou CSS seul) à valider
+page_address: Adresse du document à valider
+address: Adresse
+submit_uri: Vérifier le document sélectionné
+validate_by_file_upload: Valider par Chargement de Fichier
+choose_document: Choisissez la feulle de style à valider
+choose_local_file: Choisir un fichier local à valider
+local_CSS_file: Fichier CSS local
+submit_file: Valider le fichier selectionné
+validate_by_input: Validation par Saisie Directe
+enter_CSS: Saisissez la feuille de style à valider  (ATTENTION : feuilles de style CSS uniquement)
+submit_input: Valider la feuille de style
+note: Remarque
+note_xhtml_valid: Si vous souhaitez valider une feuille de style incorporée dans un document (X)HTML, vous devriez d'abord <a href="http://validator.w3.org/">vérifier la validité de votre document (X)HTML</a>
+note_valide_html: Les resultats de la validation de feuilles de styles incorporées dans un document (X)HTML ne sont fiables que si <a href="http://validator.w3.org/">le document HTML est valide</a>.
+# End of variables added along with Index page template
+
+W3C_validator_results: Résultats de la validation W3C CSS de
+# file_title: <!-- provided by the user -->
+CSS_validation_service: CSS validation Service
+jump_to: Aller à
+# errors_count: <!-- generated on the fly -->
+errors: Erreurs
+# warnings_count <!-- generated on the fly -->
+warnings: Avertissements
+validated_CSS: CSS valide
+congrats: Félicitations ! Aucune erreur trouvée.
+# The sentence defined by doc_validates_before_link and doc_validates_after_link variables goes: \
+# "This document validates as CSSXX!" where XX stands for the CSS version used \
+# Since the content of the link about the CSS version is generated on the fly, \
+# it is important to define what goes before the link and what goes afterwards in 2 separate \
+# variables because the position of the link in the sentence varies in different languages
+doc_validates_before_link: Ce document est valide conformément à la recommandation 
+doc_validates_after_link: !
+no_errors_interoperable_msg: Pour montrer à vos lecteurs votre souci d'interopérabilité lors de la \
+création de cette page Web, vous pouvez afficher cette icône sur toutes les \
+pages valides. Voici le fragment de XHTML que vous pouvez utiliser pour ajouter \
+cette icône à votre page Web:
+valid_CSS: CSS Valide !
+# <!-- close the img tag with > instead of /> if using HTML<= 4.01 -->
+no_errors_close_tags_msg: fermez le tag img avec &gt; au lieu de /&gt; si vous utilisez HTML &lt;= 4.01
+no_errors_dl_local_msg: Si vous le désirez, vous pouvez télécharger une copie de cette image \
+dans votre répertoire Web local, et changer le fragment d'HTML décrit ci-dessus pour \
+réferencer le nouvel emplacement de celle-ci.
+no_errors_create_link_msg: Si vous voulez créer un lien direct sur le résultat de cette validation, \
+afin de revalider facilement, ou de permettre à d'autres de vérifier \
+facilement la validité de votre document, l'URI de cette page est :
+no_errors_forHTML_only_msg: uniquement avec des documents HTML/XML
+no_errors_bookmark_msg: Vous pouvez aussi l'ajouter directement à vos signets.
+top: Top
+# hook_html_validator <!-- generated on the fly -->
+not-css1-style: /* ATTENTION! Ce n'est pas une propriété CSS1! */
+errors_sorry_msg: Désolé ! Les erreurs suivantes ont été trouvées :
+# errors_list: <!-- generated on the fly -->
+# warnings_list: <!-- generated on the fly -->
+# rules_count: <!-- generated on the fly -->
+valid_CSS_info: Votre feuille de style CSS validée :
+# charset: <!-- generated on the fly -->
+# rules_list: <!-- generated on the fly -->
+CSS_not_found: Aucune feuille de style trouvée
+home: Accueil
+about: À propos
+doc: Documentation
+dl: Télécharger
+feedback: Contact
+credits: Remerciements
+home_title: Page d'accueil du service de validation CSS de W3C
+about_title: À propos de ce service
+doc_title: Documentation du service de validation CSS du W3C
+dl_title: Télécharger et installer le CSS validator
+feedback_title: Donner un avis à propos de ce service
+credits_title: Mentions et remerciements
+W3C_quality_msg: L'activité Assurance Qualité du W3C vous offre des outils Web gratuits de qualité et plus encore
+learn_more_msg: Plus d'informations sur les feuilles de style en cascade
+support: Aidez le validateur, devenez
+supporter: Contributeur du W3C
+# End of variables added along with Velocity
+
+# Defines your own error and warning message here
+content-type: text/html; charset=utf-8
+content-language: fr
+output-encoding-name: utf-8
+
+# You can change the level warning like this (example) :
+# warning.redefinition.level: 5
+#  level is an integer between 0 and 9 (all others values are ignored)
+warning.redefinition: Redéfinition de la propriété %s
+
+# used by xml parser
+warning.style-inside-comment: Do not put style rules inside HTML comments as they may be removed by user agent
+
+# used by org.w3c.css.properties.Css1Style
+warning.same-colors: %s et %s sont de la même couleur
+warning.no-color: Vous n'avez pas de couleur définie avec votre \
+couleur de fond
+warning.no-background-color: Vous n'avez pas de couleur de fond définie \
+avec votre couleur
+#warning.color.mixed-capitalization is now obsolete
+#warning.color.mixed-capitalization: Bien que les noms de couleurs ne dépendent pas de la casse,\
+il est recommandé d'utiliser la capitalisation mixte pour rendre les noms plus lisibles: %s
+warning.no-generic-family: %s: Vous êtes encouragés à proposer une famille \
+générique comme dernier choix
+warning.with-space: Les noms de familles contenant des espaces doivent être mis entre \
+guillemets. Si les guillemets sont omis, tous les espaces avant et après \
+le nom seront ignorés et toute séquence d'espaces à l'intérieur du nom sera \
+remplacée par un seul espace.
+warning.no-padding: Il est recommandé d'avoir une zone de remplissage lors de \
+l'utilisation d'une couleur de fond
+warning.same-colors2: La même couleur est utilisée en tant que couleur et couleur de \
+fond dans les deux contextes %s et %s
+warning.relative-absolute: Vous avez des longueurs absolues et relatives dans %s, votre feuille de \
+style n'est pas très robuste.
+
+# used by org.w3c.css.properties.CssSelectors
+warning.unknown-html: %s n'est pas un élément 'HTML'
+warning.html-inside: L'élément 'html' ne peut être dans un autre élément
+warning.body-inside: L'élément 'body' ne peut être dans un élément autre que 'html'
+warning.pseudo-es: La «pseudo-classe» "anchor" %s n'a pas d'effets sur d'autres éléments que 'a'
+
+# not used by org.w3c.css.properties.CssSelectors for the moment
+warning.noinside: %s ne peut exister a l'intérieur d'un element en-ligne
+warning.withblock: Attention, les «pseudo-éléments» ne peuvent être attachés qu'à \
+des éléments de type "bloc".
+warning.block-level: Cette propriété ne s'applique qu'aux éléments de type \
+"bloc".
+
+# used by org.w3c.css.parser.Frame
+warning.no-declaration: Pas de déclarations dans cette règle
+
+# used by org.w3c.css.parser.CssFouffa 
+warning.unsupported-import: En mode «chargement de fichier» et «saisie directe», le validateur ne vérifie pas les feuilles de style importées.
+
+# used by org.w3c.css.values.CssColor
+warning.out-of-range: %s est hors-limites
+error.invalid-color: Cette fonction RVB est invalide
+
+warning.marker: La propriété "marker-offset" ne s'applique que sur des\
+ éléments contenant 'display: marker'
+
+# used by org.w3c.css.properties.ACssStyle
+warning.relative: L'utilisation d'unités relatives pour la propriété \
+%s rend la feuille de style plus robuste
+
+# used by org.w3c.css.css.StyleSheetParser and org.w3c.css.css.StyleSheetXMLParser
+error.at-rule: Désolé mais la règle-arobase %s n'est pas implementée
+
+# used by all properties and values
+error.operator: %s n'est pas un opérateur correct
+error.negative-value: Les valeurs négatives de %s ne sont pas autorisées
+error.few-value: Il n'y a pas assez de valeurs pour la propriété %s
+
+# be careful here, values comes first
+# You can't write something like this : For the color, blue is an incorrect value
+error.value: %s n'est pas une valeur de %s
+
+# used by org.w3c.css.properties3.CssToggleGroup
+error.groupname: %s n'est pas un nom de groupe correct. Utilisez un bon identifiant
+
+#used by org.w3c.css.properties3.CssGroupReset
+error.nogroup: %s n'a pas été initialisé par toggle-group
+
+#used by org.w3c.css.properties3.CssGlyphOrVert
+error.anglevalue: La valeur doit être entre -360 et 360 et divisable par 90
+
+#used by org.w3c.css.properties3.CssTextKashidaSpace
+error.percentage: La valeur doit être un pourcentage
+
+#used by org.w3c.css.properties.CssDirection
+warning.direction: au lieu de 'direction' pour les éléments block-level il vaut mieux utiliser 'writing-mode' qui est nouveau dans CSS3
+
+# used by org.w3c.css.properties.CssTextDecoration
+error.same-value: %s apparait deux fois
+
+error.generic-family.quote: Les noms de familles génériques sont des mots-clefs, \
+ils doivent donc être sans guillemets.
+
+# used by org.w3c.css.properties.CssClip
+error.shape: Définition de forme non valide: rect(<haut>,<droit>,<bas>,<gauche>)
+error.shape-separator: Séparateur non valide dans la définition de la forme, \
+cela doit être une virgule.
+
+# used by org.w3c.css.properties.CssContent
+error.attr: Définition d'attribut non valide attr(X)
+error.function: Définition non valide de fonction
+error.counter: Définition de compteur non valide counter(<identifier>[,<list-style-type>]?)
+error.counters: Définition de compteurs non valide counters(<identifier>,<string>[,<list-style-type>]?)
+
+# used by org.w3c.css.font.Src
+error.format: Définition de format non valide format(<string>[,<string>]*)
+error.local: Définition de format non valide local(<string>|<ident>+)
+
+# used by org.w3c.css.values.CssAngle, org.w3c.css.values.CssFrequency, org.w3c.css.values.CssTime, org.w3c.css.values.CssLength
+error.unit: %s n'est pas une unité valable.
+
+# used by org.w3c.css.aural.ACssAzimuth
+error.degree: La position doit être decrite en degrés
+
+# used by org.w3c.css.aural.ACssElevation
+error.elevation.range: L'élévation doit être exprimée en tant qu'angle, \
+entre '-90deg' et '90deg'.
+
+# used by org.w3c.css.aural.ACssPitchRange
+error.range: Cette valeur est hors-limites, elle doit être comprise entre '0' et '100'.
+
+# used by org.w3c.css.properties.CssTextShadow
+error.two-lengths: Une compensation d'ombre (shadow offset) est définie par deux valeurs \
+de <longueur> (Un rayon de flou optionnel peut être ajouté après cette \
+définition).
+
+error.integer: Ce nombre doit être entier.
+error.comma: Le séparateur 'virgule' est manquant.
+
+# used by org.w3c.css.values.CssPercentage
+error.percent: %s est une valeur de pourcentage incorrecte
+
+# used by org.w3c.css.values.CssString
+error.string: %s n'est pas une chaine de caractère correcte
+
+# used by org.w3c.css.values.CssURL
+error.url: %s n'est pas une URL correcte.
+
+# used by org.w3c.css.values.CssColor
+error.rgb: %s n'est pas une couleur valide (qui doit contenir 3 ou 6 chiffres hexadécimaux).
+error.angle: %s n'est pas une angle valide. La valeur doit être entre 0 et 360 
+
+# used by org.w3c.css.values.CssNumber
+error.zero: only 0 can be a %s. You must put an unit after your number
+
+# used by org.w3c.css.css.StyleSheetGeneratorHTML2
+error.unknown: Erreur inconnue
+
+# used by org.w3c.css.parser.CssPropertyFactory
+error.noexistence-at-all: La propriété %s n'existe pas
+error.noexistence-media: La propriété %s n'existe pas pour le media %s
+error.noexistence: La propriété %s n'existe pas en %s. mais existe en %s
+warning.noexistence: La propriété %s n'existe pas en %s. mais existe en %s
+warning.noexistence-media: La propriété %s n'existe pas pour le media %s
+warning.medialist: La liste de media (medialist) doit commencer par 'media :' %s
+# used by org.w3c.css.parser.CssFouffa
+error.unrecognize: Trop de valeurs, ou valeurs non reconnues
+
+# used by org.w3c.css.parser.CssFouffa
+generator.unrecognize: Erreur lors de l'analyse grammaticale.
+generator.dontmixhtml: Erreur de Syntaxe: une feuille de style ne peut inclure de fragments de HTML.
+
+# used by org.w3c.css.parser.CssSelectors
+error.pseudo-element: Le pseudo-élément %s ne peut apparaitre dans le contexte %s
+error.pseudo-class: La pseudo-classe .%s ne peut apparaitre dans le contexte HTML %s
+warning.pseudo-classes: La pseudo-class d'ancre %s n'a d'effet que sur l'element 'A'
+error.pseudo: Pseudo-élément ou pseudo-classe %s inconnu(e)
+error.id: Le sélécteur d'identificateur n'est pas valide! \
+Un selecteur simple: %s ne peut avoir qu'un seul sélécteur d'identificateur
+error.space: Si le sélécteur d'attribut ~= est utilisé, alors le mot de la \
+valeur %s ne doit pas contenir d'espaces.
+error.todo : Désolé, mais cette fonctionnalité n'est pas encore disponible.
+error.incompatible: %s et %s ne sont pas compatibles.
+warning.incompatible: %s et %s ne sont pas compatibles.
+
+error.media: media %s non reconnu 
+error.page: Page pseudo-nommée %s non reconnue
+warning.xsl: %s ne s'applique qu'aux feuilles de style XSL
+
+# used by StyleSheetGeneratorHTML
+generator.context: Contexte
+generator.request: Une erreur s'est produite lors de l'ecriture de votre feuille de style. \
+Veuillez corriger votre requète, ou envoyez un courrier électronique à plh@w3.org.
+generator.unrecognized: Non reconnu
+generator.invalid-number: Nombre erroné
+generator.property: Propriété erronée
+generator.line: Ligne
+generator.not-found: Fichier introuvable
+generator.doc-html: <!-- removed this confusing message olivier 2006-12-14 -->
+generator.doc: <!-- removed this confusing message olivier 2006-12-14 -->
+
+# used by the parser
+parser.semi-colon: impossible de trouver un point-virgule avant le nom de la \
+propriété, ajoutez-le.
+
+parser.unknown-dimension: Dimension inconnue
+
+parser.old_class: En CSS1, il était possible d'avoir un nom de classe \
+commençant par un chiffre (".55xx") sauf s'il s'agissait d'une dimension \
+(".55cm"). En CSS2, de tels noms sont analysés comme étant des dimensions \
+inconnues, pour permettre l'ajout de nouvelles unités). Pour que "%s" soit \
+un nom de classe CSS2 valide, le premier chiffre doit être échappé "%s"
+
+parser.old_id: En CSS1, il était possible d'avoir un nom d'id \
+commençant par un chiffre ("#55xx") sauf s'il s'agissait d'une dimension \
+("#55cm"). En CSS2, de tels noms sont analysés comme étant des dimensions \
+inconnues, pour permettre l'ajout de nouvelles unités).
+
+parser.class_dim: En CSS1, il est possible d'avoir un nom de classe \
+commençant par un chiffre (".55xx") sauf s'il s'agit d'une dimension \
+(".55cm").
+
+parser.id_dim: En CSS1, il est possible d'avoir un nom d'id \
+commençant par un chiffre ("#55xx") sauf s'il s'agit d'une dimension \
+("#55cm").
+
+parser.charset: La règle @charset doit apparaitre au début du fichier. \
+Vérifiez qu'il n'y a pas d'espace avant.
+
+parser.charsetspecial:Ce profil a une syntaxe très spécifique pour @charset : \
+@charset suivi d'exactement un espace, suivi du nom de l'encodage entre \
+guillemets, immédiatement suivi par un point-virgule.
+
+warning.old_class: En CSS1, il est possible d'avoir un nom de classe \
+commençant par un chiffre (".55xx") sauf s'il s'agit d'une dimension \
+(".55cm"). En CSS2, de tels noms sont analysés comme étant des dimensions \
+inconnues, pour permettre l'ajout de nouvelles unités).
+
+warning.old_id: En CSS1, il est possible d'avoir un nom d'id \
+commençant par un chiffre ("#55xx") sauf s'il s'agit d'une dimension \
+("#55cm"). En CSS2, de tels noms sont analysés comme étant des dimensions \
+inconnues, pour permettre l'ajout de nouvelles unités).
+
+# used by the servlet
+servlet.invalid-request: Vous avez envoyé une requète erronée.
+servlet.process: Impossible de travailler sur l'objet.
+
+error.notforcss1 : La valeur %s n'existe pas dans le cadre de CSS1
+warning.pseudo: Le pseudo-element ou pseudo-class %s est inconnu dans le profil par défaut (%s)
+warning.nocomb: La combinaison de selecteurs %s n'est pas autorisée pour ce profil CSS (%s)
+warning.charsetspecial: Ce profil possède une syntaxe très particulière pour @charset: \
+@charset doit être immédiatement suivi d'un espace, puis le nom de l'encodage \
+entre guillemets, suivi immédiatement d'un point-virgule..
+warning.notversion: %s ne peut être utilisé dans cette version de CSS : %s
+
+warning.noothermedium : Certaines propriétés relatives à d'autres media peuvent ne pas s'appliquer à ce medium
+warning.notforusermedium : La propriété %s n'existe pas pour ce medium d'utilisateur
+error.noatruleyet : Excepté @import, les règles @ ne sont pas supportés en CSS1 : %s
+error.notformobile : %s ne peut pas être utilisé pour le profile mobile
+error.notforatsc: %s ne peut pas être utilisé pour le profil ATSC
+error.notfortv: %s ne peut pas être utilisé pour le profil TV
+error.notversion: %s ne peut pas être utilisé pour cette version CSS: %s
+
+warning.atsc : il se peut que %s ne soit pas supporté par atsc-tv
+error.onlyATSC : cette fonction est seulement pour le @media atsc-tv
+
+error.unrecognized.link: La balise link ou l'instruction de traitement\
+ xml-stylesheet ne sont pas reconnues.
+
+warning.otherprofile : propriété %s n'existe pas dans ce profile mais est validée conforme à un autre profile
+warning.deprecated : cette valeur est déconseillée
+
+#used by org.w3c.css.parser.analyzer.CssParser
+error.nocomb: Le Combinateur de sélecteurs %s n'est pas admis dans ce profile ou cette version
+
+warning.float-no-width: En (x)HTML+CSS, les éléments flottants doivent avoir leur largeur déclarée. Seul les éléments ayant une largeur intrinsève (html, img, input, textarea, select, or object) ne sont pas sujets a cette règle
+parser.charsetcss1: la règle @charset ne doit pas être utilisée en CSS1
+parser.attrcss1: les sélecteurs d'attribut ne doivent pas être utilisés en CSS1
+parser.invalid_id_selector: Sélécteur d'ID invalide
+parser.import_not_allowed: @import n'est pas autorisé s'il apparaît après toute déclaration autre que @charset et @import.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/Messages.properties.it	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,369 @@
+# Italian translation, last updated in sync with Messages.properties.en,v 1.31
+
+direction: ltr
+language_name: Italiano
+more_options: Maggiori opzioni
+title_more_options: Visualizza/nascondi le modalità avanzate di verifica
+all: Tutti
+normal_report: Rapporto normale
+most_important: I più importanti
+no_warnings: Nessun avviso
+profile: Profilo
+no_special_profile: Nessun profilo specifico
+css1: CSS versione 1
+css2: CSS versione 2
+css21: CSS versione 2.1
+css3: CSS versione 3
+SVG: SVG
+svgbasic: SVG Basic
+svgtiny: SVG tiny
+mobile: Mobile
+ATSC_TV_profile: Profilo ATSC TV
+TV_profile: TV profilo
+medium: Media
+aural: aural
+braille: braille
+embossed: embossed
+handheld: handheld
+print: print
+projection: projection
+screen: screen
+tty: TTY
+tv: TV
+presentation: presentation
+
+type: Tipo
+no_special_type: Automatico
+html_doc: HTML
+css_doc: CSS
+
+check: Verifica
+W3C_CSS_validation_service: Servizio di validazione del W3C per i fogli di stile a cascata (CSS)
+check_CSS: Verifica i fogli di stile a cascata (CSS) e i documenti (X)HTML contenenti fogli di stile
+by_URI: tramite URI (indirizzo)
+by_file_upload: tramite trasferimento file
+by_direct_input: tramite immissione diretta
+validate_by_URI: Validazione tramite URI
+enter_uri: Inserisci il percorso (URI) di un documento (HTML con CSS o solamente CSS) che desideri sottoporre alla validazione
+page_address: Indirizzo della pagina da verificare
+address: Indirizzo
+submit_uri: Invia il file per la validazione
+validate_by_file_upload: Validazione tramite trasferimento file
+choose_document: Seleziona il documento che desideri verificare
+choose_local_file: Seleziona un documento locale per da trasferire e verificare
+local_CSS_file: Documento CSS locale
+submit_file: Invia il file per la verifica
+validate_by_input: Validazione tramite immissione diretta
+enter_CSS: Inserisci il testo del CSS che desideri validare
+submit_input: Invia il codice per la verifica
+note: Nota
+note_xhtml_valid: Se desideri verificare un foglio di stile CSS interno ad un documento (X)HTML, dovresti prima <a href="http://validator.w3.org/">verificare la validità del codice (X)HTML</a>
+# End of variables added along with Index page template
+
+W3C_validator_results: Risultati della validazione W3C dei Fogli di Stile a Cascata (CSS) per 
+# file_title: <!-- provided by the user -->
+CSS_validation_service: Servizio di validazione CSS
+jump_to: Passa a
+# errors_count: <!-- generated on the fly -->
+errors: Errori
+# warnings_count <!-- generated on the fly -->
+warnings: Avvisi
+validated_CSS: Foglio CSS validato
+congrats: Congratulazioni! Nessun errore trovato.
+# The sentence defined by doc_validates_before_link and doc_validates_after_link variables goes: \
+# "This document validates as CSSXX!" where XX stands for the CSS version used \
+# Since the content of the link about the CSS version is generated on the fly, \
+# it is important to define what goes before the link and what goes afterwards in 2 separate \
+# variables because the position of the link in the sentence varies in different languages
+doc_validates_before_link: Questo documento è valido rispetto alla specifica 
+doc_validates_after_link: !
+no_errors_interoperable_msg: Per rendere visibile ai tuoi lettori che hai curato lo sviluppo per creare una pagina Web \
+interoperabile, puoi pubblicare questa icona in qualsiasi pagina che rispetta la validazione. \
+Di seguito il codice XHTML che puoi utilizzare per aggiungere questa icona alla tua pagina Web:
+valid_CSS: CSS Valido!
+# <!-- close the img tag with > instead of /> if using HTML<= 4.01 -->
+no_errors_close_tags_msg: Se si utilizza XHTML, chiudere l'elemento img con /&gt;. \
+Se si utilizza HTML &lt;= 4.01, chiudere l'elemento img tag con &gt; invece di /&gt;
+no_errors_dl_local_msg: Se lo desideri, puoi scaricare una copie di questa immagine per salvarla all'interno del tuo sito Web,\
+modificando il codice XHTML sopra riportato riferendolo all'immagine locale anziché a quella residente\
+in questo server. 
+no_errors_create_link_msg: Se desideri creare un collegamento a questa pagina (per esempio, al risultato di validazione)\
+per rendere più facile una futura riverifica di questa pagina o per consentire ad altre persone\
+di verificare la conformità della tua pagina, l'URI è:
+no_errors_forHTML_only_msg: solo per documenti HTML/XML
+no_errors_bookmark_msg: Oppure puoi solamente aggiungere la pagina corrente ai tuoi collegamenti preferiti.
+note_valide_html: To work as intended, your CSS style sheet needs a correct document parse tree. This means you should use <a href="http://validator.w3.org/">valid HTML</a>.
+top: Top
+# hook_html_validator <!-- generated on the fly -->
+not-css1-style: /* BE CAREFUL ! This is not a CSS1 property ! */
+errors_sorry_msg: Errori
+# errors_list: <!-- generated on the fly -->
+# warnings_list: <!-- generated on the fly -->
+# rules_count: <!-- generated on the fly -->
+valid_CSS_info: Informazioni valide per il Foglio di stile (CSS)
+# charset: <!-- generated on the fly -->
+# rules_list: <!-- generated on the fly -->
+CSS_not_found: Non è stato individuato alcun foglio di stile
+home: Pagina iniziale
+about: Riguardo questo servizio
+doc: Documentazione
+dl: Download
+feedback: Commenti
+credits: Crediti
+home_title: Pagina iniziale del servizio di validazione CSS del W3C
+about_title: Informazioni sul servizio
+doc_title: Documentazione per il servizio di validazione W3C per i fogli di stile CSS
+dl_title: Scarica ed installa il validatore CSS
+feedback_title: Come fornire commenti al servizio
+credits_title: Crediti e ringraziamenti
+W3C_quality_msg: Attività W3C per la garanzia di qualità, fornisce strumenti gratuiti per la qualità del web e molto altro
+learn_more_msg: Maggiori informazioni sui fogli di stile a cascata (CSS)
+support: Aiuta questo strumento, diventa un
+supporter: Sostenitore del W3C
+# End of variables added along with Velocity
+
+# Defines your own error and warning message here
+content-type: text/html; charset=utf-8
+content-language: it
+output-encoding-name: utf-8
+
+# You can change the level warning like this (example) :
+# warning.redefinition.level: 5
+#  level is an integer between 0 and 9 (all others values are ignored)
+warning.redefinition: Ridefinizione di %s
+
+# used by xml parser
+warning.style-inside-comment: Non inserire regole per i fogli di sile all'interno di commenti HTML in quanto potrebbero essere rimossi dal browser.
+
+# used by org.w3c.css.properties.Css1Style
+warning.same-colors: Hai utilizzato lo stesso colore per %s e %s
+warning.no-color: Non hai definito un colore per il contenuto (oppure il colore principale è definito come trasparente) mentre hai definito un colore di sfondo. Verifica che il sovrapporsi dei colori garantisca una discreta leggibilità.
+warning.no-background-color: Non hai definito un colore di sfondo (oppure il colore di sfondo è definito come trasparente) mentre hai definito un colore per il contenuto.Verifica che il sovrapporsi dei colori garantisca una discreta leggibilità.
+#warning.color.mixed-capitalization is now obsolete
+#warning.color.mixed-capitalization: Anche se i nomi dei colori non sono sensibili all'uso di caratteri in maiuscolo e minuscolo, si raccomanda di non usare nomi con caratteri misti, in modo da renderli più leggibili: %s
+warning.no-generic-family: %s: si consiglia di fornire come ultima alternativa una tipologia generica di carattere.
+warning.with-space: Le tipologie di carattere che contengono degli spazi all'interno del nome dovrebbero essere racchiuse tra virgolette. Se si omettono le virgolette, qualsiasi spazio prima e dopo il nome viene ignorato e qualsiasi sequenza di caratteri di spaziatura all'interno del nome viene convertita in un singolo spazio. 
+warning.no-padding: si consiglia l'uso di un'area di padding in presenza di valori per background-color
+warning.same-colors2: Hai utilizzato lo stesso colore per il valore di color e per il valore di background-color in due contesti: %s e %s
+warning.relative-absolute: Utilizzi alcune unità di misura assolute ed altre di tipo relativo per %s. Questo non rende durevole il foglio di stile.
+ by org.w3c.css.properties.CssSelectors
+warning.unknown-html: %s non è un elemento HTML
+warning.html-inside: L'elemento HTML non può essere contenuto all'interno di un altro elemento
+warning.body-inside: L'elemento BODY non può essere utilizzato all'interno di un altro elemento ad eccezione dell'elemento HTML
+warning.pseudo-classes: La pseudo-classe per l'ancora %s non ha effetto se non per l'elemento 'A'
+warning.pseudo: Il pseudo-elemento o la pseudo-classe %s è sconosciuta nel profilo predefinito (%s)
+# not used by org.w3c.css.properties.CssSelectors for the moment
+warning.noinside: %s non può essere contenuto in un elemento di tipo inline
+warning.withblock: Attenzione. Gli pseudo-elementi possono essere applicati solo a degli elementi di tipo block-level.
+warning.block-level: Questa proprietà si applica ad elementi di tipo block-level.
+
+# used by org.w3c.css.parser.Frame
+warning.no-declaration: Non sono presenti dichiarazioni
+
+# used by org.w3c.css.parser.CssFouffa
+warning.unsupported-import: I fogli di stile importati non vengono validati nelle modalità di immissione diretta e di caricamento file
+
+# used by org.w3c.css.values.CssColor
+warning.out-of-range: %s è un valore non valido
+error.invalid-color: Funzione RGB non valida
+
+warning.marker: La proprietà marker-offset si applica agli elementi con 'display: marker'
+
+# used by org.w3c.css.properties.ACssStyle
+warning.relative: L'uso di unità relative garantisce maggior robustezza al foglio di stile nella proprietà %s
+
+# used by org.w3c.css.css.StyleSheetParser and org.w3c.css.css.StyleSheetXMLParser
+error.at-rule: Spiacente, at-rule %s non è implementata.
+
+# used by all properties and values
+error.operator: %s è un operatore non valido
+error.negative-value: non sono consentiti valori negativi per %s
+error.few-value: valori non sufficienti per la proprietà %s
+
+# be careful here, values comes first
+# You can't write something like this : For the color, blue is an incorrect value
+error.value: %s non è un valore per %s
+
+#used by org.w3c.css.properties3.CssToggleGroup
+error.groupname: %s non è un nome di gruppo corretto. Utilizza un identificatore valido
+
+#used by org.w3c.css.properties3.CssGroupReset
+error.nogroup: %s non è stato specificato dalla proprietà toggle-group
+
+#used by org.w3c.css.properties3.CssGlyphOrVert
+error.anglevalue: Il valore deve essere fra -360 e 360 ed essere dividibile per 90
+
+#used by org.w3c.css.properties3.CssTextKashidaSpace
+error.percentage: valore percentuale atteso
+
+#used by org.w3c.css.properties.CssTextAlign
+warning.xsl: il valore %s si applica solo a XSL
+
+#used by org.w3c.css.parser.analyzer.CssParser
+warning.medialist : medialist should start with 'media :' %s
+error.nocomb: Il combinatore %s fra selettori non è consentito in questo profilo o versione
+warning.nocomb: Non è consentito il combinatore %s tra i selettori per questo profilo (%s)
+
+#used by org.w3c.css.properties.CssDirection
+warning.direction: invece di utilizzare 'direction' per elementi block-level  utilizza la nuova proprietà CSS3 'writing-mode'
+
+# used by org.w3c.css.properties.CssTextDecoration
+error.same-value: %s appare due volte
+
+error.generic-family.quote: I nomi generici dei caratteri sono parole chiave, e percio non possono essere quotate.
+
+# used by org.w3c.css.properties.CssClip
+error.shape: Definizione non valida per la forma rect(<top>,<right>,<bottom>,<left>)
+error.shape-separator: Separatore non valido nella definizione di forma. Deve essere una virgola.
+
+# used by org.w3c.css.properties.CssContent
+error.attr: Definizione di attr(X) non valida
+error.function: Definizione di funzione non valida
+error.counter: Definizione di counter non valida  counter(<identifier>[,<list-style-type>]?)
+error.counters: Definizione di counters non valida  counters(<identifier>,<string>[,<list-style-type>]?)
+
+# used by org.w3c.css.font.Src
+error.format: Definizione di format non valida format(<string>[,<string>]*)
+error.local: Definizione di local non valida  local(<string>|<ident>+)
+
+# used by org.w3c.css.values.CssAngle, org.w3c.css.values.CssFrequency, org.w3c.css.values.CssTime, org.w3c.css.values.CssLength
+error.unit: %s è un'unità non corretta
+
+# used by org.w3c.css.aural.ACssAzimuth
+error.degree: La posizione deve essere descritta in gradi.
+
+# used by org.w3c.css.aural.ACssElevation
+error.elevation.range: Specifica l'elevation come un angolo, fra '-90deg' e '90deg'.
+
+# used by org.w3c.css.aural.ACssPitchRange
+error.range: Il valore è fuori dalla gamma di valori. Tale valore deve essere fra '0' e '100'.
+
+# used by org.w3c.css.properties.CssTextShadow
+error.two-lengths: Uno shadow offset viene specificato con due valori <length>  (Un blur radius può essere specificato eventualmente dopo lo shadow offset.)
+
+error.integer: This number should be an integer.
+error.comma: Manca la virgola separatrice.
+
+# used by org.w3c.css.values.CssPercentage
+error.percent: %s è una percentuale non corretta
+
+# used by org.w3c.css.values.CssString
+error.string: %s è una stringa non corretta
+
+# used by org.w3c.css.values.CssURL
+error.url: %s è un URL non corretto
+
+# used by org.w3c.css.values.CssColor
+error.rgb: %s non è un valido colore da 3 o 6 numeri esadecimali
+error.angle: %s non è un angolo valido. Il valore dovrebbe essere fra 0 e 360
+
+# used by org.w3c.css.values.CssNumber
+error.zero: only 0 can be a %s. Devi mettere un'unità dopo il tuo numero
+
+# used by org.w3c.css.parser.CssPropertyFactory
+error.noexistence-at-all: La proprietà %s non esiste
+error.noexistence-media: La proprietà %s non esiste per il media %s
+error.noexistence: La proprietà %s non esiste per %s ma esiste in %s
+warning.noexistence: La proprietà %s non esiste per %s ma esiste in %s
+warning.noexistence-media: La proprietà %s non esiste per il media %s
+warning.notforusermedium : La proprietà %s non esiste per questo usermedium
+warning.noothermedium : La proprietà per altri media non dovrebbero funzionare per usermedium
+# used by org.w3c.css.parser.AtRule*
+error.noatruleyet : Altre @rules diverse da @import non sono supportate dai CSS1 %s
+# used by org.w3c.css.parser.analyzer.CssParser
+error.notforcss1 : Il valore %s non esiste per i CSS1
+
+# used by org.w3c.css.parser.CssFouffa
+error.unrecognize: Vi sono troppi valori, oppure i valori non sono riconosciuti
+
+# used by org.w3c.css.parser.CssFouffa
+generator.unrecognize: Parse Error
+generator.dontmixhtml: Parse Error. Fogli di stile non deve includere la sintassi HTML.
+
+# used by org.w3c.css.parser.CssSelectors
+error.pseudo-element: Lo pseudo-element %s non può apparire in questo contesto %s
+error.pseudo-class: La pseudo-class .%s non può apparire qui nel contesto HTML %s
+error.pseudo: Pseudo-elemento o pseudo-classe non conosciuto %s
+error.id: ID selector #%s is invalid ! Un solo selettore ID può essere specificato in un selettore semplice: %s.
+error.space: Se è utilizato il selettore di attributo ~= , la parole nel valore %s non deve contenere spazi.
+error.todo : Ci spiacema la caratteristica %s non è ancora implementata.
+error.incompatible: %s e %s sono incompatibili
+warning.incompatible: %s e %s sono incompatibili
+error.notformobile : %s non può essere usato con un mobile profile
+error.notforatsc : %s non può essere usato con un ATSC profile
+error.notfortv : %s non può essere usato con un TV profile
+error.notversion : %s non può essere usato con questa versione di CSS : %s
+warning.notversion: %s non può essere utilizzato con questa versione di CSS : %s
+
+error.media: media non riconosciuto %s 
+error.page: pseudo nome di pagina non riconosciuto %s
+
+error.unrecognized.link: Elemento link o xml-stylesheet PI non riconosciuto.
+
+# used by StyleSheetGeneratorHTML
+generator.context: Contesto
+generator.request: Vi è stato un errore durtante l'output del tuo foglio di stile. \
+Per favore correggi la tua richiesta o manda un'email a plh@w3.org.
+generator.unrecognized: Non riconosciuto
+generator.invalid-number: Numero non valido
+generator.property: Numero non valido
+generator.line: Linea
+generator.not-found: File non trovato
+generator.doc-html: <!-- removed this confusing message olivier 2006-12-14 -->
+generator.doc:<!-- removed this confusing message olivier 2006-12-14 -->
+
+# used by the parser
+parser.semi-colon: provato a trovare un punto e virgola prima del nome della proprietà. aggiungilo
+
+parser.unknown-dimension: Sconosciuto dimensione.
+
+parser.old_class:Nei CSS1, un nome di classe potrebbe cominciare con una cifra (".55ft"), \
+a meno che non sia una dimensione (".55in"). Nei CSS2, tali classi vengono analizzate (parsed) come \
+dimensioni sconosciute (per permettere future aggiunte di nuove unità)
+
+parser.old_id:Nei CSS1, un nome id potrebbe cominciare con una cifra ("#55ft"), \
+a meno che non sia una dimensione ("#55in"). Nei CSS2, tali id vengono analizzati (parsed) come \
+dimensioni sconosciute (per permettere future aggiunte di nuove unità)
+
+parser.class_dim:Nei CSS1, un nome di classe può cominciare con una cifra (".55ft"), \
+a meno che non sia una dimensione (".55in").
+
+parser.id_dim:Nei CSS1, un nome id potrebbe cominciare con una cifra ("#55ft"), \
+a meno che non sia una dimensione ("#55in").
+
+parser.charset:La regola @charset può comparire solo all'inizio del foglio di \
+stile. Per favore controlla che non vi siano spazi prima di essa.
+
+parser.charsetspecial:Questo profilo ha una sintassi specifica per @charset: \
+@charset seguito esattamente da uno spazio, seguito dal nome della codifica \
+in doppi apici, seguito immediatamente da un punto e virgola.
+
+warning.charsetspecial: Questo profilo ha una sintassi molto
+particolare per @charset: @charset seguito da esattamente un singolo spazio,
+seguito dal nome della codifica fra doppie virgolette, seguito immediatamente
+da un punto e virgola.
+
+warning.old_id:Nei CSS1, un nome id può cominciare con una cifra ("#55ft"), \
+a meno che non sia una dimensione ("#55in"). Nei CSS2, tali id vengono analizzati (parsed) come \
+dimensioni sconosciute (per permettere future aggiunte di nuove unità)
+
+warning.old_class:Nei CSS1, un nome di classe può cominciare con una cifra ("#55ft"), \
+a meno che non sia una dimensione ("#55in"). Nei CSS2, tali id vengono analizzati (parsed) come \
+dimensioni sconosciute (per permettere future aggiunte di nuove unità)
+
+# used by the servlet
+servlet.invalid-request: Hai inviato una richiesta non valida.
+servlet.process: Non è possibile processare l'oggetto
+
+warning.atsc : %s potrebbe non essere supportato dal medium atsc-tv
+error.onlyATSC : %s questa funzione è valida solo per il medium atsc-tv
+
+warning.otherprofile : la proprietà %s non esiste per questo profilo, ma viene validata in conformità ad un altro profilo 
+warning.deprecated : questo valore è deprecato
+error.unknown: Errore sconosciuto
+
+warning.float-no-width: Nel (x)HTML+CSS, gli elementi con proprietà float hanno bisogno che la loro larghezza venga dichiarata. Soltanto gli elementi con una larghezza intrinseca (html, img, input, textarea, select, o object) non presentano questo problema
+parser.charsetcss1: La direttiva @charset non può essere usata nell'ambito del CSS1
+parser.attrcss1: I selettori di attributo non sono validi nei css1
+parser.invalid_id_selector: Selettore ID non valido.
+parser.import_not_allowed: @import non è permesso dopo nessun altra dichiarazione valida che non sia @charset e @import.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/Messages.properties.ja	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,360 @@
+# Japanese translation, last updated in sync with Messages.properties.en,v 1.31
+
+direction: ltr
+language_name: 日本語
+more_options: オプション
+title_more_options: その他の検査オプションを表示する/隠す
+all: 全て出力
+normal_report: 一般的なものを出力
+most_important: 重要なものだけ出力
+no_warnings: 出力しない
+profile: Profile
+no_special_profile: 特にプロファイルを指定しない
+css1: CSS レベル 1
+css2: CSS レベル 2
+css21: CSS レベル 2.1
+css3: CSS レベル 3
+SVG: SVG
+svgbasic: SVG Basic
+svgtiny: SVG tiny
+mobile: Mobile
+ATSC_TV_profile: ATSC TV profile
+TV_profile: TV profile
+medium: Medium
+aural: Aural
+braille: Braille
+embossed: Embossed
+handheld: Handheld
+print: Print
+projection: Projection
+screen: Screen
+tty: TTY
+tv: TV
+presentation: Presentation
+
+type: 種類
+no_special_type: 自動
+html_doc: HTML
+css_doc: CSS
+
+check: 検証する
+W3C_CSS_validation_service: W3C CSS 検証サービス
+check_CSS: カスケーディングスタイルシート(CSS)を検証
+by_URI: URLを指定
+by_file_upload: アップロード
+by_direct_input: 直接入力
+validate_by_URI: URLで指定して検証
+enter_uri: 検証したい文書(CSSと組み合わせたHTML文書、もしくはCSS単体の文書)のURIを入力してください
+page_address: 検証対象のアドレスを入力してください
+address: アドレス
+submit_uri: 検証するためのURIを送信します
+validate_by_file_upload: ソースファイルをアップロードして検証
+choose_document: 検証したいCSS文書のソースファイル名を入力してください
+choose_local_file: アップロード・検証するローカルのファイルを選択します
+local_CSS_file: CSSファイル
+submit_file: 検証するファイルを送信します
+validate_by_input: テキストエリアに直接入力して検証
+enter_CSS: 検証したいCSSをテキストエリアに入力してください (CSSソースのみ)
+submit_input: 入力したテキストを検証するために送信します
+note: メモ
+note_xhtml_valid: CSSスタイルシートを意図した通りに機能させるには、正しい文書解析木が必要です。つまり、<a href="http://validator.w3.org/">正当なHTML</a>を用いるべきです。
+# End of variables added along with Index page template
+
+W3C_validator_results: CSS 検証サービス検証結果
+# file_title: <!-- provided by the user -->
+CSS_validation_service: CSS 検証サービス
+jump_to: 表示
+# errors_count: <!-- generated on the fly -->
+errors: エラー 
+# warnings_count <!-- generated on the fly -->
+warnings: 警告 
+validated_CSS: 入力されたCSS
+congrats: おめでとうございます! エラーはありません。
+# The sentence defined by doc_validates_before_link and doc_validates_after_link variables goes: \
+# "This document validates as CSSXX!" where XX stands for the CSS version used \
+# Since the content of the link about the CSS version is generated on the fly, \
+# it is important to define what goes before the link and what goes afterwards in 2 separate \
+# variables because the position of the link in the sentence varies in different languages
+doc_validates_before_link: おめでとうございます! この文書は正当な
+doc_validates_after_link: として検証できました!
+no_errors_interoperable_msg: あなたがこのWebページを作るにあたって、\
+高度な相互運用性<span lang="en" xml:lang="en">(Interoperability)</span>\
+に対する配慮を行った事を読者に示すため、このアイコンを張る事をお勧めします。\
+あなたのWebページにこのアイコンを張るためには、次のHTMLの断片を利用すると良いでしょう。
+valid_CSS: 正当なCSSです!
+# <!-- close the img tag with > instead of /> if using HTML<= 4.01 -->
+no_errors_close_tags_msg: HTML 4.01 以前を使用する場合は img タグを /&gt; ではなく &gt; で閉じてください。
+no_errors_dl_local_msg: この画像はローカルコピーを使っても構いません。\
+つまり、あなたのWebサーバにこの画像のコピーをダウンロードしてディレクトリに保存し、\
+上記のHTMLの断片について、ダウンロードしたものを参照するように変更して使う事もできます。
+no_errors_create_link_msg: この検証結果のページに対するリンクを作りたい場合、\
+以下のURIを利用して下さい。\
+リンクを組み込んでおく事で、後からもう一度このページの検証を行ったり、\
+他の人がこのページを検証する事が容易になります。
+no_errors_forHTML_only_msg: HTML/XML 文書のみに有効
+no_errors_bookmark_msg: もちろん、このページをブックマークやホットリストに追加したのでもよいでしょう。
+note_valide_html: あなたの CSSスタイルシートを意図した通りに機能させるには、正しい文書解析木が必要です。つまり、<a href="http://validator.w3.org/">正しいHTML</a>を用いるべきです。
+top: Top
+# hook_html_validator <!-- generated on the fly -->
+not-css1-style: /* 注意して下さい ! このプロパティはCSS1用ではありません ! */
+errors_sorry_msg: エラー: 以下のエラーが見つかりました。
+# errors_list: <!-- generated on the fly -->
+# warnings_list: <!-- generated on the fly -->
+# rules_count: <!-- generated on the fly -->
+valid_CSS_info: 検証したスタイルシートを以下に示します
+# charset: <!-- generated on the fly -->
+# rules_list: <!-- generated on the fly -->
+CSS_not_found: スタイルシートが見つかりませんでした。
+home: ホーム
+about: このサービスについて
+doc: ドキュメント
+dl: ダウンロード
+feedback: お問い合わせ
+credits: 謝辞
+home_title: W3C CSS 検証サービスのホーム
+about_title: CSS 検証サービスについて
+doc_title: CSS 検証サービスドキュメント: 目次
+dl_title: CSS 検証サービスのダウンロードとインストール
+feedback_title: フィードバック
+credits_title: 謝辞
+W3C_quality_msg: W3CのQuality Assurance Activityによって、フリーなウェブ品質ツールなどが提供されています。
+learn_more_msg: カスケーディングスタイルシートについてもっと知る
+support: 参加してこのツールを支援しましょう:
+supporter: W3C サポーター
+# End of variables added along with Velocity
+
+# Defines your own error and warning message here
+content-type: text/html; charset=utf-8
+content-language: ja
+output-encoding-name: utf-8
+
+# You can change the level warning like this (example) :
+# warning.redefinition.level: 5
+#  level is an integer between 0 and 9 (all others values are ignored)
+warning.redefinition: %s が再定義されています
+
+# used by xml parser
+warning.style-inside-comment: ユーザエージェントによって削除される可能性があるので、スタイルルールはHTMLコメントの中に記述しないでください
+
+# used by org.w3c.css.properties.Css1Style
+warning.same-colors: %s と %s は同じ色です
+warning.no-color: 指定された背景色(background-color)に対応する前面色(color)が指定されていません
+warning.no-background-color: 指定された前面色(color)に対応する背景色(background-color)が指定されていません
+#warning.color.mixed-capitalization is now obsolete
+#warning.color.mixed-capitalization: 色の名前に大文字/小文字の区別はありませんが、\
+名前をより区別しやすくするため、大文字を混ぜて使う事が推奨されます: %s
+warning.no-generic-family: %s: 一般フォントファミリー名\
+(generic font family)を最後の選択肢として付け加えておく事を推奨します
+warning.with-space: 空白文字を含むフォントファミリー名は引用符で囲む必要が\
+あります。引用符を省略した場合、名前の前後の空白文字は無視され、また\
+名前の途中に含まれる連続した空白文字は全て一つの空白文字に変換されます
+warning.no-padding: 背景色(background-color)を持った padding 領域を持たせる事を推奨します
+warning.same-colors2: 二つのコンテキスト %s と %s で、同じ色が前面色\
+(color) と背景色 (background-color) に使われています
+warning.relative-absolute: %s における長さ指定について、\
+絶対値指定と相対値指定がともに用いられています。\
+これはあまり堅牢(robust)なスタイルシートではありません
+
+# used by org.w3c.css.properties.CssSelectors
+warning.unknown-html: %s はHTMLの要素ではありません
+warning.html-inside: HTML 要素は他の要素中に含むことはできません
+warning.body-inside: BODY 要素は HTML 要素以外の他の要素中に含む事はできません
+warning.pseudo-classes: アンカー(Anchor) 疑似クラス %s は、'A' 要素以外の他の要素には効果がありません
+
+# not used by org.w3c.css.properties.CssSelectors for the moment
+warning.noinside: %s はインライン要素中に含むことはできません
+warning.withblock: 注意して下さい - 疑似要素はブロックレベル要素にのみ付ける事ができます
+warning.block-level: このプロパティはブロックレベル要素に適用されます
+
+# used by org.w3c.css.parser.Frame
+warning.no-declaration: 宣言(declarations)がルール中に存在しません
+
+# used by org.w3c.css.parser.CssFouffa
+warning.unsupported-import: @importでインポートされるスタイルシートは直接入力やファイルアップロードでは検証されません。
+
+# used by org.w3c.css.values.CssColor
+warning.out-of-range: %s は指定可能範囲を越えています
+error.invalid-color: 正しい RGB 関数の指定ではありません
+
+warning.marker: marker-offset プロパティは、'display: marker' 要素にのみ適用されます
+
+# used by org.w3c.css.properties.ACssStyle
+warning.relative: %s プロパティに相対指定の単位を使うことで、より強固なスタイルシートを作る事ができます
+
+# used by org.w3c.css.css.StyleSheetParser and org.w3c.css.css.StyleSheetXMLParser
+error.at-rule: 申し訳ありませんが、at-rule %s はまだ実装されていません。
+
+# used by all properties and values
+error.operator: %s は正しい演算子 (operator) ではありません
+error.negative-value: %s に負の値は使えません
+error.few-value: %s プロパティの値が少なすぎます
+
+# be careful here, values comes first
+# You can't write something like this : For the color, blue is an incorrect value
+error.value: %s は %s で利用できる値ではありません
+
+# used by org.w3c.css.properties.CssTextDecoration
+error.same-value: %s は二回出現しました
+
+error.generic-family.quote: 一般フォントファミリー名(Generic font family)\
+はキーワードなので、引用符で囲む事はできません
+
+# used by org.w3c.css.properties.CssClip
+error.shape: 間違った形状指定が rect(<top>,<right>,<bottom>,<left>) になされています
+error.shape-separator: 形状指定の区切り文字が正しくありません。\
+これはカンマ(,)である必要があります
+
+# used by org.w3c.css.properties.CssContent
+error.attr: 属性の定義が間違っています attr(X)
+error.counter: カウンター定義が間違っています counter(<identifier>[,<list-style-type>]?)
+error.counters: カウンター定義が間違っています counters(<identifier>,<string>[,<list-style-type>]?)
+
+# used by org.w3c.css.font.Src
+error.format: フォーマット定義が間違っています format(<string>[,<string>]*)
+error.local: フォーマット定義が間違っています local(<string>|<ident>+)
+
+# used by org.w3c.css.values.CssAngle, org.w3c.css.values.CssFrequency, org.w3c.css.values.CssTime, org.w3c.css.values.CssLength
+error.unit: %s は正しい単位ではありません
+
+# used by org.w3c.css.aural.ACssAzimuth
+error.degree: position は degrees で指定する必要があります。
+
+# used by org.w3c.css.aural.ACssElevation
+error.elevation.range: elevation は '-90deg' から '90deg' の範囲の角度で指定してください
+
+# used by org.w3c.css.aural.ACssPitchRange
+error.range: 値が指定可能範囲を越えています。この値は '0' から '100' の間で指定してください
+
+# used by org.w3c.css.properties.CssTextShadow
+error.two-lengths: shadow offset は二つの <legnth> 値で指定する必要があります。\
+(blur radius は、 shadow offset の後にオプションとして指定できます。)
+
+error.integer: この数字は整数である必要があります
+error.comma: カンマ(,)区切り文字がありません
+
+# used by org.w3c.css.values.CssPercentage
+error.percent: %s は正しいパーセント指定ではありません
+
+# used by org.w3c.css.values.CssString
+error.string: %s は正しい文字列ではありません
+
+# used by org.w3c.css.values.CssURL
+error.url: %s は正しいURLではありません
+
+# used by org.w3c.css.values.CssColor
+error.rgb: %s は、3または6つの16進数の数字による正しい色の指定ではありません
+
+# used by org.w3c.css.values.CssNumber
+error.zero: %s には 0 だけが使えます。数字の後には単位を入れる必要があります
+
+# used by org.w3c.css.parser.CssPropertyFactory 
+error.noexistence-at-all: プロパティ %s は存在しません
+error.noexistence-media: プロパティ %s はメディア %s には存在しません
+error.noexistence: プロパティ %s は %s に存在しませんが、%s に存在します
+warning.noexistence: プロパティ %s は %s に存在しませんが、%s に存在します
+warning.noexistence-media: プロパティ %s はメディア %s には存在しません
+
+# used by org.w3c.css.parser.CssFouffa
+error.unrecognize: 値が多すぎるか、もしくは値が解析できません
+
+# used by org.w3c.css.parser.CssFouffa
+generator.unrecognize: 文法解析エラーが発生しました
+generator.dontmixhtml: 文法解析エラーが発生しました. スタイルシートのHTML構文が含まれてはならない。
+
+# used by org.w3c.css.parser.CssSelectors
+error.pseudo-element: 疑似要素 %s はコンテキスト %s 中のこの場所では使えません
+error.pseudo-class: 疑似クラス .%s は HTMLコンテキスト %s 中のこの場所では使えません
+error.pseudo: %sは未知の疑似要素または疑似クラスです
+warning.pseudo: 未知の疑似要素または疑似クラス %s がデフォルトプロファイル (%s) にあります
+error.id: ID セレクタ #%s は間違っています!\
+単純セレクタ (simple selector) %s には一つのIDセレクタしか指定できません
+error.space: 属性セレクタ (attribute selector) ~= が用いられている場合、\
+値 %s の中の語は空白文字を含む事はできません
+error.todo : 申し訳ありませんが、feature %s はまだ実装されていません
+error.incompatible: %s と %s は互換性がありません
+warning.incompatible: %s と %s は互換性がありません
+
+error.media: 認識できないメディア %s が指定されています
+error.page: 認識できない疑似名前付きページ(psuedo named page) %s が指定されています
+
+
+# used by StyleSheetGeneratorHTML
+generator.context: コンテキスト
+generator.request: 指定されてスタイルシートの出力中にエラーが発生しました。\
+リクエストを修正するか、plh@w3.org にメールを送ってください。
+generator.unrecognized: 認識できません
+generator.invalid-number: 正しい数字ではありません
+generator.property: 次のプロパティが正しくありません
+generator.line: 行番号
+generator.not-found: ファイルが見つかりません
+generator.doc-html: <!-- removed this confusing message olivier 2006-12-14 -->
+
+generator.doc:<!-- removed this confusing message olivier 2006-12-14 -->
+
+# used by the parser
+parser.semi-colon: プロパティ名の前にセミコロン(;)を追加してみて下さい
+
+parser.unknown-dimension: 未知の次元。
+
+parser.old_class: CSS1では、 クラス名はdimension (".55in" など) でない限り、数字から始める事ができました (".55ft" など)。\
+CSS2では、このようなクラスは未知の dimension として解析されます。(これは、将来新しい単位が追加される可能性を保つためです)
+
+parser.old_id: CSS1では、id名は dimension ("#55in"など) でない限り、数字から始めることができました ("#55ft" など)。 \
+CSS2では、このようなidは不明な dimension として解析されます。これは、将来新しい単位を追加できるようにするためです。
+
+parser.class_dim:CSS1では、 クラス名はdimension (".55in") でない限り、数字から始める事ができます (".55ft")
+
+parser.id_dim: CSS1では、id名は dimension ("#55in"など) でない限り、数字から始めることができます ("#55ft" など)。
+
+parser.charset:@charset 規則が指定できるのは、スタイルシートの最初の部分のみです。直前にスペースが入っていたりしないか確認してみてください。
+
+parser.charsetspecial:このプロファイルには、固有の @charset 構文があります。@charset のあとには1つのスペース、引用符つきのエンコーディングの名前、セミコロンを並べます。
+warning.charsetspecial: このプロファイルには、固有の @charset 構文があります。@charset のあとには1つのスペース、引用符つきのエンコーディングの名前、セミコロンを並べます。
+warning.old_id: CSS1では、id名は dimension ("#55in"など) でない限り、数字から始めることができました ("#55ft" など)。 \
+CSS2では、このようなidは不明な dimension として解析されます。これは、将来新しい単位を追加できるようにするためです。
+
+warning.old_class: CSS1では、 クラス名はdimension (".55in" など) でない限り、数字から始める事ができました (".55ft" など)。\
+CSS2では、このようなクラスは未知の dimension として解析されます。(これは、将来新しい単位が追加される可能性を保つためです)
+
+# used by the servlet
+servlet.invalid-request: 正しいリクエストではありません
+servlet.process: 指定されたオブジェクトは処理できません
+
+error.unrecognized.link: 認識できないリンク要素またはxml-stylesheet PIです。
+
+#used by org.w3c.css.parser.analyzer.CssParser
+error.nocomb: セレクタ間の結合子 %s はこのプロファイルまたはバージョンでは利用できません
+warning.nocomb: セレクタ間の結合子 %s はこのプロファイルまたはバージョンでは利用できません
+error.angle: %s は正しい角度ではありません。値は 0 から 360 の間である必要があります
+error.anglevalue: 値は -360 から 360 の間で、かつ 90 で割り切れる必要があります
+error.function: 正しくない関数定義です
+error.groupname: %s は正しくないgroupnameです。正しい identifier を使ってください
+error.noatruleyet: @import 以外の @rules は CSS1 %s ではサポートされていません
+error.nogroup: %s は toggle-group プロパティによって指定されていません
+error.notforatsc: %s は ATSC プロファイルでは利用できません
+error.notforcss1: 値 %s は CSS1 には存在しません
+error.notformobile: %s は mobile プロファイルでは利用できません
+error.notfortv: %s は TV プロファイルでは利用できません
+error.notversion: %s は CSS : %s バージョンでは利用できません
+error.onlyATSC: %s この関数は atsc-tv メディアでしか利用できません
+warning.atsc: %s は atsc-tv メディアでサポートされていない可能性があります
+error.percentage: パーセンテージ値が必要です
+error.unknown: 不明なエラー
+warning.deprecated: この値は廃止されました
+warning.direction: ブロックレベル要素には'direction'ではなく新しいCSS3の'writing-mode'プロパティを用いてください
+warning.medialist:  メディアリストは 'media :' %s で始まるべきです
+warning.noothermedium: 他のメディア用のプロパティは usermedium では動作しない可能性があります
+warning.notforusermedium: プロパティ %s はこの usermedium には存在しません
+warning.notversion: %s はこの CSS : %s バージョンでは利用できません
+warning.otherprofile: プロパティ %s はこのプロファイルには存在しませんが、他のプロファイルでは正当です
+warning.xsl: 値 %s は XSL にのみ適用可能です
+
+parser.unknown-dimension: 不明なディメンション
+generator.dontmixhtml: パースエラーが発生しました。スタイルシートにHTMLシンタックスが含まれています。
+
+warning.float-no-width: (X)HTML+CSSでは浮動要素には幅属性の宣言が必要です。固有の幅属性を持つ要素(すなわちhtml, img, input, textarea, select, またはobject)は対象外です。
+
+parser.charsetcss1: @charset は CSS1 には存在しません。
+parser.attrcss1: 属性選択子 は CSS1 には存在しません。
+parser.invalid_id_selector: 不正な ID 選択子です。
+parser.import_not_allowed: @charset と @import 以外の有効な文の後に @import は指定できません。
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/Messages.properties.ko	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,348 @@
+# Korean translation, last updated at 2008-11-11 based on Messages.properties.en,v 1.31
+
+direction: ltr
+language_name: 한국어
+more_options: 추가 설정
+title_more_options: 추가 설정 표시/숨김
+all: 전부
+normal_report: 일반 보고서
+most_important: 매우 중요
+no_warnings: 경고 없음
+profile: 프로파일
+no_special_profile: 프로파일 없음
+css1: CSS 레벨 1
+css2: CSS 레벨 2
+css21: CSS 레벨 2.1
+css3: CSS 레벨 3
+SVG: SVG
+svgbasic: SVG Basic
+svgtiny: SVG Tiny
+SVG_basic: <!-- SVG Basic , deprecated as per master language file -->
+SVG_tiny: <!-- SVG Tiny , deprecated as per master language file -->
+mobile: 모바일
+ATSC_TV_profile: ATSC TV 프로필
+TV_profile: TV 프로필
+medium: 중간
+aural: 음성
+braille: 점자
+embossed: 엠보싱
+handheld: 휴대용
+print: 인쇄
+projection: 프로젝션
+screen: 화면
+tty: TTY
+tv: TV
+presentation: 프레젠테이션
+type: 형식
+no_special_type: 자동
+html_doc: HTML
+css_doc: CSS
+check: 검사
+W3C_CSS_validation_service: W3C CSS 검사 서비스
+check_CSS: 캐스케이딩 스타일시트 (CSS) 와 스타일시트를 포함한 (X)HTML 문법검사
+by_URI: URI
+by_file_upload: 파일 업로드
+by_direct_input: 직접 입력
+validate_by_URI: URI 검사
+enter_uri: 검사하고자 하는 (HTML과 CSS 또는 CSS만으로 이루어진) 문서의 URI를 입력하여 주십시오
+page_address: 검사할 웹 페이지의 주소
+address: 주소
+submit_uri: 검사를 위한 주소 저장
+validate_by_file_upload: 파일 업로드를 통한 검사
+choose_document: 검사를 할 문서를 선택하여 주십시오
+choose_local_file: 컴퓨터에 저장된 CSS 문서를 선택하여 주십시오
+local_CSS_file: 컴퓨터에 저장된 CSS 문서
+submit_file: 검사할 파일 업로드
+validate_by_input: 직접 입력을 통한 검사
+enter_CSS: 검사할 CSS를 입력하여 주십시오
+submit_input: 검사할 내용을 저장
+note: 주의
+note_xhtml_valid: (X)HTML 문서에 포함된 CSS 스타일시트를 검사하기 이전에, <a href="http://validator.w3.org/">(X)HTML 문법 검사</a>를 하는 것을 권장합니다.
+# End of variables added along with Index page template
+
+W3C_validator_results: W3C CSS 검사 결과
+# file_title: <!-- provided by the user -->
+CSS_validation_service: CSS 검사 서비스
+jump_to: 이동
+# errors_count: <!-- generated on the fly -->
+errors: 오류
+# warnings_count <!-- generated on the fly -->
+warnings: 경고
+validated_CSS: 검사 된 CSS
+congrats: 축하합니다! 발견된 오류가 없습니다.
+# The sentence defined by doc_validates_before_link and doc_validates_after_link variables goes: \
+# "This document validates as CSSXX!" where XX stands for the CSS version used \
+# Since the content of the link about the CSS version is generated on the fly, \
+# it is important to define what goes before the link and what goes afterwards in 2 separate \
+# variables because the position of the link in the sentence varies in different languages
+doc_validates_before_link: 이 문서는 다음 형식으로 검사되었습니다:
+doc_validates_after_link: !
+no_errors_interoperable_msg: 방문자들에게 상호 호환성이 있는 웹 페이지를 고려한 웹 페이지를 작성한 것을 알리기 위해, 검증된 웹 페이지에서 이 아이콘을 표시할 수 있습니다. 아래 XHTML 코드를 이용하여 아이콘을 웹 페이지에 추가할 수 있습니다:
+valid_CSS: 올바른 CSS입니다!
+# <!-- close the img tag with > instead of /> if using HTML<= 4.01 -->
+no_errors_close_tags_msg: HTML 4.01 이하에서는 /&gt; 대신에 &gt;로 img태그를 닫아야 합니다
+no_errors_dl_local_msg: 원하신다면, 이 이미지의 사본을 웹 사이트의 디렉토리에 저장하고, 위에 있는 XHTML 코드에서 사본으로 경로를 변경하는 것도 가능합니다.
+no_errors_create_link_msg: 향후 이 페이지를 쉽게 검사하거나 다른 사용자들이 검사를 해볼 수 있게 이 검사 결과에 대한 링크를 만들고 싶다면, 링크 URI는 다음과 같습니다:
+no_errors_forHTML_only_msg: HTML/XML 문서 전용
+no_errors_bookmark_msg: 또는, 이 페이지를 즐겨찾기 (또는 책갈피) 에 추가하여도 됩니다.
+note_valide_html: 정상적인 작동을 위해서, 스타일시트는 올바른 문서 구조를 가지고 있어야 합니다. 즉, <a href="http://validator.w3.org/">올바른 HTML</a>을 사용하여야 합니다.
+top: 최상위
+# hook_html_validator <!-- generated on the fly -->
+not-css1-style: /* 주의하세요 ! 이것은 CSS1 속성이 아닙니다 !  */
+errors_sorry_msg: 검사 결과, 다음과 같은 오류들이 발견되었습니다
+# errors_list: <!-- generated on the fly -->
+# warnings_list: <!-- generated on the fly -->
+# rules_count: <!-- generated on the fly -->
+valid_CSS_info: 올바른 CSS에 대한 정보
+# charset: <!-- generated on the fly -->
+# rules_list: <!-- generated on the fly -->
+CSS_not_found: 스타일시트 발견되지 않음
+home: 홈
+about: 정보
+doc: 설명서
+dl: 다운로드
+feedback: 의견/건의
+credits: 도움 주신 분
+home_title: W3C CSS 검사 서비스 홈페이지
+about_title: 이 서비스에 대하여
+doc_title: W3C CSS 검사 서비스에 대한 설명서
+dl_title: CSS 검사 도구 다운로드 받기
+feedback_title: 이 서비스에 대한 의견 또는 건의를 하는 방법
+credits_title: 제작자들과 도움 주신 분들
+W3C_quality_msg: W3C의 품질 검증 활동, 무료 웹 품질 검증 도구 제공
+learn_more_msg: CSS(캐스케이딩 스타일 시트)에 대하여 자세히 알아보기
+support: 이 서비스에 대한 지원으로
+supporter: W3C 서포터가 되기
+# End of variables added along with Velocity
+
+# Defines your own error and warning message here
+content-type: text/html; charset=utf-8
+content-language: en
+output-encoding-name: utf-8
+
+# You can change the level warning like this (example) :
+# warning.redefinition.level: 5
+#  level is an integer between 0 and 9 (all others values are ignored)
+warning.redefinition: %s에 대한 재정의
+
+# used by xml parser 
+warning.style-inside-comment: HTML 문서의 주석에 스타일 규칙을 넣으면 유저 에이전트(브라우저 등)에 의하여 누락될 수 있으므로 권장되지 않습니다
+
+# used by org.w3c.css.properties.Css1Style
+warning.same-colors: %s와 %s는 같은 색상
+warning.no-color: 색상을 설정하지 않았거나 투명으로 설정하였음에도 불구하고 배경색을 지정하였습니다. 색상 스타일의 상호 연결로 가독성이 보장되는지 확인하시기 바랍니다.
+warning.no-background-color: 배경색이 지정되지 않았거나 배경색이 투명으로 설정되었음에도 색상을 선정하였습니다. 색상 스타일의 상호 연결로 가독성이 보장되는지 확인하시기 바랍니다.
+#warning.color.mixed-capitalization is now obsolete
+#warning.color.mixed-capitalization: Although color names are case-insensitive, it is recommended to use the mixed capitalization, to make the names more legible: %s
+warning.no-generic-family: %s: 마지막 제공된 서체 후보 이외에도 일반적이 대안을 제공할 것을 권장합니다
+warning.with-space: 공백을 포함한 서체명은 따옴표로 구분을 지어야 합니다. 따옴표를 사용하지 않으면, 문자열 앞과 뒤에 오는 공백은 무시되며, 단어 사이의 공백들은 한개의 공백으로 변환됩니다.
+warning.no-padding: 배경색이 지정되었을 경우 내부 여백(padding)을 사용할 것을 권장합니다.
+warning.same-colors2: 전경색 %s 와 배경색 %s이 같습니
+warning.relative-absolute: %s 에서 크기에 대한 절대값과 상대값이 발견되었습니다. 혼용하는 것은 좋은 스타일시트가 못됩니다.
+# used by org.w3c.css.properties.CssSelectors
+warning.unknown-html: %s는 HTML 요소가 아닙니다
+warning.html-inside: HTML 요소는 다른 요사의 하위에 있어서는 안됩니다
+warning.body-inside: BODY 요소는 HTML 요소 이외의 요소에 종속될 수 없습니다
+warning.pseudo-classes: 비정규 앵커 클래스 %s 는 A 요소 이외에는 효가가 없습니다
+
+# not used by org.w3c.css.properties.CssSelectors for the moment
+warning.noinside: %s 는 인라인 요소에 존재할 수 없습니다
+warning.withblock: 주의 바랍니다. 비정규 요소는 블럭 단위 요소에서만 사용할 수 있습니다
+warning.block-level: 이 속성은 블럭 단위에 요소에서만 사용 가능합니다
+
+# used by org.w3c.css.parser.Frame
+warning.no-declaration: 규칙에 대한 정의가 없습니다
+
+# used by org.w3c.css.parser.CssFouffa
+warning.unsupported-import: 불러온 스타일시트가 직접 입력과 파일 업로드 모드에 대한 검사가 이루어지지 않았습니다
+
+# used by org.w3c.css.values.CssColor
+warning.out-of-range: %s 는 범주를 벗어난 값입니다
+error.invalid-color: 올바르지 않은 RGB 정의
+
+warning.marker: marker-offset속성은 'display: marker' 속성에만 적용됩니다
+
+# used by org.w3c.css.properties.ACssStyle
+warning.relative: 속성 %s 에서는 상대값을 사용하는 것으로 좋은 스타일시트를 만들 수 있습니다
+
+# used by org.w3c.css.css.StyleSheetParser and org.w3c.css.css.StyleSheetXMLParser
+error.at-rule: 죄송합니다. %s에 대한 at-rule은 구현되지 않았습니다
+
+# used by all properties and values
+error.operator: %s는 올바른 연산자가 아닙니다
+error.negative-value: %s에서는 음수가 허용되지 않습니다
+error.few-value: 속성 %s에 대한 매개변수가 부족합니다
+
+# be careful here, values comes first
+# You can't write something like this : For the color, blue is an incorrect value
+error.value: %s 는 올바른 %s 값이 아닙니다
+
+#used by org.w3c.css.properties3.CssToggleGroup
+error.groupname: %s는 올바른 그룹 이름이 아닙니다. 올바른 이름을 사용하기 바랍니다
+
+#used by org.w3c.css.properties3.CssGroupReset
+error.nogroup: %s는 toggle-group속성에 대해 설정되지 않았습니다
+
+#used by org.w3c.css.properties3.CssGlyphOrVert
+error.anglevalue: 값이 -360에서 360 사이여야 하며, 90으로 나누어질 수 있어야 합니다
+
+#used by org.w3c.css.properties3.CssTextKashidaSpace
+error.percentage: 퍼센트 값이 필요합니다
+
+#used by org.w3c.css.properties.CssTextAlign
+warning.xsl: 값 %s는 XSL에서만 사용됩니다
+
+#used by org.w3c.css.parser.analyzer.CssParser
+warning.medialist: 매체 목록은 'media :' %s로 시작되어야 합니다
+error.nocomb: 이 프로파일 또는 버전에서 선택자에 대한 혼합자 %s는 허용되지 않습니다
+
+#used by org.w3c.css.properties.CssDirection
+warning.direction: 블럭 단위 요소에서는 'direction' 보다 CSS3의 새로운 'writing-mode' 속성을 사용하기 바랍니다
+
+# used by org.w3c.css.properties.CssTextDecoration
+error.same-value: %s가 중복되어 정의 되었습니다
+
+error.generic-family.quote: 일반적인 패밀리 명칭은 키워드이므로 따옴표로 묶어서는 안됩니다
+
+# used by org.w3c.css.properties.CssClip
+error.shape: rect(<top>,<right>,<bottom>,<left>)에 대한 도형 정의가 올바르지 않습니다
+error.shape-separator: 도형 정의에 구분자가 올바르지 않습니다. 구분자는 쉼표를 사용하여야 합니다
+
+# used by org.w3c.css.properties.CssContent
+error.attr: 올바르지 않은 attr 정의 attr(X)
+error.function: 올바르지 않은 함수 정의
+error.counter: 올바르지 않은 counter 정의 counter(<identifier>[,<list-style-type>]?)
+error.counters: 올바르지 않은 counters 정의 counters(<identifier>,<string>[,<list-style-type>]?)
+
+# used by org.w3c.css.font.Src
+error.format: 올바르지 않은 형식 정의 format(<string>[,<string>]*)
+error.local: 올바르지 않은 형식 정의 local(<string>|<ident>+)
+
+# used by org.w3c.css.values.CssAngle, org.w3c.css.values.CssFrequency, org.w3c.css.values.CssTime, org.w3c.css.values.CssLength
+error.unit: %s 는 올바른 단위가 아닙니다
+
+# used by org.w3c.css.aural.ACssAzimuth
+error.degree: 위치는 각도로 표현되어야 합니다
+
+# used by org.w3c.css.aural.ACssElevation
+error.elevation.range: 고도를 각도로 표현하며, '-90deg' 와 '90deg' 사이의 값을 사용합니다.
+
+# used by org.w3c.css.aural.ACssPitchRange
+error.range: 값이 범위를 넘어갔습니다. 유효한 값은 '0'과 '100' 사이의 값만 허용됩니다.
+
+# used by org.w3c.css.properties.CssTextShadow
+error.two-lengths: 그림자 오프셋은 두 개의 길이 값으로 설정됩니다 (필요할 경우, 흐림 효과 반경에 대한 값은 그림자 오프셋 값 이후에 표현됩니다)
+
+error.integer: 이 값은 정수여야 합니다.
+error.comma: 쉼표 구분자가 없습니다.
+
+# used by org.w3c.css.values.CssPercentage
+error.percent: %s는 올바른 퍼센트 수치가 아닙니다
+
+# used by org.w3c.css.values.CssString
+error.string: %s는 올바른 문자열이 아닙니다
+
+# used by org.w3c.css.values.CssURL
+error.url: %s는 올바른 URL이 아닙니다
+
+# used by org.w3c.css.values.CssColor
+error.rgb: %s는 올바른 3자리 또는 6자리의 16진수로 표현된 색상이 아닙니다
+error.angle: %s는 올바른 각도가 아닙니다. 0과 360사이의 값만 허용됩니다
+
+# used by org.w3c.css.values.CssNumber
+error.zero: 오직 0만이 %s일 수 있습니다. 값 뒤에는 반드시 단위가 표현되어야 합니다
+
+# used by org.w3c.css.parser.CssPropertyFactory
+error.noexistence-at-all: 속성 %s는 존재하지 않는 속성입니다
+error.noexistence-media: 속성 %s는 매체 %s에 존재하지 않습니다
+error.noexistence: 속성 %s는 %s에 존재하지 않지만 %s에는 존재합니다
+warning.noexistence: 속성 %s는 %s에 존재하지 않지만 %s에는 존재합니다
+warning.noexistence-media: 속성 %s는 매체 %s에 존재하지 않습니다
+warning.notforusermedium : 속성 %s는 이 usermedium에 대하여 존재하지 않습니다
+warning.noothermedium : 다른 매체를 위한 속성은 usermedium에서 동작하지 않을 수 있습니다
+# used by org.w3c.css.parser.AtRule*
+error.noatruleyet: @import를 제외한 여타 @규칙은 CSS1 %s 에서 지원되지 않을 수 있습니다
+# used by org.w3c.css.parser.analyzer.CssParser
+error.notforcss1: 값 %s는 CSS1에서 존재하지 않습니다
+warning.pseudo: 알려지지 않은 비정규 요소 또는 비정규 클래스 %s가 기본 프로파일 (%s)에 포함되어 있습니다
+warning.nocomb: 혼합자 %s 는 이 프로파일 (%s) 에서는 지시자에 사용될 수 없습니다
+warning.charsetspecial: 이 프로파일은 @charset:에 대한 매우 엄격한 규칙이 있습니다. @charset 이후에 정확하게 한개의 공백이 있어야 하며, 그 직후에 따옴표로 묶인 인코딩 명 바로 뒤에 세미콜론을 사용하여야 합니다.
+warning.notversion: %s는 이 버전의 CSS에서 사용할 수 없습니다 : %s
+
+# used by org.w3c.css.parser.CssFouffa
+error.unrecognize: 너무 많은 값 또는 값이 인식되지 않습니다
+
+# used by org.w3c.css.parser.CssFouffa
+generator.unrecognize: 해석 오류
+generator.dontmixhtml:  해석 오류. 스타일 시트는 HTML 구문을 포함해서는 안된다.
+
+# used by org.w3c.css.css.StyleSheetGeneratorHTML2
+error.unknown: 알 수 없는 오류
+
+# used by org.w3c.css.parser.CssSelectors
+error.pseudo-element: 비정규 요소 %s는 %s에서 나타날 수 없습니다
+error.pseudo-class: 비정규 클래스 .%s는 HTML문서상 %s에서 나타날 수 없습니다
+error.pseudo: 알 수 없는 비정규 요소 또는 비정규 클래스 %s
+error.id: ID 지시지 #%s는 올바르지 않습니다 ! 단순 지시자에서는 한가지 ID지시자만 사용될 수 있습니다: %s.
+error.space: 속성 지시자 ~= 가 사용될 경우, 값 %s에 정의 된 값은 공백을 포함할 수 없습니다.
+error.todo : 죄송합니다. 기능 %s는 아직 구현되지 않았습니다.
+error.incompatible: %s와 %s 는 호환이 되지 않습니다
+warning.incompatible: %s와 %s 는 호환이 되지 않습니다
+error.notformobile: %s는 모바일 프로파일에서 사용될 수 없습니다
+error.notforatsc: %s는 ATSC 프로파일에서 사용될 수 없습니다
+error.notfortv: %s는 TV 프로파일에서 사용될 수 없습니다
+error.notversion: %s 는 이 버전의 CSS에서 사용할 수 없습니다 : %s
+
+error.media: 알 수 없는 매체 %s 
+error.page: 알 수 없는 비정규 명칭 페이지 %s
+
+error.unrecognized.link: 알 수 없는 link 요소 또는 xml-stylesheet PI.
+
+# used by StyleSheetGeneratorHTML
+generator.context: 내용
+generator.request: 스타일시트를 표시하는 도중 오류가 발생하였습니다. 요청 내용을 확인하시거나 plh@w3.org로 메일을 보내주시기 바랍니ㅏ.
+generator.unrecognized: 알려지지 않은
+generator.invalid-number: 올바르지 않은 숫자
+generator.property: 잘못 된 값
+generator.line: 행
+generator.not-found: 파일이 없습니다
+
+generator.doc-html:   <!-- removed this confusing message olivier 2006-12-14 -->
+generator.doc:  <!-- removed this confusing message olivier 2006-12-14 -->
+
+# used by the parser
+parser.semi-colon: 속성 앞에 세미콜론을 찾으려고 시도하였습니다. 추가하여 주시기 바랍니다
+parser.unknown-dimension: 알 수없는 차원의
+
+parser.old_class: CSS1에서는 클래스 이름이 길이가 아니었을 경우에 (".55in") 숫자로 시작될 수 있었습니다. (".55ft") 하지만 CSS2에서는 그러한 경우 추후에 추가될 단위를 고려, 모두 알 수 없는 길이로 인식돕니다. ".%s"를 올바른 클래스 이름으로 만들기 위해서 CSS2에서는 ".\3%s"와 같이 숫자 첫 자리에 역슬래시를 추가하여야 합니다.
+
+parser.old_id: CSS1에서는 ID 이름이 길이가 아니었을 경우에 ("#55in") 숫자로 시작될 수 있었습니다. ("#55ft") 하지만 CSS2에서는 그러한 경우 추후에 추가될 단위를 고려, 모두 알 수 없는 길이로 인식돕니다.
+
+parser.class_dim: CSS1에서는 클래스 이름이 길이가 아니었을 경우에 (".55in") 숫자로 시작될 수 있습니다. (".55ft")
+
+parser.id_dim: CSS1에서는 ID 이름이 길이가 아니었을 경우에 ("#55in") 숫자로 시작될 수 있습니다. ("#55ft")
+
+parser.charset: @charset 규칙은 스타일시트가 시작할때만 정의될 수 있습니다. 이때, 그 앞에 공백이 없는지 반드시 확인하기 바랍니다.
+
+parser.charsetspecial: 이 프로파일은 @charset:에 대한 매우 엄격한 규칙이 있습니다. @charset 이후에 정확하게 한개의 공백이 있어야 하며, 그 직후에 따옴표로 묶인 인코딩 명 바로 뒤에 세미콜론을 사용하여야 합니다.
+
+warning.old_id: CSS1에서는 ID 이름이 길이가 아니었을 경우에 ("#55in") 숫자로 시작될 수 있었습니다. ("#55ft") 하지만 CSS2에서는 그러한 경우 추후에 추가될 단위를 고려, 모두 알 수 없는 길이로 인식돕니다.
+
+warning.old_class: CSS1에서는 클래스 이름이 길이가 아니었을 경우에 (".55in") 숫자로 시작될 수 있었습니다. (".55ft") 하지만 CSS2에서는 그러한 경우 추후에 추가될 단위를 고려, 모두 알 수 없는 길이로 인식돕니다. ".%s"를 올바른 클래스 이름으로 만들기 위해서 CSS2에서는 ".\3%s"와 같이 숫자 첫 자리에 역슬래시를 추가하여야 합니다.
+
+# used by the servlet
+servlet.invalid-request: 올바르지 않은 요청을 하였습니다.
+servlet.process: 객체를 처리할 수 없습니다
+
+warning.atsc: %s는 atsc-tv 매체에서 지원되지 않을 수 있습니다
+error.onlyATSC: %s는 atsc-tv 매체에서만 사용 가능합니다
+
+warning.otherprofile: 속성 %s는 이 프로파일에 존재하지 않습니다만, 다른 프로파일에 의하여 유효하다고 검증되었습니다
+warning.deprecated: 이 값은 더 이상 사용되지 않습니다
+
+warning.float-no-width: In (x)HTML+CSS, floated elements need to have a width declared. Only elements with an intrinsic width (html, img, input, textarea, select, or object) are not affected <!-- translation unavailable -->
+
+parser.charsetcss1: @charset rules can not be used in CSS1 <!-- translation unavailable -->
+parser.attrcss1: Attribute selectors are invalid in CSS1 <!-- translation unavailable -->
+parser.invalid_id_selector: Invalid ID selector <!-- translation unavailable -->
+parser.import_not_allowed: @import are not allowed after any valid statement other than @charset and @import. <!-- translation unavailable -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/Messages.properties.nl	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,374 @@
+# Dutch translation, last updated in sync with Messages.properties.en,v 1.31
+
+direction: ltr
+language_name: Nederlands
+more_options: Meer Opties
+title_more_options: Weergeven/Verbergen van extra validatie opties
+all: Alle
+normal_report: Normaal
+most_important: Meest belangrijk
+no_warnings: Geen
+profile: Profiel
+no_special_profile: Geen speciaal profiel
+css1: CSS versie 1
+css2: CSS versie 2
+css21: CSS versie 2.1
+css3: CSS versie 3
+SVG: SVG
+svgbasic: SVG Basic
+svgtiny: SVG tiny
+mobile: Mobile
+ATSC_TV_profile: ATSC TV profiel
+TV_profile: TV profiel
+medium: Medium
+aural: aural
+braille: braille
+embossed: embossed
+handheld: handheld
+print: print
+projection: projection
+screen: screen
+tty: TTY
+tv: TV
+presentation: presentation
+
+type: Type
+no_special_type: Automatisch
+html_doc: HTML
+css_doc: CSS
+
+check: Controleer
+W3C_CSS_validation_service: De W3C CSS Validatie Service
+check_CSS: Controleer Cascading Style Sheets (CSS) en (X)HTML documenten die gebruik maken van style sheets
+by_URI: via een URI
+by_file_upload: via het uploaden van een bestand
+by_direct_input: via directe invoer
+validate_by_URI: Valideer via een URI
+enter_uri: Geef de URI op van een document (HTML met CSS of alleen CSS) dat je wilt valideren
+page_address: Adres van de pagina om de valideren
+address: Adres
+submit_uri: Verzenden om te valideren
+validate_by_file_upload: Valideer via het uploaden van een bestand
+choose_document: Kies het document dat je wilt valideren
+choose_local_file: Kies een lokaal bestand dat je wilt uploaden en valideren
+local_CSS_file: Lokaal CSS bestand
+submit_file: Verzenden om te valideren
+validate_by_input: Valideer via directe invoer
+enter_CSS: Voer de CSS in die je wilt valideren
+submit_input: Verzenden om te valideren
+note: Opmerking
+note_xhtml_valid: Als je een CSS style sheet wilt valideren die gebruikt wordt in een (X)HTML document, zou je die eerst moeten <a href="http://validator.w3.org/">laten controleren</a>
+# End of variables added along with Index page template
+
+W3C_validator_results: W3C CSS Validator Resultaten met object : 
+# file_title: <!-- provided by the user -->
+CSS_validation_service: CSS Validatie Service
+jump_to: Ga naar
+# errors_count: <!-- generated on the fly -->
+errors: Fouten 
+# warnings_count <!-- generated on the fly -->
+warnings: Waarschuwingen
+validated_CSS: Uw gevalideerde CSS
+congrats: Gefeliciteerd! Geen fouten gevonden.
+# The sentence defined by doc_validates_before_link and doc_validates_after_link variables goes: \
+# "This document validates as CSSXX!" where XX stands for the CSS version used \
+# Since the content of the link about the CSS version is generated on the fly, \
+# it is important to define what goes before the link and what goes afterwards in 2 separate \
+# variables because the position of the link in the sentence varies in different languages
+doc_validates_before_link: Dit document is gevalideerd als 
+doc_validates_after_link: !
+no_errors_interoperable_msg: Om uw lezers te laten zien dat u de moeite heeft genomen om een interoperabele webpagina te maken, \
+kunt u dit pictogram op elke gevalideerde pagina plaatsen. Hier is de HTML code \
+die u kunt gebruiken om dit pictogram aan uw webpagina toe te voegen:
+valid_CSS: Valide CSS!
+# <!-- close the img tag with > instead of /> if using HTML<= 4.01 -->
+no_errors_close_tags_msg: Sluit de img tag met &gt; in plaats van met /&gt; als u HTML versie 4.01 of eerder gebruikt
+no_errors_dl_local_msg: Als u wilt, kunt u een kopie van dit plaatje downloaden, in uw locale webdirectory \
+zetten en in het XHTML fragment hierboven refereren aan uw lokaal opgeslagen afbeelding \
+in plaats van aan die op deze server.
+no_errors_create_link_msg: Als u een link wilt maken naar deze pagina (i.e. naar dit validatieresultaat \
+om het gemakkelijker te maken deze pagina later te revalideren of anderen \
+in staat te stellen uw pagina te valideren is de URL:
+no_errors_forHTML_only_msg: Alleen voor HTML documenten
+no_errors_bookmark_msg: Of u kunt de huidige pagina toevoegen aan uw favorieten of hotlist.
+note_valide_html: Als je een CSS style sheet wilt valideren die gebruikt wordt in een (X)HTML document, zou je die eerst moeten <a href="http://validator.w3.org/">laten controleren</a>.
+top: Top
+# hook_html_validator <!-- generated on the fly -->
+not-css1-style: /* VOORZICHTIG ! Dit is geen CSS1 eigenschap ! */
+errors_sorry_msg: Sorry! We vonden de volgende fouten
+# errors_list: <!-- generated on the fly -->
+# warnings_list: <!-- generated on the fly -->
+# rules_count: <!-- generated on the fly -->
+valid_CSS_info: Uw gevalideerde Cascading Style Sheet :
+# charset: <!-- generated on the fly -->
+# rules_list: <!-- generated on the fly -->
+CSS_not_found: Geen style sheet gevonden
+home: Home
+about: Over
+doc: Documentatie
+dl: Download
+feedback: Reacties
+credits: Credits
+home_title: Home pagina van de W3C CSS Validatie Service
+about_title: Over deze service
+doc_title: Documentatie voor de W3C CSS Validatie Service
+dl_title: Download de CSS validator
+feedback_title: Hoe reacties te geven over deze service
+credits_title: Credits en Erkenning
+W3C_quality_msg: W3C's Quality Assurance Activity, bringing you free Web quality tools and more
+learn_more_msg: Leer meer over Cascading Style Sheets
+support: Ondersteun de validator, wordt een
+supporter: W3C Supporter
+# End of variables added along with Velocity
+
+# Definieert uw eigen error en waarschuwingsberichten hier
+content-type: text/html; charset=utf-8
+content-language: nl
+output-encoding-name: utf-8
+
+# U kunt zo het niveau van waarschuwing aanpassen (voorbeeld) :
+# warning.redefinition.level: 5
+# level is een integer tussen 0 en 9 (alle andere waarden worden genegeerd)
+warning.redefinition: Herdefinitie van %s
+
+# used by xml parser
+warning.style-inside-comment: Plaats geen style regels in HTML commentaar, \
+deze kunnen worden verwijderd door het programma van de gebruiker
+
+# used by org.w3c.css.properties.Css1Style
+warning.same-colors: Dezelfde kleuren voor %s en %s
+warning.no-color: Je hebt geen tekstkleur opgegeven (of de kleur is transparant) maar je hebt wel een achtergrondkleur opgegeven. Zorg ervoor dat het opgeven van tekst- en achtergrondkleuren de tekst leesbaar houdt.
+warning.no-background-color: Je hebt geen achtergrondkleur opgegeven (of de achtergrondkleur is transparant) maar je hebt wel een tekstkleur opgegeven. Zorg ervoor dat het opgeven van tekst- en achtergrondkleuren de tekst leesbaar houdt.
+#warning.color.mixed-capitalization is now obsolete
+#warning.color.mixed-capitalization: Alhoewel namen van kleuren case-insensitive zijn is het beter om de gemengde  schrijfwijze te hanteren om de namen beter leesbaar te maken: %s
+warning.no-generic-family: %s: Het is beter een algemene font-family op te geven als laatste alternatief
+warning.with-space: Familienamen die spaties bevatten moeten tussen aanhalingstekens worden geplaatst. \
+Als quotes worden weggelaten wordt elke tussenruimte voor en achter de naam genegeerd en elke groep \
+whitespace-tekens in de naam wordt omgezet naar een spatie.
+warning.no-padding: Het is beter een padding te gebruiken met een achtergrondkleur
+warning.same-colors2: Dezelfde kleur en achtergrondkleur in twee contexten %s en %s
+warning.relative-absolute: U hebt absolute en relatieve lengtes in %s. Dit is geen robuuste style sheet.
+
+# used by org.w3c.css.properties.CssSelectors
+warning.unknown-html: %s is geen HTML Element
+warning.html-inside: HTML element kan niet binnen een ander element voorkomen
+warning.body-inside: BODY element kan niet binnen een ander element dan HTML voorkomen
+warning.pseudo-classes: Anker pseudo-class %s heeft geen effect op andere elementen dan 'A'
+
+# niet gebruikt door org.w3c.css.properties.CssSelectors op dit moment
+warning.noinside: %s kan niet voorkomen binnen een inline element
+warning.withblock: Wees voorzichtig. Pseudo-elementen kunnen alleen worden gekoppeld aan een block-level element
+warning.block-level: Deze eigenschap is van toepassing op block-level elementen.
+
+# gebruikt door org.w3c.css.parser.Frame
+warning.no-declaration: Geen declaraties in de regel
+
+# used by org.w3c.css.parser.CssFouffa
+warning.unsupported-import: De geïmporteerde style sheets worden niet gecontroleerd bij het direct invoeren of uploaden van een style sheet
+
+# gebruikt door org.w3c.css.values.CssColor
+warning.out-of-range: %s valt buiten het bereik
+error.invalid-color: Ongeldige RGB functie
+
+warning.marker: De marker-offset eigenschap is van toepassing op elementen met 'display: marker'
+
+# gebruikt door org.w3c.css.properties.ACssStyle
+warning.relative: Het gebruik van relatieve maten geeft robuustere stylesheets bij de eigenschap %s
+
+# gebruikt door org.w3c.css.css.StyleSheetParser and org.w3c.css.css.StyleSheetXMLParser
+error.at-rule: Sorry, de at-regel %s is niet geimplementeerd.
+
+# gebruikt voor alle eigenschappen en waarden
+error.operator: %s is een incorrecte operator
+error.negative-value: %s negatieve waarden zijn niet toegestaan
+error.few-value: te weinig waarden voor de eigenschap %s
+
+# gebruikt door org.w3c.css.properties3.CssToggleGroup
+error.groupname: %s is geen correcte groepnaam. Gebruik een geldige identifier
+
+# gebruikt door org.w3c.css.properties3.CssGroupReset
+error.nogroup: %s is niet geinitialiseerd door een toggle-group eigenschap
+
+error.notforatsc: %s kan niet gebruikt worden met het ATSC profiel
+error.notfortv: %s kan niet gebruikt worden met het TV profiel
+error.notversion: %s kan niet worden gebruikt met deze versie van CSS : %s
+
+# gebruikt door org.w3c.css.properties3.CssGlyphOrVert
+error.anglevalue: Waarde moet tussen -360 en 360 zijn en deelbaar zijn door 90
+
+#gebruikt door org.w3c.css.properties3.CssTextKashidaSpace
+error.percentage: Waarde moet een percentage zijn
+
+#used by org.w3c.css.properties.cssDirection
+warning.direction: het is beter voor block-level elementen de CSS3 eigenschap 'writing-mode' te gebruiken
+
+# wees voorzichtig, waarden komen eerst
+# U kunt niet zoiets als dit schrijven: Voor de kleur is blauw een incorrecte waarde
+error.value: %s geen %s waarde
+
+# gebruikt door org.w3c.css.properties.CssTextDecoration
+error.same-value: %s komt tweemaal voor
+
+error.generic-family.quote: Generieke familienamen zijn sleutelwoorden en moeten daarom tussen aanhalingstekens worden geplaatst
+
+# gebruikt door org.w3c.css.properties.CssClip
+error.shape: Ongeldige vormdefinitie rect(<top>,<right>,<bottom>,<left>)
+error.shape-separator: Ongeldig scheidingsteken in de vormdefinitie. Dit moet een komma zijn.
+
+# gebruikt door org.w3c.css.properties.CssContent
+error.attr: Ongeldige definitie van attr  attr(X)
+error.counter: Ongeldige counter definitie counter(<identifier>[,<list-style-type>]?)
+error.counters: Ongeldige counters definitie counters(<identifier>,<string>[,<list-style-type>]?)
+
+# gebruikt door org.w3c.css.font.Src
+error.format: Ongeldige format definitie format(<string>[,<string>]*)
+error.local: Ongeldige format definitie local(<string>|<ident>+)
+
+# gebruikt door org.w3c.css.values.CssAngle, org.w3c.css.values.CssFrequency, org.w3c.css.values.CssTime, org.w3c.css.values.CssLength
+error.unit: %s is een incorrecte unit
+
+error.unknown: Onbekende error
+
+# gebruikt door org.w3c.css.aural.ACssAzimuth
+error.degree: De positie moet worden beschreven in gradaties.
+
+# gebruikt door org.w3c.css.aural.ACssElevation
+error.elevation.range: Specificeert de 'elevation' als een hoek, tussen '-90deg' en '90deg'.
+
+# gebruikt door org.w3c.css.aural.ACssPitchRange
+error.range: Deze waarde valt buiten het bereik. Deze moet tussen '0' en '100' liggen.
+
+# gebruikt door org.w3c.css.properties.CssTextShadow
+error.two-lengths: Een schaduw offset wordt gespecificeerd met twee <length> waarden (Een blur radius kan optioneel worden gespecificeerd na de schaduw offset.)
+
+error.integer: Dit getal moet een integer zijn.
+error.comma: Ontbrekende komma als scheidingsteken.
+
+# gebruikt door org.w3c.css.values.CssPercentage
+error.percent: %s is een incorrect percentage
+
+# gebruikt door org.w3c.css.values.CssString
+error.string: %s is een incorrecte string
+
+# gebruikt door org.w3c.css.values.CssURL
+error.url: %s is geen incorrecte URL
+
+# gebruikt door org.w3c.css.values.CssColor
+error.rgb: %s is geen geldige kleur 3 of 6 hexadecimale getallens
+error.angle: %s is geen geldige hoek. De waarde moet tussen 0 en 360 liggen
+
+# gebruikt door org.w3c.css.values.CssNumber
+error.zero: alleen 0 kan een %s zijn. U moet een maat achter uw getal plaatsen
+
+# gebruikt door org.w3c.css.parser.CssPropertyFactory
+error.noexistence-at-all: Eigenschap %s bestaat niet
+
+error.noexistence: Eigenschap %s bestaat niet in %s maar wel in %s
+warning.noexistence: Eigenschap %s bestaat niet in %s maar wel in %s
+
+error.noexistence-media: Eigenschap %s bestaat niet voor media %s
+warning.noexistence-media: Eigenschap %s bestaat niet voor media %s
+
+# gebruikt door org.w3c.css.parser.CssFouffa
+error.unrecognize: Te veel waarden of teveel onbekende waarden
+
+# gebruikt door org.w3c.css.parser.CssFouffa
+generator.unrecognize: Parse Error
+generator.dontmixhtml: Parse Error. Style sheets mogen geen HTML syntax.
+
+# gebruikt door org.w3c.css.parser.CssSelectors
+error.pseudo-element: Het pseudo-element %s kan niet in deze context voorkomen %s
+error.pseudo-class: De pseudo-class .%s kan niet in deze HTML context voorkomen %s
+error.pseudo: Onbekend pseudo-element of pseudo-class %s
+error.id: ID selector #%s is ongeldig ! Slechts een ID selector kan worden gespecificeerd in een eenvoudige selector: %s.
+error.space: Als de attribuut selector ~= wordt gebruikt mag het woord in de waarde %s geen spaties bevatten.
+error.todo : Sorry de feature %s is nog niet geimplementeerd.
+error.incompatible: %s en %s zijn incompatible
+warning.incompatible: %s en %s zijn incompatible
+
+error.media: onbekende media %s 
+error.page: onbekende pseudo genaamde pagina %s
+
+
+# gebruikt door StyleSheetGeneratorHTML
+generator.context: Context
+generator.request: Er is een fout opgetreden tijdens de uitvoer van uw style sheet. \
+Corrigeer uw verzoek of stuur een mail naar plh@w3.org.
+generator.unrecognized: onbekend
+generator.invalid-number: Ongeldig getal
+generator.property: Ongeldig getal
+generator.line: Regel
+generator.not-found: Bestand niet gevonden
+generator.doc-html:<!-- removed this confusing message olivier 2006-12-14 -->
+
+generator.doc:<!-- removed this confusing message olivier 2006-12-14 -->
+
+
+# gebruikt door the parser
+parser.semi-colon: poging een puntkomma te vinden voor de eigenschapnaam: voeg deze toe
+
+parser.unknown-dimension: Onbekend dimensie.
+
+parser.old_class:In CSS1 kon de naam van een klasse beginnen met een getal (".55ft"), \
+tenzij het een dimensie was (".55in"). In CSS2 worden zulke klassen geparsed als \
+onbekende dimensies (dit maakt het mogelijk later nieuwe units toe te voegen)
+
+parser.old_id:In CSS1 kon een id beginnen met een getal ("#55ft"), \
+tenzij het een dimensie was ("#55in"). In CSS2 worden zulke ids geparsed als \
+onbekende dimensies (dit maakt het mogelijk later nieuwe units toe te voegen)
+
+parser.class_dim:In CSS1 kan de naam van een klasse beginnen met een getal (".55ft"), \
+tenzij het een dimensie is (".55in").
+
+parser.id_dim:In CSS1 kan een id beginnen met een getal ("#55ft"), \
+tenzij het een dimensie is ("#55in").
+
+parser.charset:De @charset-regel mag alleen voorkomen aan het begin van een \
+style-sheet. Controleer dat er geen spaties aan voorafgaan.
+
+parser.charsetspecial:Dit profiel heeft een specifieke syntax voor @charset: \
+@charset gevolgd door precies een spatie, gevolgd door het type tussen aanhalingstekens \
+en een puntkomma.
+
+warning.old_id:In CSS1 kon de naam van een id beginnen met een getal ("#55ft"), \
+tenzij het een dimensie is ("#55in"). In CSS2 worden zulke ids geparsed als \
+onbekende dimensies (dit maakt het mogelijk later nieuwe units toe te voegen)
+
+warning.old_class:In CSS1 kon de naam van een klasse beginnen met een getal (".55ft"), \
+tenzij het een dimensie is (".55in"). In CSS2 worden zulke klassen geparsed als \
+onbekende dimensies (dit maakt het mogelijk later nieuwe units toe te voegen)
+
+# gebruikt door de servlet
+servlet.invalid-request: U hebt een ongeldig verzoek ingediend.
+servlet.process: Kan het object niet verwerken
+
+error.notforcss1 : Waarde %s bestaat niet voor CSS1
+warning.noothermedium : Eigenschappen voor andere media werken mogelijk niet voor dit gebruikersmedium
+warning.notforusermedium : Eigenschap %s bestaat niet voor dit gebruikersmedium
+error.noatruleyet : Andere @regels dan @import worden niet ondersteund door CSS1 %
+error.notformobile : %s kan niet worden gebruikt voor het mobile profiel
+warning.atsc : %s wordt mogelijk niet ondersteund door het medium atsc-tv
+error.onlyATSC : deze functie is alleen voor @media atsc-tv
+
+error.unrecognized.link: Onherkenbaar link element of xml-stylesheet PI.
+
+warning.otherprofile : property %s bestaat niet in dit profiel, maar is gevalideerd conform een ander profiel
+warning.deprecated : deze waarde is verouderd en kan beter niet meer worden gebruikt
+
+#used by org.w3c.css.parser.analyzer.CssParser
+error.nocomb: Combinator %s tussen de selectors is niet toegestaan in dit profiel of versie
+
+error.function: Ongeldige functie definitie
+warning.charsetspecial: Dit profiel heeft een specifieke syntax voor @charset: @charset, gevolgd door een spatie, gevolgd door de naam van de encoding tussen quotes, direct gevolgd door een puntkomma.
+warning.medialist: De medialijst moet starten met 'media :' %s
+warning.nocomb: Combinatieteken %s tussen selectors is niet toegestaan binnen dit profiel (%s)
+warning.notversion: %s kan niet gebruikt worden in deze CSS-versie: %s
+warning.pseudo: Onbekend pseudo-element of pseudo-class %s in het standaard profiel (%s)
+warning.xsl: waarde %s is alleen geldig voor XSL
+
+warning.float-no-width: In (x)HTML+CSS moet de breedte van floated elementen gedeclareerd zijn. Alleen elementen met een intrinsieke breedte (html, img, input, textarea, select, of object) worden hierdoor niet beïnvloed
+parser.charsetcss1: De @charset regels zijn niet compatibel met CSS1
+parser.attrcss1: De Attribute selectors zijn niet compatibel met CSS1
+parser.invalid_id_selector: Niet valide ID selector
+parser.import_not_allowed: @import is niet toegestaan na een valide statement anders dan @charset en @import
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/Messages.properties.pl-PL	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,371 @@
+# Polish translation, last updated in sync with Messages.properties.en,v 1.31
+
+direction: ltr
+language_name: Polski
+more_options: Więcej opcji
+title_more_options: Pokaż/schowaj dodatkowe opcje
+all: Wszystkie
+normal_report: Zwyczajny raport
+most_important: Najważniejsze
+no_warnings: Brak ostrzeżeń
+profile: Profil
+no_special_profile: Brak specjalnego profilu
+css1: CSS wersja 1
+css2: CSS wersja 2
+css21: CSS wersja 2.1
+css3: CSS wersja 3
+SVG: SVG
+svgbasic: SVG Basic
+svgtiny: SVG tiny
+mobile: mobilny
+ATSC_TV_profile: ATSC TV profil
+TV_profile: TV profil
+medium: Medium
+aural: dźwiękowe
+braille: braille
+embossed: wytłaczane
+handheld: ręczne
+print: druk
+projection: projekcja
+screen: ekran
+tty: TTY
+tv: TV
+presentation: prezentacja
+
+type: Typ
+no_special_type: Automatycznie
+html_doc: HTML
+css_doc: CSS
+
+check: Sprawdź
+W3C_CSS_validation_service: Usługa Walidacji CSS W3C
+CSS_validation_service: Usługa Walidacji CSS W3C
+check_CSS: Sprawdź Kaskadowe Arkusze Stylów CSS) i dokumenty (X)HTML z arkuszami stylów
+by_URI: przez URI
+by_file_upload: poprzez załadowanie pliku
+by_direct_input: poprzez wprowadzenie kodu
+validate_by_URI: Walidacja przez URI
+enter_uri: Wprowadź URI dokumentu (HTML z CSS lub tylko CSS) do walidacji  
+page_address: Adres strony, która ma być walidowana
+address: Adres
+submit_uri: Prześlij plik do walidacji
+validate_by_file_upload: Walidacja poprzez załadowanie pliku
+choose_document: Wybierz dokument do walidacji
+choose_local_file: Wybierz lokalny plik, który chcesz walidować
+local_CSS_file: Lokalny plik CSS
+submit_file: Prześlij plik do walidacji
+validate_by_input: Walidacja poprzez bezpośrednie wprowadzenie kodu
+enter_CSS: Wprowadź kod CSS do walidacji
+submit_input: Prześlij plik do walidacji
+note: Uwaga
+note_xhtml_valid: Jeśli chcesz walidować arkusz CSS umieszczony w dokumencie (X)HTML, powinieneś wpierw <a href="http://validator.w3.org/">sprawdzić, czy użyty (X)HTML jest poprawny</a>
+# End of variables added along with Index page template
+
+W3C_validator_results: Wyniki Walidatora CSS W3C dla
+# file_title: <!-- provided by the user -->
+jump_to: Zobacz
+# errors_count: <!-- generated on the fly -->
+errors: Błędy
+# warnings_count <!-- generated on the fly -->
+warnings: Ostrzeżenia
+validated_CSS: Swój arkusz stylu
+congrats: Gratulacje! Nie znaleziono żadnych błędów.
+# The sentence defined by doc_validates_before_link and doc_validates_after_link variables goes: \
+# "This document validates as CSSXX!" where XX stands for the CSS version used \
+# Since the content of the link about the CSS version is generated on the fly, \
+# it is important to define what goes before the link and what goes afterwards in 2 separate \
+# variables because the position of the link in the sentence varies in different languages
+doc_validates_before_link: Dokument ten jest poprawnie napisanym arkuszem  
+doc_validates_after_link: !
+no_errors_interoperable_msg: Aby pokazać czytelnikom swojej strony, że stworzyłeś stronę interoperacyjną \
+, możesz umieścić ikonę na każdej stronie, która pomyślnie przeszła walidację. Oto kod HTML\
+, który możesz dodać do swojej strony:
+valid_CSS: Poprawny CSS!
+# <!-- close the img tag with > instead of /> if using HTML<= 4.01 -->
+no_errors_close_tags_msg: zakończ znacznik obrazu z &gt; zamiast /&gt; jeśli używasz HTML &lt;= 4.01
+no_errors_dl_local_msg: Jeśli chcesz, możesz ściągnąć kopię tej ikony i umieścić ja w lokalnym \
+katalogu swojego serwera oraz przerobić fragment XHTML podając link prowadzący do ikony na swoim serwerze \
+zamiast do ikony na serwerze Walidatora CSS W3C.
+no_errors_create_link_msg: Jeśli chciałbyś stworzyć link do tej strony (np. do wyniku \
+walidacji) aby ułatwić sobie ponowną walidację w przyszłości lub w celu pozwolenia \
+innym na walidację tej strony, użyj następującego adresu:
+no_errors_forHTML_only_msg: jedynie dla dokumentów HTML/XML
+no_errors_bookmark_msg: Lub możesz dodać stronę do Ulubionych.
+note_valide_html: Aby działał poprawnie, Twój arkusz CSS wymaga poprawnego drzewa dokumentu. To znaczy, że powinieneś upewnić się, że używasz <a href = "http://validator.w3.org/">poprawnego HTMLa</a>.
+top: Szczyt
+# hook_html_validator <!-- generated on the fly -->
+not-css1-style: /* OSTROŻNIE ! To nie jest właściwość pochodząca z CSS1 ! */ 
+errors_sorry_msg: Błędy
+# errors_list: <!-- generated on the fly -->
+# warnings_list: <!-- generated on the fly -->
+# rules_count: <!-- generated on the fly -->
+valid_CSS_info: Informacje na temat poprawnego CSS
+# charset: <!-- generated on the fly -->
+# rules_list: <!-- generated on the fly -->
+CSS_not_found: Nie znaleziono arkusza stylów
+home: Strona początkowa
+about: O nas
+doc: Dokumentacja
+dl: Download
+feedback: Opinie
+credits: Podziękowania
+home_title: Home
+about_title: O serwisie
+doc_title: Dokumentacja Usługi Walidacji CSS
+dl_title: Ściągnij i zainstaluj walidator CSS
+feedback_title: Jak wysłać opinię na temat tej usługi
+credits_title: Podziękowania
+W3C_quality_msg: W3C's Quality Assurance Activity dostarcza darmowych narzędzi webowych i wiele więcej
+learn_more_msg: Dowiedz się więcej o Kaskadowych Arkuszach Styli
+support: Wesprzyj to narzędzie, zostań
+supporter: Osoba wspierająca W3C
+# End of variables added along with Velocity
+
+# Definiuje komunikaty błędów i ostrzeżeń
+content-type: text/html; charset=utf-8
+content-language: pl
+output-encoding-name: utf-8
+
+# Można zmienić poziom ostrzeżeń w następujšcy sposób (przykład) :
+# warning.redefinition.level: 5
+#  poziom jest liczbš pomiędzy 0 i 9 (wszystkie inne wartoœci sš ignorowane)
+warning.redefinition: Redefiniowanie %s
+
+# used by xml parser
+warning.style-inside-comment: Do not put style rules inside HTML comments as they may be removed by user agent
+
+# użyte przez org.w3c.css.properties.Css1Style
+warning.same-colors: Takie same kolory dla %s i %s
+warning.no-color: Brak koloru w background-color
+warning.no-background-color: Brak background-color with your color
+#warning.color.mixed-capitalization is now obsolete
+#warning.color.mixed-capitalization: Chociaż nazwy kolorów nie sš wrażliwe na wielkoœć czcionki, zaleca się aby używać kombinacji małej i dużej czcionki, co uczyni nazwy bardziej czytelnymi: %s
+warning.no-generic-family: %s: Zaleca się aby rodziny czcionek rodzajowych były stosowane w ostatecznoœci
+warning.with-space: nazwy rodzin czcionek zawierajšce białe znaki powinny być w cudzysłowiu. Jeœli pominie się cudzysłów, białe znaki \
+przed i po nazwie sš ignorowane oraz cišg białych znaków wewnštrz nazwy \
+jest przekształcony w jednš spację. 
+warning.no-padding: Zaleca się aby mieć padding z kolorem tła
+warning.same-colors2: Takie same kolory dla color i background-color w dwóch miejscach %s i %s
+warning.relative-absolute: Istniejš długoœci absolutne i relatywne w %s. To nie jest mocny arkusz stylów.
+ by org.w3c.css.properties.CssSelectors
+warning.unknown-html: %s nie jest elementem HTML
+warning.html-inside: Element HTML nie może znajdować się wewnštrz innego elementu
+warning.body-inside: Element BODY nie może być wewnštrz innego elementu z wyjštkiem HTML
+warning.pseudo-classes: Anchor pseudo-class %s nie działa na inne elementy poza 'A'
+
+# nie użyte przez org.w3c.css.properties.CssSelectors na czas obecny
+warning.noinside: %s nie może być wewnštrz elementu inline 
+warning.withblock: Uwaga. Pseudo-elementy mogš być dołšczone jedynie do elementu block-level 
+warning.block-level: Właœciwoœć tš stosuje się jedynie do elementów block-level.
+
+# użyte przez org.w3c.css.parser.Frame
+warning.no-declaration: No declarations in the rule
+
+# used by org.w3c.css.parser.CssFouffa AND NEEDS TRANSLATION
+warning.unsupported-import: Imported style sheets are not checked in direct input and file upload modes
+
+# użyte przez org.w3c.css.values.CssColor
+warning.out-of-range: %s is out of range
+error.invalid-color: Invalid RGB function
+
+warning.marker: Właœciwoœć marker-offset stosuje się do elementów z 'display: marker'
+
+# użyte przez org.w3c.css.properties.ACssStyle
+warning.relative: Zastosowanie jednostek relatywnych we właœciwoœci %s daje w rezultacie silniejszy arkusz stylów
+
+# użyte przez org.w3c.css.css.StyleSheetParser i org.w3c.css.css.StyleSheetXMLParser
+error.at-rule: Niestety ale at-rule %s jest nie wdrożony.
+
+# użyte przez wszystkie właœciwoœci i wartoœci
+error.operator: %s jest niepoprawnym operatorem
+error.negative-value: Wartoœci negatywne %s sš niedozwolone
+error.few-value: Zbyt mało wartoœci dla właœciwoœci %s
+
+# Uwaga! Wartoœci sš pierwsze
+# Można napisać coœ takiego : Dla color, blue nie jest wartoœciš poprawnš 
+error.value: %s nie jest wartoœciš %s 
+
+#użyte przez org.w3c.css.properties3.CssToggleGroup
+error.groupname: %s nie jest poprawnš groupname. Zastosuj poprawny identyfikator
+
+#użyte przez org.w3c.css.properties3.CssGroupReset
+error.nogroup: %s nie jest ustalona przez właœciwoœć toggle-group
+
+#użyte przez org.w3c.css.properties3.CssGlyphOrVert
+error.anglevalue: Wartoœć powinna być pomiędzy -360 i 360 oraz podzielna przez 90
+
+#użyte przez org.w3c.css.properties3.CssTextKashidaSpace
+error.percentage: Oczekuje się wartoœci procentowej
+
+#użyte przez org.w3c.css.properties.CssTextAlign
+warning.xsl: Wartoœć %s stosuje się jedynie w XSL
+
+#użyte przez org.w3c.css.parser.analyzer.CssParser
+warning.medialist : medialist powinna zaczšć się z 'media :' %s
+error.nocomb: Kombinator %s pomiędzy selektorami nie jest dozwolony w tym profilu lub wersji
+
+#użyte przez org.w3c.css.properties.CssDirection
+warning.direction: Zamiast stosować 'direction' dla elemetów block-level, zastosuj nowš własnoœć CSS3 'writing-mode' 
+
+# użyte przez org.w3c.css.properties.CssTextDecoration
+error.same-value: %s pojawia się dwukrotnie
+
+error.generic-family.quote: Nazwy rodzin rodzajowych sš słowami kluczowymi i nie mogš być cytowane.
+
+# użyte przez org.w3c.css.properties.CssClip
+error.shape: Niepoprawna definicja shape rect(<top>,<right>,<bottom>,<left>)
+error.shape-separator: Niepoprawny separator w definicji shape. Musi to być przecinek.
+
+# użyte przez org.w3c.css.properties.CssContent
+error.attr: Niepoprawna definicja attr, attr(X)
+error.function: Niepoprawna definicja function  
+error.counter: Niepoprawna definicja counter, counter(<identifier>[,<list-style-type>]?)
+error.counters: Niepoprawna definicja counters, counters(<identifier>,<string>[,<list-style-type>]?)
+
+# użyte przez org.w3c.css.font.Src
+error.format: Niepoprawna definicja format, format(<string>[,<string>]*)
+error.local: Niepoprawna definicja, local(<string>|<ident>+)
+
+# użyte przez org.w3c.css.values.CssAngle, org.w3c.css.values.CssFrequency, org.w3c.css.values.CssTime, org.w3c.css.values.CssLength
+error.unit: %s nie jest poprawnš jednostkš
+
+# użyte przez org.w3c.css.aural.ACssAzimuth
+error.degree: Pozycja musi być wyrażona w stopniach.
+
+# użyte przez org.w3c.css.aural.ACssElevation
+error.elevation.range: Okreœla elewację jako kšt pomiędzy '-90deg' i '90deg'.
+
+# użyte przez org.w3c.css.aural.ACssPitchRange
+error.range: Wartoœć jest poza zasięgiem. Wartoœć powinna być pomiędzy '0' i '100'.
+
+# użyte przez org.w3c.css.properties.CssTextShadow
+error.two-lengths: Shadow offset jest okreœlony dwoma wartoœciami <length>. (Blur radius może być okreœlony po shadow offset.)
+
+error.integer: Liczba ta musi być liczbš całkowitš.
+error.comma: Brak przecinka jako separatora.
+
+# użyte przez org.w3c.css.values.CssPercentage
+error.percent: %s jest niepoprawnš wartoœciš procentowš
+
+# użyte przez org.w3c.css.values.CssString
+error.string: %s jest niepoprawnym cišgiem
+
+# użyte przez org.w3c.css.values.CssURL
+error.url: %s jest niepoprawnym URL
+
+# użyte przez org.w3c.css.values.CssColor
+error.rgb: %s nie jest prawidłowym numerem koloru 3 lub 6 hexadecimals 
+error.angle: %s jest niepoprawnym kštem. Wartoœć powinna być pomiędzy 0 i 360
+
+# użyte przez org.w3c.css.values.CssNumber
+error.zero: Jedynie 0 może być %s. Musisz wstawić jednostkę po numerze
+
+# użyte przez org.w3c.css.parser.CssPropertyFactory 
+error.noexistence: WłaWłaściwość %s nie istnieje w %s, ale istnieje w %s
+warning.noexistence: Właściwość %s nie istnieje w %s, ale istnieje w %s
+error.noexistence-media: Właœciwoœć %s nie istnieje dla media %s
+error.noexistence-at-all: Właściwość %s nie istnieje
+warning.noexistence-media: Właœciwoœć %s nie istnieje dla media %s
+warning.notforusermedium : Właœciwoœć %s nie istnieje dla tego usermedium
+warning.noothermedium : Właœciwoœć dla innych mediów może nie działać dla usermedium
+# użyte przez org.w3c.css.parser.AtRule*
+error.noatruleyet : Inne @rules poza @import nie sš wspierane przez CSS1 %s
+# użyte przez org.w3c.css.parser.analyzer.CssParser
+error.notforcss1 : Wartoœć %s nie istnieje w CSS1
+warning.pseudo: Nieznany pesudo-element lub pseudo-klasa %s w domyślnym profilu (%s)
+warning.nocomb: Kombinator %s pomiędzy selektorami nie jest dozwolony w tym profilu (%s)
+warning.charsetspecial: Ten profil ma ściśle określoną składnię dla reguły @charset: @charset, dokładnie jedna spacja, nazwa kodowania w cudzysłowie, średnik.
+warning.notversion: %s nie może zostać użyty z tą wersją CSS: %s
+
+# użyte przez org.w3c.css.parser.CssFouffa
+error.unrecognize: Zbyt dużo wartoœci lub wartoœci nie rozpoznane
+
+# użyte przez org.w3c.css.parser.CssFouffa
+generator.unrecognize: Błšd parsowania
+generator.dontmixhtml: Błąd parsowania: Arkusz styli nie powinien zawierać składni HTML.
+
+# used by org.w3c.css.css.StyleSheetGeneratorHTML2
+error.unknown: Unknown error
+
+# użyte przez org.w3c.css.parser.CssSelectors
+error.pseudo-element: Pseudo-element %s nie może pojawić się w następujšcym kontekœcie %s
+error.pseudo-class: Pseudo-class .%s nie może pojawić się w następujšcym kontekœcie HTML %s
+error.pseudo: Niznany pseudo-element lub pseudo-class %s
+error.id: Selektor ID #%s jest niepoprawny ! Tylko jeden selektor ID może być okreœlony w selektorze prostym: %s.
+error.space: Jeœli stosuje się selektor atrybutu ~=, wyraz w wartoœci %s nie powinien zawierać spacji.
+error.todo : Niestety, ale funkcja %s nie została jeszcze wdrożona.
+error.incompatible: %s i %s sš niekompatybilne
+warning.incompatible: %s i %s sš niekompatybilne
+error.notformobile : %s nie może być zastosowany w profilu mobilnym
+error.notforatsc : %s nie może być zastosowany w profilu ATSC
+error.notfortv : %s nie może być zastosowany w profilu TV
+error.notversion : %s nie może być zastosowany w tej wersji CSS : %s
+
+error.media: nierozpoznane media %s 
+error.page: nierozpoznana pseudo named page %s
+
+error.unrecognized.link: Nierozpoznany link element lub xml-stylesheet PI.
+
+# użyte przez StyleSheetGeneratorHTML
+generator.context: Kontekst
+generator.request: Wystšpił błšd podczas przetwarzania twojego arkusza stylów. \
+Proszę ponowić proœbę lub wysłać e-mail pod adres plh@w3.org.
+generator.unrecognized: Nierozpoznane
+generator.invalid-number: Niepoprawny numer
+generator.property: Niepoprawny numer
+generator.line: Linia
+generator.not-found: Pliku nie znaleziono
+generator.doc-html: <!-- removed this confusing message olivier 2006-12-14 -->
+generator.doc:<!-- removed this confusing message olivier 2006-12-14 -->
+
+
+# użyte przez parser
+parser.semi-colon: próba znalezienia œrednika przed nazwš właœciwoœci. Dodaj go
+
+parser.unknown-dimension: Nieznany wymiar
+
+
+parser.old_class: W CSS1, nazwa klasy może zaczšć się od cyfry (".55ft"), \
+chyba, że jest to wymiar (".55in"). W CSS2 takie klasy sš parsowane jako \
+nieznane wymiary (aby pozwolić na póŸniejsze dodawanie jednostek)
+
+parser.old_id:W CSS1 nazwa id może zaczšć się od cyfry("#55ft"), \
+chyba, że jest to wymiar ("#55in"). W CSS2 takie klasy sš parsowane jako \
+nieznane wymiary (aby pozwolić na póŸniejsze dodawanie jednostek)
+
+parser.class_dim:W CSS1 nazwa klasy może zaczšć się od cyfry (".55ft"), \
+chyba, że jest to wymiar (".55in").
+
+parser.id_dim:W CSS1 nazwa id  może zaczšć się od cyfry ("#55ft"), \
+chyba, że jest to wymiar ("#55in").
+
+parser.charset:Reguła @charset może pojawić się jedynie na poczštku \
+arkusza. Upewnij się, że nie ma przed niš spacji.
+
+parser.charsetspecial:Ten profil ma specyficzny syntax dla @charset: \
+@charset dokładnie po jednej spacji a następnie nazwa kodowania \
+w cudzysłowie zakończona bezpoœrednio œrednikiem.
+
+warning.old_id:W CSS1 nazwa id  może zaczšć się od cyfry ("#55ft"), \
+chyba, że jest to wymiar ("#55in"). W CSS2 takie klasy sš parsowane jako \
+nieznane wymiary (aby pozwolić na póŸniejsze dodawanie jednostek)
+
+warning.old_class:In CSS1, a class name can start with a digit ("#55ft"), \
+chyba, że jest to wymiar ("#55in"). W CSS2 takie klasy sš parsowane jako \
+nieznane wymiary (aby pozwolić na póŸniejsze dodawanie jednostek)
+
+# użyte przez servlet
+servlet.invalid-request: Wysłałeœ niewłaœciwe polecenie.
+servlet.process: Nie można przetworzyć obiektu
+
+warning.atsc : %s może nie być wspieranym przez medium atsc-tv
+error.onlyATSC : %s ta funkcja jest jedynie dla medium atsc-tv
+
+warning.otherprofile : właœciwoœć %s nie istnieje dla tego profilu, ale wykazuje zgodnoœć z innym profilem
+warning.deprecated : Wartoœć jest przestarzała
+
+warning.float-no-width: W (x)HTML+CSS elementy pływające muszą mieć określoną szerokość. Nie dotyczy to tylko elementów z szerokością przypisaną domyślnie (html, img, input, textarea, select i object)
+parser.charsetcss1: Reguły @charset nie mogą być używane w CSS1
+parser.attrcss1: Selektory atrybutów są nieprawidłowe w CSS1
+parser.invalid_id_selector: Nieprawidłowy selektor ID
+parser.import_not_allowed: Wyrażenie @import nie może występować po żadnym z istniejących wyrażeń, z wyjątkiem @charset i @import.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/Messages.properties.pt-BR	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,376 @@
+# Brazilian-Portuguese translation, last updated in sync with Messages.properties.en,v 1.31
+
+direction: ltr
+language_name: Português
+more_options: Mais opções
+title_more_options: Mostra/oculta opções extras de validação
+all: Todos
+normal_report: Relatório normal
+most_important: Mais importantes
+no_warnings: Sem alertas
+profile: Perfil
+no_special_profile: Nenhum perfil especial
+css1: CSS nível 1
+css2: CSS nível 2
+css21: CSS nível 2.1
+css3: CSS nível 3
+SVG: SVG
+svgbasic: SVG Basic
+SVG_basic: SVG Basic
+svgtiny: SVG Tiny
+SVG_tiny: SVG Tiny
+mobile: Móvel
+ATSC_TV_profile: Perfil TV ATSC 
+TV_profile: Perfil TV
+medium: Mídias
+aural: Auditiva
+braille: Escrita braille
+embossed: Impressora braille
+handheld: Dispositivos portáteis
+print: Impressa
+projection: Projeção
+screen: Tela
+tty: Teletipo
+tv: Televisão
+presentation: Apresentação
+type: Tipo
+no_special_type: Automático
+html_doc: HTML
+css_doc: CSS
+check: Verificar
+W3C_CSS_validation_service: Serviço de validação de CSS do W3C
+check_CSS: Analisa folhas de estilo em cascata (CSS) e documentos (X)HTML com folha de estilo
+by_URI: Por URI
+by_file_upload: Por upload de arquivo
+by_direct_input: Por entrada direta
+validate_by_URI: Validar por URI
+enter_uri: Entre a URI do documento (HTML com CSS ou somente CSS) a ser validado
+page_address: Endereço da página a ser validada
+address: Endereço
+submit_uri: Enviar URI para validação
+validate_by_file_upload: Validar por upload de arquivo
+choose_document: Escolha o documento que você gostaria de validar
+choose_local_file: Escolha o arquivo local que você gostaria de validar
+local_CSS_file: Arquivo CSS local
+submit_file: Enviar arquivo para validação
+validate_by_input: Validar por entrada direta
+enter_CSS: Entre as CSS que você gostaria de validar
+submit_input: Enviar CSS para validação
+note: Nota
+note_xhtml_valid: Para validar uma folha de estilo CSS incorporada a um documento (X)HTML você deverá, primeiramente, <a href="http://validator.w3.org/">verificar se a marcação (X)HTML é válida</a>
+# End of variables added along with Index page template
+
+W3C_validator_results: Resultados da validação CSS do W3C para
+# file_title: <!-- provided by user -->
+CSS_validation_service: Serviço de validação CSS
+jump_to: Ir para
+# errors_count: <!-- generated on the fly -->
+errors: Erros
+# warnings_count <!-- generated on the fly -->
+warnings: Alertas
+validated_CSS: CSS validada
+congrats: Parabéns! Não foram encontrados erros na sua folha de estilo.
+# The sentence defined by doc_validates_before_link and doc_validates_after_link variables goes: \
+# "This document validates as CSSXX!" where XX stands for the CSS version used \
+# Since the content of the link about the CSS version is generated on the fly, \
+# it is important to define what goes before the link and what goes afterwards in 2 separate \
+# variables because the position of the link in the sentence varies in different languages
+doc_validates_before_link: Este documento é válido para as
+doc_validates_after_link: !
+no_errors_interoperable_msg: Para mostrar aos seus leitores que você teve o cuidado de criar \
+ uma página web interoperável, você pode inserir um selo nas páginas válidas. Veja a seguir o \
+código XHTML a ser usado para mostrar na sua página o citado selo:
+valid_CSS: CSS válido!
+# <!-- close the img tag with > instead of /> if using HTML<= 4.01 -->
+no_errors_close_tags_msg: Se a sua marcação foi escrita com HTML versão 4.01 ou menor a \
+tag de fechamento do elemento img deverá ser &gt; no lugar de /&gt;, como mostrado.
+no_errors_dl_local_msg: Se você preferir, pode fazer o download da imagem do selo de validação \
+ e hospedá-la no seu servidor, mas neste caso não se esqueça de alterar o endereço da imagem no \
+ fragmento de código mostrado.
+no_errors_create_link_msg: se você quiser criar um link para esta página (isto é, o resultado da validação) \
+com a finalidade de facilitar futuras revalidações, ou mesmo permitir que seus leitores \
+verifiquem a validação da página, o endereço URI é mostrado a seguir:
+no_errors_forHTML_only_msg: Somente para documentos HTML/XML
+no_errors_bookmark_msg: Ou, você pode adicionar esta página à sua lista de favoritos.
+note_valide_html: Para surtir os efeitos de estilização pretendidos sua folha de estilo CSS precisa estar atrelada a um documento capaz de criar uma árvore possível de ser parseada. Em outras palavras: o documento deverá estar escrito em linguagem <a href="http://validator.w3.org/">HTML válida</a>.
+top: Topo
+# hook_html_validator <!-- generated on the fly -->
+not-css1-style: /* CUIDADO ! Essa não é uma propriedade CSS1 válida ! */
+errors_sorry_msg: Lamento! Encontramos os seguintes erros
+# errors_list: <!-- generated on the fly -->
+# warnings_list: <!-- generated on the fly -->
+# rules_count: <!-- generated on the fly -->
+valid_CSS_info: Informações CSS válidas
+# charset: <!-- generated on the fly -->
+# rules_list: <!-- generated on the fly -->
+CSS_not_found: Não foi encontrada folha de estilo
+home: Home
+about: Sobre
+doc: Documentação
+dl: Download
+feedback: Feedback
+credits: Créditos
+home_title: Home page do serviço de validação do W3C
+about_title: Sobre esse serviço
+doc_title: Documentação para o serviço de validação do W3C
+dl_title: Download e instalação do validador CSS
+feedback_title: Como enviar seu feedback para este serviço
+credits_title: Créditos e agradecimentos
+W3C_quality_msg: W3C's Quality Assurance Activity, trazendo até você ferramentas livres para qualidade web e muito mais
+learn_more_msg: Saiba mais sobre folhas de estilo em cascata
+support: Dê suporte a essa ferramenta, torne-se um
+supporter: Suporte ao W3C
+# End of variables added along with Velocity
+
+# Defines your own error and warning message here
+content-type: text/html; charset=utf-8
+content-language: pt-br
+output-encoding-name: utf-8
+
+# You can change the level warning like this (example) :
+# warning.redefinition.level: 5
+#  level is an integer between 0 and 9 (all others values are ignored)
+warning.redefinition: Redefinição de %s
+
+# used by xml parser 
+warning.style-inside-comment: Não coloque regras de estilo dentro de sinais de comentários para HTML, pois poderão ser  removidas pelo agente de usuário.
+
+# used by org.w3c.css.properties.Css1Style
+warning.same-colors: Algumas cores %s e %s
+warning.no-color: Você não definiu uma cor (ou definiu como transparente) de frente, mas definiu cor de fundo. Certifique-se de que o efeito cascata para cores garante um contraste legível para os textos.
+warning.no-background-color: Você não definiu uma cor de fundo (ou definiu como transparente) mas definiu uma cor de frente. Certifique-se de que o efeito cascata para cores garante um contraste legível para os textos.
+#warning.color.mixed-capitalization is now obsolete
+#warning.color.mixed-capitalization: Although color names are case-insensitive, it is recommended to use the mixed capitalization, to make the names more legible: %s
+warning.no-generic-family: %s: É recomendável definir uma família de fontes genérica como última alternativa.
+warning.with-space: Nomes para família de fontes contendo espaços em branco devem estar entre aspas. \ 
+Se as aspas forem omitidas os espaços em branco antes e depois do nome serão ignorados e qualquer sequencia \
+de espaços dentro do nome será convertida em espaço único. 
+warning.no-padding: É recomendável definir uma área de enchimento (padding) com uma cor de fundo
+warning.same-colors2: Mesma cor para fundo e frente em dois contextos %s e %s
+warning.relative-absolute: Você definiu algumas medidas em unidades absolutas e relativas em %s. Esta não é uma definição robusta para estilos.
+# used by org.w3c.css.properties.CssSelectors
+warning.unknown-html: %s não é um elemento HTML
+warning.html-inside: Elemento HTML não pode estar contido dentro de outro elemento
+warning.body-inside: O elemento BODY não pode estar contido dentro de outro elemento que não seja o elemento HTML
+warning.pseudo-classes: pseudo-classes para âncoras %s não causam efeito em elementos que não seja o elemento 'A'
+
+# not used by org.w3c.css.properties.CssSelectors for the moment
+warning.noinside: %s não pode estar contido em um elemento inline
+warning.withblock: Cuidado. Pseudo-elementos podem ser anexados somente a elementos nível de bloco
+warning.block-level: Esta propriedade aplica-se a elementos nível de bloco.
+
+# used by org.w3c.css.parser.Frame
+warning.no-declaration: Regra sem declarações
+
+# used by org.w3c.css.parser.CssFouffa
+warning.unsupported-import: Não é possível verificar folhas de estilo importadas quando se opta por verificação por entrada direta ou por upload.
+
+# used by org.w3c.css.values.CssColor
+warning.out-of-range: %s está fora da faixa
+error.invalid-color: Função RGB inválida
+
+warning.marker: A propriedade marker-offset aplica-se a elementos com a declaração 'display: marker'
+
+# used by org.w3c.css.properties.ACssStyle
+warning.relative: Usar unidade de medida relativa torna a estilização mais robusta para a propriedade %s
+
+# used by org.w3c.css.css.StyleSheetParser and org.w3c.css.css.StyleSheetXMLParser
+error.at-rule: Lamento, a at-rule %s não está implementada.
+
+# used by all properties and values
+error.operator: %s é um operador incorreto
+error.negative-value: %s valores negativos não são permitidos
+error.few-value: poucos valores para a propriedade %s
+
+# be careful here, values comes first
+# You can't write something like this : For the color, blue is an incorrect value
+error.value: %s não é um valor %s
+
+#used by org.w3c.css.properties3.CssToggleGroup
+error.groupname: %s não é um nome de grupo correto. Use um identificador válido
+
+#used by org.w3c.css.properties3.CssGroupReset
+error.nogroup: %s não foi definido pela propriedade toggle-group
+
+#used by org.w3c.css.properties3.CssGlyphOrVert
+error.anglevalue: O valor deve estar entre -360 e 360 e ser divisível por 90
+
+#used by org.w3c.css.properties3.CssTextKashidaSpace
+error.percentage: é esperado um valor em porcentagem 
+
+#used by org.w3c.css.properties.CssTextAlign
+warning.xsl: o valor %s aplica-se somente à XSL
+
+#used by org.w3c.css.parser.analyzer.CssParser
+warning.medialist: lista para mídia deve começar com 'media :' %s
+error.nocomb: O elemento de combinação %s, entre seletores, não é permitido neste perfil ou versão
+
+#used by org.w3c.css.properties.CssDirection
+warning.direction: em lugar de usar 'direction' para elementos nível de bloco use a nova propriedade CSS3 'writing-mode'
+
+# used by org.w3c.css.properties.CssTextDecoration
+error.same-value: %s aparece duas vezes
+
+error.generic-family.quote: Família de fontes genéricas é declarada com palavra-chave, assim não deve estar entre aspas.
+
+# used by org.w3c.css.properties.CssClip
+error.shape: Definição de forma inválida rect(<top>,<right>,<bottom>,<left>)
+error.shape-separator: O separador usado na definição de forma é inválido. O separador deve ser uma vírgula.
+
+# used by org.w3c.css.properties.CssContent
+error.attr: Definição inválida para attr attr(X)
+error.function: Definição inválida para função 
+error.counter: Definição inválida para counter counter(<identifier>[,<list-style-type>]?)
+error.counters: Definição inválida para counters counters(<identifier>,<string>[,<list-style-type>]?)
+
+# used by org.w3c.css.font.Src
+error.format: Definição inválida para format format(<string>[,<string>]*)
+error.local: Definição inválida para format  local(<string>|<ident>+)
+
+# used by org.w3c.css.values.CssAngle, org.w3c.css.values.CssFrequency, org.w3c.css.values.CssTime, org.w3c.css.values.CssLength
+error.unit: %s é uma unidade incorreta
+
+# used by org.w3c.css.aural.ACssAzimuth
+error.degree: A posição deve ser definida em graus (degrees).
+
+# used by org.w3c.css.aural.ACssElevation
+error.elevation.range: Define a elevação (elevation) com um ângulo entre '-90graus' e '90graus'.
+
+# used by org.w3c.css.aural.ACssPitchRange
+error.range: O valor está fora da faixa. A faixa vai de '0' a '100'.
+
+# used by org.w3c.css.properties.CssTextShadow
+error.two-lengths: Offset para a sombra foi definido com uso de dois valores <length> (Opcionalmente, pode ser definido um raio para blur logo após o offset para a sombra.)
+
+error.integer: This number should be an integer.
+error.comma: Ausência da vírgula separadora.
+
+# used by org.w3c.css.values.CssPercentage
+error.percent: %s é um valor incorreto para porcentagem
+
+# used by org.w3c.css.values.CssString
+error.string: %s é uma string incorreta
+
+# used by org.w3c.css.values.CssURL
+error.url: %s é uma URL incorreta
+
+# used by org.w3c.css.values.CssColor
+error.rgb: %s é uma cor inválida 3 ou 6 números hexadecimais são requeridos
+error.angle: %s é um ângulo inválido. O valor deve estar entre 0 e 360
+
+# used by org.w3c.css.values.CssNumber
+error.zero: somente 0 pode ser um(a) %s. Você deve declarar uma unidade de medida para o número
+
+# used by org.w3c.css.parser.CssPropertyFactory
+error.noexistence-at-all: A propriedade %s não existe
+error.noexistence-media: A propriedade %s não existe para a mídia %s
+error.noexistence: A propriedade %s não existe em %s mas existe em %s
+warning.noexistence: A propriedade %s não existe em %s mas existe em %s
+warning.noexistence-media: A propriedade %s não existe para a mídia %s
+warning.notforusermedium : A propriedade %s não existe para esta mídia de usuário
+warning.noothermedium : Propriedades para outras mídias poderão não funcionar para mídia de usuário
+# used by org.w3c.css.parser.AtRule*
+error.noatruleyet: Outras @rules que não seja @import não são suportadas em CSS1 %s
+# used by org.w3c.css.parser.analyzer.CssParser
+error.notforcss1: O valor %s não existe em CSS1
+warning.pseudo: Pseudo-elemento ou pseudo classe %s no perfil padrão (%s)
+warning.nocomb: O elemento de combinação %s entre seletores não é permitido neste perfil (%s)
+warning.charsetspecial: Este perfil tem uma sintaxe bem específica para @charset: \
+@charset seguido por exatamente um espaço em branco, seguido pelo nome de uma codificação \
+entre aspas, imediatamente seguido por ponto-e-vírgula.
+warning.notversion: %s não pode ser usado(a) com esta versão CSS : %s
+
+# used by org.w3c.css.parser.CssFouffa
+error.unrecognize: Presença de muitos valores ou valores não reconhecidos
+
+# used by org.w3c.css.parser.CssFouffa
+generator.unrecognize: Erro de parseamento
+
+# used by org.w3c.css.css.StyleSheetGeneratorHTML2
+error.unknown: Erro desconhecido
+
+# used by org.w3c.css.parser.CssSelectors
+error.pseudo-element: O pseudo-elemento %s ão pode aparecer nesse contexto HTML %s
+error.pseudo-class: A pseudo classe .%s não pode aparecer nesse contexto HTML  %s
+error.pseudo: Pseudo-elemento ou pseudo classe %s desconhecido
+error.id: O seletor ID #%s é inválido! Somente um seletor ID pode ser definido em um seletor simples: %s.
+error.space: Se o seletor de atributo ~= é usado, a palavra no valor %s não deve conter espaços.
+error.todo : Lamento. A funcionalidade %s ainda não foi implementada.
+error.incompatible: %s e %s são incompatíveis
+warning.incompatible: %s e %s são incompatíveis
+error.notformobile: %s não pode ser usada com perfil mobile
+error.notforatsc: %s não pode ser usada com perfil ATSC 
+error.notfortv: %s não pode ser usada com perfil TV
+error.notversion: %s não pode ser usada com esta versão de CSS : %s
+
+error.media: unrecognized media %s 
+error.page: não reconhecido o pseudo nome da página page %s
+
+error.unrecognized.link: Elemento link não reconhecido ou xml-stylesheet PI.
+
+# used by StyleSheetGeneratorHTML
+generator.context: Contexto
+generator.request: Ocorreu um erro ao tentar carregar sua folha de estilo. \
+Por favor verifique sua requisição ou envie um e-mail para plh@w3.org.
+generator.unrecognized: Não reconhecido
+generator.invalid-number: Número inválido
+generator.property: Erro de valor
+generator.line: Linha
+generator.not-found: Arquivo não encontrado
+
+generator.doc-html:   <!-- removed this confusing message olivier 2006-12-14 -->
+generator.doc:  <!-- removed this confusing message olivier 2006-12-14 -->
+
+
+# used by the parser
+parser.semi-colon: tentativa de encontrar um ponto-e-vírgula antes da propriedade. Coloque o ponto-e-vírgula
+
+parser.old_class: Em CSS1, um nome de classe pode começar com um dígito (".55ft"), \
+a menos que seja uma dimensão (".55in"). Em CSS2, tais ids são parseadas como \
+dimensões desconhecidas (com a finalidade de permitir adições futuras de novas unidades). \
+Para que ".%s" seja uma classe válida, CSS2 requer que o primeiro dígito seja escapado ".\3%s"
+
+parser.old_id: Em CSS1, um nome de id pode começar com um dígito ("#55ft"), \
+a menos que seja uma dimensão ("#55in"). Em CSS2, tais ids são parseadas como \
+dimensões desconhecidas (com a finalidade de permitir adições futuras de novas unidades).
+
+parser.class_dim: Em CSS1, um nome de classe pode começar com um dígito (".55ft"), \
+a menos que seja uma dimensão (".55in").
+
+parser.id_dim: Em CSS1, um nome de id pode começar com um dígito ("#55ft"), \
+a menos que seja uma dimensão ("#55in").
+
+parser.charset: A diretiva @charset deve ser declarada no início da folha \
+de estilo. Por favor assegure-se de que não há espaços em branco antes da declaração.
+
+parser.charsetspecial: Este perfil tem uma sintaxe bem específica para @charset: \
+@charset seguido por exatamente um espaço em branco, seguido pelo nome de uma codificação \
+entre aspas, imediatamente seguido por ponto-e-vírgula.
+
+warning.old_id: Em CSS1, um id pode começar com um dígito ("#55ft"), \
+a menos que seja uma dimensão ("#55in"). Em CSS2, tais ids são parseadas como \
+dimensões desconhecidas (com a finalidade de permitir adições futuras de novas unidades).
+
+warning.old_class: Em CSS1, um nome de classe pode começar com um dígito ("#55ft"), \
+a menos que seja uma dimensão ("#55in"). Em CSS2, tais ids são parseadas como \
+dimensões desconhecidas (com a finalidade de permitir adições futuras de novas unidades).
+
+# used by the servlet
+servlet.invalid-request: Você enviou uma requisição inválida.
+servlet.process: Impossível processar o objeto
+
+warning.atsc: %s pode não ser suportada pela mídia atsc-tv
+error.onlyATSC: %s esta função é exclusiva para a mídia atsc-tv
+
+warning.otherprofile: A propriedade %s não existe nesse perfil, mas valida em outro perfil.
+warning.deprecated: este valor está em desuso
+parser.unknown-dimension: Dimensão desconhecida
+generator.dontmixhtml: Erro de parseamento. Sintaxe HTML não é permitida em folhas de estilo
+
+warning.float-no-width: Em (x)HTML+CSS elementos flutuados devem ter uma declaração de largura. Somente elementos flutuados que possuam largura explícita (html, img, input, textarea, select, ou object) dispensam a declaração.
+parser.charsetcss1: A diretiva @charset não é permitida nas CSS1
+parser.attrcss1: Seletores de atributo não são válidos nas CSS1
+parser.invalid_id_selector: Seletor ID inválido
+parser.import_not_allowed: Não é permitido o uso da diretiva @import após uma declaração que não seja @charset ou outra @import.
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/Messages.properties.ru	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,354 @@
+# Russian translation, last updated in sync with Messages.properties.en,v 1.31
+
+direction: ltr
+language_name: Русский
+more_options: Дополнительные возможности
+title_more_options: Показать/скрыть дополнительные возможности
+all: Все
+normal_report: Обычный отчет
+most_important: Наиболее важные
+no_warnings: Без предупреждений
+profile: Профиль
+no_special_profile: Без специальных настроек
+css1: CSS1
+css2: CSS2
+css21: CSS2.1
+css3: CSS3
+SVG: SVG
+SVG_basic: SVG Basic
+SVG_tiny: SVG tiny
+svgbasic: SVG Basic
+svgtiny: SVG tiny
+mobile: Мобильный
+ATSC_TV_profile: телевидение ATSC
+TV_profile: телевидение
+medium: Среда
+aural: аудио (aural)
+braille: терминал Брайля (braille)
+embossed: постраничный принтер Брайля (embossed)
+handheld: портативное устройство (handheld)
+print: печатная продукция (print)
+projection: проектор (projection)
+screen: дисплей (screen)
+tty: телетайп (tty)
+tv: телевизор (tv)
+presentation: презентация (presentation)
+type: Тип документа
+no_special_type: определить автоматически
+html_doc: HTML
+css_doc: CSS
+check: Проверить
+W3C_CSS_validation_service: сервис проверки CSS от W3C
+check_CSS: Проверка каскадных таблиц стилей (CSS) и документов (X)HTML с таблицами стилей
+by_URI: Проверить URI
+by_file_upload: Проверить загруженный файл
+by_direct_input: Проверить набранный текст
+validate_by_URI: Проверка по URI
+enter_uri: Введите URI документа (HTML с CSS или только CSS) для проверки
+page_address: Адрес страницы для проверки
+address: Адрес
+submit_uri: Отправить URI для проверки
+validate_by_file_upload: Проверить загруженный файл
+choose_document: Выберите документ, который вы хотели бы проверить
+choose_local_file: Выберите локальный файл для загрузки и проверки
+local_CSS_file: Локальный файл CSS
+submit_file: Отправить файл для проверки
+validate_by_input: Проверка набираемого текста
+enter_CSS: Введите код CSS, который вы хотели бы проверить на корректность
+submit_input: Проверить введенные данные
+note: Примечание
+note_xhtml_valid: Если вы хотите проверить каскадные таблицы стилей, встроенные в документ (X)HTML, вы должны сначала <a href="http://validator.w3.org/">проверить на корректность сам документ (X)HTML</a>
+# End of variables added along with Index page template
+
+W3C_validator_results: W3C результаты проверки CSS для
+# file_title: <!-- provided by the user -->
+CSS_validation_service: Сервис проверки CSS
+jump_to: Перейти к
+# errors_count: <!-- generated on the fly -->
+errors: Ошибки
+# warnings_count <!-- generated on the fly -->
+warnings: Предупреждения
+validated_CSS: Проверенный CSS
+congrats: Поздравляем! Ошибок не обнаружено.
+# The sentence defined by doc_validates_before_link and doc_validates_after_link variables goes: \
+# "This document validates as CSSXX!" where XX stands for the CSS version used \
+# Since the content of the link about the CSS version is generated on the fly, \
+# it is important to define what goes before the link and what goes afterwards in 2 separate \
+# variables because the position of the link in the sentence varies in different languages
+doc_validates_before_link: Этот документ проходит проверку по стандарту
+doc_validates_after_link: !
+no_errors_interoperable_msg: Для того, чтобы продемонстрировать посетителям, что вы заботитесь о создании корректных страниц, вы можете разместить этот знак на любой проверенной странице. Вот код XHTML \
+для размещения:
+valid_CSS: Правильный CSS!
+# <!-- close the img tag with > instead of /> if using HTML<= 4.01 -->
+no_errors_close_tags_msg: закройте тег img, используя &gt; вместо /&gt, если используете HTML &lt;= 4.01
+no_errors_dl_local_msg: Если хотите, то можете загрузить копию изображения для хранения непосредственно на сайте и изменить приведенный выше код XHTML, чтобы ссылаться на локальную версию.
+no_errors_create_link_msg: Если Вы хотите создать ссылку на эту страницу (т.е., на результаты этой \
+проверки) для облегчения последующих перепроверок вами или другими людьми, то воспользуйтесь следующим URI:
+no_errors_forHTML_only_msg: только для документов HTML/XML
+no_errors_bookmark_msg: Или можете просто добавить данную страницу в закладки.
+note_valide_html: Для корректной работы сервиса проверки CSS необходимо чтобы ваши документы \ 
+имели правильную древовидную разметку. Это обозначает, что вы должны использовать <a href="http://validator.w3.org/">корректный HTML</a>.
+top: Наверх
+# hook_html_validator <!-- generated on the fly -->
+not-css1-style: /* ОСТОРОЖНО! Не является свойством CSS1 ! */
+errors_sorry_msg: К сожалению, мы обнаружили следующие ошибки
+# errors_list: <!-- generated on the fly -->
+# warnings_list: <!-- generated on the fly -->
+# rules_count: <!-- generated on the fly -->
+valid_CSS_info: Информация о корректном CSS
+# charset: <!-- generated on the fly -->
+# rules_list: <!-- generated on the fly -->
+CSS_not_found: Не найдено ни одной каскадной таблицы стилей
+home: Главная
+about: О сервисе
+doc: Документация
+dl: Скачать
+feedback: Отзывы
+credits: Создатели
+home_title: Главная страница сервиса проверки CSS от W3C
+about_title: О данном сервисе
+doc_title: Документация по сервису проверки CSS от W3C
+dl_title: Загрузка и установка сервиса проверки CSS
+feedback_title: Как оставить отзыв о сервисе
+credits_title: Создатели
+W3C_quality_msg: Группа W3C по поддержке качества, предлагающая бесплатные инструменты вроверки качества и другие ресурсы
+learn_more_msg: Подробнее о таблицах каскадных стилей CSS
+support: Поддержите этот инструмент, станьте
+supporter: человеком, поддерживающим W3C
+# End of variables added along with Velocity
+
+# Defines your own error and warning message here
+content-type: text/html; charset=utf-8
+content-language: ru
+output-encoding-name: utf-8
+
+# You can change the level warning like this (example) :
+# warning.redefinition.level: 5
+#  level is an integer between 0 and 9 (all others values are ignored)
+warning.redefinition: Переопределение %s
+
+# used by xml parser 
+warning.style-inside-comment: Do not put style rules inside HTML comments as they may be removed by user agent
+
+# used by org.w3c.css.properties.Css1Style
+warning.same-colors: Одинаковые цвета для %s и %s
+warning.no-color: Вы не указали цвет атрибута color (или он установлен прозрачным), но указали атрибут background-color. Убедитесь, что последовательность цветов сохраняет текст читаемым.
+warning.no-background-color: Вы не указали цвет фона background-color (или background-color установлен прозрачным), но задали цвет color. Убедитесь, что последовательность цветов сохраняет текст читаемым.
+#warning.color.mixed-capitalization is now obsolete
+#warning.color.mixed-capitalization: Although color names are case-insensitive, it is recommended to use the mixed capitalization, to make the names more legible: %s
+warning.no-generic-family: %s: рекомендуется предлагать в качестве последней альтернативы базовое семейство шрифтов
+warning.with-space: Имена, содержащие пробелы, должны заключаться в кавычки. Если кавычки пропущены, любые пробелы до или после имени игнорируются, а последовательности пробелов внутри имени преобразуются в единичный пробел.
+warning.no-padding: С фоновым цветом рекомендуется использовать отступы (padding)
+warning.same-colors2: Одинаковые цвета для текста и фона используются в следующих местах: %s и %s
+warning.relative-absolute: В %s используется абсолютные и относительные значения длины. Это ненадежная таблица стилей.
+# used by org.w3c.css.properties.CssSelectors
+warning.unknown-html: %s не является элементом HTML
+warning.html-inside: элемент HTML не может быть внутри другого элемента
+warning.body-inside: элемент BODY не может встречаться внутри другого элемента, за исключением HTML
+warning.pseudo-classes: Якорь псевдокласса %s не используется для элементов, за исключением A
+
+# not used by org.w3c.css.properties.CssSelectors for the moment
+warning.noinside: %s не может быть внутри элемента строкового типа
+warning.withblock: Будьте осторожны! Псевдоэлементы могут быть привязаны только к блочным элементам
+warning.block-level: Это свойство применяется к блочным элементам.
+
+# used by org.w3c.css.parser.Frame
+warning.no-declaration: В правиле нет определений
+
+# used by org.w3c.css.parser.CssFouffa
+warning.unsupported-import: Импортируемые таблицы стилей не проверяются в режиме загрузки и прямого ввода
+
+# used by org.w3c.css.values.CssColor
+warning.out-of-range: %s лежит вне диапазона допустимых значений
+error.invalid-color: Неправильная функция RGB
+
+warning.marker: Свойство marker-offset применяется к элементам типа display: marker
+
+# used by org.w3c.css.properties.ACssStyle
+warning.relative: Использование относительных единиц измерения в свойстве %s делают таблицы стилей более надежными
+
+# used by org.w3c.css.css.StyleSheetParser and org.w3c.css.css.StyleSheetXMLParser
+error.at-rule: Извините, но правило %s не реализовано.
+
+# used by all properties and values
+error.operator: %s — некорректный оператор
+error.negative-value: %s отрицательные значения недопустимы
+error.few-value: слишком мало значений для свойства %s
+
+# be careful here, values comes first
+# You can't write something like this : For the color, blue is an incorrect value
+error.value: %s не является значением %s 
+
+#used by org.w3c.css.properties3.CssToggleGroup
+error.groupname: %s не является корректным именем группы. Используйте правильный идентификатор
+
+#used by org.w3c.css.properties3.CssGroupReset
+error.nogroup: %s не установлено свойством toggle-group 
+
+#used by org.w3c.css.properties3.CssGlyphOrVert
+error.anglevalue: Значение должно быть между -360 и 360 и кратно 90
+
+#used by org.w3c.css.properties3.CssTextKashidaSpace
+error.percentage: ожидается значение в процентах
+
+#used by org.w3c.css.properties.CssTextAlign
+warning.xsl: значение %s применяется только к XSL
+
+#used by org.w3c.css.parser.analyzer.CssParser
+warning.medialist: список сред должен начинаться с ‘media :’ %s
+error.nocomb: Комбинатор селекторов %s не допустим в этом профиле или в этой версии
+
+#used by org.w3c.css.properties.CssDirection
+warning.direction: для блочных элементов вместо direction используйте новое свойство CSS3 writing-mode
+
+# used by org.w3c.css.properties.CssTextDecoration
+error.same-value: %s объявлено дважды
+
+error.generic-family.quote: имена базовых семейств являются ключевыми словами и не должны заключаться в кавычки.
+
+# used by org.w3c.css.properties.CssClip
+error.shape: Неправильное определение положения rect(<top>,<right>,<bottom>,<left>)
+error.shape-separator: Неправильный разделитель в определении положения. Должна использоваться запятая.
+
+# used by org.w3c.css.properties.CssContent
+error.attr: Неправильное определение attr(X)
+error.function: Неправильное объявление функции
+error.counter: Неправильное объявление counter(<identifier>[,<list-style-type>]?)
+error.counters: Неправильное объявление counters(<identifier>,<string>[,<list-style-type>]?)
+
+# used by org.w3c.css.font.Src
+error.format: Неправильное объявление формата format(<string>[,<string>]*)
+error.local: Неправильное объявление формата local(<string>|<ident>+)
+
+# used by org.w3c.css.values.CssAngle, org.w3c.css.values.CssFrequency, org.w3c.css.values.CssTime, org.w3c.css.values.CssLength
+error.unit: %s некорректная единица измерения
+
+# used by org.w3c.css.aural.ACssAzimuth
+error.degree: Позиция должна задаваться в градусах.
+
+# used by org.w3c.css.aural.ACssElevation
+error.elevation.range: Указывает возвышение как угол между -90deg и 90deg.
+
+# used by org.w3c.css.aural.ACssPitchRange
+error.range: Значение вне допустимых пределов. Значение должно быть между 0 и 100.
+
+# used by org.w3c.css.properties.CssTextShadow
+error.two-lengths: Смещение тени задается двумя значениями длины (радиус размытия может быть дополнительно указан после смещения).
+
+error.integer: Это число должно быть целым
+error.comma: Пропущена разделительная запятая
+
+# used by org.w3c.css.values.CssPercentage
+error.percent: %s некорректное процентное значение
+
+# used by org.w3c.css.values.CssString
+error.string: %s некорректное строковое значение
+
+# used by org.w3c.css.values.CssURL
+error.url: %s некорректный URL
+
+# used by org.w3c.css.values.CssColor
+error.rgb: %s не является допустимым цветом из 3 или 6 шестнадцатеричных цифр
+error.angle: %s не является допустимым углом. Значение должно быть между 0 и 360
+
+# used by org.w3c.css.values.CssNumber
+error.zero: только 0 может быть %s. Вы должны указать после числа единицы измерения
+
+# used by org.w3c.css.parser.CssPropertyFactory
+error.noexistence-at-all: Свойство %s не существует
+error.noexistence-media: Свойство %s не существует для среды %s
+error.noexistence: Свойство %s не существует в %s, но существует в %s
+warning.noexistence: Свойство %s не существует в %s но существует в %s
+warning.noexistence-media: Свойство %s не существует для среды %s
+warning.notforusermedium : Свойство %s не существует для указанной пользователем среды
+##################
+warning.noothermedium : Свойства для других сред могут не работать в указанной пользователем среде
+# used by org.w3c.css.parser.AtRule*
+error.noatruleyet: Правила @rules, за исключением @import, не поддерживаются стандартом CSS1 %s
+# used by org.w3c.css.parser.analyzer.CssParser
+error.notforcss1: Значение %s не существует для CSS1
+warning.pseudo: Неизвестный псевдоэлемент или псевдокласс %s в профиле по умолчанию (%s)
+warning.nocomb: комбинатор селекторов %s не допустим в данном профиле (%s)
+warning.charsetspecial: Этот профиль использует особенный синтаксис @charset: после @charset идет ровно один пробел, после которого идет имя кодировки в кавычках, сразу же закрывающееся точкой с запятой.
+warning.notversion: %s не может быть использовано в CSS версии %s
+
+# used by org.w3c.css.parser.CssFouffa
+error.unrecognize: Слишком много значений или нераспознанное значение
+
+# used by org.w3c.css.parser.CssFouffa
+generator.unrecognize: Ошибка разбора
+
+# used by org.w3c.css.css.StyleSheetGeneratorHTML2
+error.unknown: Неизвестная ошибка
+
+# used by org.w3c.css.parser.CssSelectors
+error.pseudo-element: Псевдоэлемент %s не может появляться в %s
+error.pseudo-class: Псевдокласс %s не может располагаться здесь в HTML %s
+error.pseudo: Неизвестный псевдоэлемент или псевдокласс %s
+error.id: Неправильный идентификатор селектора #%s! В простом селекторе может быть указан только один идентификатор: %s.
+error.space: Если используется селектор атрибута ~=, то слово в значении %s не должно содержать пробелов.
+error.todo : К сожалению, %s еще не реализовано.
+error.incompatible: %s и %s не совместимы
+warning.incompatible: %s и %s не совместимы
+error.notformobile: %s не может быть использовано с профилем mobile
+error.notforatsc: %s не может быть использовано с профилем ATSC
+error.notfortv: %s не может быть использовано с профилем TV
+error.notversion: %s не может быть использовано с данной версией CSS %s
+
+error.media: нераспознаная среда %s
+error.page: нераспознанная псевдоименованная страница %s
+
+error.unrecognized.link: Нераспознанная ссылка или инструкция обработки с таблицей стилей XML.
+
+# used by StyleSheetGeneratorHTML
+generator.context: Контекст
+generator.request: В процессе вывода вашей таблицы стилей возникла ошибка. Пожалуйста, исправьте запрос или пошлите письмо на plh@w3.org.
+generator.unrecognized: Не распознано
+generator.invalid-number: Некорректное число
+generator.property: Ошибка значения
+generator.line: Строка
+generator.not-found: Файл не найден
+
+generator.doc-html:   <!-- removed this confusing message olivier 2006-12-14 -->
+generator.doc:  <!-- removed this confusing message olivier 2006-12-14 -->
+
+
+# used by the parser
+parser.semi-colon: попытка найти точку с запятой до имени свойства. добавьте ее
+
+parser.old_class: В CSS1 имя класса могло начинаться с цифры (#55ft), если это размерность (#55in). В CSS2 такие идентификаторы  считаются неизвестными размерами (для добавления единиц измерения в будущем). Чтобы “.%s” являлся правильным классом, CSS2 требует, чтобы начальные цифры были экранированы “.\3%s”
+
+parser.old_id: В CSS1 идентификатор мог начинаться с цифры (#55ft), если это не размерность (#55in). В CSS2 такие идентификаторы  считаются неизвестными размерами (для добавления единиц измерения в будущем).
+
+parser.class_dim: В CSS1 имя класса могло начинаться с цифры (.55ft), если это не размерность (.55in).
+
+parser.id_dim: В CSS1 идентификатор мог начинаться с цифры (#55ft), если это не размерность (#55in).
+
+parser.charset: Правило @charset может появляться только в начале описания стиля. Пожалуйста, проверьте, нет ли перед ним пробелов.
+
+parser.charsetspecial: Этот профиль имеет специфический синтаксис @charset: после @charset идет ровно один пробел, за которым следует название кодировки в кавычках, за которой сразу следует точка с запятой.
+
+warning.old_id: В CSS1 идентификатор мог начинаться с цифры (#55ft), если это не размерность (#55in). В CSS2 такие идентификаторы  считаются неизвестными размерами (для добавления единиц измерения в будущем).
+
+warning.old_class: В CSS1 имя класса могло начинаться с цифры (#55ft), если это не размерность (#55in). В CSS2 такие идентификаторы считаются неизвестными размерами (для добавления единиц измерения в будущем).
+
+# used by the servlet
+servlet.invalid-request: Передан неправильный запрос
+servlet.process: Не могу обработать объект
+
+warning.atsc: %s может не поддерживаться устройством atsc-tv
+error.onlyATSC: %s эта функция используется только в среде atsc-tv
+
+warning.otherprofile: свойство %s не существует для данного профиля, но оно проверяется в соответствии с другим профилем
+warning.deprecated: это значение является нежелательным
+
+generator.dontmixhtml: Ошибка парсера: в таблицах стилей не должно быть HTML разметки
+parser.unknown-dimension: Неизвестные размеры
+
+warning.float-no-width: В (x)HTML+CSS, у плавающих элементов должна быть объявленна ширина. Только элементы с внутренней шириной (html, img, input, textarea, select или object) не затрагиваются.
+parser.charsetcss1: Правила @charset не могут быть использованы в CSS1
+parser.attrcss1: Селекторы атрибутов недействительны в CSS1
+parser.invalid_id_selector: Неправильный ID селектора
+parser.import_not_allowed: @import не разрешен после любых правильных объявлений кроме @charset и @import.
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/Messages.properties.sv	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,376 @@
+# Swedish translation, last updated in sync with Messages.properties.en,v 1.31
+
+direction: ltr
+language_name: Svenska
+more_options: Fler val
+title_more_options: Visa/Dölj andra valideringsval
+all: Alla
+normal_report: Normal rapport
+most_important: Mest viktigt
+no_warnings: Inga varningar
+profile: Profil
+no_special_profile: Ingen speciell profil
+css1: CSS nivå 1
+css2: CSS nivå 2
+css21: CSS nivå 2.1
+css3: CSS nivå 3
+SVG: SVG
+svgbasic: SVG Basic
+svgtiny: SVG Tiny
+SVG_basic: SVG Basic
+SVG_tiny: SVG Tiny
+mobile: Mobil
+ATSC_TV_profile: ATSC TV-profil
+TV_profile: TV-profil
+medium: Medium
+aural: ljud
+braille: braille
+embossed: präglad
+handheld: handhållen
+print: skriv ut
+projection: projicering
+screen: skärm
+tty: TTY
+tv: TV
+presentation: presentation
+type: Typ
+no_special_type: Automatisk
+html_doc: HTML
+css_doc: CSS
+check: Granska
+W3C_CSS_validation_service: W3C:s CSS-valideringstjänst
+check_CSS: Granska Cascading Style Sheets (CSS) och (X)HTML-dokument med formatmallar
+by_URI: Genom URI
+by_file_upload: Genom filuppladdning
+by_direct_input: Genom direktinmatning
+validate_by_URI: Validera genom URI
+enter_uri: Mata in URI för det dokument (HTML med CSS eller enbart CSS) som du vill validera
+page_address: Adress för den sida som skall valideras
+address: Adress
+submit_uri: Skicka in URI för validering
+validate_by_file_upload: Validera genom att ladda upp fil
+choose_document: Välj det dokument som du vill validera
+choose_local_file: Välj en lokalt lagrad fil att ladda upp och validera
+local_CSS_file: Lokal CSS-fil
+submit_file: Skicka in fil för validering
+validate_by_input: Validera genom direkt inmatning
+enter_CSS: Mata in den CSS du vill validera
+submit_input: Skicka in data för validering
+note: Märk
+note_xhtml_valid: Om du vill validera din CSS-formatmall inbäddad i ett (X)HTML-dokument, så bör du först <a href="http://validator.w3.org/">kontrollera att den (X)HTML du använder är giltig</a>
+# End of variables added along with Index page template
+
+W3C_validator_results: W3C CSS-valideringsresultat för
+# file_title: <!-- provided by the user -->
+CSS_validation_service: CSS-valideringstjänst
+jump_to: Hoppa till
+# errors_count: <!-- generated on the fly -->
+errors: Fel
+# warnings_count <!-- generated on the fly -->
+warnings: Varningar
+validated_CSS: Validerad CSS
+congrats: Gratulerar! Inga fel har hittats
+# The sentence defined by doc_validates_before_link and doc_validates_after_link variables goes: \
+# "This document validates as CSSXX!" where XX stands for the CSS version used \
+# Since the content of the link about the CSS version is generated on the fly, \
+# it is important to define what goes before the link and what goes afterwards in 2 separate \
+# variables because the position of the link in the sentence varies in different languages
+doc_validates_before_link: Detta dokument valideras som
+doc_validates_after_link: !
+no_errors_interoperable_msg: För att visa dina läsare att du har lagt dig vinn om att skapa en interoperabel \
+webbsida, så kan du visa denna ikon på alla sidor som valideras. Här är den XHTML \
+du kan använda för att lägga till denna ikon på din webbsida:
+valid_CSS: Valid CSS!
+# <!-- close the img tag with > instead of /> if using HTML<= 4.01 -->
+no_errors_close_tags_msg: avsluta img-taggen med &gt; iställetr för med /&gt; om du använder HTML &lt;= 4.01
+no_errors_dl_local_msg: Om du vill så kan du ladda ner en kopia av denna bild och spara den i din lokala webb \
+katalog, och ändra XHTML-fragmentet ovan så att det refererar till din lokala bild \
+istället för bilden på denna server.
+no_errors_create_link_msg: Om du vill skapa en länk till denna sida (dvs detta validerings-\
+resultat) för att göra det lättare att validera denna sida i framtiden, eller för att låta \
+andra validera dina sidor, använd då URI:en: 
+no_errors_forHTML_only_msg: enbart för HTML-/XML-dokument
+no_errors_bookmark_msg: Eller så kan du helt enkelt lägga till denna sida till dina bokmärken eller snabblänkar.
+note_valide_html: För att fungera som avsett, så behöver din CSS-formatmall ett korrekt dokumentparseträd. Detta betyder att du bör använda <a href="http://validator.w3.org/">valid HTML</a>.
+top: Toppen
+# hook_html_validator <!-- generated on the fly -->
+not-css1-style: /* VAR FÖRSIKTIG! Detta är inte en CSS1-egenskap! */
+errors_sorry_msg: Ledsen! Vi har hittat följande fel
+# errors_list: <!-- generated on the fly -->
+# warnings_list: <!-- generated on the fly -->
+# rules_count: <!-- generated on the fly -->
+valid_CSS_info: Valid CSS-information
+# charset: <!-- generated on the fly -->
+# rules_list: <!-- generated on the fly -->
+CSS_not_found: Ingen formatmall upptäcktes
+home: Hem
+about: Om
+doc: Dokumentation
+dl: Ladda ner
+feedback: Synpunkter
+credits: Tack till
+home_title: Hemsida för W3C:s CSS-valideringstjänst
+about_title: Om denna tjänst
+doc_title: Dokumentation om W3C:s CSS-valideringstjänst
+dl_title: Ladda ner och installera CSS-valideraren
+feedback_title: Hur man kan ge synpunkter på denna tjänst
+credits_title: Hjälp och tack
+W3C_quality_msg: W3C:s kvalitetssäkringsaktivitet, ger dig gratis verktyg för webbkvalitet och annat
+learn_more_msg: Lär dig mer om Cascading Style Sheets
+support: Stöd detta verktyg, bli
+supporter: W3C Supporter
+# End of variables added along with Velocity
+
+# Defines your own error and warning message here
+content-type: text/html; charset=utf-8
+content-language: sv
+output-encoding-name: utf-8
+
+# You can change the level warning like this (example) :
+# warning.redefinition.level: 5
+# level is an integer between 0 and 9 (all others values are ignored)
+warning.redefinition: Omdefiniering av %s
+
+# used by xml parser 
+warning.style-inside-comment: Lägg inte stilregler inom HTML-kommentarer, eftersom de kan tas bort av användaragenten
+
+# used by org.w3c.css.properties.Css1Style
+warning.same-colors: Samma färg för %s och %s
+warning.no-color: Du har inte angett color (eller color anges som genomskinlig) men du har angett en background-color. Försäkra dig om att färgkaskader inte gör texten oläslig.
+warning.no-background-color: Du har inte angett background-color (eller background-color är angiven som genomskinlig) men du har angett color. Försäkra dig om att färgkaskader inte gär texten oläsbar.
+#warning.color.mixed-capitalization is now obsolete
+#warning.color.mixed-capitalization: Although color names are case-insensitive, it is recommended to use the mixed capitalization, to make the names more legible: %s
+warning.no-generic-family: %s: Du borde erbjuda en generisk familj som sista alternativ
+warning.with-space: Familjenamn som innehåller vita tecken skall anges inom citationstecken. Om citationstecken \
+utlämnas, så kommer inledande och avslutande vita tecken att ignoreras, och sekvenser av vita \
+tecken inom namnet att omvandlas till ett blanktecken. 
+warning.no-padding: Du bör ha ett utfyllnadsområde med bakgrundsfärg
+warning.same-colors2: Samma färg för color och background-color i två kontext %s och %s
+warning.relative-absolute: Du har använt både absolut och relativ längd i %s. Detta är inte en robust formatmall.
+# used by org.w3c.css.properties.CssSelectors
+warning.unknown-html: %s är inte ett HTML-element
+warning.html-inside: HTML-element kan inte förekomma inom ett annat element
+warning.body-inside: BODY-element kan inte vara inom ett annat element, förutom HTML
+warning.pseudo-classes: Anchor-pseudoklassen %s har ingen effekt på element andra än 'A'
+
+# not used by org.w3c.css.properties.CssSelectors for the moment
+warning.noinside: %s kan inte förekomma inom ett inline-element
+warning.withblock: Var försiktig. Pseudoelement kan bara knytas till blocknivåelement
+warning.block-level: Denna egenskap har effekt för blocknivåelement.
+
+# used by org.w3c.css.parser.Frame
+warning.no-declaration: Ingen deklaration i regeln
+
+# used by org.w3c.css.parser.CssFouffa
+warning.unsupported-import: Importerade formatmallar granskas inte vid direkt inmatning eller vid filuppladdning
+
+# used by org.w3c.css.values.CssColor
+warning.out-of-range: %s ligger utanför giltigt värdeområde
+error.invalid-color: Ogiltig RGB-funktion
+
+warning.marker: Egenskapen marker-offset är bara tillämpbar på element med 'display: marker'
+
+# used by org.w3c.css.properties.ACssStyle
+warning.relative: Relativa enheter ger mer robusta formatmallar i egenskap %s
+
+# used by org.w3c.css.css.StyleSheetParser and org.w3c.css.css.StyleSheetXMLParser
+error.at-rule: Tyvärr, at-regeln %s är inte implementerad.
+
+# used by all properties and values
+error.operator: %s är en ogiltig operator
+error.negative-value: %s negativa värden är inte tillåtna
+error.few-value: alltför få värden för egenskap %s
+
+# be careful here, values comes first
+# You can't write something like this : For the color, blue is an incorrect value
+error.value: %s är inte ett %s-värde
+
+#used by org.w3c.css.properties3.CssToggleGroup
+error.groupname: %s är inte ett giltigt gruppnamn. Använd en giltig identifierare
+
+#used by org.w3c.css.properties3.CssGroupReset
+error.nogroup: %s har inte satts av egenskapen toggle-group
+
+#used by org.w3c.css.properties3.CssGlyphOrVert
+error.anglevalue: Värdet måste vara mellan -360 och 360, och vara delbart med 90
+
+#used by org.w3c.css.properties3.CssTextKashidaSpace
+error.percentage: procentvärde förväntades
+
+#used by org.w3c.css.properties.CssTextAlign
+warning.xsl: värde %s är bara användbart för XSL
+
+#used by org.w3c.css.parser.analyzer.CssParser
+warning.medialist: medialista skall börja med 'media :' %s
+error.nocomb: Kombinator %s mellan selektorer kan inte användas i denna profil eller version
+
+#used by org.w3c.css.properties.CssDirection
+warning.direction: istället för att använda 'direction' för blocknivåelement, använd den nya CSS3-egenskapen 'writing-mode'
+
+# used by org.w3c.css.properties.CssTextDecoration
+error.same-value: %s förekommer två gånger
+
+error.generic-family.quote: Generiska familjenamn är nyckelord, och får därför inte anges inom citationstecken.
+
+# used by org.w3c.css.properties.CssClip
+error.shape: Ogiltig formdefinition rect(<top>,<right>,<bottom>,<left>)
+error.shape-separator: Ogiltig separator i formdefinition. Det måste vara ett kommatecken.
+
+# used by org.w3c.css.properties.CssContent
+error.attr: Ogiltig attr-definition attr(X)
+error.function: Ogiltig funktionsdefinition
+error.counter: Ogiltig counter-definition counter(<identifier>[,<list-style-type>]?)
+error.counters: Ogiltig counters-definition counters(<identifier>,<string>[,<list-style-type>]?)
+
+# used by org.w3c.css.font.Src
+error.format: Ogiltig format-definition format(<string>[,<string>]*)
+error.local: Ogiltig formatdefinition local(<string>|<ident>+)
+
+# used by org.w3c.css.values.CssAngle, org.w3c.css.values.CssFrequency, org.w3c.css.values.CssTime, org.w3c.css.values.CssLength
+error.unit: %s är en ogiltig enhet
+
+# used by org.w3c.css.aural.ACssAzimuth
+error.degree: Position måste anges i grader.
+
+# used by org.w3c.css.aural.ACssElevation
+error.elevation.range: Anger elevation som vinkel, mellan '-90deg' och '90deg'.
+
+# used by org.w3c.css.aural.ACssPitchRange
+error.range: Värdet ligger utanför giltigt värdeområde. Detta värde måste vara mellan '0' och '100'.
+
+# used by org.w3c.css.properties.CssTextShadow
+error.two-lengths: Ett skuggoffset anges med två <length>-värden (en suddradie kan anges efter skuggoffset.)
+
+error.integer: Detta tal måste vara ett heltal.
+error.comma: Kommatecken saknas.
+
+# used by org.w3c.css.values.CssPercentage
+error.percent: %s är en ogiltig procentsats
+
+# used by org.w3c.css.values.CssString
+error.string: %s är en ogiltig sträng
+
+# used by org.w3c.css.values.CssURL
+error.url: %s är en ogiltig URL
+
+# used by org.w3c.css.values.CssColor
+error.rgb: %s är inte en giltig färgangivelse som 3- eller 6-siffrigt hexadecimaltal
+error.angle: %s är inte en giltig vinkel. Värdet måste vara mellan 0 och 360
+
+# used by org.w3c.css.values.CssNumber
+error.zero: endast 0 kan vara en %s. Du måste ange en enhet efter ditt tal
+
+# used by org.w3c.css.parser.CssPropertyFactory
+error.noexistence-at-all: Egenskap %s finns inte
+error.noexistence-media: Egenskap %s finns inte för medium %s
+error.noexistence: Egenskap %s finns inte för %s men finns för %s
+warning.noexistence: Egenskap %s finns inte för %s men finns för %s
+warning.noexistence-media: Egenskap %s finns inte för medium %s
+warning.notforusermedium : Egenskap %s finns inte för detta usermedium
+warning.noothermedium : Egenskaper för andra media kanske inte fungerar för user-medium
+# used by org.w3c.css.parser.AtRule*
+error.noatruleyet: Andra @-regler än @import stöds inte av CSS1 %s
+# used by org.w3c.css.parser.analyzer.CssParser
+error.notforcss1: Värde %s finns inte i CSS1
+warning.pseudo: Okänt pseudoelement eller pseudoklass %s i default-profilen (%s)
+warning.nocomb: Kombinator %s mellan selektorer tillåts inte i denna profil (%s)
+warning.charsetspecial: Denna profil har en mycket speciell syntax för @charset: \
+@charset följt av exakt ett blanktecken, följt av kodnamnet \
+inom citationstecken, omedelbart följt av ett semikolon.
+warning.notversion: %s kan inte användas med denna version av CSS: %s
+
+# used by org.w3c.css.parser.CssFouffa
+error.unrecognize: Alltför många värden eller värden kan kännas igen
+
+# used by org.w3c.css.parser.CssFouffa
+generator.unrecognize: Parsningsfel
+
+# used by org.w3c.css.css.StyleSheetGeneratorHTML2
+error.unknown: Okänt fel
+
+# used by org.w3c.css.parser.CssSelectors
+error.pseudo-element: Pseudoelement %s kan inte förekomma här i kontextet %s
+error.pseudo-class: Pseudoklass .%s kan inte förekomma här i HTML-kontextet %s
+error.pseudo: Okänt pseudoelement eller pseudoklass %s
+error.id: ID-selektor #%s ogiltig ! Endast en ID-selektor kan anges i en enkel selektor: %s.
+error.space: Om attributselektor ~= används, så får ordet i värdet %s inte innehålla blanktecken.
+error.todo : Tyvärr är funktionalitet %s ännu inte implementerad.
+error.incompatible: %s och %s är inkompatibla
+warning.incompatible: %s och %s är inkompatibla
+error.notformobile: %s kan inte användas med mobil profil
+error.notforatsc: %s kan inte användas med ATSC-profil
+error.notfortv: %s kan inte användas med TV-profil
+error.notversion: %s kan inte användas med denna version av CSS : %s
+
+error.media: icke igenkänt medium %s
+error.page: icke igenkänd pseudonamnsida %s
+
+error.unrecognized.link: Icke igenkänt länkelement eller xml-formatmall PI.
+
+# used by StyleSheetGeneratorHTML
+generator.context: Kontext
+generator.request: Ett fel inträffade vid utmatning av din formatmall. \
+Korrigera din begäran eller sänd ett e-postmeddelande till plh@w3.org.
+generator.unrecognized: Icke igenkänd
+generator.invalid-number: Ogiltigt tal
+generator.property: Värdefel
+generator.line: Rad
+generator.not-found: Fil kunde inte hittas
+
+generator.doc-html: <!-- tog bort detta förvirrande meddelande olivier 2006-12-14 -->
+generator.doc: <!-- tog bort detta förvirrande meddelande olivier 2006-12-14 -->
+
+
+# used by the parser
+parser.semi-colon: försök att hitta ett semikolon före egenskapsnamn. Lägger till ett
+
+parser.old_class: I CSS1 kan ett klassnamn börja med en siffra (".55ft"), \
+om det inte är en dimension (".55in"). I CSS2 parsas sådana klasser som \
+okända dimensioner (för att göra det möjligt att i framtiden lägga till nya enheter) \
+För att göra ".%s" till en giltig klass så kräver CSS2 att den första siffran särmarkeras ".\3%s"
+
+parser.old_id: I CSS1 kan ett id-namn börja med en siffra ("#55ft"), \
+om det inte är en dimension ("#55in"). I CSS2 parsas sådana id:ar som \
+okända dimensioner (för att göra det möjligt att i framtiden lägga till nya enheter)
+
+parser.class_dim: I CSS1 kan ett klassnamn börja med en siffra (".55ft"), \
+om det inte är en dimension (".55in").
+
+parser.id_dim: I CSS1 kan ett id-namn börja med en siffra ("#55ft"), \
+om det inte är en dimension ("#55in").
+
+parser.charset: @charset-regeln kan endast förekomma i början av en \
+formatmall. Kontrollera att det inte finns blanktecken före den.
+
+parser.charsetspecial: Denna profil har en mycket speciell syntax för @charset: \
+@charset följt av exakt ett blanktecken, följt av kodningsnamnet \
+inom citationstecken, omedelbart följt av ett semikolon.
+
+warning.old_id: I CSS1 kan ett id-namn börja med en siffra ("#55ft"), \
+om det inte är en dimension ("#55in"). I CSS2 parsas sådana id:ar \
+som okända dimensioner (för att göra det möjligt att i framtiden lägga till nya enheter)
+
+warning.old_class: I CSS1 kan ett klassnamn börja med en siffra ("#55ft"), \
+om det inte är en dimension ("#55in"). I CSS2 parsas sådana id:ar som \
+okända dimensioner (för att göra det möjligt att i framtiden läga till nya enheter).
+
+# used by the servlet
+servlet.invalid-request: Du har sänt en ogiltig begäran.
+servlet.process: Kan inte bearbeta objektet
+
+warning.atsc: %s kanske inte stöds av medium atsc-tv
+error.onlyATSC: %s denna funktion enbart avsedd för medium atsc-tv
+
+warning.otherprofile: egenskap %s finns inte i denna profil, men valideras mot annan profil
+warning.deprecated: detta värde är föråldrat
+
+parser.unknown-dimension: Okänd dimension
+generator.dontmixhtml: Parsningsfel: Formatmallar bör inte innehålla HTML-syntax.
+
+warning.float-no-width: Flytande element utan inneboende bredd (dvs allt förutom html, img, input, textarea, select, och object) bör ges en bredd.
+
+parser.charsetcss1: @charset-regler kan inte användas i CSS1 
+parser.attrcss1: Attributselektorer är inte giltiga i CSS1
+parser.invalid_id_selector: Ogiltig ID-selektor
+parser.import_not_allowed: @import kan bara föregås av satser av typ @charset och @import. 
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/Messages.properties.uk	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,349 @@
+direction: ltr
+language_name: Українська
+more_options: Додаткові можливості
+title_more_options: Показати/сховати додаткові можливості
+all: Усі
+normal_report: Звичайний звіт
+most_important: Найбільш важливі
+no_warnings: Без попереджень
+profile: Профіль
+no_special_profile: Без спеціальних настройок
+css1: CSS1
+css2: CSS2
+css21: CSS2.1
+css3: CSS3
+SVG: SVG
+svgbasic: SVG Basic
+svgtiny: SVG tiny
+mobile: Мобільний
+ATSC_TV_profile: телебачення ATSC
+TV_profile: телебачення
+medium: Середовище
+aural: аудіо (aural)
+braille: термінал Брайля (braille)
+embossed: посторінковий принтер Брайля (embossed)
+handheld: портативний пристрій (handheld)
+print: друкарська продукція (print)
+projection: проектор (projection)
+screen: дисплей (screen)
+tty: телетайп (tty)
+tv: телевізор (tv)
+presentation: презентація (presentation)
+type: Тип документу
+no_special_type: визначити автоматично
+html_doc: HTML
+css_doc: CSS
+check: Перевірити
+W3C_CSS_validation_service: сервіс перевірки CSS від W3C
+check_CSS: Перевірка каскадних таблиць стилів (CSS) та документів (X)HTML з таблицями стилів
+by_URI: Перевірити URI
+by_file_upload: Перевірити завантажений файл
+by_direct_input: Перевірити набраний текст
+validate_by_URI: Перевірка по URI
+enter_uri: Уведіть  URI документу (HTML з CSS або лише CSS) для перевірки
+page_address: Адреса сторінки для перевірки
+address: Адреса
+submit_uri: Відправити URI для перевірки
+validate_by_file_upload: Перевірити завантажений файл
+choose_document: Оберіть документ, який ви хотіли б перевірити (лише CSS)
+choose_local_file: Оберіть локальний файл для завантаження й перевірки
+local_CSS_file: Локальний файл CSS
+submit_file: Відправити файл для перевірки
+validate_by_input: Перевірка тексту, що набирається
+enter_CSS: Уведіть код CSS, що ви хотіли б перевірити на коректність
+submit_input: Перевірити уведені дані
+note: Примітка
+note_xhtml_valid: Якщо ви хочете перевірити каскадні таблиці стилів, вбудовані до документу (X)HTML, ви повинні спершу <a href="http://validator.w3.org/">перевірити на коректність сам документ (X)HTML</a>
+# End of variables added along with Index page template
+
+W3C_validator_results: W3C результати перевірки CSS для
+# file_title: <!-- provided by the user -->
+CSS_validation_service: Сервіс перевірки CSS
+jump_to: Перейти до
+# errors_count: <!-- generated on the fly -->
+errors: Помилки
+# warnings_count <!-- generated on the fly -->
+warnings: Попередження
+validated_CSS: Перевірений CSS
+congrats: Поздоровляємо! Помилок не знайдено.
+# The sentence defined by doc_validates_before_link and doc_validates_after_link variables goes: \
+# "This document validates as CSSXX!" where XX stands for the CSS version used \
+# Since the content of the link about the CSS version is generated on the fly, \
+# it is important to define what goes before the link and what goes afterwards in 2 separate \
+# variables because the position of the link in the sentence varies in different languages
+doc_validates_before_link: Цей документ проходить перевірку згідно зі стандартом
+doc_validates_after_link: !
+no_errors_interoperable_msg: Для того, щоб продемонструвати відвідувачам, що ви піклуєтесь про створення коректних сторінок, ви можее розмістити цей знак на будь-якій перевіреній сторінці. Ось код XHTML \
+для розміщення:
+valid_CSS: Правильний CSS!
+# <!-- close the img tag with > instead of /> if using HTML<= 4.01 -->
+no_errors_close_tags_msg: закрийте тег img, використовуючи &gt; замість /&gt, якщо використовуєте HTML &lt;= 4.01
+no_errors_dl_local_msg: Якщо хочете, то можете завантажити копію зображення для зберігання безпосередньо на сайті й змінити наведений вище код XHTML, щоб послатися на локальну версію.
+no_errors_create_link_msg: Якщо Ви бажаєте створити посилання на цю сторінку (тобто, на результати цієї \
+перевірки) для полегшення подальших перевірок вами або іншими людьми, то скористайтеся наступним URI:
+no_errors_forHTML_only_msg: лише для документів HTML/XML
+no_errors_bookmark_msg: Або можее просто додати цю сторінку до закладок.
+note_valide_html: Для коректної роботи сервіса перевірки CSS необхідно щоб ваші документи \ 
+мали правильну деревоподібну размітку. Це означає, що ви повинні використовувати <a href="http://validator.w3.org/">коректний HTML</a>.
+top: Наверх
+# hook_html_validator <!-- generated on the fly -->
+not-css1-style: /* ОБЕРЕЖНО! Не є властивістю CSS1 ! */
+errors_sorry_msg: На жаль, ми знайшли наступні помилки
+# errors_list: <!-- generated on the fly -->
+# warnings_list: <!-- generated on the fly -->
+# rules_count: <!-- generated on the fly -->
+valid_CSS_info: Інформація про коректний CSS
+# charset: <!-- generated on the fly -->
+# rules_list: <!-- generated on the fly -->
+CSS_not_found: Не знайдено жодної каскадної таблиці стилів
+home: Головна
+about: Про сервіс
+doc: Документація
+dl: Завантажити
+feedback: Відгуки
+credits: Створювачи
+home_title: Головна сторінка сервісу перевірки CSS від W3C
+about_title: Про цей сервіс
+doc_title: Документація по сервісу перевірки CSS від W3C
+dl_title: Завантаження и встановлення сервісу перевірки CSS
+feedback_title: Как оставить відгук про сервіс
+credits_title: Створювачи
+W3C_quality_msg: Група W3C по підтримці якості, що пропонує безплатні інструменти перевірки якості й інші ресурси
+learn_more_msg: Докладніше про таблиці каскадних стилів CSS
+support: Підтримайте цей інструмент, станьте
+supporter: людиною, що підтримує W3C
+# End of variables added along with Velocity
+
+# Defines your own error and warning message here
+content-type: text/html; charset=utf-8
+content-language: ru
+output-encoding-name: utf-8
+
+# You can change the level warning like this (example) :
+# warning.redefinition.level: 5
+#  level is an integer between 0 and 9 (all others values are ignored)
+warning.redefinition: Перевизначення %s
+
+# used by xml parser 
+warning.style-inside-comment: Do not put style rules inside HTML comments as they may be removed by user agent
+
+# used by org.w3c.css.properties.Css1Style
+warning.same-colors: Однакові кольори для %s та %s
+warning.no-color: Ви не вказали колір атрибуту color (або його зроблено прозорим), але вказали атрибут background-color. Переконайтеся, що послідовність кольорів зберігає текст читабельним.
+warning.no-background-color: Ви не вказали колір фону background-color (або background-color зроблено прозорим), але вказали колір color. Переконайтеся, що послідовність кольорів зберігає текст читабельним.
+#warning.color.mixed-capitalization is now obsolete
+#warning.color.mixed-capitalization: Although color names are case-insensitive, it is recommended to use the mixed capitalization, to make the names more legible: %s
+warning.no-generic-family: %s: рекомендується пропонувати у якості останньої альтернативи базове сімейство шрифтів
+warning.with-space: Імена, що містять пробіли, повинні поміщатися у лапки. Якщо лапки пропущені, будь-яки пробіли до або після імені ігноруються, а послідовності пробілів усередині імені перетворюються у одиничний пробіл.
+warning.no-padding: З фоновим кольором рекомендуеться використовувати відступи (padding)
+warning.same-colors2: Однакові кольори для тексту й фону використовуються у наступних місцях: %s та %s
+warning.relative-absolute: В %s використовуються абсолютні й відносні значення довжини. Це ненадійна таблиця стилів.
+# used by org.w3c.css.properties.CssSelectors
+warning.unknown-html: %s не є елементом HTML
+warning.html-inside: елемент HTML не може бути всередині іншого елементу
+warning.body-inside: елемент BODY не може зустрічатися всередині іншого елементу, за виключенням HTML
+warning.pseudo-classes: Якір псевдокласу %s не використовується для елементів, за виключенням A
+
+# not used by org.w3c.css.properties.CssSelectors for the moment
+warning.noinside: %s не може бути всередині елементу рядкового типа
+warning.withblock: Будьте ообережні! Псевдоелементи можуть бути прив'язані лише до блочних елементів
+warning.block-level: Ця властивість застосовується до блочних елементів.
+
+# used by org.w3c.css.parser.Frame
+warning.no-declaration: У правилі немає визначень
+
+# used by org.w3c.css.parser.CssFouffa
+warning.unsupported-import: Таблиці стилів, що імпортуються, не перевіряються у режимі завантаження й прямого введення
+
+# used by org.w3c.css.values.CssColor
+warning.out-of-range: %s лежить поза діапазоном припустимих значень
+error.invalid-color: Неправильна функція RGB
+
+warning.marker: Властивість marker-offset застосовується до елементів типу display: marker
+
+# used by org.w3c.css.properties.ACssStyle
+warning.relative: Використання відносних одиниць вимірювання у властивості %s робить таблиці стилів більш надійними
+
+# used by org.w3c.css.css.StyleSheetParser and org.w3c.css.css.StyleSheetXMLParser
+error.at-rule: Вибачте, але правило %s не є реалізованим.
+
+# used by all properties and values
+error.operator: %s — некоректний оператор
+error.negative-value: %s від'ємні значення неприпустимі
+error.few-value: замало значень для властивості %s
+
+# be careful here, values comes first
+# You can't write something like this : For the color, blue is an incorrect value
+error.value: %s не є значенням %s 
+
+#used by org.w3c.css.properties3.CssToggleGroup
+error.groupname: %s не є коректним ім'ям групи. Використовуйте правильний ідентифікатор
+
+#used by org.w3c.css.properties3.CssGroupReset
+error.nogroup: %s не встановлено властивістю toggle-group 
+
+#used by org.w3c.css.properties3.CssGlyphOrVert
+error.anglevalue: Значення повинно бути між -360 та 360 та кратно 90
+
+#used by org.w3c.css.properties3.CssTextKashidaSpace
+error.percentage: очікується значення у процентах
+
+#used by org.w3c.css.properties.CssTextAlign
+warning.xsl: значення %s застосовується лише до XSL
+
+#used by org.w3c.css.parser.analyzer.CssParser
+warning.medialist: список середовищ повинен починатися з ‘media :’ %s
+error.nocomb: Комбінатор селекторів %s не припустим у цьому профілі або у цій версії
+
+#used by org.w3c.css.properties.CssDirection
+warning.direction: для блочних елементів замість direction використовуйте нову властивість CSS3 writing-mode
+
+# used by org.w3c.css.properties.CssTextDecoration
+error.same-value: %s оголошено двічі
+
+error.generic-family.quote: імена базових сімейств є ключовими словами та не повинні бути у лапках
+
+# used by org.w3c.css.properties.CssClip
+error.shape: Неправильне визначення положення rect(<top>,<right>,<bottom>,<left>)
+error.shape-separator: Неправильний роздільник у визначенні положення. Повинна використовуватися кома.
+
+# used by org.w3c.css.properties.CssContent
+error.attr: Неправильне визначення attr(X)
+error.function: Неправильне оголошення функції
+error.counter: Неправильне оголошення counter(<identifier>[,<list-style-type>]?)
+error.counters: Неправильне оголошення counters(<identifier>,<string>[,<list-style-type>]?)
+
+# used by org.w3c.css.font.Src
+error.format: Неправильне оголошення формату format(<string>[,<string>]*)
+error.local: Неправильне оголошення формату local(<string>|<ident>+)
+
+# used by org.w3c.css.values.CssAngle, org.w3c.css.values.CssFrequency, org.w3c.css.values.CssTime, org.w3c.css.values.CssLength
+error.unit: %s некоректна одиниця вимірювання
+
+# used by org.w3c.css.aural.ACssAzimuth
+error.degree: Позиція повинна задаватися у градусах.
+
+# used by org.w3c.css.aural.ACssElevation
+error.elevation.range: Вказує підняття як кут між -90deg та 90deg.
+
+# used by org.w3c.css.aural.ACssPitchRange
+error.range: Значення поза припустимих меж. Значення повинно бути між 0 и 100.
+
+# used by org.w3c.css.properties.CssTextShadow
+error.two-lengths: Зміщення тіні задається двома значеннями довжини (радіус розмиття може бути додатково вказано після зміщення).
+
+error.integer: Це число повинно бути цілим
+error.comma: Пропущено роздільну кому
+
+# used by org.w3c.css.values.CssPercentage
+error.percent: %s некоректне процентне значення
+
+# used by org.w3c.css.values.CssString
+error.string: %s некоректне рядкове значення
+
+# used by org.w3c.css.values.CssURL
+error.url: %s некоректний URL
+
+# used by org.w3c.css.values.CssColor
+error.rgb: %s не є припустимим кольором з 3 або 6 шістнадцяткових цифр
+error.angle: %s не є припустимим кутом. Значення повинно бути між 0 та 360
+
+# used by org.w3c.css.values.CssNumber
+error.zero: лише 0 може бути %s. Ви повинні вказати після числа одиниці вимірювання
+
+# used by org.w3c.css.parser.CssPropertyFactory
+error.noexistence-at-all: Властивість %s не існує
+error.noexistence-media: Властивість %s не існує для середовища %s
+error.noexistence: Властивість %s не існує в %s, але існує в %s
+warning.noexistence: Властивість %s не існує в %s але існує в %s
+warning.noexistence-media: Властивість %s не існує для середовища %s
+warning.notforusermedium : Властивість %s не існує для вказаного користувачем середовища
+##################
+warning.noothermedium : Властивості для інших середовищ можуть не функціонувати у вказаному користувачем середовищі
+# used by org.w3c.css.parser.AtRule*
+error.noatruleyet: Правила @rules, за виключенням @import, не підтримуються стандартом CSS1 %s
+# used by org.w3c.css.parser.analyzer.CssParser
+error.notforcss1: Значення %s не існує для CSS1
+warning.pseudo: Невідомий псевдоелемент або псевдоклас %s у профілі за замовчуванням (%s)
+warning.nocomb: комбінатор селекторів %s не припустим у даному профілі (%s)
+warning.charsetspecial: Цей профіль використовує особливий синтаксис @charset: після @charset йде рівно один пробіл, після якого йде им'я кодування у лапках, що відразу же замикається крапкой з комою.
+warning.notversion: %s не може бути використано у CSS версії %s
+
+# used by org.w3c.css.parser.CssFouffa
+error.unrecognize: Забагато значень або нерозпізнані значення
+
+# used by org.w3c.css.parser.CssFouffa
+generator.unrecognize: Помилка розбору
+generator.dontmixhtml: Помилка аналiзу синтаксису. Таблицi стилiв не повиннi містити HTML синтаксису.
+
+# used by org.w3c.css.css.StyleSheetGeneratorHTML2
+error.unknown: Невідома помилка
+
+# used by org.w3c.css.parser.CssSelectors
+error.pseudo-element: Псевдоелемент %s не може з'являться у %s
+error.pseudo-class: Псевдоклас %s не може розташовуватися тут у HTML %s
+error.pseudo: Невідомий псевдоелемент або псевдоклас %s
+error.id: Неправильний ідентифікатор селектору #%s! У простому селекторі може бути вказано лише один ідентифікатор: %s.
+error.space: Якщо використовується селектор атрибуту ~=, то слово у значенні %s не повинно містити пробіли.
+error.todo : На жаль, %s ще не реалізовано.
+error.incompatible: %s та %s не сумісні
+warning.incompatible: %s та %s не сумісні
+error.notformobile: %s не може бути використано з профілем mobile
+error.notforatsc: %s не може бути використано з профілем ATSC
+error.notfortv: %s не може бути використано з профілем TV
+error.notversion: %s не може бути використано з цією версією CSS %s
+
+error.media: нерозпізнане середовище %s
+error.page: нерозпізнана псевдоіменована сторінка %s
+
+error.unrecognized.link: Нерозпізнане посилання або інструкція обробки з таблицею стилів XML.
+
+# used by StyleSheetGeneratorHTML
+generator.context: Контекст
+generator.request: У процесі виводу вашої таблиці стилів виникла помилка. Будь ласка, виправьте запит або надішліть лист до plh@w3.org.
+generator.unrecognized: Не розпізнано
+generator.invalid-number: Некоректне число
+generator.property: Помилка значення
+generator.line: Рядок
+generator.not-found: Файл не знайдено
+
+generator.doc-html:   <!-- removed this confusing message olivier 2006-12-14 -->
+generator.doc:  <!-- removed this confusing message olivier 2006-12-14 -->
+
+
+# used by the parser
+parser.semi-colon: спроба знайти крапку з комою до імені властивості. додайте її
+
+parser.unknown-dimension: Невідома одиниця розміру
+
+parser.old_class: У CSS1 им'я класу могло починатися із цифри (#55ft), якщо це розмірність (#55in). У CSS2 такі ідентифікатори вважаються невідомими розмірами (для додання одиниць вимірювання у майбутньому). Щоб “.%s” був правильним класом, CSS2 потребує, щоб початкові цифри були екрановані “.\3%s”
+
+parser.old_id: У CSS1 ідентифікатор міг починатися із цифри (#55ft), якщо це не розмірність (#55in). У CSS2 такі ідентифікатори вважаються невідомими розмірами (для додання одиниць вимірювання у майбутньому).
+
+parser.class_dim: У CSS1 им'я класу могло починатися із цифри (.55ft), якщо це не розмірність (.55in).
+
+parser.id_dim: У CSS1 ідентифікатор міг починатися із цифри (#55ft), якщо це не розмірність (#55in).
+
+parser.charset: Правило @charset може з'являтися лише у початку описа стилю. Будь ласка, перевірте, чи є перед ним пробіли.
+
+parser.charsetspecial: Цей профіль має специфічний синтаксис @charset: після @charset йде рівно один пробіл, за яким йде назва кодування у лапках, за яким відразу йде крапка з комою.
+
+warning.old_id: У CSS1 ідентифікатор міг починатися із цифри (#55ft), якщо це не розмірність (#55in). У CSS2 такі ідентифікатори вважаються невідомими розмірами (для додання одиниць вимірювання у майбутньому).
+
+warning.old_class: У CSS1 им'я класу могло починатися із цифри (#55ft), якщо це не розмірність (#55in). У CSS2 такі ідентифікатори вважаються невідомими розмірами (для додання одиниць вимірювання у майбутньому).
+
+# used by the servlet
+servlet.invalid-request: Передано неправильний запит
+servlet.process: Не можу опрацювати об'єкт
+
+warning.atsc: %s може не підтримуватися пристроєм atsc-tv
+error.onlyATSC: %s ця функція використовується лише у середовищі atsc-tv
+
+warning.otherprofile: властивість %s не існує для даного профілю, але вона перевіряється у відповідності з іншим профілем
+warning.deprecated: це значення є небажаним
+
+warning.float-no-width: У (x)HTML+CSS рухомі елементи повинні мати оголошену ширину. Це не розповсюджується лише на елементи з вбудованою шириною (html, img, input, textarea, select, або object)
+parser.charsetcss1: @charset правила не можуть бути використані у CSS1
+parser.attrcss1: Селектори властивостей недійсні у CSS1
+parser.invalid_id_selector: Недійсний ID селектор
+parser.import_not_allowed: @import не дозволені після будь-якої валідної заяви, крім як @charset та @import.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/Messages.properties.zh-cn	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,378 @@
+# Chinese (simplified script) translation, last updated in sync with Messages.properties.en,v 1.31
+
+direction: ltr
+language_name: 简体中文
+more_options: 更多选项
+title_more_options: Show/Hide extra validation options
+all: 全部
+normal_report: 正常
+most_important: 最重要的
+no_warnings: 取消警告
+profile: 配置
+no_special_profile: 不指定配置文件
+css1: CSS 版本 1
+css2: CSS 版本 2
+css21: CSS 版本 2.1
+css3: CSS 版本 3
+SVG: SVG
+svgbasic: SVG Basic
+svgtiny: SVG Tiny
+mobile: Mobile
+ATSC_TV_profile: ATSC TV profile
+TV_profile: TV profile
+medium: 媒介
+aural: 听觉设备
+braille: 布莱叶点字
+embossed: 浮雕
+handheld: 手持设备
+print: 印刷设备
+projection: 投影设备
+screen: 银幕
+tty: TTY
+tv: 电视
+presentation: 演示设备
+
+type: 类别
+no_special_type: 自动
+html_doc: HTML
+css_doc: CSS
+
+check: Check
+W3C_CSS_validation_service: W3C CSS 验证服务
+check_CSS: 检查层叠样式表(CSS)文档和HTML或者XHTML文档中的CSS内容
+by_URI: 通过指定URI
+by_file_upload: 通过文件上传
+by_direct_input: 通过直接输入
+validate_by_URI: 验证指定URI的CSS内容
+enter_uri: 输入你想验证的文档(带CSS的HTML文档或者CSS文档)的URI
+page_address: 要验证的页面地址
+address: URI地址
+submit_uri: Submit URI for validation
+validate_by_file_upload: 验证上传文件
+choose_document: 选择需要验证的文件
+choose_local_file: Choose a Local File to Upload and Validate
+local_CSS_file: 本地CSS文件
+submit_file: Submit file for validation
+validate_by_input: 验证直接输入的内容
+enter_CSS: 输入你要验证的CSS代码
+submit_input: Submit your input for validation
+note: 注意
+note_xhtml_valid: 如果你想验证一段嵌入在HTML或者XHTML文档中的CSS,你首先要<a href="http://validator.w3.org/">验证你的HTML或者XHTML文档</a>是正确的。
+# End of variables added along with Index page template
+
+W3C_validator_results: W3C CSS 校验器结果:  
+# file_title: <!-- provided by the user -->
+CSS_validation_service: CSS 验证服务
+jump_to: 查看
+# errors_count: <!-- generated on the fly -->
+errors: 错误 
+# warnings_count <!-- generated on the fly -->
+warnings: 警告 
+validated_CSS: 已经校验的层叠样式表
+congrats: 恭喜恭喜
+# The sentence defined by doc_validates_before_link and doc_validates_after_link variables goes: \
+# "This document validates as CSSXX!" where XX stands for the CSS version used \
+# Since the content of the link about the CSS version is generated on the fly, \
+# it is important to define what goes before the link and what goes afterwards in 2 separate \
+# variables because the position of the link in the sentence varies in different languages
+doc_validates_before_link: 恭喜恭喜,此文档已经通过
+doc_validates_after_link: 校验!
+no_errors_interoperable_msg: 为了告诉你的访客你曾致力于建立交互性的网页 \
+你可以显示这个图标在任意经过检验的网页上。这里是 \
+你用作加入图标到你的网页上的HTML代码:
+valid_CSS: Valid CSS!
+# <!-- close the img tag with > instead of /> if using HTML<= 4.01 -->
+no_errors_close_tags_msg: close the img tag with &gt; instead of /&gt; if using HTML &lt;= 4.01
+no_errors_dl_local_msg: 如果你喜欢的话,你可以下载这个图象到你的网站目录下,并且 \
+改变以上的代码段以关联到你的当地图象而不是这个服务器。 
+no_errors_create_link_msg: 如果你愿意建立连接到此页 (例如,这个校验结果) \
+以便以后更加容易地再校验次页,或者容许其它人校验 \
+你的网页,其 URI 是:
+no_errors_forHTML_only_msg: 仅使用于HTML文档
+no_errors_bookmark_msg: 或者,你可以加入当前也到你的书签或列表中。
+note_valide_html: 如果你想验证一段嵌入在HTML或者XHTML文档中的CSS,你首先要<a href="http://validator.w3.org/">验证你的HTML或者XHTML文档</a>是正确的。 
+top: Top
+# hook_html_validator <!-- generated on the fly -->
+not-css1-style: /* 请注意!这不是CSS1的属性! */
+errors_sorry_msg: 错误:
+# errors_list: <!-- generated on the fly -->
+# warnings_list: <!-- generated on the fly -->
+# rules_count: <!-- generated on the fly -->
+valid_CSS_info: 你已经校验的层叠样式表:
+# charset: <!-- generated on the fly -->
+# rules_list: <!-- generated on the fly -->
+CSS_not_found: 没有找到样式表
+home: 首页
+about: 关于
+doc: 文档
+dl: 下载
+feedback: 反馈
+credits: 感谢
+home_title: Home page for the W3C CSS Validation Service
+about_title: About this service
+doc_title: Documentation for the W3C CSS Validation Service
+dl_title: Download and install the CSS validator
+feedback_title: How to provide feedback on this service
+credits_title: Credits and Acknowlegments
+W3C_quality_msg: W3C's Quality Assurance Activity, bringing you free Web quality tools and more
+learn_more_msg: Learn more about Cascading Style Sheets
+support: Support this tool, become a
+supporter: W3C Supporter
+# End of variables added along with Velocity
+
+# Defines your own error and warning message here
+content-type: text/html; charset=utf-8
+content-language: zh
+output-encoding-name: utf-8
+
+# You can change the level warning like this (example) :
+# warning.redefinition.level: 5
+#  level is an integer between 0 and 9 (all others values are ignored)
+warning.redefinition: 重定义了 %s
+
+# used by xml parser
+warning.style-inside-comment: 不要把样式表的规则放入HTML注释中,以避免被用户代理删掉。
+
+# used by org.w3c.css.properties.Css1Style
+warning.same-colors: 一样的颜色对于 %s 和 %s
+warning.no-color: 你没有为你的背景色设置(前景)颜色
+#warning.color.mixed-capitalization is now obsolete
+#warning.color.mixed-capitalization: Although color names are case-insensitive, it is recommended to use the mixed capitalization, to make the names more legible: %s
+warning.no-background-color: 你没有为你的(前景)颜色设置背景色
+warning.no-generic-family: %s: 建议你指定一个种类族科作为最后的选择
+error.generic-family.quote: 总族名称是保留字,所以不能被引用。
+warning.with-space: 包含空白的族科名称应该包含于蔻蔻中。如果省略了,任何 \
+名字前或后的空白符号都会被忽略而名字中所有连续的空白 \
+符号会被转换为单一个空格。
+warning.no-padding: 建议你使用有背景色的浮白区域(padding area)
+warning.same-colors2: 颜色和背景颜色使用了相同的颜色 %s 和 %s
+warning.relative-absolute: 你在 %s 使用了一些绝对和相对长度。这不是棒的样式表
+
+# used by org.w3c.css.properties.CssSelectors
+warning.unknown-html: %s 不是HTML元素
+warning.html-inside: HTML 元素不能嵌在其它元素中
+warning.body-inside: BODY 元素不能嵌在除了HTML元素的其它元素中
+warning.pseudo-classes: 定位锚伪类 %s 除了对'A'外,在元素上没有效果
+
+# not used by org.w3c.css.properties.CssSelectors for the moment
+warning.noinside: %s 不能嵌在内联元素中
+warning.withblock: 请小心。伪元素只能附于块级元素上
+warning.block-level: 这个属性应用于块级元素
+
+# used by org.w3c.css.parser.Frame
+warning.no-declaration: 在规则中没有声明
+
+# used by org.w3c.css.parser.CssFouffa 
+warning.unsupported-import: 通过直接输入及文件上传模式导入的样式表未经检查
+
+# used by org.w3c.css.values.CssColor
+warning.out-of-range: %s 超出范围
+error.invalid-color: 无效的 RGB 函数
+warning.marker: Marker-offset属性对标有’display: marker’的元素有效。
+
+# used by org.w3c.css.properties.ACssStyle
+warning.relative: 在属性 %s 使用相对单位令样式表更加棒
+
+# used by org.w3c.css.css.StyleSheetParser and org.w3c.css.css.StyleSheetXMLParser
+error.at-rule: 对不起,'@规则' %s 不能应用
+
+# used by all properties and values
+error.operator: %s 是一个错误的运算符
+error.negative-value: %s 不允许使用负值
+error.few-value: 属性 %s 的值太小
+
+# be careful here, values comes first
+# You can't write something like this : For the color, blue is an incorrect value
+error.value: %s 不是一个 %s 值
+
+#used by org.w3c.css.properties3.CssToggleGroup
+error.groupname: %s 不是正确的组名称. 请使用合法的标识符
+
+#used by org.w3c.css.properties3.CssGroupReset
+error.nogroup: %s 没有在 toggle-group 属性中指定
+
+#used by org.w3c.css.properties3.CssTextKashidaSpace
+error.percentage: 预期是百分比数值
+
+#used by org.w3c.css.properties.CssTextAlign
+warning.xsl: 值 %s 仅在XSL中生效
+
+# used by org.w3c.css.properties.CssTextDecoration
+error.same-value: %s 重复出现
+
+# used by org.w3c.css.properties.CssClip
+error.shape: 无效的形状定义 rect(<top>,<right>,<bottom>,<left>)
+error.shape-separator: 形状定义的分隔符无效,必须为逗号
+
+# used by org.w3c.css.properties.CssContent
+error.attr: 无效的属性定义 attr(X)
+error.function: 无效的函数定义
+error.counter: 无效的计数器定义 counter(<identifier>[,<list-style-type>]?)
+error.counters: 无效的计数器定义 counters(<identifier>,<string>[,<list-style-type>]?)
+
+# used by org.w3c.css.font.Src
+error.format: 无效的格式定义 format(<string>[,<string>]*)
+error.local: 无效的格式定义 local(<string>|<ident>+)
+
+#used by org.w3c.css.properties3.CssGlyphOrVert
+error.anglevalue: 值必须介于 -360 和 360 之间,并且能被 90 整除
+
+error.angle: %s 不是有效的角度数值。值应该介于 0 和 360 之间
+
+# used by org.w3c.css.values.CssAngle, org.w3c.css.values.CssFrequency, org.w3c.css.values.CssTime, org.w3c.css.values.CssLength
+error.unit: %s 是错误的单位
+
+# used by org.w3c.css.aural.ACssAzimuth
+error.degree: 位置必须描述为有效的角度范围
+
+# used by org.w3c.css.aural.ACssElevation
+error.elevation.range: 请指定仰角(elevation)以一个角度值,在'-90deg'和'90deg'之间("deg"为度).
+
+# used by org.w3c.css.aural.ACssPitchRange
+error.range: 此值超出范围。此值必须在'0'和'100'之间
+
+# used by org.w3c.css.properties.CssTextShadow
+error.two-lengths: 一个阴影位移由两个<length>值(一个模糊范围可以选择放于阴影位移之后)
+
+error.integer: This number should be an integer.
+error.comma: 缺少逗号分隔符
+
+# used by org.w3c.css.values.CssPercentage
+error.percent: %s 是错误的百分比
+
+# used by org.w3c.css.values.CssString
+error.string: %s 是错误的字符串
+
+# used by org.w3c.css.values.CssURL
+error.url: %s 是错误的URL
+
+# used by org.w3c.css.values.CssColor
+error.rgb: %s 不是有效的3或6伪十六进制数字的颜色
+
+# used by org.w3c.css.values.CssNumber
+error.zero: 只有0可以成为 %s. 你必须在你的数字后加入单位
+
+# used by org.w3c.css.parser.CssPropertyFactory 
+error.noexistence-at-all: 属性 %s 不存在
+error.noexistence-media: 媒体 %s 的属性 %s 不存在
+error.noexistence: 属性 %s 不存在于 %s , 但存在于 %s
+warning.noexistence: 属性 %s 不存在于 %s , 但存在于 %s
+warning.noexistence-media: 媒体 %s 的属性 %s 不存在
+error.notforcss1: 值 %s 不存在 CSS1 里
+warning.notforusermedium : 属性在该usermedium中不存在
+warning.noothermedium : 其他媒介中的属性在usermedium中未必正常工作
+error.noatruleyet: CSS1 没有支援 @import 以外的 @rule %s
+# used by org.w3c.css.parser.analyzer.CssParser
+warning.pseudo: 未知的伪元素或伪类 %s 出现在默认配置 (%s) 中
+warning.nocomb: 选择子之间的连接子 %s 不允许使用在该配置 (%s) 中
+warning.charsetspecial: 该配置的 @charset 具有特定的语法规则: 后边紧随一个空格, 之后紧随引号引起的编码名称, 最后跟一个分号.
+warning.notversion: %s 不能用于该版本的CSS : %s
+
+
+
+# used by org.w3c.css.parser.CssFouffa
+error.unrecognize: 太多值不能识别
+error.unknown: 未知错误
+
+# used by org.w3c.css.parser.CssSelectors
+error.pseudo-element: 伪元素%s 不能在次处的上下文 %s 中出现
+error.pseudo-class: 伪类 .%s 不能在此处的HTML上下文 %s 中出现
+error.pseudo: 不识别的伪元素或伪类 %s
+error.id: ID选择符 #%s 无效!只有一个ID选择符可以被指定到普通选择符: %s.
+error.space: 如果使用了属性选择符 ~= ,在值 %s 中的字必须不包含空格
+error.todo : 抱歉,特性 %s 还不能支持
+error.incompatible: %s 和 %s 不兼容
+warning.incompatible: %s 和 %s 不兼容
+error.notforatsc: %s 不能在 ATSC 配置中使用
+error.notformobile: %s 不能在 mobile 配置中使用
+error.notfortv: %s 不能在 TV 配置中使用
+error.notversion: %s 在这个 CSS 版本无法使用: %s
+error.media: 不能识别的媒体 %s 
+error.page: 不能职别的伪命名页 %s
+
+
+# used by StyleSheetGeneratorHTML
+generator.context: 上下文
+generator.request: 导出你的样式表时发生错误 \
+请更正你的请求或发送邮件到 plh@w3.org.
+generator.unrecognized: 不能识别的
+generator.unrecognize: 语法错误
+generator.dontmixhtml: 解析错误:样式表中不应包含HTML语法。 
+generator.invalid-number: 无效数字
+generator.property: 无效数字
+generator.line: 行
+generator.not-found: 找不到文件
+generator.doc-html: <!-- removed this confusing message olivier 2006-12-14 -->
+generator.doc:<!-- removed this confusing message olivier 2006-12-14 -->
+
+
+# used by the parser
+parser.semi-colon: 试图寻找属性名前面的冒号。加上!
+
+parser.unknown-dimension: 未知因素
+
+# Xu Ting commented out this translation @ 2006.6.9
+# I changed a little bit of this translation.
+#parser.old_class:在CSS1,类名应该以点开始 (".55ft"), \
+#除非它是一个尺寸值 (".55in")。在CSS2,以上的类 \
+#被解释为不识别的尺寸值(以允许将来加入新的单位)
+
+# Xu Ting's modification.
+parser.old_class:在CSS1,类名应该以点开始 (例如".55ft"), \
+但是不能是一个尺寸值 (例如".55in")。在CSS2,以上的类是不允许的,它会被解释成 \
+一个未知的尺寸(目的是为了以后可以增加新的单位)。
+
+# The following is translated by Xu Ting, you can contact me via tonny.xu@gmail.com
+
+parser.old_id:在CSS1中,一个id的名字可以是以数字开头(例如"#55ft"), \
+但是不能是一个尺寸值(例如"#55in")。 在CSS2中,这样的id是不允许的,它会被解释成 \
+一个未知的尺寸(目的是为了以后可以增加新的单位)。
+
+parser.class_dim:在CSS1中,一个类的名字可以是以数字开头(例如".55ft"), \
+但是不能是一个尺寸值(例如".55in")。
+
+parser.id_dim:在CSS1中,一个id的名字可以是以数字开头(例如"#55ft"),  \
+但是不能是一个尺寸值(例如"#55in")。
+
+parser.charset: @charset 条件只能在样式表的头部出现。 \
+请检查是否该条件前是否有空格。
+
+parser.charsetspecial:当前配置对@charset 而言,有个非常特殊的语法: \
+@charset 后面必须直接接一个空格,有且仅有一个空格,然后接上添加了引号的编码的名称 \
+在引号的后面直接接一个分号。
+
+warning.old_id:在CSS1中,一个id的名字可以是以数字开头(例如"#55ft"), \
+但是不能是一个尺寸值(例如"#55in")。 在CSS2中,这样的id是不允许的,它会被解释成 \
+一个未知的尺寸(目的是为了以后可以增加新的单位)。
+
+warning.old_class:在CSS1中,一个类的名字可以是以数字开头(例如".55ft"),\
+但是不能是一个尺寸值(例如".55in")。 在CSS2中,这样的类的名字是不允许的,它会被解释成 \
+一个未知的尺寸(目的是为了以后可以增加新的单位)。
+
+# used by the servlet
+servlet.invalid-request: 你发出了无效的请求
+servlet.process: 不能对对象进行处理
+
+error.unrecognized.link: 不可识别的链接元素或者XML样式 PI.
+
+#used by org.w3c.css.parser.analyzer.CssParser
+warning.medialist: 媒介列表应以 'media :' %s 开始
+error.nocomb: 在现有版本或者配置中,不允许在选择子之间使用连接子 %s 
+
+#used by org.w3c.css.properties.CssDirection
+warning.direction: 不应该在块级别的元素中使用 'direction' , 应使用新的 CSS3 属性 'writing-mode'
+
+
+warning.atsc: %s 也许没有被 atsc-tv 媒介所支持
+error.onlyATSC: %s 该函式只能在 atsc-tv 媒介中使用
+
+
+warning.otherprofile: 属性 %s 不存在于该配置中, 但在另一个配置中有效
+warning.deprecated: 该值已作废
+
+warning.float-no-width: 在 (x)HTML+CSS 框架下,浮动元素需要声明宽度。具有固有宽度的元素 (html, img, input, textarea, select 或 object) 不受影响
+parser.charsetcss1: @charset 条件不能在 CSS1 中使用
+parser.attrcss1: 属性选择符在 CSS1 中无效
+parser.invalid_id_selector: 无效的 ID 选择符
+parser.import_not_allowed: @import 不可以出现在除 @charset 和 @import 以外的任何有效语句之后。
+
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/util/NVPair.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/util/QuickSortAlgorithm.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/util/SortAlgorithm.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/util/SortedHashtable.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/util/Utf8Properties.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/util/Util.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/util/Warning.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/util/Warnings.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/XMLCatalog.class has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/catalog.xml	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,163 @@
+<?xml version='1.0' encoding='us-ascii'?>
+<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
+ <system
+   systemId='http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'
+   uri='xhtml1.0/xhtml1-transitional.dtd' />
+
+ <system
+   systemId='http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'
+   uri='xhtml1.0/xhtml1-strict.dtd' />
+
+ <system
+   systemId='http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd'
+   uri='xhtml1.0/xhtml1-frameset.dtd' />
+
+  <public
+    publicId="-//W3C//DTD XHTML 1.0 Transitional//EN"
+    uri='xhtml1.0/xhtml1-transitional.dtd' />
+  
+  <public
+    publicId="-//W3C//DTD XHTML 1.0 Strict//EN"
+    uri='xhtml1.0/xhtml1-strict.dtd' />
+
+  <public
+    publicId="-//W3C//DTD XHTML 1.0 Frameset//EN"
+    uri='xhtml1.0/xhtml1-frameset.dtd' />
+ 
+  <public 
+    publicId="-//W3C//DTD XHTML 1.1//EN"
+    uri='xhtml1.1/xhtml11.dtd' />
+
+  <system
+    systemId="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"
+    uri='xhtml1.1/xhtml11.dtd' />
+
+<!-- generated by sed - Yves -->
+<public publicId="-//W3C//ELEMENTS XHTML Inline Style 1.0//EN"
+uri='xhtml-modularization/xhtml-inlstyle-1.mod' />
+<public publicId="-//W3C//ENTITIES XHTML 1.1 Document Model 1.0//EN"
+            uri="xhtml1.1/xhtml11-model-1.mod" />
+<public publicId="-//W3C//ENTITIES XHTML Modular Framework 1.0//EN"
+uri='xhtml-modularization/xhtml-framework-1.mod' />
+<public publicId="-//W3C//ELEMENTS XHTML Text 1.0//EN"
+uri='xhtml-modularization/xhtml-text-1.mod' />
+<public publicId="-//W3C//ELEMENTS XHTML Hypertext 1.0//EN"
+uri='xhtml-modularization/xhtml-hypertext-1.mod' />
+<public publicId="-//W3C//ELEMENTS XHTML Lists 1.0//EN"
+uri='xhtml-modularization/xhtml-list-1.mod' />
+<public publicId="-//W3C//ELEMENTS XHTML Editing Elements 1.0//EN"
+uri='xhtml-modularization/xhtml-edit-1.mod' />
+<public publicId="-//W3C//ELEMENTS XHTML BIDI Override Element 1.0//EN"
+uri='xhtml-modularization/xhtml-bdo-1.mod' />
+<public publicId="-//W3C//ELEMENTS XHTML Ruby 1.0//EN"
+uri='ruby/xhtml-ruby-1.mod' />
+<public publicId="-//W3C//ENTITIES XHTML Datatypes 1.0//EN"
+uri='xhtml-modularization/xhtml-datatypes-1.mod' />
+<public publicId="-//W3C//ELEMENTS XHTML Presentation 1.0//EN"
+uri='xhtml-modularization/xhtml-pres-1.mod' />
+<public publicId="-//W3C//ELEMENTS XHTML Link Element 1.0//EN"
+uri='xhtml-modularization/xhtml-link-1.mod' />
+<public publicId="-//W3C//ELEMENTS XHTML Metainformation 1.0//EN"
+uri='xhtml-modularization/xhtml-meta-1.mod' />
+<public publicId="-//W3C//ELEMENTS XHTML Base Element 1.0//EN"
+uri='xhtml-modularization/xhtml-base-1.mod' />
+<public publicId="-//W3C//ELEMENTS XHTML Scripting 1.0//EN"
+uri='xhtml-modularization/xhtml-script-1.mod' />
+<public publicId="-//W3C//ELEMENTS XHTML Style Sheets 1.0//EN"
+uri='xhtml-modularization/xhtml-style-1.mod' />
+<public publicId="-//W3C//ELEMENTS XHTML Images 1.0//EN"
+uri='xhtml-modularization/xhtml-image-1.mod' />
+<public publicId="-//W3C//ELEMENTS XHTML Client-side Image Maps 1.0//EN"
+uri='xhtml-modularization/xhtml-csismap-1.mod' />
+<public publicId="-//W3C//ELEMENTS XHTML Server-side Image Maps 1.0//EN"
+uri='xhtml-modularization/xhtml-ssismap-1.mod' />
+<public publicId="-//W3C//ELEMENTS XHTML Param Element 1.0//EN"
+uri='xhtml-modularization/xhtml-param-1.mod' />
+<public publicId="-//W3C//ELEMENTS XHTML Embedded Object 1.0//EN"
+uri='xhtml-modularization/xhtml-object-1.mod' />
+<public publicId="-//W3C//ELEMENTS XHTML Tables 1.0//EN"
+uri='xhtml-modularization/xhtml-table-1.mod' />
+<public publicId="-//W3C//ELEMENTS XHTML Forms 1.0//EN"
+uri='xhtml-modularization/xhtml-form-1.mod' />
+<public publicId="-//W3C//ELEMENTS XHTML Legacy Markup 1.0//EN"
+uri='xhtml-modularization/xhtml-legacy-1.mod' />
+<public publicId="-//W3C//ELEMENTS XHTML Document Structure 1.0//EN"
+uri='xhtml-modularization/xhtml-struct-1.mod' />
+<public publicId="-//W3C//ENTITIES XHTML Qualified Names 1.0//EN"
+uri='xhtml-modularization/xhtml-qname-1.mod' />
+<public publicId="-//W3C//ELEMENTS XHTML Target 1.0//EN"
+uri='xhtml-modularization/xhtml-target-1.mod' />
+<public publicId="-//W3C//DTD XHTML Basic 1.0//EN"
+uri='xhtml-basic/xhtml-basic10.dtd' />
+<public publicId="-//W3C//ENTITIES XHTML Basic 1.0 Document Model 1.0//EN"
+uri='xhtml-basic/xhtml-basic10-model-1.mod' />
+<public publicId="-//W3C//ELEMENTS XHTML Basic Tables 1.0//EN"
+uri='xhtml-basic/xhtml-basic-table-1.mod' />
+<public publicId="-//W3C//ELEMENTS XHTML Basic Forms 1.0//EN"
+uri='xhtml-basic/xhtml-basic-form-1.mod' />
+
+<system systemId='http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-inlstyle-1.mod'
+uri='xhtml-modularization/xhtml-inlstyle-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-framework-1.mod'
+uri='xhtml-modularization/xhtml-framework-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-text-1.mod'
+uri='xhtml-modularization/xhtml-text-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-hypertext-1.mod'
+uri='xhtml-modularization/xhtml-hypertext-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-list-1.mod'
+uri='xhtml-modularization/xhtml-list-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-edit-1.mod'
+uri='xhtml-modularization/xhtml-edit-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-bdo-1.mod'
+uri='xhtml-modularization/xhtml-bdo-1.mod' />
+<system systemId='http://www.w3.org/TR/ruby/xhtml-ruby-1.mod'
+uri='ruby/xhtml-ruby-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-datatypes-1.mod'
+uri='xhtml-modularization/xhtml-datatypes-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-pres-1.mod'
+uri='xhtml-modularization/xhtml-pres-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-link-1.mod'
+uri='xhtml-modularization/xhtml-link-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-meta-1.mod'
+uri='xhtml-modularization/xhtml-meta-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-base-1.mod'
+uri='xhtml-modularization/xhtml-base-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-script-1.mod'
+uri='xhtml-modularization/xhtml-script-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-style-1.mod'
+uri='xhtml-modularization/xhtml-style-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-image-1.mod'
+uri='xhtml-modularization/xhtml-image-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-csismap-1.mod'
+uri='xhtml-modularization/xhtml-csismap-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-ssismap-1.mod'
+uri='xhtml-modularization/xhtml-ssismap-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-param-1.mod'
+uri='xhtml-modularization/xhtml-param-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-object-1.mod'
+uri='xhtml-modularization/xhtml-object-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-table-1.mod'
+uri='xhtml-modularization/xhtml-table-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-form-1.mod'
+uri='xhtml-modularization/xhtml-form-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-legacy-1.mod'
+uri='xhtml-modularization/xhtml-legacy-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-struct-1.mod'
+uri='xhtml-modularization/xhtml-struct-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-qname-1.mod'
+uri='xhtml-modularization/xhtml-qname-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-target-1.mo'
+uri='xhtml-modularization/xhtml-target-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd'
+uri='xhtml-basic/xhtml-basic10.dtd' />
+<system systemId='http://www.w3.org/TR/xhtml-basic/xhtml-basic10-model-1.mod'
+uri='xhtml-basic/xhtml-basic10-model-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-modulatization/DTD/xhtml-basic-table-1.mod'
+uri='xhtml-basic/xhtml-basic-table-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-modulatization/DTD/xhtml-basic-form-1.mod'
+uri='xhtml-basic/xhtml-basic-form-1.mod' />
+
+<system systemId='http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd' uri='mathml/xhtml-math11-f.dtd' />
+<public publicId='"-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"' uri='mathml/xhtml-math11-f.dtd' />
+
+</catalog>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/mathml/xhtml-math11-f.dtd	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,9430 @@
+<!-- ....................................................................... -->
+<!-- XHTML plus Math 1.1 DTD  .............................................. -->
+<!-- file: xhtml-math11.dtd
+-->
+
+<!-- XHTML plus Math 1.1 DTD
+
+     This is a prototype extension of XHTML 1.1 incorporating MathML 2.0.
+
+     The Extensible HyperText Markup Language (XHTML)
+     Copyright 1998-2000 World Wide Web Consortium
+        (Massachusetts Institute of Technology, Institut National de
+         Recherche en Informatique et en Automatique, Keio University).
+         All Rights Reserved.
+
+     Permission to use, copy, modify and distribute the XHTML 1.1 DTD
+     and its accompanying documentation for any purpose and without fee is
+     hereby granted in perpetuity, provided that the above copyright notice
+     and this paragraph appear in all copies.  The copyright holders make
+     no representation about the suitability of the DTD for any purpose.
+
+     It is provided "as is" without expressed or implied warranty.
+
+        Author:     Murray M. Altheim <altheim@eng.sun.com>
+        Revision:   $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $
+
+-->
+<!-- This is the driver file for version 1.1 of the XHTML Namespace Test DTD.
+-->
+<!ENTITY % XHTML.version  "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN" >
+
+<!-- Use this URI to identify the XHTML default namespace:
+
+         "http://www.w3.org/1999/xhtml"
+
+     See the XHTML Qualified Names module for information
+     on the use of namespace prefixes in the DTD.
+-->
+<!ENTITY % NS.prefixed "IGNORE" >
+<!ENTITY % XHTML.prefix "" >
+
+<!-- Reserved for use with the XLink namespace:
+-->
+<!ENTITY % XLINK.xmlns "http://www.w3.org/1999/xlink" >
+<!ENTITY % XLINK.xmlns.attrib "xmlns:xlink  CDATA   #FIXED '%XLINK.xmlns;'" >
+
+
+
+<!-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
+
+<!ENTITY % xhtml-qname-extra.mod 
+     PUBLIC "-//W3C//ENTITIES MathML 2.0 Qualified Names 1.0//EN"
+            "mathml2-qname-1.mod" 
+>
+
+<!-- redeclare location of math content 
+-->
+<!ENTITY % Misc.extra 
+     "| &#37;math.qname;" 
+>
+
+<!-- instantiate XHTML 1.1 DTD  .................................. -->
+<!ENTITY % xhtml11.dtd 
+     PUBLIC "-//W3C//DTD XHTML 1.1//EN" 
+            "XHTML11.dtd" >
+<!-- ....................................................................... -->
+<!-- XHTML 1.1 DTD  ........................................................ -->
+<!-- file: xhtml11.dtd
+-->
+
+<!-- XHTML 1.1 DTD
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+
+     The Extensible HyperText Markup Language (XHTML)
+     Copyright 1998-2000 World Wide Web Consortium
+        (Massachusetts Institute of Technology, Institut National de
+         Recherche en Informatique et en Automatique, Keio University).
+         All Rights Reserved.
+
+     Permission to use, copy, modify and distribute the XHTML 1.1 DTD and
+     its accompanying documentation for any purpose and without fee is
+     hereby granted in perpetuity, provided that the above copyright notice
+     and this paragraph appear in all copies.  The copyright holders make
+     no representation about the suitability of the DTD for any purpose.
+
+     It is provided "as is" without expressed or implied warranty.
+
+        Author:     Murray M. Altheim <altheim@eng.sun.com>
+        Revision:   $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+-->
+<!-- This is the driver file for version 1.1 of the XHTML DTD.
+
+     Please use this formal public identifier to identify it:
+
+         "-//W3C//DTD XHTML 1.1//EN"
+-->
+<!ENTITY % XHTML.version  "-//W3C//DTD XHTML 1.1//EN" >
+
+<!-- Use this URI to identify the default namespace:
+
+         "http://www.w3.org/1999/xhtml"
+
+     See the Qualified Names module for information
+     on the use of namespace prefixes in the DTD.
+-->
+<!ENTITY % NS.prefixed "IGNORE" >
+<!ENTITY % XHTML.prefix "" >
+
+<!-- Reserved for use with the XLink namespace:
+-->
+<!ENTITY % XLINK.xmlns "" >
+<!ENTITY % XLINK.xmlns.attrib "" >
+
+<!-- For example, if you are using XHTML 1.1 directly, use the FPI
+     in the DOCTYPE declaration, with the xmlns attribute on the
+     document element to identify the default namespace:
+
+       <?xml version="1.0"?>
+       <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "xhtml11.dtd">
+       <html xmlns="http://www.w3.org/1999/xhtml"
+             xml:lang="en">
+       ...
+       </html>
+
+     Revisions:
+     (none)
+-->
+
+<!-- reserved for future use with document profiles -->
+<!ENTITY % XHTML.profile  "" >
+
+<!-- Bidirectional Text features
+     This feature-test entity is used to declare elements
+     and attributes used for bidirectional text support.
+-->
+<!ENTITY % XHTML.bidi  "INCLUDE" >
+
+<!-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
+
+<!-- Pre-Framework Redeclaration placeholder  .................... -->
+<!-- this serves as a location to insert markup declarations
+     into the DTD prior to the framework declarations.
+-->
+<!ENTITY % xhtml-prefw-redecl.module "IGNORE" >
+<![%xhtml-prefw-redecl.module;[
+%xhtml-prefw-redecl.mod;
+<!-- end of xhtml-prefw-redecl.module -->]]>
+
+<!ENTITY % xhtml-events.module "INCLUDE" >
+
+<!-- declare Document Model module instantiated in framework
+-->
+<!ENTITY % xhtml-model.mod
+     PUBLIC "-//W3C//ENTITIES XHTML 1.1 Document Model 1.0//EN"
+            "xhtml11-model-1.mod" >
+
+<!-- Modular Framework Module (required) ......................... -->
+<!ENTITY % xhtml-framework.module "INCLUDE" >
+<![%xhtml-framework.module;[
+<!ENTITY % xhtml-framework.mod
+     PUBLIC "-//W3C//ENTITIES XHTML Modular Framework 1.0//EN"
+            "xhtml-framework-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Modular Framework Module  ...................................... -->
+<!-- file: xhtml-framework-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ENTITIES XHTML Modular Framework 1.0//EN"
+       SYSTEM "xhtml-framework-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Modular Framework
+
+     This required module instantiates the modules needed
+     to support the XHTML modularization model, including:
+
+        +  notations
+        +  datatypes
+        +  namespace-qualified names
+        +  common attributes
+        +  document model
+        +  character entities
+
+     The Intrinsic Events module is ignored by default but
+     occurs in this module because it must be instantiated
+     prior to Attributes but after Datatypes.
+-->
+
+<!ENTITY % xhtml-arch.module "INCLUDE" >
+<![%xhtml-arch.module;[
+<!ENTITY % xhtml-arch.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Base Architecture 1.0//EN"
+            "xhtml-arch-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Base Architecture Module  ...................................... -->
+<!-- file: xhtml-arch-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Base Architecture 1.0//EN"
+       SYSTEM "xhtml-arch-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- This optional module includes declarations that enable XHTML to be used
+     as a base architecture according to the 'Architectural Forms Definition
+     Requirements' (Annex A.3, ISO/IEC 10744, 2nd edition). For more information
+     on use of architectural forms, see the HyTime web site at:
+
+         http://www.hytime.org/
+-->
+
+]]>
+
+<!ENTITY % xhtml-notations.module "INCLUDE" >
+<![%xhtml-notations.module;[
+<!ENTITY % xhtml-notations.mod
+     PUBLIC "-//W3C//NOTATIONS XHTML Notations 1.0//EN"
+            "xhtml-notations-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Notations Module  .............................................. -->
+<!-- file: xhtml-notations-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//NOTATIONS XHTML Notations 1.0//EN"
+       SYSTEM "xhtml-notations-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Notations
+
+     defines the following notations, many of these imported from 
+     other specifications and standards. When an existing FPI is
+     known, it is incorporated here.
+-->
+
+<!-- XML Notations ..................................... -->
+
+<!-- W3C XML 1.0 Recommendation -->
+<!NOTATION w3c-xml 
+     PUBLIC "ISO 8879//NOTATION Extensible Markup Language (XML) 1.0//EN" >
+
+<!-- XML 1.0 CDATA -->
+<!NOTATION cdata 
+     PUBLIC "-//W3C//NOTATION XML 1.0: CDATA//EN" >
+
+<!-- XHTML Notations ................................... -->
+
+<!-- Length defined for cellpadding/cellspacing -->
+
+<!-- nn for pixels or nn% for percentage length -->
+<!NOTATION length 
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: Length//EN" >
+
+<!-- space-separated list of link types -->
+<!NOTATION linkTypes 
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: LinkTypes//EN" >
+
+<!-- single or comma-separated list of media descriptors -->
+<!NOTATION mediaDesc 
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: MediaDesc//EN" >
+
+<!-- pixel, percentage, or relative -->
+<!NOTATION multiLength 
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: MultiLength//EN" >
+
+<!-- one or more digits (NUMBER) -->
+<!NOTATION number 
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: Number//EN" >
+
+<!-- integer representing length in pixels -->
+<!NOTATION pixels 
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: Pixels//EN" >
+
+<!-- script expression -->
+<!NOTATION script 
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: Script//EN" >
+
+<!-- textual content -->
+<!NOTATION text 
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: Text//EN" >
+
+<!-- Imported Notations ................................ -->
+
+<!-- a single character from [ISO10646] -->
+<!NOTATION character 
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: Character//EN" >
+
+<!-- a character encoding, as per [RFC2045] -->
+<!NOTATION charset 
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: Charset//EN" >
+
+<!-- a space separated list of character encodings, as per [RFC2045] -->
+<!NOTATION charsets 
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: Charsets//EN" >
+
+<!-- media type, as per [RFC2045] -->
+<!NOTATION contentType 
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: ContentType//EN" >
+
+<!-- comma-separated list of media types, as per [RFC2045] -->
+<!NOTATION contentTypes 
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: ContentTypes//EN" >
+
+<!-- date and time information. ISO date format -->
+<!NOTATION datetime 
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: Datetime//EN" >
+
+<!-- a language code, as per [RFC1766] -->
+<!NOTATION languageCode 
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: LanguageCode//EN" >
+
+<!-- a Uniform Resource Identifier, see [URI] -->
+<!NOTATION uri 
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: URI//EN" >
+
+<!-- a space-separated list of Uniform Resource Identifiers, see [URI] -->
+<!NOTATION uris 
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: URIs//EN" >
+
+<!-- end of xhtml-notations-1.mod -->
+]]>
+
+<!ENTITY % xhtml-datatypes.module "INCLUDE" >
+<![%xhtml-datatypes.module;[
+<!ENTITY % xhtml-datatypes.mod
+     PUBLIC "-//W3C//ENTITIES XHTML Datatypes 1.0//EN"
+            "xhtml-datatypes-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Datatypes Module  .............................................. -->
+<!-- file: xhtml-datatypes-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ENTITIES XHTML Datatypes 1.0//EN"
+       SYSTEM "xhtml-datatypes-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Datatypes
+
+     defines containers for the following datatypes, many of
+     these imported from other specifications and standards.
+-->
+
+<!-- Length defined for cellpadding/cellspacing -->
+
+<!-- nn for pixels or nn% for percentage length -->
+<!ENTITY % Length.datatype "CDATA" >
+
+<!-- space-separated list of link types -->
+<!ENTITY % LinkTypes.datatype "NMTOKENS" >
+
+<!-- single or comma-separated list of media descriptors -->
+<!ENTITY % MediaDesc.datatype "CDATA" >
+
+<!-- pixel, percentage, or relative -->
+<!ENTITY % MultiLength.datatype "CDATA" >
+
+<!-- one or more digits (NUMBER) -->
+<!ENTITY % Number.datatype "CDATA" >
+
+<!-- integer representing length in pixels -->
+<!ENTITY % Pixels.datatype "CDATA" >
+
+<!-- script expression -->
+<!ENTITY % Script.datatype "CDATA" >
+
+<!-- textual content -->
+<!ENTITY % Text.datatype "CDATA" >
+
+<!-- Imported Datatypes ................................ -->
+
+<!-- a single character from [ISO10646] -->
+<!ENTITY % Character.datatype "CDATA" >
+
+<!-- a character encoding, as per [RFC2045] -->
+<!ENTITY % Charset.datatype "CDATA" >
+
+<!-- a space separated list of character encodings, as per [RFC2045] -->
+<!ENTITY % Charsets.datatype "CDATA" >
+
+<!-- media type, as per [RFC2045] -->
+<!ENTITY % ContentType.datatype "CDATA" >
+
+<!-- comma-separated list of media types, as per [RFC2045] -->
+<!ENTITY % ContentTypes.datatype "CDATA" >
+
+<!-- date and time information. ISO date format -->
+<!ENTITY % Datetime.datatype "CDATA" >
+
+<!-- a language code, as per [RFC1766] -->
+<!ENTITY % LanguageCode.datatype "NMTOKEN" >
+
+<!-- a Uniform Resource Identifier, see [URI] -->
+<!ENTITY % URI.datatype "CDATA" >
+
+<!-- a space-separated list of Uniform Resource Identifiers, see [URI] -->
+<!ENTITY % URIs.datatype "CDATA" >
+
+<!-- end of xhtml-datatypes-1.mod -->
+]]>
+
+<!ENTITY % xhtml-qname.module "INCLUDE" >
+<![%xhtml-qname.module;[
+<!ENTITY % xhtml-qname.mod
+     PUBLIC "-//W3C//ENTITIES XHTML Qualified Names 1.0//EN"
+            "xhtml-qname-1.mod" >
+<!-- ....................................................................... -->
+<!-- XHTML Qualified Names Module  ......................................... -->
+<!-- file: xhtml-qname-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ENTITIES XHTML Qualified Names 1.0//EN"
+       SYSTEM "xhtml-qname-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- XHTML Qualified Names
+
+     This module is contained in two parts, labeled Section 'A' and 'B':
+
+       Section A declares parameter entities to support namespace-
+       qualified names, namespace declarations, and name prefixing 
+       for XHTML and extensions.
+    
+       Section B declares parameter entities used to provide
+       namespace-qualified names for all XHTML element types:
+
+         %applet.qname;   the xmlns-qualified name for <applet>
+         %base.qname;     the xmlns-qualified name for <base>
+         ...
+
+     XHTML extensions would create a module similar to this one, 
+     using the '%xhtml-qname-extra.mod;' parameter entity to insert 
+     it within Section A.  A template module suitable for this purpose 
+     ('template-qname-1.mod') is included in the XHTML distribution.
+-->
+
+<!-- Section A: XHTML XML Namespace Framework :::::::::::::::::::: -->
+
+<!-- 1. Declare the two parameter entities used to support XLink,
+        first the parameter entity container for the URI used to
+        identify the XLink namespace:
+-->
+<!ENTITY % XLINK.xmlns "http://www.w3.org/1999/xlink" >
+
+<!-- This contains the XLink namespace declaration attribute.
+-->
+<!ENTITY % XLINK.xmlns.attrib
+     "xmlns:xlink  %URI.datatype;           #FIXED '%XLINK.xmlns;'"
+>
+
+<!-- 2. Declare parameter entities (eg., %XHTML.xmlns;) containing 
+        the namespace URI for the XHTML namespace, and any namespaces
+        included by XHTML:
+-->
+<!ENTITY % XHTML.xmlns  "http://www.w3.org/1999/xhtml" >
+
+<!-- 3. Declare parameter entities (eg., %XHTML.prefix;) containing
+        the default namespace prefix string(s) to use when prefixing 
+        is enabled. This may be overridden in the DTD driver or the
+        internal subset of an document instance.
+
+     NOTE: As specified in [XMLNAMES], the namespace prefix serves 
+     as a proxy for the URI reference, and is not in itself significant.
+-->
+<!ENTITY % XHTML.prefix  "" >
+
+<!-- 4. Declare a %XHTML.prefixed; conditional section keyword, used
+        to activate namespace prefixing. The default value should 
+        inherit '%NS.prefixed;' from the DTD driver, so that unless 
+        overridden, the default behaviour follows the overall DTD 
+        prefixing scheme.
+-->
+<!ENTITY % NS.prefixed "IGNORE" >
+<!ENTITY % XHTML.prefixed "%NS.prefixed;" >
+
+<!-- 5. Declare parameter entities (eg., %XHTML.pfx;) containing the 
+        colonized prefix(es) (eg., '%XHTML.prefix;:') used when 
+        prefixing is active, an empty string when it is not.
+-->
+<![%XHTML.prefixed;[
+<!ENTITY % XHTML.pfx  "%XHTML.prefix;:" >
+]]>
+<!ENTITY % XHTML.pfx  "" >
+
+
+<!-- declare qualified name extensions here -->
+<!ENTITY % xhtml-qname-extra.mod "" >
+<!-- ....................................................................... -->
+<!-- MathML Qualified Names Module  ........................................ -->
+<!-- ....................................................................... -->
+<!-- MathML Qualified Names Module  ........................................ -->
+<!-- file: mathml2-qname-1.mod
+
+     This is the Mathematical Markup Language (MathML) 2.0, an XML 
+     application for describing mathematical notation and capturing 
+     both its structure and content.
+
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ 
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ENTITIES MathML 2.0 Qualified Names 1.0//EN"
+       SYSTEM "mathml2-qname-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- MathML Qualified Names
+
+     This module is contained in two parts, labeled Section 'A' and 'B':
+
+       Section A declares parameter entities to support namespace-
+       qualified names, namespace declarations, and name prefixing 
+       for MathML.
+    
+       Section B declares parameter entities used to provide
+       namespace-qualified names for all MathML element types.
+
+     This module is derived from the XHTML Qualified Names Template module.
+-->
+
+<!-- Section A: XHTML XML Namespace Framework :::::::::::::::::::: -->
+
+<!ENTITY % NS.prefixed     "IGNORE" >
+<!ENTITY % MATHML.prefixed "%NS.prefixed;" >
+
+<!-- XLink ............... -->
+
+<!ENTITY % XLINK.xmlns "http://www.w3.org/1999/xlink" >
+<!ENTITY % XLINK.xmlns.attrib
+     "xmlns:xlink  CDATA           #FIXED '%XLINK.xmlns;'"
+>
+
+<!-- MathML .............. -->
+
+<!ENTITY % MATHML.xmlns    "http://www.w3.org/1998/Math/MathML" >
+<!ENTITY % MATHML.prefix   "m" >
+<![%MATHML.prefixed;[
+<!ENTITY % MATHML.xmlns.extra.attrib  "" >
+]]>
+<!ENTITY % MATHML.xmlns.extra.attrib 
+     "%XLINK.xmlns.attrib;" >
+
+<![%MATHML.prefixed;[
+<!ENTITY % MATHML.pfx  "%MATHML.prefix;:" >
+<!ENTITY % MATHML.xmlns.attrib
+     "xmlns:%MATHML.prefix;  CDATA   #FIXED '%MATHML.xmlns;'
+      %MATHML.xmlns.extra.attrib;"
+>
+]]>
+<!ENTITY % MATHML.pfx  "" >
+<!ENTITY % MATHML.xmlns.attrib
+     "xmlns        CDATA           #FIXED '%MATHML.xmlns;'
+      %MATHML.xmlns.extra.attrib;"
+>
+
+<![%NS.prefixed;[
+<!ENTITY % XHTML.xmlns.extra.attrib 
+     "%MATHML.xmlns.attrib;" >
+]]>
+<!ENTITY % XHTML.xmlns.extra.attrib
+     "%XLINK.xmlns.attrib;"
+>
+
+<!-- Section B: MathML Qualified Names ::::::::::::::::::::::::::::: -->
+
+<!-- 9. This section declares parameter entities used to provide
+        namespace-qualified names for all MathML element types.
+-->
+
+<!ENTITY % abs.qname            "%MATHML.pfx;abs" >
+<!ENTITY % and.qname            "%MATHML.pfx;and" >
+<!ENTITY % annotation-xml.qname "%MATHML.pfx;annotation-xml" >
+<!ENTITY % annotation.qname     "%MATHML.pfx;annotation" >
+<!ENTITY % apply.qname          "%MATHML.pfx;apply" >
+<!ENTITY % approx.qname         "%MATHML.pfx;approx" >
+<!ENTITY % arccos.qname         "%MATHML.pfx;arccos" >
+<!ENTITY % arccosh.qname        "%MATHML.pfx;arccosh" >
+<!ENTITY % arccosh.qname        "%MATHML.pfx;arccosh" >
+<!ENTITY % arccot.qname         "%MATHML.pfx;arccot" >
+<!ENTITY % arccoth.qname        "%MATHML.pfx;arccoth" >
+<!ENTITY % arccsc.qname         "%MATHML.pfx;arccsc" >
+<!ENTITY % arccsch.qname        "%MATHML.pfx;arccsch" >
+<!ENTITY % arcsec.qname         "%MATHML.pfx;arcsec" >
+<!ENTITY % arcsech.qname        "%MATHML.pfx;arcsech" >
+<!ENTITY % arcsin.qname         "%MATHML.pfx;arcsin" >
+<!ENTITY % arcsinh.qname        "%MATHML.pfx;arcsinh" >
+<!ENTITY % arctan.qname         "%MATHML.pfx;arctan" >
+<!ENTITY % arctanh.qname        "%MATHML.pfx;arctanh" >
+<!ENTITY % arg.qname            "%MATHML.pfx;arg" >
+<!ENTITY % bvar.qname           "%MATHML.pfx;bvar" >
+<!ENTITY % card.qname           "%MATHML.pfx;card" >
+<!ENTITY % cartesianproduct.qname "%MATHML.pfx;cartesianproduct" >
+<!ENTITY % ceiling.qname         "%MATHML.pfx;ceiling" >
+<!ENTITY % ci.qname             "%MATHML.pfx;ci" >
+<!ENTITY % cn.qname             "%MATHML.pfx;cn" >
+<!ENTITY % codomain.qname       "%MATHML.pfx;codomain" >
+<!ENTITY % complexes.qname      "%MATHML.pfx;complexes" >
+<!ENTITY % compose.qname        "%MATHML.pfx;compose" >
+<!ENTITY % condition.qname      "%MATHML.pfx;condition" >
+<!ENTITY % conjugate.qname      "%MATHML.pfx;conjugate" >
+<!ENTITY % cos.qname            "%MATHML.pfx;cos" >
+<!ENTITY % cosh.qname           "%MATHML.pfx;cosh" >
+<!ENTITY % cot.qname            "%MATHML.pfx;cot" >
+<!ENTITY % coth.qname           "%MATHML.pfx;coth" >
+<!ENTITY % csc.qname            "%MATHML.pfx;csc" >
+<!ENTITY % csch.qname           "%MATHML.pfx;csch" >
+<!ENTITY % csymbol.qname        "%MATHML.pfx;csymbol" >
+<!ENTITY % curl.qname           "%MATHML.pfx;curl" >
+<!ENTITY % declare.qname        "%MATHML.pfx;declare" >
+<!ENTITY % degree.qname         "%MATHML.pfx;degree" >
+<!ENTITY % determinant.qname    "%MATHML.pfx;determinant" >
+<!ENTITY % diff.qname           "%MATHML.pfx;diff" >
+<!ENTITY % divergence.qname     "%MATHML.pfx;divergence" >
+<!ENTITY % divide.qname         "%MATHML.pfx;divide" >
+<!ENTITY % domain.qname         "%MATHML.pfx;domain" >
+<!ENTITY % domainofapplication.qname "%MATHML.pfx;domainofapplication" >
+<!ENTITY % emptyset.qname       "%MATHML.pfx;emptyset" >
+<!ENTITY % eq.qname             "%MATHML.pfx;eq" >
+<!ENTITY % equivalent.qname     "%MATHML.pfx;equivalent" >
+<!ENTITY % eulergamma.qname     "%MATHML.pfx;eulergamma" >
+<!ENTITY % exists.qname         "%MATHML.pfx;exists" >
+<!ENTITY % exp.qname            "%MATHML.pfx;exp" >
+<!ENTITY % exponentiale.qname   "%MATHML.pfx;exponentiale" >
+<!ENTITY % factorial.qname      "%MATHML.pfx;factorial" >
+<!ENTITY % factorof.qname       "%MATHML.pfx;factorof" >
+<!ENTITY % false.qname          "%MATHML.pfx;false" >
+<!ENTITY % floor.qname          "%MATHML.pfx;floor" >
+<!ENTITY % fn.qname             "%MATHML.pfx;fn" >
+<!ENTITY % forall.qname         "%MATHML.pfx;forall" >
+<!ENTITY % gcd.qname            "%MATHML.pfx;gcd" >
+<!ENTITY % geq.qname            "%MATHML.pfx;geq" >
+<!ENTITY % grad.qname           "%MATHML.pfx;grad" >
+<!ENTITY % gt.qname             "%MATHML.pfx;gt" >
+<!ENTITY % ident.qname          "%MATHML.pfx;ident" >
+<!ENTITY % image.qname          "%MATHML.pfx;image" >
+<!ENTITY % imaginary.qname      "%MATHML.pfx;imaginary" >
+<!ENTITY % imaginaryi.qname     "%MATHML.pfx;imaginaryi" >
+<!ENTITY % implies.qname        "%MATHML.pfx;implies" >
+<!ENTITY % in.qname             "%MATHML.pfx;in" >
+<!ENTITY % infinity.qname       "%MATHML.pfx;infinity" >
+<!ENTITY % int.qname            "%MATHML.pfx;int" >
+<!ENTITY % integers.qname       "%MATHML.pfx;integers" >
+<!ENTITY % intersect.qname      "%MATHML.pfx;intersect" >
+<!ENTITY % interval.qname       "%MATHML.pfx;interval" >
+<!ENTITY % inverse.qname        "%MATHML.pfx;inverse" >
+<!ENTITY % lambda.qname         "%MATHML.pfx;lambda" >
+<!ENTITY % laplacian.qname      "%MATHML.pfx;laplacian" >
+<!ENTITY % lcm.qname            "%MATHML.pfx;lcm" >
+<!ENTITY % leq.qname            "%MATHML.pfx;leq" >
+<!ENTITY % limit.qname          "%MATHML.pfx;limit" >
+<!ENTITY % list.qname           "%MATHML.pfx;list" >
+<!ENTITY % ln.qname             "%MATHML.pfx;ln" >
+<!ENTITY % log.qname            "%MATHML.pfx;log" >
+<!ENTITY % logbase.qname        "%MATHML.pfx;logbase" >
+<!ENTITY % lowlimit.qname       "%MATHML.pfx;lowlimit" >
+<!ENTITY % lt.qname             "%MATHML.pfx;lt" >
+<!ENTITY % maction.qname        "%MATHML.pfx;maction" >
+<!ENTITY % maligngroup.qname    "%MATHML.pfx;maligngroup" >
+<!ENTITY % malignmark.qname     "%MATHML.pfx;malignmark" >
+<!ENTITY % math.qname           "%MATHML.pfx;math" >
+<!ENTITY % matrix.qname         "%MATHML.pfx;matrix" >
+<!ENTITY % matrixrow.qname      "%MATHML.pfx;matrixrow" >
+<!ENTITY % max.qname            "%MATHML.pfx;max" >
+<!ENTITY % mean.qname           "%MATHML.pfx;mean" >
+<!ENTITY % median.qname         "%MATHML.pfx;median" >
+<!ENTITY % menclose.qname       "%MATHML.pfx;menclose" >
+<!ENTITY % merror.qname         "%MATHML.pfx;merror" >
+<!ENTITY % mfenced.qname        "%MATHML.pfx;mfenced" >
+<!ENTITY % mfrac.qname          "%MATHML.pfx;mfrac" >
+<!ENTITY % mglyph.qname         "%MATHML.pfx;mglyph" >
+<!ENTITY % mi.qname             "%MATHML.pfx;mi" >
+<!ENTITY % min.qname            "%MATHML.pfx;min" >
+<!ENTITY % minus.qname          "%MATHML.pfx;minus" >
+<!ENTITY % mlabeledtr.qname     "%MATHML.pfx;mlabeledtr" >
+<!ENTITY % mmultiscripts.qname  "%MATHML.pfx;mmultiscripts" >
+<!ENTITY % mn.qname             "%MATHML.pfx;mn" >
+<!ENTITY % mo.qname             "%MATHML.pfx;mo" >
+<!ENTITY % mode.qname           "%MATHML.pfx;mode" >
+<!ENTITY % moment.qname         "%MATHML.pfx;moment" >
+<!ENTITY % momentabout.qname    "%MATHML.pfx;momentabout" >
+<!ENTITY % mover.qname          "%MATHML.pfx;mover" >
+<!ENTITY % mpadded.qname        "%MATHML.pfx;mpadded" >
+<!ENTITY % mphantom.qname       "%MATHML.pfx;mphantom" >
+<!ENTITY % mprescripts.qname    "%MATHML.pfx;mprescripts" >
+<!ENTITY % mroot.qname          "%MATHML.pfx;mroot" >
+<!ENTITY % mrow.qname           "%MATHML.pfx;mrow" >
+<!ENTITY % ms.qname             "%MATHML.pfx;ms" >
+<!ENTITY % mspace.qname         "%MATHML.pfx;mspace" >
+<!ENTITY % msqrt.qname          "%MATHML.pfx;msqrt" >
+<!ENTITY % mstyle.qname         "%MATHML.pfx;mstyle" >
+<!ENTITY % msub.qname           "%MATHML.pfx;msub" >
+<!ENTITY % msubsup.qname        "%MATHML.pfx;msubsup" >
+<!ENTITY % msup.qname           "%MATHML.pfx;msup" >
+<!ENTITY % mtable.qname         "%MATHML.pfx;mtable" >
+<!ENTITY % mtd.qname            "%MATHML.pfx;mtd" >
+<!ENTITY % mtext.qname          "%MATHML.pfx;mtext" >
+<!ENTITY % mtr.qname            "%MATHML.pfx;mtr" >
+<!ENTITY % munder.qname         "%MATHML.pfx;munder" >
+<!ENTITY % munderover.qname     "%MATHML.pfx;munderover" >
+<!ENTITY % naturalnumbers.qname "%MATHML.pfx;naturalnumbers" >
+<!ENTITY % neq.qname            "%MATHML.pfx;neq" >
+<!ENTITY % none.qname           "%MATHML.pfx;none" >
+<!ENTITY % not.qname            "%MATHML.pfx;not" >
+<!ENTITY % notanumber.qname     "%MATHML.pfx;notanumber" >
+<!ENTITY % notin.qname          "%MATHML.pfx;notin" >
+<!ENTITY % notprsubset.qname    "%MATHML.pfx;notprsubset" >
+<!ENTITY % notsubset.qname      "%MATHML.pfx;notsubset" >
+<!ENTITY % or.qname             "%MATHML.pfx;or" >
+<!ENTITY % otherwise.qname      "%MATHML.pfx;otherwise" >
+<!ENTITY % outerproduct.qname   "%MATHML.pfx;outerproduct" >
+<!ENTITY % partialdiff.qname    "%MATHML.pfx;partialdiff" >
+<!ENTITY % pi.qname             "%MATHML.pfx;pi" >
+<!ENTITY % piece.qname          "%MATHML.pfx;piece" >
+<!ENTITY % piecewise.qname      "%MATHML.pfx;piecewise" >
+<!ENTITY % plus.qname           "%MATHML.pfx;plus" >
+<!ENTITY % power.qname          "%MATHML.pfx;power" >
+<!ENTITY % primes.qname         "%MATHML.pfx;primes" >
+<!ENTITY % product.qname        "%MATHML.pfx;product" >
+<!ENTITY % prsubset.qname       "%MATHML.pfx;prsubset" >
+<!ENTITY % quotient.qname       "%MATHML.pfx;quotient" >
+<!ENTITY % rationals.qname      "%MATHML.pfx;rationals" >
+<!ENTITY % real.qname           "%MATHML.pfx;real" >
+<!ENTITY % reals.qname          "%MATHML.pfx;reals" >
+<!ENTITY % reln.qname           "%MATHML.pfx;reln" >
+<!ENTITY % rem.qname            "%MATHML.pfx;rem" >
+<!ENTITY % root.qname           "%MATHML.pfx;root" >
+<!ENTITY % scalarproduct.qname  "%MATHML.pfx;scalarproduct" >
+<!ENTITY % sdev.qname           "%MATHML.pfx;sdev" >
+<!ENTITY % sec.qname            "%MATHML.pfx;sec" >
+<!ENTITY % sech.qname           "%MATHML.pfx;sech" >
+<!ENTITY % selector.qname       "%MATHML.pfx;selector" >
+<!ENTITY % semantics.qname      "%MATHML.pfx;semantics" >
+<!ENTITY % sep.qname            "%MATHML.pfx;sep" >
+<!ENTITY % set.qname            "%MATHML.pfx;set" >
+<!ENTITY % setdiff.qname        "%MATHML.pfx;setdiff" >
+<!ENTITY % sin.qname            "%MATHML.pfx;sin" >
+<!ENTITY % sinh.qname           "%MATHML.pfx;sinh" >
+<!ENTITY % subset.qname         "%MATHML.pfx;subset" >
+<!ENTITY % sum.qname            "%MATHML.pfx;sum" >
+<!ENTITY % tan.qname            "%MATHML.pfx;tan" >
+<!ENTITY % tanh.qname           "%MATHML.pfx;tanh" >
+<!ENTITY % tendsto.qname        "%MATHML.pfx;tendsto" >
+<!ENTITY % times.qname          "%MATHML.pfx;times" >
+<!ENTITY % transpose.qname      "%MATHML.pfx;transpose" >
+<!ENTITY % true.qname           "%MATHML.pfx;true" >
+<!ENTITY % union.qname          "%MATHML.pfx;union" >
+<!ENTITY % uplimit.qname        "%MATHML.pfx;uplimit" >
+<!ENTITY % variance.qname       "%MATHML.pfx;variance" >
+<!ENTITY % vector.qname         "%MATHML.pfx;vector" >
+<!ENTITY % vectorproduct.qname  "%MATHML.pfx;vectorproduct" >
+<!ENTITY % xor.qname            "%MATHML.pfx;xor" >
+
+
+<!-- ignores subsequent instantiation of this module when
+     used as external subset rather than module fragment.
+     NOTE: Do not modify this parameter entity, otherwise
+     a recursive parsing situation may result.
+-->
+<!ENTITY % mathml-qname.module "IGNORE" >
+
+<!-- end of template-qname-1.mod -->
+
+
+<!-- 6. The parameter entity %XHTML.xmlns.extra.attrib; may be
+        redeclared to contain any non-XHTML namespace declaration 
+        attributes for namespaces embedded in XHTML. The default 
+        is an empty string.  XLink should be included here if used 
+        in the DTD and not already included by a previously-declared 
+        %*.xmlns.extra.attrib;.
+-->
+<!ENTITY % XHTML.xmlns.extra.attrib "" >
+
+<!-- 7. Declare a parameter entity %XHTML.xmlns.attrib; containing 
+        all XML namespace declaration attributes used by XHTML, 
+        the form dependent on whether prefixing is active. Neither
+        XHTML nor XLink should be included here.
+-->
+<![%XHTML.prefixed;[
+<!ENTITY % XHTML.xmlns.attrib
+     "xmlns:%XHTML.prefix;  %URI.datatype;   #FIXED '%XHTML.xmlns;'
+      %XHTML.xmlns.extra.attrib;"
+>
+]]>
+<!ENTITY % XHTML.xmlns.attrib
+     "xmlns        %URI.datatype;           #FIXED '%XHTML.xmlns;'
+      %XHTML.xmlns.extra.attrib;"
+>
+
+<!-- 8. The %NamespaceDecl.attrib; parameter entity recursively 
+        aggregates all previous namespace declaration attributes
+        by including the %XHTML.xmlns.extra.attrib; parameter 
+        entity into that of its embedding vocabulary, in this 
+        case XHTML.  The default is an empty string.
+-->
+<![%NS.prefixed;[
+<!ENTITY % NamespaceDecl.attrib
+     "%XHTML.xmlns.attrib;" >
+]]>
+<!ENTITY % NamespaceDecl.attrib "" >
+
+
+<!-- Section B: XHTML Qualified Names ::::::::::::::::::::::::::::: -->
+
+<!-- This section declares parameter entities used to provide
+     namespace-qualified names for all XHTML element types.
+-->
+
+<!-- module:  xhtml-applet-1.mod -->
+<!ENTITY % applet.qname  "%XHTML.pfx;applet" >
+
+<!-- module:  xhtml-base-1.mod -->
+<!ENTITY % base.qname    "%XHTML.pfx;base" >
+
+<!-- module:  xhtml-bdo-1.mod -->
+<!ENTITY % bdo.qname     "%XHTML.pfx;bdo" >
+
+<!-- module:  xhtml-blkphras-1.mod -->
+<!ENTITY % address.qname "%XHTML.pfx;address" >
+<!ENTITY % blockquote.qname  "%XHTML.pfx;blockquote" >
+<!ENTITY % pre.qname     "%XHTML.pfx;pre" >
+<!ENTITY % h1.qname      "%XHTML.pfx;h1" >
+<!ENTITY % h2.qname      "%XHTML.pfx;h2" >
+<!ENTITY % h3.qname      "%XHTML.pfx;h3" >
+<!ENTITY % h4.qname      "%XHTML.pfx;h4" >
+<!ENTITY % h5.qname      "%XHTML.pfx;h5" >
+<!ENTITY % h6.qname      "%XHTML.pfx;h6" >
+
+<!-- module:  xhtml-blkpres-1.mod -->
+<!ENTITY % hr.qname      "%XHTML.pfx;hr" >
+
+<!-- module:  xhtml-blkstruct-1.mod -->
+<!ENTITY % div.qname     "%XHTML.pfx;div" >
+<!ENTITY % p.qname       "%XHTML.pfx;p" >
+
+<!-- module:  xhtml-edit-1.mod -->
+<!ENTITY % ins.qname     "%XHTML.pfx;ins" >
+<!ENTITY % del.qname     "%XHTML.pfx;del" >
+
+<!-- module:  xhtml-form-1.mod -->
+<!ENTITY % form.qname    "%XHTML.pfx;form" >
+<!ENTITY % label.qname   "%XHTML.pfx;label" >
+<!ENTITY % input.qname   "%XHTML.pfx;input" >
+<!ENTITY % select.qname  "%XHTML.pfx;select" >
+<!ENTITY % optgroup.qname  "%XHTML.pfx;optgroup" >
+<!ENTITY % option.qname  "%XHTML.pfx;option" >
+<!ENTITY % textarea.qname  "%XHTML.pfx;textarea" >
+<!ENTITY % fieldset.qname  "%XHTML.pfx;fieldset" >
+<!ENTITY % legend.qname  "%XHTML.pfx;legend" >
+<!ENTITY % button.qname  "%XHTML.pfx;button" >
+
+<!-- module:  xhtml-hypertext-1.mod -->
+<!ENTITY % a.qname       "%XHTML.pfx;a" >
+
+<!-- module:  xhtml-image-1.mod -->
+<!ENTITY % img.qname     "%XHTML.pfx;img" >
+
+<!-- module:  xhtml-inlphras-1.mod -->
+<!ENTITY % abbr.qname    "%XHTML.pfx;abbr" >
+<!ENTITY % acronym.qname "%XHTML.pfx;acronym" >
+<!ENTITY % cite.qname    "%XHTML.pfx;cite" >
+<!ENTITY % code.qname    "%XHTML.pfx;code" >
+<!ENTITY % dfn.qname     "%XHTML.pfx;dfn" >
+<!ENTITY % em.qname      "%XHTML.pfx;em" >
+<!ENTITY % kbd.qname     "%XHTML.pfx;kbd" >
+<!ENTITY % q.qname       "%XHTML.pfx;q" >
+<!ENTITY % samp.qname    "%XHTML.pfx;samp" >
+<!ENTITY % strong.qname  "%XHTML.pfx;strong" >
+<!ENTITY % var.qname     "%XHTML.pfx;var" >
+
+<!-- module:  xhtml-inlpres-1.mod -->
+<!ENTITY % b.qname       "%XHTML.pfx;b" >
+<!ENTITY % big.qname     "%XHTML.pfx;big" >
+<!ENTITY % i.qname       "%XHTML.pfx;i" >
+<!ENTITY % small.qname   "%XHTML.pfx;small" >
+<!ENTITY % sub.qname     "%XHTML.pfx;sub" >
+<!ENTITY % sup.qname     "%XHTML.pfx;sup" >
+<!ENTITY % tt.qname      "%XHTML.pfx;tt" >
+
+<!-- module:  xhtml-inlstruct-1.mod -->
+<!ENTITY % br.qname      "%XHTML.pfx;br" >
+<!ENTITY % span.qname    "%XHTML.pfx;span" >
+
+<!-- module:  xhtml-ismap-1.mod (also csismap, ssismap) -->
+<!ENTITY % map.qname     "%XHTML.pfx;map" >
+<!ENTITY % area.qname    "%XHTML.pfx;area" >
+
+<!-- module:  xhtml-link-1.mod -->
+<!ENTITY % link.qname    "%XHTML.pfx;link" >
+
+<!-- module:  xhtml-list-1.mod -->
+<!ENTITY % dl.qname      "%XHTML.pfx;dl" >
+<!ENTITY % dt.qname      "%XHTML.pfx;dt" >
+<!ENTITY % dd.qname      "%XHTML.pfx;dd" >
+<!ENTITY % ol.qname      "%XHTML.pfx;ol" >
+<!ENTITY % ul.qname      "%XHTML.pfx;ul" >
+<!ENTITY % li.qname      "%XHTML.pfx;li" >
+
+<!-- module:  xhtml-meta-1.mod -->
+<!ENTITY % meta.qname    "%XHTML.pfx;meta" >
+
+<!-- module:  xhtml-param-1.mod -->
+<!ENTITY % param.qname   "%XHTML.pfx;param" >
+
+<!-- module:  xhtml-object-1.mod -->
+<!ENTITY % object.qname  "%XHTML.pfx;object" >
+
+<!-- module:  xhtml-script-1.mod -->
+<!ENTITY % script.qname  "%XHTML.pfx;script" >
+<!ENTITY % noscript.qname  "%XHTML.pfx;noscript" >
+
+<!-- module:  xhtml-struct-1.mod -->
+<!ENTITY % html.qname    "%XHTML.pfx;html" >
+<!ENTITY % head.qname    "%XHTML.pfx;head" >
+<!ENTITY % title.qname   "%XHTML.pfx;title" >
+<!ENTITY % body.qname    "%XHTML.pfx;body" >
+
+<!-- module:  xhtml-style-1.mod -->
+<!ENTITY % style.qname   "%XHTML.pfx;style" >
+
+<!-- module:  xhtml-table-1.mod -->
+<!ENTITY % table.qname   "%XHTML.pfx;table" >
+<!ENTITY % caption.qname "%XHTML.pfx;caption" >
+<!ENTITY % thead.qname   "%XHTML.pfx;thead" >
+<!ENTITY % tfoot.qname   "%XHTML.pfx;tfoot" >
+<!ENTITY % tbody.qname   "%XHTML.pfx;tbody" >
+<!ENTITY % colgroup.qname  "%XHTML.pfx;colgroup" >
+<!ENTITY % col.qname     "%XHTML.pfx;col" >
+<!ENTITY % tr.qname      "%XHTML.pfx;tr" >
+<!ENTITY % th.qname      "%XHTML.pfx;th" >
+<!ENTITY % td.qname      "%XHTML.pfx;td" >
+
+<!-- module:  xhtml-ruby-1.mod -->
+<!ENTITY % ruby.qname    "%XHTML.pfx;ruby" >
+<!ENTITY % rbc.qname     "%XHTML.pfx;rbc" >
+<!ENTITY % rtc.qname     "%XHTML.pfx;rtc" >
+<!ENTITY % rb.qname      "%XHTML.pfx;rb" >
+<!ENTITY % rt.qname      "%XHTML.pfx;rt" >
+<!ENTITY % rp.qname      "%XHTML.pfx;rp" >
+
+<!-- Provisional XHTML 2.0 Qualified Names  ...................... -->
+
+<!-- module:  xhtml-image-2.mod -->
+<!ENTITY % alt.qname     "%XHTML.pfx;alt" >
+
+
+<!-- end of xhtml-qname-1.mod -->
+]]>
+
+<!ENTITY % xhtml-events.module "IGNORE" >
+<![%xhtml-events.module;[
+<!ENTITY % xhtml-events.mod
+     PUBLIC "-//W3C//ENTITIES XHTML Intrinsic Events 1.0//EN"
+            "xhtml-events-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Intrinsic Events Module  ....................................... -->
+<!-- file: xhtml-events-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ENTITIES XHTML Intrinsic Events 1.0//EN"
+       SYSTEM "xhtml-events-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Intrinsic Event Attributes
+
+     These are the event attributes defined in HTML 4.0,
+     Section 18.2.3 "Intrinsic Events". This module must be
+     instantiated prior to the Attributes Module but after
+     the Datatype Module in the Modular Framework module.
+
+    "Note: Authors of HTML documents are advised that changes
+     are likely to occur in the realm of intrinsic events
+     (e.g., how scripts are bound to events). Research in
+     this realm is carried on by members of the W3C Document
+     Object Model Working Group (see the W3C Web site at
+     http://www.w3.org/ for more information)."
+-->
+<!-- NOTE: Because the ATTLIST declarations in this module occur
+     before their respective ELEMENT declarations in other
+     modules, there may be a dependency on this module that
+     should be considered if any of the parameter entities used
+     for element type names (eg., %Foo.qname;) are redeclared.
+-->
+
+<!ENTITY % Events.attrib
+     "onclick      %Script.datatype;        #IMPLIED
+      ondblclick   %Script.datatype;        #IMPLIED
+      onmousedown  %Script.datatype;        #IMPLIED
+      onmouseup    %Script.datatype;        #IMPLIED
+      onmouseover  %Script.datatype;        #IMPLIED
+      onmousemove  %Script.datatype;        #IMPLIED
+      onmouseout   %Script.datatype;        #IMPLIED
+      onkeypress   %Script.datatype;        #IMPLIED
+      onkeydown    %Script.datatype;        #IMPLIED
+      onkeyup      %Script.datatype;        #IMPLIED"
+>
+
+<!-- additional attributes on anchor element
+-->
+<!ATTLIST %a.qname;
+     onfocus      %Script.datatype;         #IMPLIED
+     onblur       %Script.datatype;         #IMPLIED
+>
+
+<!-- additional attributes on form element
+-->
+<!ATTLIST %form.qname;
+      onsubmit     %Script.datatype;        #IMPLIED
+      onreset      %Script.datatype;        #IMPLIED
+>
+
+<!-- additional attributes on label element
+-->
+<!ATTLIST %label.qname;
+      onfocus      %Script.datatype;        #IMPLIED
+      onblur       %Script.datatype;        #IMPLIED
+>
+
+<!-- additional attributes on input element
+-->
+<!ATTLIST %input.qname;
+      onfocus      %Script.datatype;        #IMPLIED
+      onblur       %Script.datatype;        #IMPLIED
+      onselect     %Script.datatype;        #IMPLIED
+      onchange     %Script.datatype;        #IMPLIED
+>
+
+<!-- additional attributes on select element
+-->
+<!ATTLIST %select.qname;
+      onfocus      %Script.datatype;        #IMPLIED
+      onblur       %Script.datatype;        #IMPLIED
+      onchange     %Script.datatype;        #IMPLIED
+>
+
+<!-- additional attributes on textarea element
+-->
+<!ATTLIST %textarea.qname;
+      onfocus      %Script.datatype;        #IMPLIED
+      onblur       %Script.datatype;        #IMPLIED
+      onselect     %Script.datatype;        #IMPLIED
+      onchange     %Script.datatype;        #IMPLIED
+>
+
+<!-- additional attributes on button element
+-->
+<!ATTLIST %button.qname;
+      onfocus      %Script.datatype;        #IMPLIED
+      onblur       %Script.datatype;        #IMPLIED
+>
+
+<!-- additional attributes on body element
+-->
+<!ATTLIST %body.qname;
+      onload       %Script.datatype;        #IMPLIED
+      onunload     %Script.datatype;        #IMPLIED
+>
+
+<!-- additional attributes on area element
+-->
+<!ATTLIST %area.qname;
+      onfocus      %Script.datatype;        #IMPLIED
+      onblur       %Script.datatype;        #IMPLIED
+>
+
+<!-- end of xhtml-events-1.mod -->
+]]>
+
+<!ENTITY % xhtml-attribs.module "INCLUDE" >
+<![%xhtml-attribs.module;[
+<!ENTITY % xhtml-attribs.mod
+     PUBLIC "-//W3C//ENTITIES XHTML Common Attributes 1.0//EN"
+            "xhtml-attribs-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Common Attributes Module  ...................................... -->
+<!-- file: xhtml-attribs-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ENTITIES XHTML Common Attributes 1.0//EN"
+       SYSTEM "xhtml-attribs-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Common Attributes
+
+     This module declares many of the common attributes for the Strict DTD.
+-->
+
+<!ENTITY % Id.attrib
+     "id           ID                       #IMPLIED"
+>
+
+<!ENTITY % Class.attrib
+     "class        CDATA                    #IMPLIED"
+>
+
+<!ENTITY % Title.attrib
+     "title        %Text.datatype;          #IMPLIED"
+>
+
+<!-- used to declare xmlns attributes on each element type
+     (see the Qualified Names module for details)
+-->
+<!ENTITY % NamespaceDecl.attrib "" >
+
+<!ENTITY % Core.extra.attrib "" >
+
+<!ENTITY % Core.attrib
+     "%NamespaceDecl.attrib;
+      %Id.attrib;
+      %Class.attrib;
+      %Title.attrib;
+      %Core.extra.attrib;"
+>
+
+<!ENTITY % Lang.attrib
+     "xml:lang     %LanguageCode.datatype;  #IMPLIED"
+>
+
+<![%XHTML.bidi;[
+<!ENTITY % Dir.attrib
+     "dir          ( ltr | rtl )            #IMPLIED"
+>
+
+<!ENTITY % I18n.attrib
+     "%Dir.attrib;
+      %Lang.attrib;"
+>
+
+]]>
+<!ENTITY % I18n.attrib
+     "%Lang.attrib;"
+>
+
+<!-- intrinsic event attributes declared previously
+-->
+<!ENTITY % Events.attrib "" >
+
+<!ENTITY % Common.attrib
+     "%Core.attrib;
+      %I18n.attrib;
+      %Events.attrib;"
+>
+
+<!-- end of xhtml-attribs-1.mod -->
+]]>
+
+<!-- placeholder for content model redeclarations -->
+<!ENTITY % xhtml-model.redecl "" >
+
+
+<!ENTITY % xhtml-model.module "INCLUDE" >
+<![%xhtml-model.module;[
+<!-- instantiate the Document Model module declared in the DTD driver
+-->
+<!-- ....................................................................... -->
+<!-- XHTML Document Model Module  .......................................... -->
+<!-- file: xhtml11-model-1.mod
+
+     This is XHTML 1.1, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ENTITIES XHTML Document Model 1.0//EN"
+       SYSTEM "xhtml11-model-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- XHTML 1.1 Document Model
+
+     This module describes the groupings of elements that make up
+     common content models for XHTML elements.
+
+     XHTML has three basic content models:
+
+         %Inline.mix;  character-level elements
+         %Block.mix;   block-like elements, eg., paragraphs and lists
+         %Flow.mix;    any block or inline elements
+
+     Any parameter entities declared in this module may be used
+     to create element content models, but the above three are
+     considered 'global' (insofar as that term applies here).
+
+     The reserved word '#PCDATA' (indicating a text string) is now
+     included explicitly with each element declaration that is
+     declared as mixed content, as XML requires that this token
+     occur first in a content model specification.
+-->
+<!-- Extending the Model
+
+     While in some cases this module may need to be rewritten to
+     accommodate changes to the document model, minor extensions
+     may be accomplished by redeclaring any of the three *.extra;
+     parameter entities to contain extension element types as follows:
+
+         %Misc.extra;    whose parent may be any block or
+                         inline element.
+
+         %Inline.extra;  whose parent may be any inline element.
+
+         %Block.extra;   whose parent may be any block element.
+
+     If used, these parameter entities must be an OR-separated
+     list beginning with an OR separator ("|"), eg., "| a | b | c"
+
+     All block and inline *.class parameter entities not part
+     of the *struct.class classes begin with "| " to allow for
+     exclusion from mixes.
+-->
+
+<!-- ..............  Optional Elements in head  .................. -->
+
+<!ENTITY % Head-opts.mix  
+     "( %script.qname; | %style.qname; | %meta.qname; | %link.qname; )*"
+>
+
+<!-- .................  Miscellaneous Elements  .................. -->
+
+<!-- ins and del are used to denote editing changes
+-->
+<!ENTITY % Edit.class "| %ins.qname; | %del.qname;" >
+
+<!-- script and noscript are used to contain scripts
+     and alternative content
+-->
+<!ENTITY % Script.class "| %script.qname; | %noscript.qname;" >
+
+<!ENTITY % Misc.extra "" >
+
+<!-- These elements are neither block nor inline, and can
+     essentially be used anywhere in the document body.
+-->
+<!ENTITY % Misc.class
+     "%Edit.class;
+      %Script.class;
+      %Misc.extra;"
+>
+
+<!-- ....................  Inline Elements  ...................... -->
+
+<!ENTITY % Inlstruct.class "%br.qname; | %span.qname;" >
+
+<!ENTITY % Inlphras.class
+     "| %em.qname; | %strong.qname; | %dfn.qname; | %code.qname; 
+      | %samp.qname; | %kbd.qname; | %var.qname; | %cite.qname; 
+      | %abbr.qname; | %acronym.qname; | %q.qname;" >
+
+<!ENTITY % Inlpres.class
+     "| %tt.qname; | %i.qname; | %b.qname; | %big.qname; 
+      | %small.qname; | %sub.qname; | %sup.qname;" >
+
+<!ENTITY % I18n.class "| %bdo.qname;" >
+
+<!ENTITY % Anchor.class "| %a.qname;" >
+
+<!ENTITY % Inlspecial.class "| %img.qname; | %map.qname; | %applet.qname;" >
+
+<!ENTITY % Inlform.class 
+     "| %input.qname; | %select.qname; | %textarea.qname; 
+      | %label.qname; | %button.qname;" >
+
+<!ENTITY % Inline.extra "" >
+
+<!ENTITY % Ruby.class "| %ruby.qname;" >
+
+<!-- %Inline.class; includes all inline elements,
+     used as a component in mixes
+-->
+<!ENTITY % Inline.class
+     "%Inlstruct.class;
+      %Inlphras.class;
+      %Inlpres.class;
+      %I18n.class;
+      %Anchor.class;
+      %Inlspecial.class;
+      %Inlform.class;
+      %Ruby.class;
+      %Inline.extra;"
+>
+
+<!-- %Inline-noruby.class; includes all inline elements 
+     except ruby, used as a component in mixes
+-->
+<!ENTITY % Inline-noruby.class
+     "%Inlstruct.class;
+      %Inlphras.class;
+      %Inlpres.class;
+      %I18n.class;
+      %Anchor.class;
+      %Inlspecial.class;
+      %Inlform.class;
+      %Inline.extra;"
+>
+
+<!-- %Noruby.content; includes all inlines except ruby
+-->
+<!ENTITY % Noruby.content
+     "( #PCDATA 
+      | %Inline-noruby.class;
+      %Misc.class; )*"
+>
+
+<!-- %Inline-noA.class; includes all non-anchor inlines,
+     used as a component in mixes
+-->
+<!ENTITY % Inline-noA.class
+     "%Inlstruct.class;
+      %Inlphras.class;
+      %Inlpres.class;
+      %I18n.class;
+      %Inlspecial.class;
+      %Inlform.class;
+      %Ruby.class;
+      %Inline.extra;"
+>
+
+<!-- %Inline-noA.mix; includes all non-anchor inlines
+-->
+<!ENTITY % Inline-noA.mix
+     "%Inline-noA.class;
+      %Misc.class;"
+>
+
+<!-- %Inline.mix; includes all inline elements, including %Misc.class;
+-->
+<!ENTITY % Inline.mix
+     "%Inline.class;
+      %Misc.class;"
+>
+
+<!-- .....................  Block Elements  ...................... -->
+
+<!-- In the HTML 4.0 DTD, heading and list elements were included
+     in the %block; parameter entity. The %Heading.class; and
+     %List.class; parameter entities must now be included explicitly
+     on element declarations where desired.
+-->
+
+<!ENTITY % Heading.class 
+     "%h1.qname; | %h2.qname; | %h3.qname; 
+      | %h4.qname; | %h5.qname; | %h6.qname;" >
+
+<!ENTITY % List.class "%ul.qname; | %ol.qname; | %dl.qname;" >
+
+<!ENTITY % Blkstruct.class "%p.qname; | %div.qname;" >
+
+<!ENTITY % Blkphras.class 
+     "| %pre.qname; | %blockquote.qname; | %address.qname;" >
+
+<!ENTITY % Blkpres.class "| %hr.qname;" >
+
+<!ENTITY % Blkspecial.class 
+     "| %table.qname; | %form.qname; | %fieldset.qname;" >
+
+<!ENTITY % Block.extra "" >
+
+<!-- %Block.class; includes all block elements,
+     used as an component in mixes
+-->
+<!ENTITY % Block.class
+     "%Blkstruct.class;
+      %Blkphras.class;
+      %Blkpres.class;
+      %Blkspecial.class;
+      %Block.extra;"
+>
+
+<!-- %Block.mix; includes all block elements plus %Misc.class;
+-->
+<!ENTITY % Block.mix
+     "%Heading.class;
+      | %List.class;
+      | %Block.class;
+      %Misc.class;"
+>
+
+<!-- ................  All Content Elements  .................. -->
+
+<!-- %Flow.mix; includes all text content, block and inline
+-->
+<!ENTITY % Flow.mix
+     "%Heading.class;
+      | %List.class;
+      | %Block.class;
+      | %Inline.class;
+      %Misc.class;"
+>
+
+<!-- end of xhtml11-model-1.mod -->
+]]>
+
+<!ENTITY % xhtml-charent.module "INCLUDE" >
+<![%xhtml-charent.module;[
+<!ENTITY % xhtml-charent.mod
+     PUBLIC "-//W3C//ENTITIES XHTML Character Entities 1.0//EN"
+            "xhtml-charent-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Character Entities Module  ......................................... -->
+<!-- file: xhtml-charent-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ENTITIES XHTML Character Entities 1.0//EN"
+       SYSTEM "xhtml-charent-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Character Entities for XHTML
+
+     This module declares the set of character entities for XHTML,
+     including the Latin 1, Symbol and Special character collections.
+-->
+
+<!ENTITY % xhtml-lat1
+    PUBLIC "-//W3C//ENTITIES Latin 1 for XHTML//EN"
+           "xhtml-lat1.ent" >
+<!ENTITY % xhtml-symbol
+    PUBLIC "-//W3C//ENTITIES Symbols for XHTML//EN"
+           "xhtml-symbol.ent" >
+<!ENTITY % xhtml-special
+    PUBLIC "-//W3C//ENTITIES Special for XHTML//EN"
+           "xhtml-special.ent" >
+
+<!-- ...................................................................... -->
+<!-- XML-compatible ISO Latin 1 Character Entity Set for XHTML ............ -->
+<!-- file: xhtml-lat1.ent
+
+     Typical invocation:
+
+       <!ENTITY % xhtml-lat1
+           PUBLIC "-//W3C//ENTITIES Latin 1 for XHTML//EN"
+                  "xhtml-lat1.ent" >
+       %xhtml-lat1;
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+     PUBLIC "-//W3C//ENTITIES Latin 1 for XHTML//EN"
+     SYSTEM "xhtml-lat1.ent"
+
+     Revision:  $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     Portions (C) International Organization for Standardization 1986:
+     Permission to copy in any form is granted for use with conforming 
+     SGML systems and applications as defined in ISO 8879, provided 
+     this notice is included in all copies.
+-->
+
+<!ENTITY nbsp   "&#160;" ><!-- no-break space = non-breaking space, U+00A0 ISOnum -->
+<!ENTITY iexcl  "&#161;" ><!-- inverted exclamation mark, U+00A1 ISOnum -->
+<!ENTITY cent   "&#162;" ><!-- cent sign, U+00A2 ISOnum -->
+<!ENTITY pound  "&#163;" ><!-- pound sign, U+00A3 ISOnum -->
+<!ENTITY curren "&#164;" ><!-- currency sign, U+00A4 ISOnum -->
+<!ENTITY yen    "&#165;" ><!-- yen sign = yuan sign, U+00A5 ISOnum -->
+<!ENTITY brvbar "&#166;" ><!-- broken bar = broken vertical bar, U+00A6 ISOnum -->
+<!ENTITY sect   "&#167;" ><!-- section sign, U+00A7 ISOnum -->
+<!ENTITY uml    "&#168;" ><!-- diaeresis = spacing diaeresis, U+00A8 ISOdia -->
+<!ENTITY copy   "&#169;" ><!-- copyright sign, U+00A9 ISOnum -->
+<!ENTITY ordf   "&#170;" ><!-- feminine ordinal indicator, U+00AA ISOnum -->
+<!ENTITY laquo  "&#171;" ><!-- left-pointing double angle quotation mark = left pointing guillemet, U+00AB ISOnum -->
+<!ENTITY not    "&#172;" ><!-- not sign, U+00AC ISOnum -->
+<!ENTITY shy    "&#173;" ><!-- soft hyphen = discretionary hyphen, U+00AD ISOnum -->
+<!ENTITY reg    "&#174;" ><!-- registered sign = registered trade mark sign, U+00AE ISOnum -->
+<!ENTITY macr   "&#175;" ><!-- macron = spacing macron = overline = APL overbar, U+00AF ISOdia -->
+<!ENTITY deg    "&#176;" ><!-- degree sign, U+00B0 ISOnum -->
+<!ENTITY plusmn "&#177;" ><!-- plus-minus sign = plus-or-minus sign, U+00B1 ISOnum -->
+<!ENTITY sup2   "&#178;" ><!-- superscript two = superscript digit two = squared, U+00B2 ISOnum -->
+<!ENTITY sup3   "&#179;" ><!-- superscript three = superscript digit three = cubed, U+00B3 ISOnum -->
+<!ENTITY acute  "&#180;" ><!-- acute accent = spacing acute, U+00B4 ISOdia -->
+<!ENTITY micro  "&#181;" ><!-- micro sign, U+00B5 ISOnum -->
+<!ENTITY para   "&#182;" ><!-- pilcrow sign = paragraph sign, U+00B6 ISOnum -->
+<!ENTITY middot "&#183;" ><!-- middle dot = Georgian comma = Greek middle dot, U+00B7 ISOnum -->
+<!ENTITY cedil  "&#184;" ><!-- cedilla = spacing cedilla, U+00B8 ISOdia -->
+<!ENTITY sup1   "&#185;" ><!-- superscript one = superscript digit one, U+00B9 ISOnum -->
+<!ENTITY ordm   "&#186;" ><!-- masculine ordinal indicator, U+00BA ISOnum -->
+<!ENTITY raquo  "&#187;" ><!-- right-pointing double angle quotation mark = right pointing guillemet, U+00BB ISOnum -->
+<!ENTITY frac14 "&#188;" ><!-- vulgar fraction one quarter = fraction one quarter, U+00BC ISOnum -->
+<!ENTITY frac12 "&#189;" ><!-- vulgar fraction one half = fraction one half, U+00BD ISOnum -->
+<!ENTITY frac34 "&#190;" ><!-- vulgar fraction three quarters = fraction three quarters, U+00BE ISOnum -->
+<!ENTITY iquest "&#191;" ><!-- inverted question mark = turned question mark, U+00BF ISOnum -->
+<!ENTITY Agrave "&#192;" ><!-- latin capital A with grave = latin capital A grave, U+00C0 ISOlat1 -->
+<!ENTITY Aacute "&#193;" ><!-- latin capital A with acute, U+00C1 ISOlat1 -->
+<!ENTITY Acirc  "&#194;" ><!-- latin capital A with circumflex, U+00C2 ISOlat1 -->
+<!ENTITY Atilde "&#195;" ><!-- latin capital A with tilde, U+00C3 ISOlat1 -->
+<!ENTITY Auml   "&#196;" ><!-- latin capital A with diaeresis, U+00C4 ISOlat1 -->
+<!ENTITY Aring  "&#197;" ><!-- latin capital A with ring above = latin capital A ring, U+00C5 ISOlat1 -->
+<!ENTITY AElig  "&#198;" ><!-- latin capital AE = latin capital ligature AE, U+00C6 ISOlat1 -->
+<!ENTITY Ccedil "&#199;" ><!-- latin capital C with cedilla, U+00C7 ISOlat1 -->
+<!ENTITY Egrave "&#200;" ><!-- latin capital E with grave, U+00C8 ISOlat1 -->
+<!ENTITY Eacute "&#201;" ><!-- latin capital E with acute, U+00C9 ISOlat1 -->
+<!ENTITY Ecirc  "&#202;" ><!-- latin capital E with circumflex, U+00CA ISOlat1 -->
+<!ENTITY Euml   "&#203;" ><!-- latin capital E with diaeresis, U+00CB ISOlat1 -->
+<!ENTITY Igrave "&#204;" ><!-- latin capital I with grave, U+00CC ISOlat1 -->
+<!ENTITY Iacute "&#205;" ><!-- latin capital I with acute, U+00CD ISOlat1 -->
+<!ENTITY Icirc  "&#206;" ><!-- latin capital I with circumflex, U+00CE ISOlat1 -->
+<!ENTITY Iuml   "&#207;" ><!-- latin capital I with diaeresis, U+00CF ISOlat1 -->
+<!ENTITY ETH    "&#208;" ><!-- latin capital ETH, U+00D0 ISOlat1 -->
+<!ENTITY Ntilde "&#209;" ><!-- latin capital N with tilde, U+00D1 ISOlat1 -->
+<!ENTITY Ograve "&#210;" ><!-- latin capital O with grave, U+00D2 ISOlat1 -->
+<!ENTITY Oacute "&#211;" ><!-- latin capital O with acute, U+00D3 ISOlat1 -->
+<!ENTITY Ocirc  "&#212;" ><!-- latin capital O with circumflex, U+00D4 ISOlat1 -->
+<!ENTITY Otilde "&#213;" ><!-- latin capital O with tilde, U+00D5 ISOlat1 -->
+<!ENTITY Ouml   "&#214;" ><!-- latin capital O with diaeresis, U+00D6 ISOlat1 -->
+<!ENTITY times  "&#215;" ><!-- multiplication sign, U+00D7 ISOnum -->
+<!ENTITY Oslash "&#216;" ><!-- latin capital O with stroke = latin capital O slash, U+00D8 ISOlat1 -->
+<!ENTITY Ugrave "&#217;" ><!-- latin capital U with grave, U+00D9 ISOlat1 -->
+<!ENTITY Uacute "&#218;" ><!-- latin capital U with acute, U+00DA ISOlat1 -->
+<!ENTITY Ucirc  "&#219;" ><!-- latin capital U with circumflex, U+00DB ISOlat1 -->
+<!ENTITY Uuml   "&#220;" ><!-- latin capital U with diaeresis, U+00DC ISOlat1 -->
+<!ENTITY Yacute "&#221;" ><!-- latin capital Y with acute, U+00DD ISOlat1 -->
+<!ENTITY THORN  "&#222;" ><!-- latin capital THORN, U+00DE ISOlat1 -->
+<!ENTITY szlig  "&#223;" ><!-- latin small sharp s = ess-zed, U+00DF ISOlat1 -->
+<!ENTITY agrave "&#224;" ><!-- latin small a with grave = latin small a grave, U+00E0 ISOlat1 -->
+<!ENTITY aacute "&#225;" ><!-- latin small a with acute, U+00E1 ISOlat1 -->
+<!ENTITY acirc  "&#226;" ><!-- latin small a with circumflex, U+00E2 ISOlat1 -->
+<!ENTITY atilde "&#227;" ><!-- latin small a with tilde, U+00E3 ISOlat1 -->
+<!ENTITY auml   "&#228;" ><!-- latin small a with diaeresis, U+00E4 ISOlat1 -->
+<!ENTITY aring  "&#229;" ><!-- latin small a with ring above = latin small a ring, U+00E5 ISOlat1 -->
+<!ENTITY aelig  "&#230;" ><!-- latin small ae = latin small ligature ae, U+00E6 ISOlat1 -->
+<!ENTITY ccedil "&#231;" ><!-- latin small c with cedilla, U+00E7 ISOlat1 -->
+<!ENTITY egrave "&#232;" ><!-- latin small e with grave, U+00E8 ISOlat1 -->
+<!ENTITY eacute "&#233;" ><!-- latin small e with acute, U+00E9 ISOlat1 -->
+<!ENTITY ecirc  "&#234;" ><!-- latin small e with circumflex, U+00EA ISOlat1 -->
+<!ENTITY euml   "&#235;" ><!-- latin small e with diaeresis, U+00EB ISOlat1 -->
+<!ENTITY igrave "&#236;" ><!-- latin small i with grave, U+00EC ISOlat1 -->
+<!ENTITY iacute "&#237;" ><!-- latin small i with acute, U+00ED ISOlat1 -->
+<!ENTITY icirc  "&#238;" ><!-- latin small i with circumflex, U+00EE ISOlat1 -->
+<!ENTITY iuml   "&#239;" ><!-- latin small i with diaeresis, U+00EF ISOlat1 -->
+<!ENTITY eth    "&#240;" ><!-- latin small eth, U+00F0 ISOlat1 -->
+<!ENTITY ntilde "&#241;" ><!-- latin small n with tilde, U+00F1 ISOlat1 -->
+<!ENTITY ograve "&#242;" ><!-- latin small o with grave, U+00F2 ISOlat1 -->
+<!ENTITY oacute "&#243;" ><!-- latin small o with acute, U+00F3 ISOlat1 -->
+<!ENTITY ocirc  "&#244;" ><!-- latin small o with circumflex, U+00F4 ISOlat1 -->
+<!ENTITY otilde "&#245;" ><!-- latin small o with tilde, U+00F5 ISOlat1 -->
+<!ENTITY ouml   "&#246;" ><!-- latin small o with diaeresis, U+00F6 ISOlat1 -->
+<!ENTITY divide "&#247;" ><!-- division sign, U+00F7 ISOnum -->
+<!ENTITY oslash "&#248;" ><!-- latin small o with stroke, = latin small o slash, U+00F8 ISOlat1 -->
+<!ENTITY ugrave "&#249;" ><!-- latin small u with grave, U+00F9 ISOlat1 -->
+<!ENTITY uacute "&#250;" ><!-- latin small u with acute, U+00FA ISOlat1 -->
+<!ENTITY ucirc  "&#251;" ><!-- latin small u with circumflex, U+00FB ISOlat1 -->
+<!ENTITY uuml   "&#252;" ><!-- latin small u with diaeresis, U+00FC ISOlat1 -->
+<!ENTITY yacute "&#253;" ><!-- latin small y with acute, U+00FD ISOlat1 -->
+<!ENTITY thorn  "&#254;" ><!-- latin small thorn with, U+00FE ISOlat1 -->
+<!ENTITY yuml   "&#255;" ><!-- latin small y with diaeresis, U+00FF ISOlat1 -->
+<!-- end of xhtml-lat1.ent -->
+
+<!-- ...................................................................... -->
+<!-- ISO Math, Greek and Symbolic Character Entity Set for XHTML .......... -->
+<!-- file: xhtml-lat1.ent
+
+     Typical invocation:
+
+       <!ENTITY % xhtml-symbol
+           PUBLIC "-//W3C//ENTITIES Symbols for XHTML//EN"
+                  "xhtml-symbol.ent" >
+       %xhtml-symbol;
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ENTITIES Symbols for XHTML//EN"
+       SYSTEM "xhtml-symbol.ent"
+
+     Revision:  $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     Portions (C) International Organization for Standardization 1986:
+     Permission to copy in any form is granted for use with conforming 
+     SGML systems and applications as defined in ISO 8879, provided 
+     this notice is included in all copies.
+-->
+
+<!-- Relevant ISO entity set is given unless names are newly introduced.
+     New names (i.e., not in ISO 8879 list) do not clash with any
+     existing ISO 8879 entity names. ISO 10646 character numbers
+     are given for each character, in hex. CDATA values are decimal
+     conversions of the ISO 10646 values and refer to the document
+     character set. Names are Unicode 2.0 names.
+-->
+
+<!-- Latin Extended-B -->
+<!ENTITY fnof     "&#402;" ><!-- latin small f with hook = function
+                              = florin, U+0192 ISOtech -->
+
+<!-- Greek -->
+<!ENTITY Alpha    "&#913;" ><!-- greek capital letter alpha, U+0391 -->
+<!ENTITY Beta     "&#914;" ><!-- greek capital letter beta, U+0392 -->
+<!ENTITY Gamma    "&#915;" ><!-- greek capital letter gamma, U+0393 ISOgrk3 -->
+<!ENTITY Delta    "&#916;" ><!-- greek capital letter delta, U+0394 ISOgrk3 -->
+<!ENTITY Epsilon  "&#917;" ><!-- greek capital letter epsilon, U+0395 -->
+<!ENTITY Zeta     "&#918;" ><!-- greek capital letter zeta, U+0396 -->
+<!ENTITY Eta      "&#919;" ><!-- greek capital letter eta, U+0397 -->
+<!ENTITY Theta    "&#920;" ><!-- greek capital letter theta, U+0398 ISOgrk3 -->
+<!ENTITY Iota     "&#921;" ><!-- greek capital letter iota, U+0399 -->
+<!ENTITY Kappa    "&#922;" ><!-- greek capital letter kappa, U+039A -->
+<!ENTITY Lambda   "&#923;" ><!-- greek capital letter lambda, U+039B ISOgrk3 -->
+<!ENTITY Mu       "&#924;" ><!-- greek capital letter mu, U+039C -->
+<!ENTITY Nu       "&#925;" ><!-- greek capital letter nu, U+039D -->
+<!ENTITY Xi       "&#926;" ><!-- greek capital letter xi, U+039E ISOgrk3 -->
+<!ENTITY Omicron  "&#927;" ><!-- greek capital letter omicron, U+039F -->
+<!ENTITY Pi       "&#928;" ><!-- greek capital letter pi, U+03A0 ISOgrk3 -->
+<!ENTITY Rho      "&#929;" ><!-- greek capital letter rho, U+03A1 -->
+<!-- there is no Sigmaf, and no U+03A2 character either -->
+<!ENTITY Sigma    "&#931;" ><!-- greek capital letter sigma, U+03A3 ISOgrk3 -->
+<!ENTITY Tau      "&#932;" ><!-- greek capital letter tau, U+03A4 -->
+<!ENTITY Upsilon  "&#933;" ><!-- greek capital letter upsilon,
+                              U+03A5 ISOgrk3 -->
+<!ENTITY Phi      "&#934;" ><!-- greek capital letter phi, U+03A6 ISOgrk3 -->
+<!ENTITY Chi      "&#935;" ><!-- greek capital letter chi, U+03A7 -->
+<!ENTITY Psi      "&#936;" ><!-- greek capital letter psi, U+03A8 ISOgrk3 -->
+<!ENTITY Omega    "&#937;" ><!-- greek capital letter omega, U+03A9 ISOgrk3 -->
+<!ENTITY alpha    "&#945;" ><!-- greek small letter alpha, U+03B1 ISOgrk3 -->
+<!ENTITY beta     "&#946;" ><!-- greek small letter beta, U+03B2 ISOgrk3 -->
+<!ENTITY gamma    "&#947;" ><!-- greek small letter gamma, U+03B3 ISOgrk3 -->
+<!ENTITY delta    "&#948;" ><!-- greek small letter delta, U+03B4 ISOgrk3 -->
+<!ENTITY epsilon  "&#949;" ><!-- greek small letter epsilon, U+03B5 ISOgrk3 -->
+<!ENTITY zeta     "&#950;" ><!-- greek small letter zeta, U+03B6 ISOgrk3 -->
+<!ENTITY eta      "&#951;" ><!-- greek small letter eta, U+03B7 ISOgrk3 -->
+<!ENTITY theta    "&#952;" ><!-- greek small letter theta, U+03B8 ISOgrk3 -->
+<!ENTITY iota     "&#953;" ><!-- greek small letter iota, U+03B9 ISOgrk3 -->
+<!ENTITY kappa    "&#954;" ><!-- greek small letter kappa, U+03BA ISOgrk3 -->
+<!ENTITY lambda   "&#955;" ><!-- greek small letter lambda, U+03BB ISOgrk3 -->
+<!ENTITY mu       "&#956;" ><!-- greek small letter mu, U+03BC ISOgrk3 -->
+<!ENTITY nu       "&#957;" ><!-- greek small letter nu, U+03BD ISOgrk3 -->
+<!ENTITY xi       "&#958;" ><!-- greek small letter xi, U+03BE ISOgrk3 -->
+<!ENTITY omicron  "&#959;" ><!-- greek small letter omicron, U+03BF NEW -->
+<!ENTITY pi       "&#960;" ><!-- greek small letter pi, U+03C0 ISOgrk3 -->
+<!ENTITY rho      "&#961;" ><!-- greek small letter rho, U+03C1 ISOgrk3 -->
+<!ENTITY sigmaf   "&#962;" ><!-- greek small letter final sigma, U+03C2 ISOgrk3 -->
+<!ENTITY sigma    "&#963;" ><!-- greek small letter sigma, U+03C3 ISOgrk3 -->
+<!ENTITY tau      "&#964;" ><!-- greek small letter tau, U+03C4 ISOgrk3 -->
+<!ENTITY upsilon  "&#965;" ><!-- greek small letter upsilon, U+03C5 ISOgrk3 -->
+<!ENTITY phi      "&#966;" ><!-- greek small letter phi, U+03C6 ISOgrk3 -->
+<!ENTITY chi      "&#967;" ><!-- greek small letter chi, U+03C7 ISOgrk3 -->
+<!ENTITY psi      "&#968;" ><!-- greek small letter psi, U+03C8 ISOgrk3 -->
+<!ENTITY omega    "&#969;" ><!-- greek small letter omega, U+03C9 ISOgrk3 -->
+<!ENTITY thetasym "&#977;" ><!-- greek small letter theta symbol, U+03D1 NEW -->
+<!ENTITY upsih    "&#978;" ><!-- greek upsilon with hook symbol, U+03D2 NEW -->
+<!ENTITY piv      "&#982;" ><!-- greek pi symbol, U+03D6 ISOgrk3 -->
+
+<!-- General Punctuation -->
+<!ENTITY bull     "&#8226;" ><!-- bullet = black small circle, U+2022 ISOpub  -->
+<!-- bullet is NOT the same as bullet operator, U+2219 -->
+<!ENTITY hellip   "&#8230;" ><!-- horizontal ellipsis = three dot leader, U+2026 ISOpub  -->
+<!ENTITY prime    "&#8242;" ><!-- prime = minutes = feet, U+2032 ISOtech -->
+<!ENTITY Prime    "&#8243;" ><!-- double prime = seconds = inches, U+2033 ISOtech -->
+<!ENTITY oline    "&#8254;" ><!-- overline = spacing overscore, U+203E NEW -->
+<!ENTITY frasl    "&#8260;" ><!-- fraction slash, U+2044 NEW -->
+
+<!-- Letterlike Symbols -->
+<!ENTITY weierp   "&#8472;" ><!-- script capital P = power set = Weierstrass p, U+2118 ISOamso -->
+<!ENTITY image    "&#8465;" ><!-- blackletter capital I = imaginary part, U+2111 ISOamso -->
+<!ENTITY real     "&#8476;" ><!-- blackletter capital R = real part symbol, U+211C ISOamso -->
+<!ENTITY trade    "&#8482;" ><!-- trade mark sign, U+2122 ISOnum -->
+<!ENTITY alefsym  "&#8501;" ><!-- alef symbol = first transfinite cardinal, U+2135 NEW -->
+<!-- alef symbol is NOT the same as hebrew letter alef, U+05D0 although
+     the same glyph could be used to depict both characters -->
+
+<!-- Arrows -->
+<!ENTITY larr     "&#8592;" ><!-- leftwards arrow, U+2190 ISOnum -->
+<!ENTITY uarr     "&#8593;" ><!-- upwards arrow, U+2191 ISOnum-->
+<!ENTITY rarr     "&#8594;" ><!-- rightwards arrow, U+2192 ISOnum -->
+<!ENTITY darr     "&#8595;" ><!-- downwards arrow, U+2193 ISOnum -->
+<!ENTITY harr     "&#8596;" ><!-- left right arrow, U+2194 ISOamsa -->
+<!ENTITY crarr    "&#8629;" ><!-- downwards arrow with corner leftwards
+                               = carriage return, U+21B5 NEW -->
+<!ENTITY lArr     "&#8656;" ><!-- leftwards double arrow, U+21D0 ISOtech -->
+<!-- Unicode does not say that lArr is the same as the 'is implied by' arrow
+    but also does not have any other character for that function. So ? lArr can
+    be used for 'is implied by' as ISOtech suggests -->
+<!ENTITY uArr     "&#8657;" ><!-- upwards double arrow, U+21D1 ISOamsa -->
+<!ENTITY rArr     "&#8658;" ><!-- rightwards double arrow, U+21D2 ISOtech -->
+<!-- Unicode does not say this is the 'implies' character but does not have
+     another character with this function so ?
+     rArr can be used for 'implies' as ISOtech suggests -->
+<!ENTITY dArr     "&#8659;" ><!-- downwards double arrow, U+21D3 ISOamsa -->
+<!ENTITY hArr     "&#8660;" ><!-- left right double arrow, U+21D4 ISOamsa -->
+
+<!-- Mathematical Operators -->
+<!ENTITY forall   "&#8704;" ><!-- for all, U+2200 ISOtech -->
+<!ENTITY part     "&#8706;" ><!-- partial differential, U+2202 ISOtech  -->
+<!ENTITY exist    "&#8707;" ><!-- there exists, U+2203 ISOtech -->
+<!ENTITY empty    "&#8709;" ><!-- empty set = null set = diameter, U+2205 ISOamso -->
+<!ENTITY nabla    "&#8711;" ><!-- nabla = backward difference, U+2207 ISOtech -->
+<!ENTITY isin     "&#8712;" ><!-- element of, U+2208 ISOtech -->
+<!ENTITY notin    "&#8713;" ><!-- not an element of, U+2209 ISOtech -->
+<!ENTITY ni       "&#8715;" ><!-- contains as member, U+220B ISOtech -->
+<!-- should there be a more memorable name than 'ni'? -->
+<!ENTITY prod     "&#8719;" ><!-- n-ary product = product sign, U+220F ISOamsb -->
+<!-- prod is NOT the same character as U+03A0 'greek capital letter pi' though
+     the same glyph might be used for both -->
+<!ENTITY sum      "&#8721;" ><!-- n-ary sumation, U+2211 ISOamsb -->
+<!-- sum is NOT the same character as U+03A3 'greek capital letter sigma'
+     though the same glyph might be used for both -->
+<!ENTITY minus    "&#8722;" ><!-- minus sign, U+2212 ISOtech -->
+<!ENTITY lowast   "&#8727;" ><!-- asterisk operator, U+2217 ISOtech -->
+<!ENTITY radic    "&#8730;" ><!-- square root = radical sign, U+221A ISOtech -->
+<!ENTITY prop     "&#8733;" ><!-- proportional to, U+221D ISOtech -->
+<!ENTITY infin    "&#8734;" ><!-- infinity, U+221E ISOtech -->
+<!ENTITY ang      "&#8736;" ><!-- angle, U+2220 ISOamso -->
+<!ENTITY and      "&#8743;" ><!-- logical and = wedge, U+2227 ISOtech -->
+<!ENTITY or       "&#8744;" ><!-- logical or = vee, U+2228 ISOtech -->
+<!ENTITY cap      "&#8745;" ><!-- intersection = cap, U+2229 ISOtech -->
+<!ENTITY cup      "&#8746;" ><!-- union = cup, U+222A ISOtech -->
+<!ENTITY int      "&#8747;" ><!-- integral, U+222B ISOtech -->
+<!ENTITY there4   "&#8756;" ><!-- therefore, U+2234 ISOtech -->
+<!ENTITY sim      "&#8764;" ><!-- tilde operator = varies with = similar to, U+223C ISOtech -->
+<!-- tilde operator is NOT the same character as the tilde, U+007E,
+     although the same glyph might be used to represent both  -->
+<!ENTITY cong     "&#8773;" ><!-- approximately equal to, U+2245 ISOtech -->
+<!ENTITY asymp    "&#8776;" ><!-- almost equal to = asymptotic to, U+2248 ISOamsr -->
+<!ENTITY ne       "&#8800;" ><!-- not equal to, U+2260 ISOtech -->
+<!ENTITY equiv    "&#8801;" ><!-- identical to, U+2261 ISOtech -->
+<!ENTITY le       "&#8804;" ><!-- less-than or equal to, U+2264 ISOtech -->
+<!ENTITY ge       "&#8805;" ><!-- greater-than or equal to, U+2265 ISOtech -->
+<!ENTITY sub      "&#8834;" ><!-- subset of, U+2282 ISOtech -->
+<!ENTITY sup      "&#8835;" ><!-- superset of, U+2283 ISOtech -->
+<!-- note that nsup, 'not a superset of, U+2283' is not covered by the Symbol
+     font encoding and is not included. Should it be, for symmetry?
+     It is in ISOamsn  -->
+<!ENTITY nsub     "&#8836;" ><!-- not a subset of, U+2284 ISOamsn -->
+<!ENTITY sube     "&#8838;" ><!-- subset of or equal to, U+2286 ISOtech -->
+<!ENTITY supe     "&#8839;" ><!-- superset of or equal to, U+2287 ISOtech -->
+<!ENTITY oplus    "&#8853;" ><!-- circled plus = direct sum, U+2295 ISOamsb -->
+<!ENTITY otimes   "&#8855;" ><!-- circled times = vector product, U+2297 ISOamsb -->
+<!ENTITY perp     "&#8869;" ><!-- up tack = orthogonal to = perpendicular, U+22A5 ISOtech -->
+<!ENTITY sdot     "&#8901;" ><!-- dot operator, U+22C5 ISOamsb -->
+<!-- dot operator is NOT the same character as U+00B7 middle dot -->
+
+<!-- Miscellaneous Technical -->
+<!ENTITY lceil    "&#8968;" ><!-- left ceiling = apl upstile, U+2308 ISOamsc  -->
+<!ENTITY rceil    "&#8969;" ><!-- right ceiling, U+2309 ISOamsc  -->
+<!ENTITY lfloor   "&#8970;" ><!-- left floor = apl downstile, U+230A ISOamsc  -->
+<!ENTITY rfloor   "&#8971;" ><!-- right floor, U+230B ISOamsc  -->
+<!ENTITY lang     "&#9001;" ><!-- left-pointing angle bracket = bra, U+2329 ISOtech -->
+<!-- lang is NOT the same character as U+003C 'less than'
+     or U+2039 'single left-pointing angle quotation mark' -->
+<!ENTITY rang     "&#9002;" ><!-- right-pointing angle bracket = ket, U+232A ISOtech -->
+<!-- rang is NOT the same character as U+003E 'greater than'
+     or U+203A 'single right-pointing angle quotation mark' -->
+
+<!-- Geometric Shapes -->
+<!ENTITY loz      "&#9674;" ><!-- lozenge, U+25CA ISOpub -->
+
+<!-- Miscellaneous Symbols -->
+<!ENTITY spades   "&#9824;" ><!-- black spade suit, U+2660 ISOpub -->
+<!-- black here seems to mean filled as opposed to hollow -->
+<!ENTITY clubs    "&#9827;" ><!-- black club suit = shamrock, U+2663 ISOpub -->
+<!ENTITY hearts   "&#9829;" ><!-- black heart suit = valentine, U+2665 ISOpub -->
+<!ENTITY diams    "&#9830;" ><!-- black diamond suit, U+2666 ISOpub -->
+
+<!-- end of xhtml-symbol.ent -->
+
+<!-- ...................................................................... -->
+<!-- XML-compatible ISO Special Character Entity Set for XHTML ............ -->
+<!-- file: xhtml-lat1.ent
+
+     Typical invocation:
+
+       <!ENTITY % xhtml-special
+           PUBLIC "-//W3C//ENTITIES Special for XHTML//EN"
+                  "xhtml-special.ent" >
+       %xhtml-special;
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+     PUBLIC "-//W3C//ENTITIES Special for XHTML//EN"
+     SYSTEM "xhtml-special.ent"
+
+     Revision:  $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     Portions (C) International Organization for Standardization 1986:
+     Permission to copy in any form is granted for use with conforming 
+     SGML systems and applications as defined in ISO 8879, provided 
+     this notice is included in all copies.
+-->
+
+<!-- Relevant ISO entity set is given unless names are newly introduced.
+     New names (i.e., not in ISO 8879 list) do not clash with any
+     existing ISO 8879 entity names. ISO 10646 character numbers
+     are given for each character, in hex. CDATA values are decimal
+     conversions of the ISO 10646 values and refer to the document
+     character set. Names are Unicode 2.0 names.
+-->
+
+<!-- C0 Controls and Basic Latin -->
+<!ENTITY quot    "&#34;" ><!-- quotation mark = APL quote, U+0022 ISOnum -->
+<!ENTITY amp     "&#38;" ><!-- ampersand, U+0026 ISOnum -->
+<!ENTITY lt      "&#60;" ><!-- less-than sign, U+003C ISOnum -->
+<!ENTITY gt      "&#62;" ><!-- greater-than sign, U+003E ISOnum -->
+
+<!-- Latin Extended-A -->
+<!ENTITY OElig   "&#338;" ><!-- latin capital ligature OE, U+0152 ISOlat2 -->
+<!ENTITY oelig   "&#339;" ><!-- latin small ligature oe, U+0153 ISOlat2 -->
+
+<!-- ligature is a misnomer, this is a separate character in some languages -->
+<!ENTITY Scaron  "&#352;" ><!-- latin capital letter S with caron, U+0160 ISOlat2 -->
+<!ENTITY scaron  "&#353;" ><!-- latin small letter s with caron, U+0161 ISOlat2 -->
+<!ENTITY Yuml    "&#376;" ><!-- latin capital letter Y with diaeresis, U+0178 ISOlat2 -->
+
+<!-- Spacing Modifier Letters -->
+<!ENTITY circ    "&#710;" ><!-- modifier letter circumflex accent, U+02C6 ISOpub -->
+<!ENTITY tilde   "&#732;" ><!-- small tilde, U+02DC ISOdia -->
+
+<!-- General Punctuation -->
+<!ENTITY ensp    "&#8194;" ><!-- en space, U+2002 ISOpub -->
+<!ENTITY emsp    "&#8195;" ><!-- em space, U+2003 ISOpub -->
+<!ENTITY thinsp  "&#8201;" ><!-- thin space, U+2009 ISOpub -->
+<!ENTITY zwnj    "&#8204;" ><!-- zero width non-joiner, U+200C NEW RFC 2070 -->
+<!ENTITY zwj     "&#8205;" ><!-- zero width joiner, U+200D NEW RFC 2070 -->
+<!ENTITY lrm     "&#8206;" ><!-- left-to-right mark, U+200E NEW RFC 2070 -->
+<!ENTITY rlm     "&#8207;" ><!-- right-to-left mark, U+200F NEW RFC 2070 -->
+<!ENTITY ndash   "&#8211;" ><!-- en dash, U+2013 ISOpub -->
+<!ENTITY mdash   "&#8212;" ><!-- em dash, U+2014 ISOpub -->
+<!ENTITY lsquo   "&#8216;" ><!-- left single quotation mark, U+2018 ISOnum -->
+<!ENTITY rsquo   "&#8217;" ><!-- right single quotation mark, U+2019 ISOnum -->
+<!ENTITY sbquo   "&#8218;" ><!-- single low-9 quotation mark, U+201A NEW -->
+<!ENTITY ldquo   "&#8220;" ><!-- left double quotation mark, U+201C ISOnum -->
+<!ENTITY rdquo   "&#8221;" ><!-- right double quotation mark, U+201D ISOnum -->
+<!ENTITY bdquo   "&#8222;" ><!-- double low-9 quotation mark, U+201E NEW -->
+<!ENTITY dagger  "&#8224;" ><!-- dagger, U+2020 ISOpub -->
+<!ENTITY Dagger  "&#8225;" ><!-- double dagger, U+2021 ISOpub -->
+<!ENTITY permil  "&#8240;" ><!-- per mille sign, U+2030 ISOtech -->
+
+<!-- lsaquo is proposed but not yet ISO standardized -->
+<!ENTITY lsaquo  "&#8249;" ><!-- single left-pointing angle quotation mark, U+2039 ISO proposed -->
+<!-- rsaquo is proposed but not yet ISO standardized -->
+<!ENTITY rsaquo  "&#8250;" ><!-- single right-pointing angle quotation mark, U+203A ISO proposed -->
+<!ENTITY euro    "&#8364;" ><!-- euro sign, U+20AC NEW -->
+
+<!-- end of xhtml-special.ent -->
+
+
+<!-- end of xhtml-charent-1.mod -->
+]]>
+
+<!-- end of xhtml-framework-1.mod -->
+]]>
+
+<!-- Post-Framework Redeclaration placeholder  ................... -->
+<!-- this serves as a location to insert markup declarations
+     into the DTD following the framework declarations.
+-->
+<!ENTITY % xhtml-postfw-redecl.module "IGNORE" >
+<![%xhtml-postfw-redecl.module;[
+%xhtml-postfw-redecl.mod;
+<!-- end of xhtml-postfw-redecl.module -->]]>
+
+<!-- Text Module (Required)  ..................................... -->
+<!ENTITY % xhtml-text.module "INCLUDE" >
+<![%xhtml-text.module;[
+<!ENTITY % xhtml-text.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Text 1.0//EN"
+            "xhtml-text-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Text Module  ................................................... -->
+<!-- file: xhtml-text-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Text 1.0//EN"
+       SYSTEM "xhtml-text-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Textual Content
+
+     The Text module includes declarations for all core 
+     text container elements and their attributes.
+-->
+
+<!ENTITY % xhtml-inlstruct.module "INCLUDE" >
+<![%xhtml-inlstruct.module;[
+<!ENTITY % xhtml-inlstruct.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Inline Structural 1.0//EN"
+            "xhtml-inlstruct-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Inline Phrasal Module  ......................................... -->
+<!-- file: xhtml-inlstruct-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Inline Structural 1.0//EN"
+       SYSTEM "xhtml-inlstruct-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Inline Structural
+
+        br, span
+
+     This module declares the elements and their attributes 
+     used to support inline-level structural markup.
+-->
+
+<!-- br: forced line break ............................. -->
+
+<!ENTITY % br.element  "INCLUDE" >
+<![%br.element;[
+
+<!ENTITY % br.content  "EMPTY" >
+<!ENTITY % br.qname  "br" >
+<!ELEMENT %br.qname;  %br.content; >
+
+<!-- end of br.element -->]]>
+
+<!ENTITY % br.attlist  "INCLUDE" >
+<![%br.attlist;[
+<!ATTLIST %br.qname;
+      %Core.attrib;
+>
+<!-- end of br.attlist -->]]>
+
+<!-- span: generic inline container .................... -->
+
+<!ENTITY % span.element  "INCLUDE" >
+<![%span.element;[
+<!ENTITY % span.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % span.qname  "span" >
+<!ELEMENT %span.qname;  %span.content; >
+<!-- end of span.element -->]]>
+
+<!ENTITY % span.attlist  "INCLUDE" >
+<![%span.attlist;[
+<!ATTLIST %span.qname;
+      %Common.attrib;
+>
+<!-- end of span.attlist -->]]>
+
+<!-- end of xhtml-inlstruct-1.mod -->
+]]>
+
+<!ENTITY % xhtml-inlphras.module "INCLUDE" >
+<![%xhtml-inlphras.module;[
+<!ENTITY % xhtml-inlphras.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Inline Phrasal 1.0//EN"
+            "xhtml-inlphras-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Inline Phrasal Module  ......................................... -->
+<!-- file: xhtml-inlphras-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Inline Phrasal 1.0//EN"
+       SYSTEM "xhtml-inlphras-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Inline Phrasal
+
+        abbr, acronym, cite, code, dfn, em, kbd, q, samp, strong, var
+
+     This module declares the elements and their attributes used to
+     support inline-level phrasal markup.
+-->
+
+<!ENTITY % abbr.element  "INCLUDE" >
+<![%abbr.element;[
+<!ENTITY % abbr.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % abbr.qname  "abbr" >
+<!ELEMENT %abbr.qname;  %abbr.content; >
+<!-- end of abbr.element -->]]>
+
+<!ENTITY % abbr.attlist  "INCLUDE" >
+<![%abbr.attlist;[
+<!ATTLIST %abbr.qname;
+      %Common.attrib;
+>
+<!-- end of abbr.attlist -->]]>
+
+<!ENTITY % acronym.element  "INCLUDE" >
+<![%acronym.element;[
+<!ENTITY % acronym.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % acronym.qname  "acronym" >
+<!ELEMENT %acronym.qname;  %acronym.content; >
+<!-- end of acronym.element -->]]>
+
+<!ENTITY % acronym.attlist  "INCLUDE" >
+<![%acronym.attlist;[
+<!ATTLIST %acronym.qname;
+      %Common.attrib;
+>
+<!-- end of acronym.attlist -->]]>
+
+<!ENTITY % cite.element  "INCLUDE" >
+<![%cite.element;[
+<!ENTITY % cite.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % cite.qname  "cite" >
+<!ELEMENT %cite.qname;  %cite.content; >
+<!-- end of cite.element -->]]>
+
+<!ENTITY % cite.attlist  "INCLUDE" >
+<![%cite.attlist;[
+<!ATTLIST %cite.qname;
+      %Common.attrib;
+>
+<!-- end of cite.attlist -->]]>
+
+<!ENTITY % code.element  "INCLUDE" >
+<![%code.element;[
+<!ENTITY % code.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % code.qname  "code" >
+<!ELEMENT %code.qname;  %code.content; >
+<!-- end of code.element -->]]>
+
+<!ENTITY % code.attlist  "INCLUDE" >
+<![%code.attlist;[
+<!ATTLIST %code.qname;
+      %Common.attrib;
+>
+<!-- end of code.attlist -->]]>
+
+<!ENTITY % dfn.element  "INCLUDE" >
+<![%dfn.element;[
+<!ENTITY % dfn.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % dfn.qname  "dfn" >
+<!ELEMENT %dfn.qname;  %dfn.content; >
+<!-- end of dfn.element -->]]>
+
+<!ENTITY % dfn.attlist  "INCLUDE" >
+<![%dfn.attlist;[
+<!ATTLIST %dfn.qname;
+      %Common.attrib;
+>
+<!-- end of dfn.attlist -->]]>
+
+<!ENTITY % em.element  "INCLUDE" >
+<![%em.element;[
+<!ENTITY % em.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % em.qname  "em" >
+<!ELEMENT %em.qname;  %em.content; >
+<!-- end of em.element -->]]>
+
+<!ENTITY % em.attlist  "INCLUDE" >
+<![%em.attlist;[
+<!ATTLIST %em.qname;
+      %Common.attrib;
+>
+<!-- end of em.attlist -->]]>
+
+<!ENTITY % kbd.element  "INCLUDE" >
+<![%kbd.element;[
+<!ENTITY % kbd.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % kbd.qname  "kbd" >
+<!ELEMENT %kbd.qname;  %kbd.content; >
+<!-- end of kbd.element -->]]>
+
+<!ENTITY % kbd.attlist  "INCLUDE" >
+<![%kbd.attlist;[
+<!ATTLIST %kbd.qname;
+      %Common.attrib;
+>
+<!-- end of kbd.attlist -->]]>
+
+<!ENTITY % q.element  "INCLUDE" >
+<![%q.element;[
+<!ENTITY % q.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % q.qname  "q" >
+<!ELEMENT %q.qname;  %q.content; >
+<!-- end of q.element -->]]>
+
+<!ENTITY % q.attlist  "INCLUDE" >
+<![%q.attlist;[
+<!ATTLIST %q.qname;
+      %Common.attrib;
+      cite         %URI.datatype;           #IMPLIED
+>
+<!-- end of q.attlist -->]]>
+
+<!ENTITY % samp.element  "INCLUDE" >
+<![%samp.element;[
+<!ENTITY % samp.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % samp.qname  "samp" >
+<!ELEMENT %samp.qname;  %samp.content; >
+<!-- end of samp.element -->]]>
+
+<!ENTITY % samp.attlist  "INCLUDE" >
+<![%samp.attlist;[
+<!ATTLIST %samp.qname;
+      %Common.attrib;
+>
+<!-- end of samp.attlist -->]]>
+
+<!ENTITY % strong.element  "INCLUDE" >
+<![%strong.element;[
+<!ENTITY % strong.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % strong.qname  "strong" >
+<!ELEMENT %strong.qname;  %strong.content; >
+<!-- end of strong.element -->]]>
+
+<!ENTITY % strong.attlist  "INCLUDE" >
+<![%strong.attlist;[
+<!ATTLIST %strong.qname;
+      %Common.attrib;
+>
+<!-- end of strong.attlist -->]]>
+
+<!ENTITY % var.element  "INCLUDE" >
+<![%var.element;[
+<!ENTITY % var.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % var.qname  "var" >
+<!ELEMENT %var.qname;  %var.content; >
+<!-- end of var.element -->]]>
+
+<!ENTITY % var.attlist  "INCLUDE" >
+<![%var.attlist;[
+<!ATTLIST %var.qname;
+      %Common.attrib;
+>
+<!-- end of var.attlist -->]]>
+
+<!-- end of xhtml-inlphras-1.mod -->
+]]>
+
+<!ENTITY % xhtml-blkstruct.module "INCLUDE" >
+<![%xhtml-blkstruct.module;[
+<!ENTITY % xhtml-blkstruct.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Block Structural 1.0//EN"
+            "xhtml-blkstruct-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Block Structural Module  ....................................... -->
+<!-- file: xhtml-blkstruct-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Block Structural 1.0//EN"
+       SYSTEM "xhtml-blkstruct-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Block Structural
+
+        div, p
+
+     This module declares the elements and their attributes used to
+     support block-level structural markup.
+-->
+
+<!ENTITY % div.element  "INCLUDE" >
+<![%div.element;[
+<!ENTITY % div.content
+     "( #PCDATA | %Flow.mix; )*"
+>
+<!ENTITY % div.qname  "div" >
+<!ELEMENT %div.qname;  %div.content; >
+<!-- end of div.element -->]]>
+
+<!ENTITY % div.attlist  "INCLUDE" >
+<![%div.attlist;[
+<!-- end of div.attlist -->]]>
+<!ATTLIST %div.qname;
+      %Common.attrib;
+>
+
+<!ENTITY % p.element  "INCLUDE" >
+<![%p.element;[
+<!ENTITY % p.content
+     "( #PCDATA | %Inline.mix; )*" >
+<!ENTITY % p.qname  "p" >
+<!ELEMENT %p.qname;  %p.content; >
+<!-- end of p.element -->]]>
+
+<!ENTITY % p.attlist  "INCLUDE" >
+<![%p.attlist;[
+<!ATTLIST %p.qname;
+      %Common.attrib;
+>
+<!-- end of p.attlist -->]]>
+
+<!-- end of xhtml-blkstruct-1.mod -->
+]]>
+
+<!ENTITY % xhtml-blkphras.module "INCLUDE" >
+<![%xhtml-blkphras.module;[
+<!ENTITY % xhtml-blkphras.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Block Phrasal 1.0//EN"
+            "xhtml-blkphras-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Block Phrasal Module  .......................................... -->
+<!-- file: xhtml-blkphras-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Block Phrasal 1.0//EN"
+       SYSTEM "xhtml-blkphras-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Block Phrasal
+
+        address, blockquote, pre, h1, h2, h3, h4, h5, h6
+
+     This module declares the elements and their attributes used to
+     support block-level phrasal markup.
+-->
+
+<!ENTITY % address.element  "INCLUDE" >
+<![%address.element;[
+<!ENTITY % address.content
+     "( #PCDATA | %Inline.mix; )*" >
+<!ENTITY % address.qname  "address" >
+<!ELEMENT %address.qname;  %address.content; >
+<!-- end of address.element -->]]>
+
+<!ENTITY % address.attlist  "INCLUDE" >
+<![%address.attlist;[
+<!ATTLIST %address.qname;
+      %Common.attrib;
+>
+<!-- end of address.attlist -->]]>
+
+<!ENTITY % blockquote.element  "INCLUDE" >
+<![%blockquote.element;[
+<!ENTITY % blockquote.content
+     "( %Block.mix; )+"
+>
+<!ENTITY % blockquote.qname  "blockquote" >
+<!ELEMENT %blockquote.qname;  %blockquote.content; >
+<!-- end of blockquote.element -->]]>
+
+<!ENTITY % blockquote.attlist  "INCLUDE" >
+<![%blockquote.attlist;[
+<!ATTLIST %blockquote.qname;
+      %Common.attrib;
+      cite         %URI.datatype;           #IMPLIED
+>
+<!-- end of blockquote.attlist -->]]>
+
+<!ENTITY % pre.element  "INCLUDE" >
+<![%pre.element;[
+<!ENTITY % pre.content
+     "( #PCDATA 
+      | %Inlstruct.class;
+      %Inlphras.class;
+      | %tt.qname; | %i.qname; | %b.qname;
+      %I18n.class;
+      %Anchor.class;
+      | %script.qname; | %map.qname;
+      %Inline.extra; )*"
+>
+<!ENTITY % pre.qname  "pre" >
+<!ELEMENT %pre.qname;  %pre.content; >
+<!-- end of pre.element -->]]>
+
+<!ENTITY % pre.attlist  "INCLUDE" >
+<![%pre.attlist;[
+<!ATTLIST %pre.qname;
+      %Common.attrib;
+      xml:space    ( preserve )             #FIXED 'preserve'
+>
+<!-- end of pre.attlist -->]]>
+
+<!-- ...................  Heading Elements  ................... -->
+
+<!ENTITY % Heading.content  "( #PCDATA | %Inline.mix; )*" >
+
+<!ENTITY % h1.element  "INCLUDE" >
+<![%h1.element;[
+<!ENTITY % h1.qname  "h1" >
+<!ELEMENT %h1.qname;  %Heading.content; >
+<!-- end of h1.element -->]]>
+
+<!ENTITY % h1.attlist  "INCLUDE" >
+<![%h1.attlist;[
+<!ATTLIST %h1.qname;
+      %Common.attrib;
+>
+<!-- end of h1.attlist -->]]>
+
+<!ENTITY % h2.element  "INCLUDE" >
+<![%h2.element;[
+<!ENTITY % h2.qname  "h2" >
+<!ELEMENT %h2.qname;  %Heading.content; >
+<!-- end of h2.element -->]]>
+
+<!ENTITY % h2.attlist  "INCLUDE" >
+<![%h2.attlist;[
+<!ATTLIST %h2.qname;
+      %Common.attrib;
+>
+<!-- end of h2.attlist -->]]>
+
+<!ENTITY % h3.element  "INCLUDE" >
+<![%h3.element;[
+<!ENTITY % h3.qname  "h3" >
+<!ELEMENT %h3.qname;  %Heading.content; >
+<!-- end of h3.element -->]]>
+
+<!ENTITY % h3.attlist  "INCLUDE" >
+<![%h3.attlist;[
+<!ATTLIST %h3.qname;
+      %Common.attrib;
+>
+<!-- end of h3.attlist -->]]>
+
+<!ENTITY % h4.element  "INCLUDE" >
+<![%h4.element;[
+<!ENTITY % h4.qname  "h4" >
+<!ELEMENT %h4.qname;  %Heading.content; >
+<!-- end of h4.element -->]]>
+
+<!ENTITY % h4.attlist  "INCLUDE" >
+<![%h4.attlist;[
+<!ATTLIST %h4.qname;
+      %Common.attrib;
+>
+<!-- end of h4.attlist -->]]>
+
+<!ENTITY % h5.element  "INCLUDE" >
+<![%h5.element;[
+<!ENTITY % h5.qname  "h5" >
+<!ELEMENT %h5.qname;  %Heading.content; >
+<!-- end of h5.element -->]]>
+
+<!ENTITY % h5.attlist  "INCLUDE" >
+<![%h5.attlist;[
+<!ATTLIST %h5.qname;
+      %Common.attrib;
+>
+<!-- end of h5.attlist -->]]>
+
+<!ENTITY % h6.element  "INCLUDE" >
+<![%h6.element;[
+<!ENTITY % h6.qname  "h6" >
+<!ELEMENT %h6.qname;  %Heading.content; >
+<!-- end of h6.element -->]]>
+
+<!ENTITY % h6.attlist  "INCLUDE" >
+<![%h6.attlist;[
+<!ATTLIST %h6.qname;
+      %Common.attrib;
+>
+<!-- end of h6.attlist -->]]>
+
+<!-- end of xhtml-blkphras-1.mod -->
+]]>
+
+<!-- end of xhtml-text-1.mod -->
+]]>
+
+<!-- Hypertext Module (required) ................................. -->
+<!ENTITY % xhtml-hypertext.module "INCLUDE" >
+<![%xhtml-hypertext.module;[
+<!ENTITY % xhtml-hypertext.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Hypertext 1.0//EN"
+            "xhtml-hypertext-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Hypertext Module  .............................................. -->
+<!-- file: xhtml-hypertext-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Hypertext 1.0//EN"
+       SYSTEM "xhtml-hypertext-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Hypertext
+
+        a
+
+     This module declares the anchor ('a') element type, which
+     defines the source of a hypertext link. The destination
+     (or link 'target') is identified via its 'id' attribute 
+     rather than the 'name' attribute as was used in HTML.
+-->
+
+<!-- ............  Anchor Element  ............ -->
+
+<!ENTITY % a.element  "INCLUDE" >
+<![%a.element;[
+<!ENTITY % a.content
+     "( #PCDATA | %Inline-noA.mix; )*"
+>
+<!ENTITY % a.qname  "a" >
+<!ELEMENT %a.qname;  %a.content; >
+<!-- end of a.element -->]]>
+
+<!ENTITY % a.attlist  "INCLUDE" >
+<![%a.attlist;[
+<!ATTLIST %a.qname;
+      %Common.attrib;
+      href         %URI.datatype;           #IMPLIED
+      charset      %Charset.datatype;       #IMPLIED
+      type         %ContentType.datatype;   #IMPLIED
+      hreflang     %LanguageCode.datatype;  #IMPLIED
+      rel          %LinkTypes.datatype;     #IMPLIED
+      rev          %LinkTypes.datatype;     #IMPLIED
+      accesskey    %Character.datatype;     #IMPLIED
+      tabindex     %Number.datatype;        #IMPLIED
+>
+<!-- end of a.attlist -->]]>
+
+<!-- end of xhtml-hypertext-1.mod -->
+]]>
+
+<!-- Lists Module (required)  .................................... -->
+<!ENTITY % xhtml-list.module "INCLUDE" >
+<![%xhtml-list.module;[
+<!ENTITY % xhtml-list.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Lists 1.0//EN"
+            "xhtml-list-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Lists Module  .................................................. -->
+<!-- file: xhtml-list-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Lists 1.0//EN"
+       SYSTEM "xhtml-list-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Lists
+
+        dl, dt, dd, ol, ul, li
+
+     This module declares the list-oriented element types
+     and their attributes.
+-->
+
+<!ENTITY % dl.qname  "dl" >
+<!ENTITY % dt.qname  "dt" >
+<!ENTITY % dd.qname  "dd" >
+<!ENTITY % ol.qname  "ol" >
+<!ENTITY % ul.qname  "ul" >
+<!ENTITY % li.qname  "li" >
+
+<!-- dl: Definition List ............................... -->
+
+<!ENTITY % dl.element  "INCLUDE" >
+<![%dl.element;[
+<!ENTITY % dl.content  "( %dt.qname; | %dd.qname; )+" >
+<!ELEMENT %dl.qname;  %dl.content; >
+<!-- end of dl.element -->]]>
+
+<!ENTITY % dl.attlist  "INCLUDE" >
+<![%dl.attlist;[
+<!ATTLIST %dl.qname;
+      %Common.attrib;
+>
+<!-- end of dl.attlist -->]]>
+
+<!-- dt: Definition Term ............................... -->
+
+<!ENTITY % dt.element  "INCLUDE" >
+<![%dt.element;[
+<!ENTITY % dt.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ELEMENT %dt.qname;  %dt.content; >
+<!-- end of dt.element -->]]>
+
+<!ENTITY % dt.attlist  "INCLUDE" >
+<![%dt.attlist;[
+<!ATTLIST %dt.qname;
+      %Common.attrib;
+>
+<!-- end of dt.attlist -->]]>
+
+<!-- dd: Definition Description ........................ -->
+
+<!ENTITY % dd.element  "INCLUDE" >
+<![%dd.element;[
+<!ENTITY % dd.content
+     "( #PCDATA | %Flow.mix; )*"
+>
+<!ELEMENT %dd.qname;  %dd.content; >
+<!-- end of dd.element -->]]>
+
+<!ENTITY % dd.attlist  "INCLUDE" >
+<![%dd.attlist;[
+<!ATTLIST %dd.qname;
+      %Common.attrib;
+>
+<!-- end of dd.attlist -->]]>
+
+<!-- ol: Ordered List (numbered styles) ................ -->
+
+<!ENTITY % ol.element  "INCLUDE" >
+<![%ol.element;[
+<!ENTITY % ol.content  "( %li.qname; )+" >
+<!ELEMENT %ol.qname;  %ol.content; >
+<!-- end of ol.element -->]]>
+
+<!ENTITY % ol.attlist  "INCLUDE" >
+<![%ol.attlist;[
+<!ATTLIST %ol.qname;
+      %Common.attrib;
+>
+<!-- end of ol.attlist -->]]>
+
+<!-- ul: Unordered List (bullet styles) ................ -->
+
+<!ENTITY % ul.element  "INCLUDE" >
+<![%ul.element;[
+<!ENTITY % ul.content  "( %li.qname; )+" >
+<!ELEMENT %ul.qname;  %ul.content; >
+<!-- end of ul.element -->]]>
+
+<!ENTITY % ul.attlist  "INCLUDE" >
+<![%ul.attlist;[
+<!ATTLIST %ul.qname;
+      %Common.attrib;
+>
+<!-- end of ul.attlist -->]]>
+
+<!-- li: List Item ..................................... -->
+
+<!ENTITY % li.element  "INCLUDE" >
+<![%li.element;[
+<!ENTITY % li.content
+     "( #PCDATA | %Flow.mix; )*"
+>
+<!ELEMENT %li.qname;  %li.content; >
+<!-- end of li.element -->]]>
+
+<!ENTITY % li.attlist  "INCLUDE" >
+<![%li.attlist;[
+<!ATTLIST %li.qname;
+      %Common.attrib;
+>
+<!-- end of li.attlist -->]]>
+
+<!-- end of xhtml-list-1.mod -->
+]]>
+
+<!-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
+
+<!-- Edit Module  ................................................ -->
+<!ENTITY % xhtml-edit.module "INCLUDE" >
+<![%xhtml-edit.module;[
+<!ENTITY % xhtml-edit.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Editing Elements 1.0//EN"
+            "xhtml-edit-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Editing Elements Module  ....................................... -->
+<!-- file: xhtml-edit-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Editing Markup 1.0//EN"
+       SYSTEM "xhtml-edit-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Editing Elements
+
+        ins, del
+
+     This module declares element types and attributes used to indicate
+     inserted and deleted content while editing a document.
+-->
+
+<!-- ins: Inserted Text  ............................... -->
+
+<!ENTITY % ins.element  "INCLUDE" >
+<![%ins.element;[
+<!ENTITY % ins.content
+     "( #PCDATA | %Flow.mix; )*"
+>
+<!ENTITY % ins.qname  "ins" >
+<!ELEMENT %ins.qname;  %ins.content; >
+<!-- end of ins.element -->]]>
+
+<!ENTITY % ins.attlist  "INCLUDE" >
+<![%ins.attlist;[
+<!ATTLIST %ins.qname;
+      %Common.attrib;
+      cite         %URI.datatype;           #IMPLIED
+      datetime     %Datetime.datatype;      #IMPLIED
+>
+<!-- end of ins.attlist -->]]>
+
+<!-- del: Deleted Text  ................................ -->
+
+<!ENTITY % del.element  "INCLUDE" >
+<![%del.element;[
+<!ENTITY % del.content
+     "( #PCDATA | %Flow.mix; )*"
+>
+<!ENTITY % del.qname  "del" >
+<!ELEMENT %del.qname;  %del.content; >
+<!-- end of del.element -->]]>
+
+<!ENTITY % del.attlist  "INCLUDE" >
+<![%del.attlist;[
+<!ATTLIST %del.qname;
+      %Common.attrib;
+      cite         %URI.datatype;           #IMPLIED
+      datetime     %Datetime.datatype;      #IMPLIED
+>
+<!-- end of del.attlist -->]]>
+
+<!-- end of xhtml-edit-1.mod -->
+]]>
+
+<!-- BIDI Override Module  ....................................... -->
+<!ENTITY % xhtml-bdo.module "%XHTML.bidi;" >
+<![%xhtml-bdo.module;[
+<!ENTITY % xhtml-bdo.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML BIDI Override Element 1.0//EN"
+            "xhtml-bdo-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML BDO Element Module ............................................. -->
+<!-- file: xhtml-bdo-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML BDO Element 1.0//EN"
+       SYSTEM "xhtml-bdo-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Bidirectional Override (bdo) Element
+
+     This modules declares the element 'bdo', used to override the
+     Unicode bidirectional algorithm for selected fragments of text.
+
+     DEPENDENCIES:
+     Relies on the conditional section keyword %XHTML.bidi; declared
+     as "INCLUDE". Bidirectional text support includes both the bdo 
+     element and the 'dir' attribute.
+-->
+
+<!ENTITY % bdo.element  "INCLUDE" >
+<![%bdo.element;[
+<!ENTITY % bdo.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % bdo.qname  "bdo" >
+<!ELEMENT %bdo.qname;  %bdo.content; >
+<!-- end of bdo.element -->]]>
+
+<!ENTITY % bdo.attlist  "INCLUDE" >
+<![%bdo.attlist;[
+<!ATTLIST %bdo.qname;
+      %Core.attrib;
+      %I18n.attrib;
+>
+]]>
+
+<!-- end of xhtml-bdo-1.mod -->
+]]>
+
+<!-- Ruby Module  ................................................ -->
+<!ENTITY % Ruby.common.attlists "INCLUDE" >
+<!ENTITY % Ruby.common.attrib "%Common.attrib;" >
+<!ENTITY % xhtml-ruby.module "INCLUDE" >
+<![%xhtml-ruby.module;[
+<!ENTITY % xhtml-ruby.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Ruby 1.0//EN"
+            "xhtml-ruby-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Ruby Module .................................................... -->
+<!-- file: xhtml-ruby-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1999 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $
+
+     This module is based on the W3C Ruby Annotation Specification:
+
+        http://www.w3.org/TR/ruby
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Ruby 1.0//EN"
+       SYSTEM "xhtml-ruby-1.mod"
+
+     Revisions:
+     (none)
+     ...................................................................... -->
+
+<!-- Ruby Elements
+
+        ruby, rbc, rtc, rb, rt, rp
+
+     This module declares the elements and their attributes used to
+     support ruby annotation markup.
+-->
+
+<!-- declare qualified element type names:
+-->
+<!ENTITY % ruby.qname  "ruby" >
+<!ENTITY % rbc.qname  "rbc" >
+<!ENTITY % rtc.qname  "rtc" >
+<!ENTITY % rb.qname  "rb" >
+<!ENTITY % rt.qname  "rt" >
+<!ENTITY % rp.qname  "rp" >
+
+<!-- rp fallback is included by default.
+-->
+<!ENTITY % Ruby.fallback "INCLUDE" >
+
+<!-- Group ruby is included by default; it may be 
+     overridden by other modules to ignore it.
+-->
+<!ENTITY % Ruby.group "INCLUDE" >
+
+<!-- Fragments for the content model of the ruby element -->
+<![%Ruby.fallback;[
+<!ENTITY % ruby.content.simple 
+     "( %rb.qname;, %rp.qname;?, %rt.qname;, %rp.qname;? )"
+>
+]]>
+<!ENTITY % ruby.content.simple "( %rb.qname;, %rt.qname; )" >
+
+<![%Ruby.group;[
+<!ENTITY % ruby.content.group 
+     "| ( %rbc.qname;, %rtc.qname;, %rtc.qname;? )"
+>
+]]>
+<!ENTITY % ruby.content.group "" >
+
+<!-- Content models of the rb and the rt elements are intended to
+     allow other inline-level elements of its parent markup language,
+     but it should not include ruby descendent elements. The following
+     parameter entity %Noruby.content; can be used to redefine
+     those content models with minimum effort.  It's defined as
+     '( #PCDATA )' by default.
+-->
+<!ENTITY % Noruby.content "( #PCDATA )" >
+
+<!-- one or more digits (NUMBER) -->
+<!ENTITY % Number.datatype "CDATA" >
+
+<!-- ruby element ...................................... -->
+
+<!ENTITY % ruby.element  "INCLUDE" >
+<![%ruby.element;[
+<!ENTITY % ruby.content
+     "( %ruby.content.simple; %ruby.content.group; )"
+>
+<!ELEMENT %ruby.qname;  %ruby.content; >
+<!-- end of ruby.element -->]]>
+
+<![%Ruby.group;[
+<!-- rbc (ruby base component) element ................. -->
+
+<!ENTITY % rbc.element  "INCLUDE" >
+<![%rbc.element;[
+<!ENTITY % rbc.content
+     "(%rb.qname;)+"
+>
+<!ELEMENT %rbc.qname;  %rbc.content; >
+<!-- end of rbc.element -->]]>
+
+<!-- rtc (ruby text component) element ................. -->
+
+<!ENTITY % rtc.element  "INCLUDE" >
+<![%rtc.element;[
+<!ENTITY % rtc.content
+     "(%rt.qname;)+"
+>
+<!ELEMENT %rtc.qname;  %rtc.content; >
+<!-- end of rtc.element -->]]>
+]]>
+
+<!-- rb (ruby base) element ............................ -->
+
+<!ENTITY % rb.element  "INCLUDE" >
+<![%rb.element;[
+<!-- %rb.content; uses %Noruby.content; as its content model,
+     which is '( #PCDATA )' by default. It may be overridden
+     by other modules to allow other inline-level elements
+     of its parent markup language, but it should not include
+     ruby descendent elements.
+-->
+<!ENTITY % rb.content "%Noruby.content;" >
+<!ELEMENT %rb.qname;  %rb.content; >
+<!-- end of rb.element -->]]>
+
+<!-- rt (ruby text) element ............................ -->
+
+<!ENTITY % rt.element  "INCLUDE" >
+<![%rt.element;[
+<!-- %rt.content; uses %Noruby.content; as its content model,
+     which is '( #PCDATA )' by default. It may be overridden
+     by other modules to allow other inline-level elements
+     of its parent markup language, but it should not include
+     ruby descendent elements.
+-->
+<!ENTITY % rt.content "%Noruby.content;" >
+
+<!ELEMENT %rt.qname;  %rt.content; >
+<!-- end of rt.element -->]]>
+
+<!-- rbspan attribute is used for group ruby only ...... -->
+<![%Ruby.group;[
+<!ENTITY % rt.attlist  "INCLUDE" >
+<![%rt.attlist;[
+<!ATTLIST %rt.qname;
+      rbspan         %Number.datatype;      "1"
+>
+<!-- end of rt.attlist -->]]>
+]]>
+
+<!-- rp (ruby parenthesis) element ..................... -->
+
+<![%Ruby.fallback;[
+<!ENTITY % rp.element  "INCLUDE" >
+<![%rp.element;[
+<!ENTITY % rp.content
+     "( #PCDATA )"
+>
+<!ELEMENT %rp.qname;  %rp.content; >
+<!-- end of rp.element -->]]>
+]]>
+
+<!-- Ruby Common Attributes
+
+     The following optional ATTLIST declarations provide an easy way
+     to define common attributes for ruby elements.  These declarations
+     are ignored by default.
+
+     Ruby elements are intended to have common attributes of its
+     parent markup language.  For example, if a markup language defines
+     common attributes as a parameter entity %attrs;, you may add
+     those attributes by just declaring the following parameter entities
+
+         <!ENTITY % Ruby.common.attlists  "INCLUDE" >
+         <!ENTITY % Ruby.common.attrib  "%attrs;" >
+
+     before including the Ruby module.
+-->
+
+<!ENTITY % Ruby.common.attlists  "IGNORE" >
+<![%Ruby.common.attlists;[
+<!ENTITY % Ruby.common.attrib  "" >
+
+<!-- common attributes for ruby ........................ -->
+
+<!ENTITY % Ruby.common.attlist  "INCLUDE" >
+<![%Ruby.common.attlist;[
+<!ATTLIST %ruby.qname;
+      %Ruby.common.attrib;
+>
+<!-- end of Ruby.common.attlist -->]]>
+
+<![%Ruby.group;[
+<!-- common attributes for rbc ......................... -->
+
+<!ENTITY % Rbc.common.attlist  "INCLUDE" >
+<![%Rbc.common.attlist;[
+<!ATTLIST %rbc.qname;
+      %Ruby.common.attrib;
+>
+<!-- end of Rbc.common.attlist -->]]>
+
+<!-- common attributes for rtc ......................... -->
+
+<!ENTITY % Rtc.common.attlist  "INCLUDE" >
+<![%Rtc.common.attlist;[
+<!ATTLIST %rtc.qname;
+      %Ruby.common.attrib;
+>
+<!-- end of Rtc.common.attlist -->]]>
+]]>
+
+<!-- common attributes for rb .......................... -->
+
+<!ENTITY % Rb.common.attlist  "INCLUDE" >
+<![%Rb.common.attlist;[
+<!ATTLIST %rb.qname;
+      %Ruby.common.attrib;
+>
+<!-- end of Rb.common.attlist -->]]>
+
+<!-- common attributes for rt .......................... -->
+
+<!ENTITY % Rt.common.attlist  "INCLUDE" >
+<![%Rt.common.attlist;[
+<!ATTLIST %rt.qname;
+      %Ruby.common.attrib;
+>
+<!-- end of Rt.common.attlist -->]]>
+
+<![%Ruby.fallback;[
+<!-- common attributes for rp .......................... -->
+
+<!ENTITY % Rp.common.attlist  "INCLUDE" >
+<![%Rp.common.attlist;[
+<!ATTLIST %rp.qname;
+      %Ruby.common.attrib;
+>
+<!-- end of Rp.common.attlist -->]]>
+]]>
+]]>
+
+<!-- end of xhtml-ruby-1.mod -->
+]]>
+
+<!-- Presentation Module  ........................................ -->
+<!ENTITY % xhtml-pres.module "INCLUDE" >
+<![%xhtml-pres.module;[
+<!ENTITY % xhtml-pres.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Presentation 1.0//EN"
+            "xhtml-pres-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Presentation Module ............................................ -->
+<!-- file: xhtml-pres-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Presentation 1.0//EN"
+       SYSTEM "xhtml-pres-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Presentational Elements
+
+     This module defines elements and their attributes for
+     simple presentation-related markup.
+-->
+
+<!ENTITY % xhtml-inlpres.module "INCLUDE" >
+<![%xhtml-inlpres.module;[
+<!ENTITY % xhtml-inlpres.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Inline Presentation 1.0//EN"
+            "xhtml-inlpres-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Inline Presentation Module  .................................... -->
+<!-- file: xhtml-inlpres-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Inline Presentation 1.0//EN"
+       SYSTEM "xhtml-inlpres-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- 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.
+-->
+
+<!ENTITY % b.element  "INCLUDE" >
+<![%b.element;[
+<!ENTITY % b.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % b.qname  "b" >
+<!ELEMENT %b.qname;  %b.content; >
+<!-- end of b.element -->]]>
+
+<!ENTITY % b.attlist  "INCLUDE" >
+<![%b.attlist;[
+<!ATTLIST %b.qname;
+      %Common.attrib;
+>
+<!-- end of b.attlist -->]]>
+
+<!ENTITY % big.element  "INCLUDE" >
+<![%big.element;[
+<!ENTITY % big.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % big.qname  "big" >
+<!ELEMENT %big.qname;  %big.content; >
+<!-- end of big.element -->]]>
+
+<!ENTITY % big.attlist  "INCLUDE" >
+<![%big.attlist;[
+<!ATTLIST %big.qname;
+      %Common.attrib;
+>
+<!-- end of big.attlist -->]]>
+
+<!ENTITY % i.element  "INCLUDE" >
+<![%i.element;[
+<!ENTITY % i.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % i.qname  "i" >
+<!ELEMENT %i.qname;  %i.content; >
+<!-- end of i.element -->]]>
+
+<!ENTITY % i.attlist  "INCLUDE" >
+<![%i.attlist;[
+<!ATTLIST %i.qname;
+      %Common.attrib;
+>
+<!-- end of i.attlist -->]]>
+
+<!ENTITY % small.element  "INCLUDE" >
+<![%small.element;[
+<!ENTITY % small.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % small.qname  "small" >
+<!ELEMENT %small.qname;  %small.content; >
+<!-- end of small.element -->]]>
+
+<!ENTITY % small.attlist  "INCLUDE" >
+<![%small.attlist;[
+<!ATTLIST %small.qname;
+      %Common.attrib;
+>
+<!-- end of small.attlist -->]]>
+
+<!ENTITY % sub.element  "INCLUDE" >
+<![%sub.element;[
+<!ENTITY % sub.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % sub.qname  "sub" >
+<!ELEMENT %sub.qname;  %sub.content; >
+<!-- end of sub.element -->]]>
+
+<!ENTITY % sub.attlist  "INCLUDE" >
+<![%sub.attlist;[
+<!ATTLIST %sub.qname;
+      %Common.attrib;
+>
+<!-- end of sub.attlist -->]]>
+
+<!ENTITY % sup.element  "INCLUDE" >
+<![%sup.element;[
+<!ENTITY % sup.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % sup.qname  "sup" >
+<!ELEMENT %sup.qname;  %sup.content; >
+<!-- end of sup.element -->]]>
+
+<!ENTITY % sup.attlist  "INCLUDE" >
+<![%sup.attlist;[
+<!ATTLIST %sup.qname;
+      %Common.attrib;
+>
+<!-- end of sup.attlist -->]]>
+
+<!ENTITY % tt.element  "INCLUDE" >
+<![%tt.element;[
+<!ENTITY % tt.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % tt.qname  "tt" >
+<!ELEMENT %tt.qname;  %tt.content; >
+<!-- end of tt.element -->]]>
+
+<!ENTITY % tt.attlist  "INCLUDE" >
+<![%tt.attlist;[
+<!ATTLIST %tt.qname;
+      %Common.attrib;
+>
+<!-- end of tt.attlist -->]]>
+
+<!-- end of xhtml-inlpres-1.mod -->
+]]>
+
+<!ENTITY % xhtml-blkpres.module "INCLUDE" >
+<![%xhtml-blkpres.module;[
+<!ENTITY % xhtml-blkpres.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Block Presentation 1.0//EN"
+            "xhtml-blkpres-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Block Presentation Module  ..................................... -->
+<!-- file: xhtml-blkpres-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Block Presentation 1.0//EN"
+       SYSTEM "xhtml-blkpres-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Block Presentational Elements
+
+        hr
+
+     This module declares the elements and their attributes used to
+     support block-level presentational markup.
+-->
+
+<!ENTITY % hr.element  "INCLUDE" >
+<![%hr.element;[
+<!ENTITY % hr.content  "EMPTY" >
+<!ENTITY % hr.qname  "hr" >
+<!ELEMENT %hr.qname;  %hr.content; >
+<!-- end of hr.element -->]]>
+
+<!ENTITY % hr.attlist  "INCLUDE" >
+<![%hr.attlist;[
+<!ATTLIST %hr.qname;
+      %Common.attrib;
+>
+<!-- end of hr.attlist -->]]>
+
+<!-- end of xhtml-blkpres-1.mod -->
+]]>
+
+<!-- end of xhtml-pres-1.mod -->
+]]>
+
+<!-- Link Element Module  ........................................ -->
+<!ENTITY % xhtml-link.module "INCLUDE" >
+<![%xhtml-link.module;[
+<!ENTITY % xhtml-link.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Link Element 1.0//EN"
+            "xhtml-link-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Link Element Module  ........................................... -->
+<!-- file: xhtml-link-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Link Element 1.0//EN"
+       SYSTEM "xhtml-link-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Link element
+
+        link
+
+     This module declares the link element type and its attributes,
+     which could (in principle) be used to define document-level links
+     to external resources such as:
+
+     a) for document specific toolbars/menus, e.g. start, contents,
+        previous, next, index, end, help
+     b) to link to a separate style sheet (rel="stylesheet")
+     c) to make a link to a script (rel="script")
+     d) by stylesheets to control how collections of html nodes are
+        rendered into printed documents
+     e) to make a link to a printable version of this document
+        e.g. a postscript or pdf version (rel="alternate" media="print")
+-->
+
+<!-- link: Media-Independent Link ...................... -->
+
+<!ENTITY % link.element  "INCLUDE" >
+<![%link.element;[
+<!ENTITY % link.content  "EMPTY" >
+<!ENTITY % link.qname  "link" >
+<!ELEMENT %link.qname;  %link.content; >
+<!-- end of link.element -->]]>
+
+<!ENTITY % link.attlist  "INCLUDE" >
+<![%link.attlist;[
+<!ATTLIST %link.qname;
+      %Common.attrib;
+      charset      %Charset.datatype;       #IMPLIED
+      href         %URI.datatype;           #IMPLIED
+      hreflang     %LanguageCode.datatype;  #IMPLIED
+      type         %ContentType.datatype;   #IMPLIED
+      rel          %LinkTypes.datatype;     #IMPLIED
+      rev          %LinkTypes.datatype;     #IMPLIED
+      media        %MediaDesc.datatype;     #IMPLIED
+>
+<!-- end of link.attlist -->]]>
+
+<!-- end of xhtml-link-1.mod -->
+]]>
+
+<!-- Document Metainformation Module  ............................ -->
+<!ENTITY % xhtml-meta.module "INCLUDE" >
+<![%xhtml-meta.module;[
+<!ENTITY % xhtml-meta.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Metainformation 1.0//EN"
+            "xhtml-meta-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Document Metainformation Module  ............................... -->
+<!-- file: xhtml-meta-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Metainformation 1.0//EN"
+       SYSTEM "xhtml-meta-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Meta Information
+
+        meta
+
+     This module declares the meta element type and its attributes,
+     used to provide declarative document metainformation.
+-->
+
+<!-- meta: Generic Metainformation ..................... -->
+
+<!ENTITY % meta.element  "INCLUDE" >
+<![%meta.element;[
+<!ENTITY % meta.content  "EMPTY" >
+<!ENTITY % meta.qname  "meta" >
+<!ELEMENT %meta.qname;  %meta.content; >
+<!-- end of meta.element -->]]>
+
+<!ENTITY % meta.attlist  "INCLUDE" >
+<![%meta.attlist;[
+<!ATTLIST %meta.qname;
+      %I18n.attrib;
+      http-equiv   NMTOKEN                  #IMPLIED
+      name         NMTOKEN                  #IMPLIED
+      content      CDATA                    #REQUIRED
+      scheme       CDATA                    #IMPLIED
+>
+<!-- end of meta.attlist -->]]>
+
+<!-- end of xhtml-meta-1.mod -->
+]]>
+
+<!-- Base Element Module  ........................................ -->
+<!ENTITY % xhtml-base.module "INCLUDE" >
+<![%xhtml-base.module;[
+<!ENTITY % xhtml-base.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Base Element 1.0//EN"
+            "xhtml-base-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Base Element Module  ........................................... -->
+<!-- file: xhtml-base-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Base Element 1.0//EN"
+       SYSTEM "xhtml-base-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Base element
+
+        base
+
+     This module declares the base element type and its attributes,
+     used to define a base URI against which relative URIs in the
+     document will be resolved.
+
+     Note that this module also redeclares the content model for
+     the head element to include the base element.
+-->
+
+<!-- base: Document Base URI ........................... -->
+
+<!ENTITY % base.element  "INCLUDE" >
+<![%base.element;[
+<!ENTITY % base.content  "EMPTY" >
+<!ENTITY % base.qname  "base" >
+<!ELEMENT %base.qname;  %base.content; >
+<!-- end of base.element -->]]>
+
+<!ENTITY % base.attlist  "INCLUDE" >
+<![%base.attlist;[
+<!ATTLIST %base.qname;
+      href         %URI.datatype;           #REQUIRED
+>
+<!-- end of base.attlist -->]]>
+
+<!ENTITY % head.content
+    "( %Head-opts.mix;,
+     ( ( %title.qname;, %Head-opts.mix;, ( %base.qname;, %Head-opts.mix; )? )
+     | ( %base.qname;, %Head-opts.mix;, ( %title.qname;, %Head-opts.mix; ))))"
+>
+
+<!-- end of xhtml-base-1.mod -->
+]]>
+
+<!-- Scripting Module  ........................................... -->
+<!ENTITY % xhtml-script.module "INCLUDE" >
+<![%xhtml-script.module;[
+<!ENTITY % xhtml-script.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Scripting 1.0//EN"
+            "xhtml-script-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Document Scripting Module  ..................................... -->
+<!-- file: xhtml-script-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Scripting 1.0//EN"
+       SYSTEM "xhtml-script-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Scripting
+
+        script, noscript
+
+     This module declares element types and attributes used to provide
+     support for executable scripts as well as an alternate content
+     container where scripts are not supported.
+-->
+
+<!-- script: Scripting Statement ....................... -->
+
+<!ENTITY % script.element  "INCLUDE" >
+<![%script.element;[
+<!ENTITY % script.content  "( #PCDATA )" >
+<!ENTITY % script.qname  "script" >
+<!ELEMENT %script.qname;  %script.content; >
+<!-- end of script.element -->]]>
+
+<!ENTITY % script.attlist  "INCLUDE" >
+<![%script.attlist;[
+<!ATTLIST %script.qname;
+      charset      %Charset.datatype;       #IMPLIED
+      type         %ContentType.datatype;   #REQUIRED
+      src          %URI.datatype;           #IMPLIED
+      defer        ( defer )                #IMPLIED
+      xml:space    ( preserve )             #FIXED 'preserve'
+>
+<!-- end of script.attlist -->]]>
+
+<!-- noscript: No-Script Alternate Content ............. -->
+
+<!ENTITY % noscript.element  "INCLUDE" >
+<![%noscript.element;[
+<!ENTITY % noscript.content
+     "( %Block.mix; )+"
+>
+<!ENTITY % noscript.qname  "noscript" >
+<!ELEMENT %noscript.qname;  %noscript.content; >
+<!-- end of noscript.element -->]]>
+
+<!ENTITY % noscript.attlist  "INCLUDE" >
+<![%noscript.attlist;[
+<!ATTLIST %noscript.qname;
+      %Common.attrib;
+>
+<!-- end of noscript.attlist -->]]>
+
+<!-- end of xhtml-script-1.mod -->
+]]>
+
+<!-- Stylesheets Module  ......................................... -->
+<!ENTITY % xhtml-style.module "INCLUDE" >
+<![%xhtml-style.module;[
+<!ENTITY % xhtml-style.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Stylesheets 1.0//EN"
+            "xhtml-style-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Document Stylesheet Module  .................................... -->
+<!-- file: xhtml-style-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//DTD XHTML Stylesheets 1.0//EN"
+       SYSTEM "xhtml-style-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Stylesheets
+
+        style
+
+     This module declares the style element type and its attributes,
+     used to embed stylesheet information in the document head element.
+-->
+
+<!-- style: Stylesheet Information ..................... -->
+
+<!ENTITY % style.element  "INCLUDE" >
+<![%style.element;[
+<!ENTITY % style.content  "( #PCDATA )" >
+<!ENTITY % style.qname  "style" >
+<!ELEMENT %style.qname;  %style.content; >
+<!-- end of style.element -->]]>
+
+<!ENTITY % style.attlist  "INCLUDE" >
+<![%style.attlist;[
+<!ATTLIST %style.qname;
+      %Title.attrib;
+      %I18n.attrib;
+      type         %ContentType.datatype;   #REQUIRED
+      media        %MediaDesc.datatype;     #IMPLIED
+      xml:space    ( preserve )             #FIXED 'preserve'
+>
+<!-- end of style.attlist -->]]>
+
+<!-- end of xhtml-style-1.mod -->
+]]>
+
+<!-- Image Module  ............................................... -->
+<!ENTITY % xhtml-image.module "INCLUDE" >
+<![%xhtml-image.module;[
+<!ENTITY % xhtml-image.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Images 1.0//EN"
+            "xhtml-image-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Images Module  ................................................. -->
+<!-- file: xhtml-image-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Rovision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Images 1.0//EN"
+       SYSTEM "xhtml-image-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Images
+
+        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.
+-->
+
+<!ENTITY % img.element  "INCLUDE" >
+<![%img.element;[
+<!ENTITY % img.content  "EMPTY" >
+<!ENTITY % img.qname  "img" >
+<!ELEMENT %img.qname;  %img.content; >
+<!-- end of img.element -->]]>
+
+<!ENTITY % img.attlist  "INCLUDE" >
+<![%img.attlist;[
+<!ATTLIST %img.qname;
+      %Common.attrib;
+      src          %URI.datatype;           #REQUIRED
+      alt          %Text.datatype;          #REQUIRED
+      longdesc     %URI.datatype;           #IMPLIED
+      height       %Length.datatype;        #IMPLIED
+      width        %Length.datatype;        #IMPLIED
+>
+<!-- end of img.attlist -->]]>
+
+<!-- end of xhtml-image-1.mod -->
+]]>
+
+<!-- Client-side Image Map Module  ............................... -->
+<!ENTITY % xhtml-csismap.module "INCLUDE" >
+<![%xhtml-csismap.module;[
+<!ENTITY % xhtml-csismap.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Client-side Image Maps 1.0//EN"
+            "xhtml-csismap-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Client-side Image Map Module  .................................. -->
+<!-- file: xhtml-csismap-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Client-side Image Maps 1.0//EN"
+       SYSTEM "xhtml-csismap-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Client-side Image Maps
+
+        area, map
+
+     This module declares elements and attributes to support client-side
+     image maps. This requires that the Image Module (or a module
+     declaring the img element type) be included in the DTD.
+
+     These can be placed in the same document or grouped in a
+     separate document, although the latter isn't widely supported
+-->
+
+<!ENTITY % area.element  "INCLUDE" >
+<![%area.element;[
+<!ENTITY % area.content  "EMPTY" >
+<!ENTITY % area.qname  "area" >
+<!ELEMENT %area.qname;  %area.content; >
+<!-- end of area.element -->]]>
+
+<!ENTITY % Shape.datatype "( rect | circle | poly | default )">
+<!ENTITY % Coords.datatype "CDATA" >
+
+<!ENTITY % area.attlist  "INCLUDE" >
+<![%area.attlist;[
+<!ATTLIST %area.qname;
+      %Common.attrib;
+      href         %URI.datatype;           #IMPLIED
+      shape        %Shape.datatype;         'rect'
+      coords       %Coords.datatype;        #IMPLIED
+      nohref       ( nohref )               #IMPLIED
+      alt          %Text.datatype;          #REQUIRED
+      tabindex     %Number.datatype;        #IMPLIED
+      accesskey    %Character.datatype;     #IMPLIED
+>
+<!-- end of area.attlist -->]]>
+
+<!-- modify anchor attribute definition list
+     to allow for client-side image maps
+-->
+<!ATTLIST %a.qname;
+      shape        %Shape.datatype;         'rect'
+      coords       %Coords.datatype;        #IMPLIED
+>
+
+<!-- modify img attribute definition list
+     to allow for client-side image maps
+-->
+<!ATTLIST %img.qname;
+      usemap       IDREF                    #IMPLIED
+>
+<!-- 'usemap' points to the 'id' attribute of a MAP element,
+     which must be in the same document; support for external
+     document maps was not widely supported in HTML and is
+     eliminated in XHTML.
+
+     It is considered an error for the element pointed to by
+     a usemap IDREF to occur in anything but a map element.
+-->
+
+<!ENTITY % map.element  "INCLUDE" >
+<![%map.element;[
+<!ENTITY % map.content
+     "(( %Block.mix; ) | %area.qname; )+"
+>
+<!ENTITY % map.qname  "map" >
+<!ELEMENT %map.qname;  %map.content; >
+<!-- end of map.element -->]]>
+
+<!ENTITY % map.attlist  "INCLUDE" >
+<![%map.attlist;[
+<!ATTLIST %map.qname;
+      id           ID                       #REQUIRED
+      %Class.attrib;
+      %Title.attrib;
+      %Core.extra.attrib;
+      %I18n.attrib;
+      %Events.attrib;
+>
+<!-- end of map.attlist -->]]>
+
+<!-- end of xhtml-csismap-1.mod -->
+]]>
+
+<!-- Server-side Image Map Module  ............................... -->
+<!ENTITY % xhtml-ssismap.module "INCLUDE" >
+<![%xhtml-ssismap.module;[
+<!ENTITY % xhtml-ssismap.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Server-side Image Maps 1.0//EN"
+            "xhtml-ssismap-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Server-side Image Map Module  .................................. -->
+<!-- file: xhtml-ssismap-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Server-side Image Maps 1.0//EN"
+       SYSTEM "xhtml-ssismap-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Server-side Image Maps
+
+     This adds the 'ismap' attribute to the img element to 
+     support server-side processing of a user selection.
+-->
+
+<!ATTLIST %img.qname;
+      ismap        ( ismap )                #IMPLIED
+>
+
+<!-- end of xhtml-ssismap-1.mod -->
+]]>
+
+<!-- Param Element Module  ....................................... -->
+<!ENTITY % xhtml-param.module "INCLUDE" >
+<![%xhtml-param.module;[
+<!ENTITY % xhtml-param.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Param Element 1.0//EN"
+            "xhtml-param-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Param Element Module  ..................................... -->
+<!-- file: xhtml-param-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Param Element 1.0//EN"
+       SYSTEM "xhtml-param-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Parameters for Java Applets and Embedded Objects
+
+        param
+
+     This module provides declarations for the param element, 
+     used to provide named property values for the applet
+     and object elements. 
+-->
+
+<!-- param: Named Property Value ....................... -->
+
+<!ENTITY % param.element  "INCLUDE" >
+<![%param.element;[
+<!ENTITY % param.content  "EMPTY" >
+<!ENTITY % param.qname  "param" >
+<!ELEMENT %param.qname;  %param.content; >
+<!-- end of param.element -->]]>
+
+<!ENTITY % param.attlist  "INCLUDE" >
+<![%param.attlist;[
+<!ATTLIST %param.qname;
+      %Id.attrib;
+      name         CDATA                    #REQUIRED
+      value        CDATA                    #IMPLIED
+      valuetype    ( data | ref | object )  'data'
+      type         %ContentType.datatype;   #IMPLIED
+>
+<!-- end of param.attlist -->]]>
+
+<!-- end of xhtml-param-1.mod -->
+]]>
+
+<!-- Java Applet Element Module  ................................. -->
+<!ENTITY % xhtml-applet.module "INCLUDE" >
+<![%xhtml-applet.module;[
+<!ENTITY % xhtml-applet.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Java Applets 1.0//EN"
+            "xhtml-applet-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Java Applet Module  ............................................ -->
+<!-- file: xhtml-applet-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Java Applets 1.0//EN"
+       SYSTEM "xhtml-applet-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Java Applets
+
+        applet
+
+     This module declares the applet element type and its attributes, 
+     used to provide support for Java applets. The 'alt' attribute 
+     is now required (as it is on images). One of either code or 
+     object attributes must be present. In the document, place param 
+     elements before the object elements that require their content.
+
+     Note that use of this module requires instantiation of the 
+     Param Element Module prior to this module.
+-->
+
+<!-- applet: Java Applet ............................... -->
+
+<!ENTITY % applet.element  "INCLUDE" >
+<![%applet.element;[
+<!ENTITY % applet.content
+     "( %param.qname; | %Flow.mix; )*"
+>
+<!ENTITY % applet.qname  "applet" >
+<!ELEMENT %applet.qname;  %applet.content; >
+<!-- end of applet.element -->]]>
+
+<!ENTITY % applet.attlist  "INCLUDE" >
+<![%applet.attlist;[
+<!ATTLIST %applet.qname;
+      %Core.attrib;
+      alt          %Text.datatype;          #REQUIRED
+      name         CDATA                    #IMPLIED
+      archive      CDATA                    #IMPLIED
+      code         CDATA                    #IMPLIED
+      codebase     %URI.datatype;           #IMPLIED
+      object       CDATA                    #IMPLIED
+      width        %Length.datatype;        #REQUIRED
+      height       %Length.datatype;        #REQUIRED
+>
+<!-- end of applet.attlist -->]]>
+
+<!-- end of xhtml-applet-1.mod -->
+]]>
+
+<!-- Embedded Object Module  ..................................... -->
+<!ENTITY % xhtml-object.module "INCLUDE" >
+<![%xhtml-object.module;[
+<!ENTITY % xhtml-object.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Embedded Object 1.0//EN"
+            "xhtml-object-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Embedded Object Module  ........................................ -->
+<!-- file: xhtml-object-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Embedded Object 1.0//EN"
+       SYSTEM "xhtml-object-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Embedded Objects
+
+        object
+
+     This module declares the object element type and its attributes,
+     used to embed external objects as part of XHTML pages. In the
+     document, place param elements prior to the object elements 
+     that require their content.
+
+     Note that use of this module requires instantiation of the 
+     Param Element Module prior to this module.
+-->
+
+<!-- object: Generic Embedded Object ................... -->
+
+<!ENTITY % object.element  "INCLUDE" >
+<![%object.element;[
+<!ENTITY % object.content
+     "( #PCDATA | %Flow.mix; | %param.qname; )*"
+>
+<!ENTITY % object.qname  "object" >
+<!ELEMENT %object.qname;  %object.content; >
+<!-- end of object.element -->]]>
+
+<!ENTITY % object.attlist  "INCLUDE" >
+<![%object.attlist;[
+<!ATTLIST %object.qname;
+      %Common.attrib;
+      declare      ( declare )              #IMPLIED
+      classid      %URI.datatype;           #IMPLIED
+      codebase     %URI.datatype;           #IMPLIED
+      data         %URI.datatype;           #IMPLIED
+      type         %ContentType.datatype;   #IMPLIED
+      codetype     %ContentType.datatype;   #IMPLIED
+      archive      %URIs.datatype;          #IMPLIED
+      standby      %Text.datatype;          #IMPLIED
+      height       %Length.datatype;        #IMPLIED
+      width        %Length.datatype;        #IMPLIED
+      usemap       IDREF                    #IMPLIED
+      name         CDATA                    #IMPLIED
+      tabindex     %Number.datatype;        #IMPLIED
+>
+<!-- end of object.attlist -->]]>
+
+<!-- end of xhtml-object-1.mod -->
+]]>
+
+<!-- Tables Module ............................................... -->
+<!ENTITY % xhtml-table.module "INCLUDE" >
+<![%xhtml-table.module;[
+<!ENTITY % xhtml-table.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Tables 1.0//EN"
+            "xhtml-table-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Table Module  .................................................. -->
+<!-- file: xhtml-table-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Tables 1.0//EN"
+       SYSTEM "xhtml-table-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- 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.
+-->
+
+<!-- declare qualified element type names:
+-->
+<!ENTITY % table.qname  "table" >
+<!ENTITY % caption.qname  "caption" >
+<!ENTITY % thead.qname  "thead" >
+<!ENTITY % tfoot.qname  "tfoot" >
+<!ENTITY % tbody.qname  "tbody" >
+<!ENTITY % colgroup.qname  "colgroup" >
+<!ENTITY % col.qname  "col" >
+<!ENTITY % tr.qname  "tr" >
+<!ENTITY % th.qname  "th" >
+<!ENTITY % td.qname  "td" >
+
+<!-- The frame attribute specifies which parts of the frame around
+     the table should be rendered. The values are not the same as
+     CALS to avoid a name clash with the valign attribute.
+-->
+<!ENTITY % TFrame.attrib
+     "frame        ( void
+                   | above
+                   | below
+                   | hsides
+                   | lhs
+                   | rhs
+                   | vsides
+                   | box
+                   | border )               #IMPLIED"
+>
+
+<!-- The rules attribute defines which rules to draw between cells:
+
+     If rules is absent then assume:
+
+       "none" if border is absent or border="0" otherwise "all"
+-->
+<!ENTITY % TRules.attrib
+     "rules        ( none
+                   | groups
+                   | rows
+                   | cols
+                   | all )                  #IMPLIED"
+>
+
+<!-- horizontal alignment attributes for cell contents
+-->
+<!ENTITY % CellHAlign.attrib
+     "align        ( left
+                   | center
+                   | right
+                   | justify
+                   | char )                 #IMPLIED
+      char         %Character.datatype;     #IMPLIED
+      charoff      %Length.datatype;        #IMPLIED"
+>
+
+<!-- vertical alignment attributes for cell contents
+-->
+<!ENTITY % CellVAlign.attrib
+     "valign       ( top
+                   | middle
+                   | bottom
+                   | baseline )             #IMPLIED"
+>
+
+<!-- scope is simpler than axes attribute for common tables
+-->
+<!ENTITY % Scope.attrib
+     "scope        ( row
+                   | col
+                   | rowgroup
+                   | colgroup )             #IMPLIED"
+>
+
+<!-- table: Table Element .............................. -->
+
+<!ENTITY % table.element  "INCLUDE" >
+<![%table.element;[
+<!ENTITY % table.content
+     "( %caption.qname;?, ( %col.qname;* | %colgroup.qname;* ),
+      (( %thead.qname;?, %tfoot.qname;?, %tbody.qname;+ ) | ( %tr.qname;+ )))"
+>
+<!ELEMENT %table.qname;  %table.content; >
+<!-- end of table.element -->]]>
+
+<!ENTITY % table.attlist  "INCLUDE" >
+<![%table.attlist;[
+<!ATTLIST %table.qname;
+      %Common.attrib;
+      summary      %Text.datatype;          #IMPLIED
+      width        %Length.datatype;        #IMPLIED
+      border       %Pixels.datatype;        #IMPLIED
+      %TFrame.attrib;
+      %TRules.attrib;
+      cellspacing  %Length.datatype;        #IMPLIED
+      cellpadding  %Length.datatype;        #IMPLIED
+>
+<!-- end of table.attlist -->]]>
+
+<!-- caption: Table Caption ............................ -->
+
+<!ENTITY % caption.element  "INCLUDE" >
+<![%caption.element;[
+<!ENTITY % caption.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ELEMENT %caption.qname;  %caption.content; >
+<!-- end of caption.element -->]]>
+
+<!ENTITY % caption.attlist  "INCLUDE" >
+<![%caption.attlist;[
+<!ATTLIST %caption.qname;
+      %Common.attrib;
+>
+<!-- end of caption.attlist -->]]>
+
+<!-- thead: Table Header ............................... -->
+
+<!-- Use thead to duplicate headers when breaking table
+     across page boundaries, or for static headers when
+     tbody sections are rendered in scrolling panel.
+-->
+
+<!ENTITY % thead.element  "INCLUDE" >
+<![%thead.element;[
+<!-- end of thead.element -->]]>
+<!ENTITY % thead.content  "( %tr.qname; )+" >
+<!ELEMENT %thead.qname;  %thead.content; >
+
+<!ENTITY % thead.attlist  "INCLUDE" >
+<![%thead.attlist;[
+<!ATTLIST %thead.qname;
+      %Common.attrib;
+      %CellHAlign.attrib;
+      %CellVAlign.attrib;
+>
+<!-- end of thead.attlist -->]]>
+
+<!-- tfoot: Table Footer ............................... -->
+
+<!-- Use tfoot to duplicate footers when breaking table
+     across page boundaries, or for static footers when
+     tbody sections are rendered in scrolling panel.
+-->
+
+<!ENTITY % tfoot.element  "INCLUDE" >
+<![%tfoot.element;[
+<!ENTITY % tfoot.content  "( %tr.qname; )+" >
+<!ELEMENT %tfoot.qname;  %tfoot.content; >
+<!-- end of tfoot.element -->]]>
+
+<!ENTITY % tfoot.attlist  "INCLUDE" >
+<![%tfoot.attlist;[
+<!ATTLIST %tfoot.qname;
+      %Common.attrib;
+      %CellHAlign.attrib;
+      %CellVAlign.attrib;
+>
+<!-- end of tfoot.attlist -->]]>
+
+<!-- tbody: Table Body ................................. -->
+
+<!-- Use multiple tbody sections when rules are needed
+     between groups of table rows.
+-->
+
+<!ENTITY % tbody.element  "INCLUDE" >
+<![%tbody.element;[
+<!ENTITY % tbody.content  "( %tr.qname; )+" >
+<!ELEMENT %tbody.qname;  %tbody.content; >
+<!-- end of tbody.element -->]]>
+
+<!ENTITY % tbody.attlist  "INCLUDE" >
+<![%tbody.attlist;[
+<!ATTLIST %tbody.qname;
+      %Common.attrib;
+      %CellHAlign.attrib;
+      %CellVAlign.attrib;
+>
+<!-- end of tbody.attlist -->]]>
+
+<!-- colgroup: Table Column Group ...................... -->
+
+<!-- colgroup groups a set of col elements. It allows you
+     to group several semantically-related columns together.
+-->
+
+<!ENTITY % colgroup.element  "INCLUDE" >
+<![%colgroup.element;[
+<!ENTITY % colgroup.content  "( %col.qname; )*" >
+<!ELEMENT %colgroup.qname;  %colgroup.content; >
+<!-- end of colgroup.element -->]]>
+
+<!ENTITY % colgroup.attlist  "INCLUDE" >
+<![%colgroup.attlist;[
+<!-- end of colgroup.attlist -->]]>
+<!ATTLIST %colgroup.qname;
+      %Common.attrib;
+      span         %Number.datatype;        '1'
+      width        %MultiLength.datatype;   #IMPLIED
+      %CellHAlign.attrib;
+      %CellVAlign.attrib;
+>
+
+<!-- col: Table Column ................................. -->
+
+<!-- col elements define the alignment properties for
+     cells in one or more columns.
+
+     The width attribute specifies the width of the
+     columns, e.g.
+
+       width="64"        width in screen pixels
+       width="0.5*"      relative width of 0.5
+
+     The span attribute causes the attributes of one
+     col element to apply to more than one column.
+-->
+
+<!ENTITY % col.element  "INCLUDE" >
+<![%col.element;[
+<!ENTITY % col.content  "EMPTY" >
+<!ELEMENT %col.qname;  %col.content; >
+<!-- end of col.element -->]]>
+
+<!ENTITY % col.attlist  "INCLUDE" >
+<![%col.attlist;[
+<!ATTLIST %col.qname;
+      %Common.attrib;
+      span         %Number.datatype;        '1'
+      width        %MultiLength.datatype;   #IMPLIED
+      %CellHAlign.attrib;
+      %CellVAlign.attrib;
+>
+<!-- end of col.attlist -->]]>
+
+<!-- tr: Table Row ..................................... -->
+
+<!ENTITY % tr.element  "INCLUDE" >
+<![%tr.element;[
+<!ENTITY % tr.content  "( %th.qname; | %td.qname; )+" >
+<!ELEMENT %tr.qname;  %tr.content; >
+<!-- end of tr.element -->]]>
+
+<!ENTITY % tr.attlist  "INCLUDE" >
+<![%tr.attlist;[
+<!ATTLIST %tr.qname;
+      %Common.attrib;
+      %CellHAlign.attrib;
+      %CellVAlign.attrib;
+>
+<!-- end of tr.attlist -->]]>
+
+<!-- th: Table Header Cell ............................. -->
+
+<!-- th is for header cells, td for data,
+     but for cells acting as both use td
+-->
+
+<!ENTITY % th.element  "INCLUDE" >
+<![%th.element;[
+<!ENTITY % th.content
+     "( #PCDATA | %Flow.mix; )*"
+>
+<!ELEMENT %th.qname;  %th.content; >
+<!-- end of th.element -->]]>
+
+<!ENTITY % th.attlist  "INCLUDE" >
+<![%th.attlist;[
+<!ATTLIST %th.qname;
+      %Common.attrib;
+      abbr         %Text.datatype;          #IMPLIED
+      axis         CDATA                    #IMPLIED
+      headers      IDREFS                   #IMPLIED
+      %Scope.attrib;
+      rowspan      %Number.datatype;        '1'
+      colspan      %Number.datatype;        '1'
+      %CellHAlign.attrib;
+      %CellVAlign.attrib;
+>
+<!-- end of th.attlist -->]]>
+
+<!-- td: Table Data Cell ............................... -->
+
+<!ENTITY % td.element  "INCLUDE" >
+<![%td.element;[
+<!ENTITY % td.content
+     "( #PCDATA | %Flow.mix; )*"
+>
+<!ELEMENT %td.qname;  %td.content; >
+<!-- end of td.element -->]]>
+
+<!ENTITY % td.attlist  "INCLUDE" >
+<![%td.attlist;[
+<!ATTLIST %td.qname;
+      %Common.attrib;
+      abbr         %Text.datatype;          #IMPLIED
+      axis         CDATA                    #IMPLIED
+      headers      IDREFS                   #IMPLIED
+      %Scope.attrib;
+      rowspan      %Number.datatype;        '1'
+      colspan      %Number.datatype;        '1'
+      %CellHAlign.attrib;
+      %CellVAlign.attrib;
+>
+<!-- end of td.attlist -->]]>
+
+<!-- end of xhtml-table-1.mod -->
+]]>
+
+<!-- Forms Module  ............................................... -->
+<!ENTITY % xhtml-form.module "INCLUDE" >
+<![%xhtml-form.module;[
+<!ENTITY % xhtml-form.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Forms 1.0//EN"
+            "xhtml-form-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Forms Module  .................................................. -->
+<!-- file: xhtml-form-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Forms 1.0//EN"
+       SYSTEM "xhtml-form-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Forms
+
+        form, label, input, select, optgroup, option,
+        textarea, fieldset, legend, button
+
+     This module declares markup to provide support for online
+     forms, based on the features found in HTML 4.0 forms.
+-->
+
+<!-- declare qualified element type names:
+-->
+<!ENTITY % form.qname  "form" >
+<!ENTITY % label.qname  "label" >
+<!ENTITY % input.qname  "input" >
+<!ENTITY % select.qname  "select" >
+<!ENTITY % optgroup.qname  "optgroup" >
+<!ENTITY % option.qname  "option" >
+<!ENTITY % textarea.qname  "textarea" >
+<!ENTITY % fieldset.qname  "fieldset" >
+<!ENTITY % legend.qname  "legend" >
+<!ENTITY % button.qname  "button" >
+
+<!-- %Block-noform.mix; includes all non-form block elements,
+     plus %Misc.class;
+-->
+<!ENTITY % Block-noform.mix
+     "%Heading.class;
+      | %List.class;
+      | %Blkstruct.class;
+      %Blkphras.class;
+      %Blkpres.class;
+      | %table.qname; 
+      %Block.extra;
+      %Misc.class;"
+>
+
+<!-- form: Form Element ................................ -->
+
+<!ENTITY % form.element  "INCLUDE" >
+<![%form.element;[
+<!ENTITY % form.content
+     "( %Block-noform.mix;
+      | %fieldset.qname; )+"
+>
+<!ELEMENT %form.qname;  %form.content; >
+<!-- end of form.element -->]]>
+
+<!ENTITY % form.attlist  "INCLUDE" >
+<![%form.attlist;[
+<!ATTLIST %form.qname;
+      %Common.attrib;
+      action       %URI.datatype;           #REQUIRED
+      method       ( get | post )           'get'
+      enctype      %ContentType.datatype;   'application/x-www-form-urlencoded'
+      accept-charset %Charsets.datatype;    #IMPLIED
+      accept       %ContentTypes.datatype;  #IMPLIED
+>
+<!-- end of form.attlist -->]]>
+
+<!-- label: Form Field Label Text ...................... -->
+
+<!-- Each label must not contain more than ONE field
+-->
+
+<!ENTITY % label.element  "INCLUDE" >
+<![%label.element;[
+<!ENTITY % label.content
+     "( #PCDATA 
+      | %input.qname; | %select.qname; | %textarea.qname; | %button.qname;
+      | %Inlstruct.class;
+      %Inlphras.class;
+      %I18n.class;
+      %Inlpres.class;
+      %Anchor.class;
+      %Inlspecial.class;
+      %Inline.extra;
+      %Misc.class; )*"
+>
+<!ELEMENT %label.qname;  %label.content; >
+<!-- end of label.element -->]]>
+
+<!ENTITY % label.attlist  "INCLUDE" >
+<![%label.attlist;[
+<!ATTLIST %label.qname;
+      %Common.attrib;
+      for          IDREF                    #IMPLIED
+      accesskey    %Character.datatype;     #IMPLIED
+>
+<!-- end of label.attlist -->]]>
+
+<!-- input: Form Control ............................... -->
+
+<!ENTITY % input.element  "INCLUDE" >
+<![%input.element;[
+<!ENTITY % input.content  "EMPTY" >
+<!ELEMENT %input.qname;  %input.content; >
+<!-- end of input.element -->]]>
+
+<!ENTITY % input.attlist  "INCLUDE" >
+<![%input.attlist;[
+<!ENTITY % InputType.class
+     "( text | password | checkbox | radio | submit 
+      | reset | file | hidden | image | button )"
+>
+<!-- attribute 'name' required for all but submit & reset
+-->
+<!ATTLIST %input.qname;
+      %Common.attrib;
+      type         %InputType.class;        'text'
+      name         CDATA                    #IMPLIED
+      value        CDATA                    #IMPLIED
+      checked      ( checked )              #IMPLIED
+      disabled     ( disabled )             #IMPLIED
+      readonly     ( readonly )             #IMPLIED
+      size         %Number.datatype;        #IMPLIED
+      maxlength    %Number.datatype;        #IMPLIED
+      src          %URI.datatype;           #IMPLIED
+      alt          CDATA                    #IMPLIED
+      usemap       IDREF                    #IMPLIED
+      tabindex     %Number.datatype;        #IMPLIED
+      accesskey    %Character.datatype;     #IMPLIED
+      accept       %ContentTypes.datatype;  #IMPLIED
+>
+<!-- end of input.attlist -->]]>
+
+<!-- select: Option Selector ........................... -->
+
+<!ENTITY % select.element  "INCLUDE" >
+<![%select.element;[
+<!ENTITY % select.content
+     "( %optgroup.qname; | %option.qname; )+"
+>
+<!ELEMENT %select.qname;  %select.content; >
+<!-- end of select.element -->]]>
+
+<!ENTITY % select.attlist  "INCLUDE" >
+<![%select.attlist;[
+<!ATTLIST %select.qname;
+      %Common.attrib;
+      name         CDATA                    #IMPLIED
+      size         %Number.datatype;        #IMPLIED
+      multiple     ( multiple )             #IMPLIED
+      disabled     ( disabled )             #IMPLIED
+      tabindex     %Number.datatype;        #IMPLIED
+>
+<!-- end of select.attlist -->]]>
+
+<!-- optgroup: Option Group ............................ -->
+
+<!ENTITY % optgroup.element  "INCLUDE" >
+<![%optgroup.element;[
+<!ENTITY % optgroup.content  "( %option.qname; )+" >
+<!ELEMENT %optgroup.qname;  %optgroup.content; >
+<!-- end of optgroup.element -->]]>
+
+<!ENTITY % optgroup.attlist  "INCLUDE" >
+<![%optgroup.attlist;[
+<!ATTLIST %optgroup.qname;
+      %Common.attrib;
+      disabled     ( disabled )             #IMPLIED
+      label        %Text.datatype;          #REQUIRED
+>
+<!-- end of optgroup.attlist -->]]>
+
+<!-- option: Selectable Choice ......................... -->
+
+<!ENTITY % option.element  "INCLUDE" >
+<![%option.element;[
+<!ENTITY % option.content  "( #PCDATA )" >
+<!ELEMENT %option.qname;  %option.content; >
+<!-- end of option.element -->]]>
+
+<!ENTITY % option.attlist  "INCLUDE" >
+<![%option.attlist;[
+<!ATTLIST %option.qname;
+      %Common.attrib;
+      selected     ( selected )             #IMPLIED
+      disabled     ( disabled )             #IMPLIED
+      label        %Text.datatype;          #IMPLIED
+      value        CDATA                    #IMPLIED
+>
+<!-- end of option.attlist -->]]>
+
+<!-- textarea: Multi-Line Text Field ................... -->
+
+<!ENTITY % textarea.element  "INCLUDE" >
+<![%textarea.element;[
+<!ENTITY % textarea.content  "( #PCDATA )" >
+<!ELEMENT %textarea.qname;  %textarea.content; >
+<!-- end of textarea.element -->]]>
+
+<!ENTITY % textarea.attlist  "INCLUDE" >
+<![%textarea.attlist;[
+<!ATTLIST %textarea.qname;
+      %Common.attrib;
+      name         CDATA                    #IMPLIED
+      rows         %Number.datatype;        #REQUIRED
+      cols         %Number.datatype;        #REQUIRED
+      disabled     ( disabled )             #IMPLIED
+      readonly     ( readonly )             #IMPLIED
+      tabindex     %Number.datatype;        #IMPLIED
+      accesskey    %Character.datatype;     #IMPLIED
+>
+<!-- end of textarea.attlist -->]]>
+
+<!-- fieldset: Form Control Group ...................... -->
+
+<!-- #PCDATA is to solve the mixed content problem,
+     per specification only whitespace is allowed
+-->
+
+<!ENTITY % fieldset.element  "INCLUDE" >
+<![%fieldset.element;[
+<!ENTITY % fieldset.content
+     "( #PCDATA | %legend.qname; | %Flow.mix; )*"
+>
+<!ELEMENT %fieldset.qname;  %fieldset.content; >
+<!-- end of fieldset.element -->]]>
+
+<!ENTITY % fieldset.attlist  "INCLUDE" >
+<![%fieldset.attlist;[
+<!ATTLIST %fieldset.qname;
+      %Common.attrib;
+>
+<!-- end of fieldset.attlist -->]]>
+
+<!-- legend: Fieldset Legend ........................... -->
+
+<!ENTITY % legend.element  "INCLUDE" >
+<![%legend.element;[
+<!ENTITY % legend.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ELEMENT %legend.qname;  %legend.content; >
+<!-- end of legend.element -->]]>
+
+<!ENTITY % legend.attlist  "INCLUDE" >
+<![%legend.attlist;[
+<!ATTLIST %legend.qname;
+      %Common.attrib;
+      accesskey    %Character.datatype;     #IMPLIED
+>
+<!-- end of legend.attlist -->]]>
+
+<!-- button: Push Button ............................... -->
+
+<!ENTITY % button.element  "INCLUDE" >
+<![%button.element;[
+<!ENTITY % button.content
+     "( #PCDATA
+      | %Block-noform.mix;
+      | %Inlstruct.class;
+      %Inlphras.class;
+      %Inlpres.class;
+      %I18n.class;
+      %Inlspecial.class;
+      %Inline.extra; )*"
+>
+<!ELEMENT %button.qname;  %button.content; >
+<!-- end of button.element -->]]>
+
+<!ENTITY % button.attlist  "INCLUDE" >
+<![%button.attlist;[
+<!ATTLIST %button.qname;
+      %Common.attrib;
+      name         CDATA                    #IMPLIED
+      value        CDATA                    #IMPLIED
+      type         ( button | submit | reset ) 'submit'
+      disabled     ( disabled )             #IMPLIED
+      tabindex     %Number.datatype;        #IMPLIED
+      accesskey    %Character.datatype;     #IMPLIED
+>
+<!-- end of button.attlist -->]]>
+
+<!-- end of xhtml-form-1.mod -->
+]]>
+
+<!-- Legacy Markup ............................................... -->
+<!ENTITY % xhtml-legacy.module "IGNORE" >
+<![%xhtml-legacy.module;[
+<!ENTITY % xhtml-legacy.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Legacy Markup 1.0//EN"
+            "xhtml-legacy-1.mod" >
+%xhtml-legacy.mod;]]>
+
+<!-- Document Structure Module (required)  ....................... -->
+<!ENTITY % xhtml-struct.module "INCLUDE" >
+<![%xhtml-struct.module;[
+<!ENTITY % xhtml-struct.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Document Structure 1.0//EN"
+            "xhtml-struct-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Structure Module  .............................................. -->
+<!-- file: xhtml-struct-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Document Structure 1.0//EN"
+       SYSTEM "xhtml-struct-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Document Structure
+
+        title, head, body, html
+
+     The Structure Module defines the major structural elements and 
+     their attributes.
+
+     Note that the content model of the head element type is redeclared 
+     when the Base Module is included in the DTD.
+
+     The parameter entity containing the XML namespace URI value used 
+     for XHTML is '%XHTML.xmlns;', defined in the Qualified Names module.
+-->
+
+<!-- title: Document Title ............................. -->
+
+<!-- The title element is not considered part of the flow of text.
+     It should be displayed, for example as the page header or
+     window title. Exactly one title is required per document.
+-->
+
+<!ENTITY % title.element  "INCLUDE" >
+<![%title.element;[
+<!ENTITY % title.content  "( #PCDATA )" >
+<!ENTITY % title.qname  "title" >
+<!ELEMENT %title.qname;  %title.content; >
+<!-- end of title.element -->]]>
+
+<!ENTITY % title.attlist  "INCLUDE" >
+<![%title.attlist;[
+<!ATTLIST %title.qname;
+      %I18n.attrib;
+>
+<!-- end of title.attlist -->]]>
+
+<!-- head: Document Head ............................... -->
+
+<!ENTITY % head.element  "INCLUDE" >
+<![%head.element;[
+<!ENTITY % head.content
+    "( %Head-opts.mix;, %title.qname;, %Head-opts.mix; )"
+>
+<!ENTITY % head.qname  "head" >
+<!ELEMENT %head.qname;  %head.content; >
+<!-- end of head.element -->]]>
+
+<!ENTITY % head.attlist  "INCLUDE" >
+<![%head.attlist;[
+<!-- reserved for future use with document profiles
+-->
+<!ENTITY % Profile.attrib
+     "profile      %URI.datatype;           '%XHTML.profile;'"
+>
+
+<!ATTLIST %head.qname;
+      %I18n.attrib;
+      %Profile.attrib;
+>
+<!-- end of head.attlist -->]]>
+
+<!-- body: Document Body ............................... -->
+
+<!ENTITY % body.element  "INCLUDE" >
+<![%body.element;[
+<!ENTITY % body.content
+     "( %Block.mix; )+"
+>
+<!ENTITY % body.qname  "body" >
+<!ELEMENT %body.qname;  %body.content; >
+<!-- end of body.element -->]]>
+
+<!ENTITY % body.attlist  "INCLUDE" >
+<![%body.attlist;[
+<!ATTLIST %body.qname;
+      %Common.attrib;
+>
+<!-- end of body.attlist -->]]>
+
+<!-- html: XHTML Document Element ...................... -->
+
+<!ENTITY % html.element  "INCLUDE" >
+<![%html.element;[
+<!ENTITY % html.content  "( %head.qname;, %body.qname; )" >
+<!ENTITY % html.qname  "html" >
+<!ELEMENT %html.qname;  %html.content; >
+<!-- end of html.element -->]]>
+
+<!ENTITY % html.attlist  "INCLUDE" >
+<![%html.attlist;[
+<!-- version attribute value defined in driver
+-->
+<!ENTITY % XHTML.version.attrib
+     "version      CDATA                    #FIXED '%XHTML.version;'"
+>
+
+<!-- see the Qualified Names module for information 
+     on how to extend XHTML using XML namespaces 
+-->
+<!ATTLIST %html.qname;
+      %XHTML.xmlns.attrib; 
+      %XHTML.version.attrib;
+      %I18n.attrib;
+>
+<!-- end of html.attlist -->]]>
+
+<!-- end of xhtml-struct-1.mod -->
+]]>
+
+<!-- end of XHTML 1.1 DTD  ................................................. -->
+<!-- ....................................................................... -->
+
+
+<!ENTITY % mathml.mod 
+     PUBLIC "-//W3C//DTD MathML 2.0//EN"
+            "mathml2.dtd" >
+<!-- ....................................................................... -->
+<!-- MathML 2.0 DTD  ....................................................... -->
+<!-- file: mathml2.dtd
+-->
+
+<!-- MathML 2.0 DTD
+
+     This is the Mathematical Markup Language (MathML) 2.0, an XML
+     application for describing mathematical notation and capturing
+     both its structure and content.
+
+     Copyright 1998-2000 World Wide Web Consortium
+        (Massachusetts Institute of Technology, Institut National de
+         Recherche en Informatique et en Automatique, Keio University).
+         All Rights Reserved.
+
+     Permission to use, copy, modify and distribute the XHTML 1.1 DTD and
+     its accompanying documentation for any purpose and without fee is
+     hereby granted in perpetuity, provided that the above copyright notice
+     and this paragraph appear in all copies.  The copyright holders make
+     no representation about the suitability of the DTD for any purpose.
+
+     It is provided "as is" without expressed or implied warranty.
+
+        Revision:   $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $
+
+     This entity may be identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//DTD MathML 2.0//EN"
+       SYSTEM "mathml2.dtd"
+
+     Revisions: editor and revision history at EOF
+-->
+
+
+<!-- MathML Qualified Names module ............................... -->
+<!ENTITY % mathml-qname.module "INCLUDE" >
+<![%mathml-qname.module;[
+<!ENTITY % mathml-qname.mod
+     PUBLIC "-//W3C//ENTITIES MathML 2.0 Qualified Names 1.0//EN"
+            "mathml2-qname-1.mod" >
+%mathml-qname.mod;]]>
+
+<!-- if %NS.prefixed; is INCLUDE, include all NS attributes, 
+     otherwise just those associated with MathML
+-->
+<![%NS.prefixed;[
+<!ENTITY % MATHML.NamespaceDecl.attrib 
+     "%NamespaceDecl.attrib;"
+>
+]]>
+<!ENTITY % MATHML.NamespaceDecl.attrib 
+     "%MATHML.xmlns.attrib;"
+>
+
+<!-- Attributes shared by all elements  .......................... -->
+
+<!ENTITY % MATHML.Common.attrib
+     "%MATHML.NamespaceDecl.attrib;
+      xlink:href   CDATA                    #IMPLIED
+      class        CDATA                    #IMPLIED
+      style        CDATA                    #IMPLIED
+      id           ID                       #IMPLIED
+      xref         IDREF                    #IMPLIED
+      other        CDATA                    #IMPLIED"
+>
+
+<!-- Presentation element set  ................................... -->
+
+<!-- Attribute definitions -->
+
+<!ENTITY % att-fontsize
+     "fontsize     CDATA                    #IMPLIED" >
+<!ENTITY % att-fontweight
+     "fontweight   ( normal | bold )        #IMPLIED" >
+<!ENTITY % att-fontstyle
+     "fontstyle    ( normal | italic )      #IMPLIED" >
+<!ENTITY % att-fontfamily
+     "fontfamily   CDATA                    #IMPLIED" >
+<!ENTITY % att-color
+     "color        CDATA                    #IMPLIED" >
+
+<!-- MathML2 typographically-distinguished symbol attributes -->
+
+<!ENTITY % att-mathvariant
+     "mathvariant     CDATA                    #IMPLIED" >
+<!ENTITY % att-mathsize
+     "mathsize     CDATA                    #IMPLIED" >
+<!ENTITY % att-mathcolor
+     "mathcolor     CDATA                    #IMPLIED" >
+<!ENTITY % att-mathbackground
+     "mathbackground     CDATA                    #IMPLIED" >
+
+<!ENTITY % att-fontinfo
+     "%att-fontsize;
+      %att-fontweight;
+      %att-fontstyle;
+      %att-fontfamily;
+      %att-color;
+      %att-mathvariant;
+      %att-mathsize;
+      %att-mathcolor;
+      %att-mathbackground;"
+>
+
+<!ENTITY % att-form
+     "form         ( prefix | infix | postfix )  #IMPLIED" >
+<!ENTITY % att-fence
+     "fence        ( true | false )         #IMPLIED" >
+<!ENTITY % att-separator
+     "separator    ( true | false )         #IMPLIED" >
+<!ENTITY % att-lspace
+     "lspace       CDATA                    #IMPLIED" >
+<!ENTITY % att-rspace
+     "rspace       CDATA                    #IMPLIED" >
+<!ENTITY % att-stretchy
+     "stretchy     ( true | false )         #IMPLIED" >
+<!ENTITY % att-symmetric
+     "symmetric    ( true | false )         #IMPLIED" >
+<!ENTITY % att-maxsize
+     "maxsize      CDATA                    #IMPLIED" >
+<!ENTITY % att-minsize
+     "minsize      CDATA                    #IMPLIED" >
+<!ENTITY % att-largeop
+     "largeop      ( true | false)          #IMPLIED" >
+<!ENTITY % att-movablelimits
+     "movablelimits ( true | false )        #IMPLIED" >
+<!ENTITY % att-accent
+     "accent       ( true | false )         #IMPLIED" >
+
+<!ENTITY % att-opinfo
+     "%att-form;
+      %att-fence;
+      %att-separator;
+      %att-lspace;
+      %att-rspace;
+      %att-stretchy;
+      %att-symmetric;
+      %att-maxsize;
+      %att-minsize;
+      %att-largeop;
+      %att-movablelimits;
+      %att-accent;"
+>
+<!ENTITY % att-width
+     "width        CDATA                    #IMPLIED" >
+<!ENTITY % att-height
+     "height       CDATA                    #IMPLIED" >
+<!ENTITY % att-depth
+     "depth        CDATA                    #IMPLIED" >
+<!ENTITY % att-linebreak
+     "linebreak    CDATA                    #IMPLIED" >
+<!ENTITY % att-sizeinfo
+     "%att-width;
+      %att-height;
+      %att-depth;"
+>
+<!ENTITY % att-lquote               
+     "lquote       CDATA                    #IMPLIED" >
+<!ENTITY % att-rquote               
+     "rquote       CDATA                    #IMPLIED" >
+<!ENTITY % att-linethickness        
+     "linethickness CDATA                   #IMPLIED" >
+<!ENTITY % att-scriptlevel          
+     "scriptlevel  CDATA                    #IMPLIED" >
+<!ENTITY % att-displaystyle         
+     "displaystyle ( true | false )         #IMPLIED" >
+<!ENTITY % att-scriptsizemultiplier 
+     "scriptsizemultiplier CDATA            #IMPLIED" >
+<!ENTITY % att-scriptminsize        
+     "scriptminsize CDATA                   #IMPLIED" >
+<!ENTITY % att-background           
+     "background   CDATA                    #IMPLIED" >
+<!ENTITY % att-veryverythinmathspace           
+     "veryverythinmathspace   CDATA         #IMPLIED" >
+<!ENTITY % att-verythinmathspace           
+     "verythinmathspace   CDATA             #IMPLIED" >
+<!ENTITY % att-thinmathspace           
+     "thinmathspace   CDATA                 #IMPLIED" >
+<!ENTITY % att-mediummathspace           
+     "mediummathspace   CDATA               #IMPLIED" >
+<!ENTITY % att-thickmathspace           
+     "thickmathspace   CDATA                #IMPLIED" >
+<!ENTITY % att-verythickmathspace           
+     "verythickmathspace   CDATA            #IMPLIED" >
+<!ENTITY % att-veryverythickmathspace           
+     "veryverythickmathspace   CDATA        #IMPLIED" >
+<!ENTITY % att-open                 
+     "open         CDATA                    #IMPLIED" >
+<!ENTITY % att-close                
+     "close        CDATA                    #IMPLIED" >
+<!ENTITY % att-separators          
+     "separators   CDATA                    #IMPLIED" >
+<!ENTITY % att-subscriptshift       
+     "subscriptshift CDATA                  #IMPLIED" >
+<!ENTITY % att-superscriptshift     
+     "superscriptshift CDATA                #IMPLIED" >
+<!ENTITY % att-accentunder          
+     "accentunder  ( true | false )         #IMPLIED" >
+<!ENTITY % att-align       
+     "align        CDATA                    #IMPLIED" >
+<!ENTITY % att-rowalign      
+     "rowalign     CDATA                    #IMPLIED" >
+<!ENTITY % att-columnalign     
+     "columnalign  CDATA                    #IMPLIED" >
+<!ENTITY % att-columnwidth   
+     "columnwidth  CDATA                    #IMPLIED" >
+<!ENTITY % att-groupalign      
+     "groupalign   CDATA                    #IMPLIED" >
+<!ENTITY % att-alignmentscope 
+     "alignmentscope CDATA                  #IMPLIED" >
+<!ENTITY % att-rowspacing           
+     "rowspacing   CDATA                    #IMPLIED" >
+<!ENTITY % att-columnspacing      
+     "columnspacing CDATA                   #IMPLIED" >
+<!ENTITY % att-rowlines            
+     "rowlines     CDATA                    #IMPLIED" >
+<!ENTITY % att-columnlines        
+     "columnlines  CDATA                    #IMPLIED" >
+<!ENTITY % att-frame            
+     "frame       ( none | solid | dashed ) #IMPLIED" >
+<!ENTITY % att-framespacing         
+     "framespacing CDATA                    #IMPLIED" >
+<!ENTITY % att-equalrows        
+     "equalrows    CDATA                    #IMPLIED" >
+<!ENTITY % att-equalcolumns         
+     "equalcolumns CDATA                    #IMPLIED" >
+
+<!ENTITY % att-tableinfo            
+     "%att-align;
+      %att-rowalign;
+      %att-columnalign;
+      %att-columnwidth;
+      %att-groupalign;
+      %att-alignmentscope;
+      %att-rowspacing;
+      %att-columnspacing;
+      %att-rowlines;
+      %att-columnlines;
+      %att-frame;
+      %att-framespacing;
+      %att-equalrows;
+      %att-equalcolumns;
+      %att-displaystyle;" 
+>
+
+<!ENTITY % att-rowspan              
+     "rowspan      CDATA                    #IMPLIED" >
+<!ENTITY % att-columnspan           
+     "columnspan   CDATA                    #IMPLIED" >
+<!ENTITY % att-edge        
+     "edge         ( left | right )         #IMPLIED" >
+<!ENTITY % att-actiontype          
+     "actiontype   CDATA                    #IMPLIED" >
+<!ENTITY % att-selection       
+     "selection    CDATA                    #IMPLIED" >
+
+<!ENTITY % att-name                 
+     "name         CDATA                    #IMPLIED" >
+<!ENTITY % att-alt              
+     "alt          CDATA                    #IMPLIED" >
+<!ENTITY % att-index           
+     "index        CDATA                    #IMPLIED" >
+
+<!ENTITY % att-bevelled       
+     "bevelled      CDATA                    #IMPLIED" >
+
+<!-- Presentation schemata with content -->
+
+<!ENTITY % ptoken                   
+     "%mi.qname; | %mn.qname; | %mo.qname;
+      | %mtext.qname; | %ms.qname;" >
+
+<!ATTLIST %mi.qname;
+      %MATHML.Common.attrib;
+      %att-fontinfo;
+>
+
+<!ATTLIST %mn.qname;      
+      %MATHML.Common.attrib; 
+      %att-fontinfo;
+>
+
+<!ATTLIST %mo.qname;     
+      %MATHML.Common.attrib; 
+      %att-fontinfo;
+      %att-opinfo;
+>
+
+<!ATTLIST %mtext.qname;  
+      %MATHML.Common.attrib;
+      %att-fontinfo;
+>
+
+<!ATTLIST %ms.qname;     
+      %MATHML.Common.attrib;
+      %att-fontinfo;
+      %att-lquote;
+      %att-rquote;
+>
+
+<!-- Empty presentation schemata -->
+
+<!ENTITY % petoken                  
+     "%mspace.qname;" >
+<!ELEMENT %mspace.qname;  EMPTY >
+
+<!ATTLIST %mspace.qname; 
+      %att-sizeinfo;
+      %att-linebreak;
+      %MATHML.Common.attrib;
+>
+
+<!-- Presentation: general layout schemata -->
+
+<!ENTITY % pgenschema               
+     "%mrow.qname; | %mfrac.qname; | %msqrt.qname; | %mroot.qname; 
+      | %menclose.qname; | %mstyle.qname; | %merror.qname; 
+      | %mpadded.qname; | %mphantom.qname; | %mfenced.qname;" >
+
+<!ATTLIST %mrow.qname;        
+      %MATHML.Common.attrib;
+>
+
+<!ATTLIST %mfrac.qname;     
+      %MATHML.Common.attrib;
+      %att-bevelled;
+      %att-linethickness;
+>
+
+<!ATTLIST %msqrt.qname;     
+      %MATHML.Common.attrib;
+>
+
+<!ATTLIST %menclose.qname;  
+      %MATHML.Common.attrib;
+      notation CDATA 'longdiv' >
+
+<!ATTLIST %mroot.qname;    
+      %MATHML.Common.attrib;
+>
+
+<!ATTLIST %mstyle.qname;  
+      %MATHML.Common.attrib;
+      %att-fontinfo;
+      %att-opinfo;
+      %att-lquote;
+      %att-rquote;
+      %att-linethickness;
+      %att-scriptlevel;
+      %att-scriptsizemultiplier;
+      %att-scriptminsize;
+      %att-background;
+      %att-veryverythinmathspace;
+      %att-verythinmathspace;
+      %att-thinmathspace;
+      %att-mediummathspace;
+      %att-thickmathspace;
+      %att-verythickmathspace;
+      %att-veryverythickmathspace;
+      %att-open;
+      %att-close;
+      %att-separators;
+      %att-subscriptshift;
+      %att-superscriptshift;
+      %att-accentunder;
+      %att-tableinfo;
+      %att-rowspan;
+      %att-columnspan;
+      %att-edge;
+      %att-actiontype;
+      %att-selection;
+>
+
+<!ATTLIST %merror.qname;   
+      %MATHML.Common.attrib;
+>
+
+<!ATTLIST %mpadded.qname;     
+      %MATHML.Common.attrib;
+      %att-sizeinfo;
+      %att-lspace;
+>
+
+<!ATTLIST %mphantom.qname;      
+      %MATHML.Common.attrib;
+>
+
+<!ATTLIST %mfenced.qname;     
+      %MATHML.Common.attrib;
+      %att-open;
+      %att-close;
+      %att-separators;
+>
+
+<!-- Presentation layout schemata: scripts and limits -->
+
+<!ENTITY % pscrschema               
+     "%msub.qname; | %msup.qname; | %msubsup.qname; | %munder.qname; 
+      | %mover.qname; | %munderover.qname; | %mmultiscripts.qname;" >
+
+<!ATTLIST %msub.qname;      
+      %MATHML.Common.attrib;
+      %att-subscriptshift;
+>
+
+<!ATTLIST %msup.qname;         
+      %MATHML.Common.attrib;
+      %att-superscriptshift;
+>
+
+<!ATTLIST %msubsup.qname;    
+      %MATHML.Common.attrib;
+      %att-subscriptshift;
+      %att-superscriptshift;
+>
+
+<!ATTLIST %munder.qname;   
+      %MATHML.Common.attrib;
+      %att-accentunder;
+>
+
+<!ATTLIST %mover.qname;   
+      %MATHML.Common.attrib;
+      %att-accent;
+>
+
+<!ATTLIST %munderover.qname;   
+      %MATHML.Common.attrib;
+      %att-accent;
+      %att-accentunder;
+>
+
+<!ATTLIST %mmultiscripts.qname;   
+      %MATHML.Common.attrib;
+      %att-subscriptshift;
+      %att-superscriptshift;
+>
+
+<!-- Presentation layout schemata: empty elements for scripts -->
+
+<!ENTITY % pscreschema              
+     "%mprescripts.qname; | %none.qname;" >
+
+<!ELEMENT %mprescripts.qname;  EMPTY >
+<!ATTLIST %mprescripts.qname;   
+      %MATHML.xmlns.attrib; >
+
+<!ELEMENT %none.qname;  EMPTY >
+<!ATTLIST %none.qname;    
+      %MATHML.xmlns.attrib; >
+
+<!-- Presentation layout schemata: tables -->
+
+<!ENTITY % ptabschema               
+     "%mtable.qname; | %mtr.qname; | %mlabeledtr.qname; | %mtd.qname;" >
+
+<!ATTLIST %mtable.qname;
+      %MATHML.Common.attrib;
+      %att-tableinfo;
+>
+
+<!ATTLIST %mtr.qname;    
+      %MATHML.Common.attrib;
+      %att-rowalign;
+      %att-columnalign;
+      %att-groupalign;
+>
+
+<!ATTLIST %mlabeledtr.qname;  
+      %MATHML.Common.attrib;
+      %att-rowalign;
+      %att-columnalign;
+      %att-groupalign;
+>
+
+<!ATTLIST %mtd.qname;   
+      %MATHML.Common.attrib;
+      %att-rowalign;
+      %att-columnalign;
+      %att-groupalign;
+      %att-rowspan;
+      %att-columnspan;
+>
+
+<!ENTITY % plschema                 
+     "%pgenschema; | %pscrschema; | %ptabschema;" >
+
+<!-- Empty presentation layout schemata -->
+
+<!ENTITY % peschema                 
+     "%maligngroup.qname; | %malignmark.qname;" >
+
+<!ELEMENT %malignmark.qname;  EMPTY >
+
+<!ATTLIST %malignmark.qname;  
+      %att-edge; >
+
+<!ELEMENT %maligngroup.qname;  EMPTY >
+<!ATTLIST %maligngroup.qname;  
+      %MATHML.Common.attrib;
+      %att-groupalign;
+>
+
+
+<!ELEMENT %mglyph.qname;  EMPTY >
+<!ATTLIST %mglyph.qname;    
+      %att-alt;
+      %att-fontfamily;
+      %att-index; >
+
+<!-- Presentation action schemata -->
+
+<!ENTITY % pactions                 
+     "%maction.qname;" >
+<!ATTLIST %maction.qname;    
+      %MATHML.Common.attrib;
+      %att-actiontype;
+      %att-selection;
+>
+
+<!-- The following entity for substitution into
+     content constructs excludes elements that
+     are not valid as expressions.
+-->
+
+<!ENTITY % PresInCont               
+     "%ptoken; | %petoken; |
+      %plschema; | %peschema; | %pactions;" >
+
+<!-- Presentation entity: all presentation constructs -->
+
+<!ENTITY % Presentation             
+     "%ptoken; | %petoken; | %pscreschema; |
+      %plschema; | %peschema; | %pactions;">
+
+<!-- Content element set  ........................................ -->
+
+<!-- Attribute definitions -->
+
+<!ENTITY % att-base                 
+     "base         CDATA                    '10'" >
+<!ENTITY % att-closure              
+     "closure      CDATA                    'closed'" >
+<!ENTITY % att-definition           
+     "definitionURL CDATA                   ''" >
+<!ENTITY % att-encoding             
+     "encoding     CDATA                    ''" >
+<!ENTITY % att-nargs             
+     "nargs        CDATA                    '1'" >
+<!ENTITY % att-occurrence           
+     "occurrence   CDATA                    'function-model'" >
+<!ENTITY % att-order   
+     "order        CDATA                    'numeric'" >
+<!ENTITY % att-scope                
+     "scope        CDATA                    'local'" >
+<!ENTITY % att-type                 
+     "type         CDATA                    #IMPLIED" >
+
+<!-- Content elements: leaf nodes -->
+
+<!ENTITY % ctoken               
+     "%csymbol.qname; | %ci.qname; | %cn.qname;" >
+
+<!ATTLIST %ci.qname;     
+      %MATHML.Common.attrib;
+      %att-type;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ATTLIST %csymbol.qname;   
+      %MATHML.Common.attrib;
+      %att-encoding;
+      %att-type;
+      %att-definition;
+>
+
+<!ATTLIST %cn.qname;    
+      %MATHML.Common.attrib;
+      %att-type;
+      %att-base;
+      %att-definition;
+      %att-encoding;
+>
+
+<!-- Content elements: specials -->
+
+<!ENTITY % cspecial                 
+     "%apply.qname; | %reln.qname; |
+      %lambda.qname;" >
+
+<!ATTLIST %apply.qname;   
+      %MATHML.Common.attrib;
+>
+
+<!ATTLIST %reln.qname;   
+      %MATHML.Common.attrib;
+>
+
+<!ATTLIST %lambda.qname;      
+      %MATHML.Common.attrib;
+>
+
+<!-- Content elements: others -->
+
+<!ENTITY % cother                   
+     "%condition.qname; | %declare.qname; | %sep.qname;" >
+
+<!ATTLIST %condition.qname;     
+      %MATHML.Common.attrib;
+>
+
+<!ATTLIST %declare.qname;    
+      %MATHML.Common.attrib;
+      %att-type;
+      %att-scope;
+      %att-nargs;
+      %att-occurrence;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %sep.qname;  EMPTY >
+<!ATTLIST %sep.qname;         
+      %MATHML.xmlns.attrib; >
+
+<!-- Content elements: semantic mapping -->
+
+<!ENTITY % csemantics               
+     "%semantics.qname; | %annotation.qname; |
+      %annotation-xml.qname;" >
+
+<!ATTLIST %semantics.qname;  
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ATTLIST %annotation.qname;  
+      %MATHML.Common.attrib;
+      %att-encoding;
+>
+
+<!ATTLIST %annotation-xml.qname; 
+      %MATHML.Common.attrib;
+      %att-encoding;
+>
+
+<!-- Content elements: constructors -->
+
+<!ENTITY % cconstructor             
+     "%interval.qname; | %list.qname; | %matrix.qname; 
+      | %matrixrow.qname; | %set.qname; | %vector.qname;
+      | %piecewise.qname; " >
+
+<!ATTLIST %interval.qname;   
+      %MATHML.Common.attrib;
+      %att-closure;
+>
+
+<!ATTLIST %set.qname;        
+      %MATHML.Common.attrib;
+      %att-type;
+>
+
+<!ATTLIST %list.qname;          
+      %MATHML.Common.attrib;
+      %att-order;
+>
+
+<!ATTLIST %vector.qname;    
+      %MATHML.Common.attrib;
+>
+
+<!ATTLIST %matrix.qname;    
+      %MATHML.Common.attrib;
+>
+
+<!ATTLIST %matrixrow.qname;     
+      %MATHML.Common.attrib;
+>
+
+<!ATTLIST %piecewise.qname;   
+      %MATHML.Common.attrib;
+>
+
+<!ATTLIST %piece.qname;   
+      %MATHML.Common.attrib;
+>
+
+<!ATTLIST %otherwise.qname;   
+      %MATHML.Common.attrib;
+>
+
+
+<!-- Content elements: symbols -->
+
+<!ENTITY % c0ary              
+    "%integers.qname; |
+     %reals.qname; |
+     %rationals.qname; |
+     %naturalnumbers.qname; |
+     %complexes.qname; |
+     %primes.qname; |
+     %exponentiale.qname; |
+     %imaginaryi.qname; |
+     %notanumber.qname; |
+     %true.qname; |
+     %false.qname; |
+     %emptyset.qname; |
+     %pi.qname; |
+     %eulergamma.qname; |
+     %infinity.qname;" >
+
+<!ELEMENT %integers.qname;  EMPTY >
+<!ATTLIST %integers.qname;   
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %reals.qname;  EMPTY >
+<!ATTLIST %reals.qname;   
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %rationals.qname;  EMPTY >
+<!ATTLIST %rationals.qname;   
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %naturalnumbers.qname;  EMPTY >
+<!ATTLIST %naturalnumbers.qname;   
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %complexes.qname;  EMPTY >
+<!ATTLIST %complexes.qname;   
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %primes.qname;  EMPTY >
+<!ATTLIST %primes.qname;   
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %exponentiale.qname;  EMPTY >
+<!ATTLIST %exponentiale.qname;   
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %imaginaryi.qname;  EMPTY >
+<!ATTLIST %imaginaryi.qname;   
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %notanumber.qname;  EMPTY >
+<!ATTLIST %notanumber.qname;   
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %true.qname;  EMPTY >
+<!ATTLIST %true.qname;   
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %false.qname;  EMPTY >
+<!ATTLIST %false.qname;   
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %emptyset.qname;  EMPTY >
+<!ATTLIST %emptyset.qname;   
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %pi.qname;  EMPTY >
+<!ATTLIST %pi.qname;   
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %eulergamma.qname;  EMPTY >
+<!ATTLIST %eulergamma.qname;   
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %infinity.qname;  EMPTY >
+<!ATTLIST %infinity.qname;   
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!-- Content elements: operators -->
+
+<!ENTITY % cfuncop1ary              
+     "%inverse.qname; | %ident.qname;|
+      %domain.qname; |  %codomain.qname; | 
+      %image.qname;  " >
+
+<!ELEMENT %inverse.qname;  EMPTY >
+<!ATTLIST %inverse.qname;    
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %domain.qname;  EMPTY >
+<!ATTLIST %domain.qname;    
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %codomain.qname;  EMPTY >
+<!ATTLIST %codomain.qname;    
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %image.qname;  EMPTY >
+<!ATTLIST %image.qname;    
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+
+
+<!ENTITY % cfuncopnary              
+     "%fn.qname; | %compose.qname;" >
+
+<!ATTLIST %fn.qname;     
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %ident.qname;  EMPTY >
+<!ATTLIST %ident.qname;   
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %compose.qname;  EMPTY >
+<!ATTLIST %compose.qname;  
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ENTITY % carithop1ary             
+     "%abs.qname; | %conjugate.qname; | %exp.qname; | %factorial.qname; |
+      %arg.qname; | %real.qname; | %imaginary.qname; |
+      %floor.qname; | %ceiling.qname;" >
+
+<!ELEMENT %exp.qname;  EMPTY >
+<!ATTLIST %exp.qname;   
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %abs.qname;  EMPTY >
+<!ATTLIST %abs.qname;        
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %arg.qname;  EMPTY >
+<!ATTLIST %arg.qname;     
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %real.qname;  EMPTY >
+<!ATTLIST %real.qname;    
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %imaginary.qname;  EMPTY >
+<!ATTLIST %imaginary.qname;   
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %conjugate.qname;  EMPTY >
+<!ATTLIST %conjugate.qname;  
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %factorial.qname;  EMPTY >
+<!ATTLIST %factorial.qname;    
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+
+<!ELEMENT %floor.qname;  EMPTY >
+<!ATTLIST %floor.qname;     
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %ceiling.qname;  EMPTY >
+<!ATTLIST %ceiling.qname;     
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+<!ENTITY % carithop1or2ary          
+     "%minus.qname;" >
+
+<!ELEMENT %minus.qname;  EMPTY >
+<!ATTLIST %minus.qname;     
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ENTITY % carithop2ary             
+     "%quotient.qname; | %divide.qname; | %power.qname; | %rem.qname;" >
+
+<!ELEMENT %quotient.qname;  EMPTY >
+<!ATTLIST %quotient.qname;       
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %divide.qname;  EMPTY >
+<!ATTLIST %divide.qname;   
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %power.qname;  EMPTY >
+<!ATTLIST %power.qname;   
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %rem.qname;  EMPTY >
+<!ATTLIST %rem.qname;       
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ENTITY % carithopnary             
+     "%plus.qname; | %times.qname; | %max.qname; 
+      | %min.qname; | %gcd.qname; | %lcm.qname;" >
+
+<!ELEMENT %plus.qname;  EMPTY >
+<!ATTLIST %plus.qname;   
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %max.qname;  EMPTY >
+<!ATTLIST %max.qname;    
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %min.qname;  EMPTY >
+<!ATTLIST %min.qname;   
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %times.qname;  EMPTY >
+<!ATTLIST %times.qname;      
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %gcd.qname;  EMPTY >
+<!ATTLIST %gcd.qname;    
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %lcm.qname;  EMPTY >
+<!ATTLIST %lcm.qname;    
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ENTITY % carithoproot             
+     "%root.qname;" >
+
+<!ELEMENT %root.qname;  EMPTY >
+<!ATTLIST %root.qname;     
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ENTITY % clogicopquant            
+     "%exists.qname; | %forall.qname;" >
+
+<!ELEMENT %exists.qname;  EMPTY >
+<!ATTLIST %exists.qname;   
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %forall.qname;  EMPTY >
+<!ATTLIST %forall.qname;     
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ENTITY % clogicopnary             
+     "%and.qname; | %or.qname; | %xor.qname;" >
+
+<!ELEMENT %and.qname;  EMPTY >
+<!ATTLIST %and.qname;    
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %or.qname;  EMPTY >
+<!ATTLIST %or.qname;    
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %xor.qname;  EMPTY >
+<!ATTLIST %xor.qname;    
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ENTITY % clogicop1ary             
+     "%not.qname;" >
+
+<!ELEMENT %not.qname;  EMPTY >
+<!ATTLIST %not.qname;    
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ENTITY % clogicop2ary             
+     "%implies.qname;" >
+
+<!ELEMENT %implies.qname;  EMPTY >
+<!ATTLIST %implies.qname;    
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ENTITY % ccalcop                  
+     "%log.qname; | %int.qname; | %diff.qname; | %partialdiff.qname; |
+      %divergence.qname; | %grad.qname; | %curl.qname; | %laplacian.qname;" >
+
+<!ELEMENT %divergence.qname;  EMPTY >
+<!ATTLIST %divergence.qname;     
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %grad.qname;  EMPTY >
+<!ATTLIST %grad.qname;  
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %curl.qname;  EMPTY >
+<!ATTLIST %curl.qname;     
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %laplacian.qname;  EMPTY >
+<!ATTLIST %laplacian.qname;     
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %log.qname;  EMPTY >
+<!ATTLIST %log.qname;   
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %int.qname;  EMPTY >
+<!ATTLIST %int.qname;    
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %diff.qname;  EMPTY >
+<!ATTLIST %diff.qname;   
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %partialdiff.qname;  EMPTY >
+<!ATTLIST %partialdiff.qname;  
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ENTITY % ccalcop1ary              
+     "%ln.qname;" >
+
+<!ELEMENT %ln.qname;  EMPTY >
+<!ATTLIST %ln.qname;   
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ENTITY % csetop1ary               
+     "%card.qname;" >
+
+<!ELEMENT %card.qname;  EMPTY >
+<!ATTLIST %card.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ENTITY % csetop2ary               
+     "%setdiff.qname;" >
+
+<!ELEMENT %setdiff.qname;  EMPTY >
+<!ATTLIST %setdiff.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ENTITY % csetopnary               
+     "%union.qname; | %intersect.qname; | %cartesianproduct.qname; " >
+
+<!ELEMENT %union.qname;  EMPTY >
+<!ATTLIST %union.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %intersect.qname;  EMPTY >
+<!ATTLIST %intersect.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %cartesianproduct.qname;  EMPTY >
+<!ATTLIST %cartesianproduct.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ENTITY % cseqop                   
+     "%sum.qname; | %product.qname; | %limit.qname;" >
+
+<!ELEMENT %sum.qname;  EMPTY >
+<!ATTLIST %sum.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %product.qname;  EMPTY >
+<!ATTLIST %product.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %limit.qname;  EMPTY >
+<!ATTLIST %limit.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ENTITY % ctrigop                  
+     "%sin.qname; | %cos.qname; | %tan.qname; 
+      | %sec.qname; | %csc.qname; | %cot.qname; 
+      | %sinh.qname; | %cosh.qname; | %tanh.qname; 
+      | %sech.qname; | %csch.qname; | %coth.qname; 
+      | %arcsin.qname; | %arccos.qname; | %arctan.qname;
+      | %arccosh.qname; | %arccot.qname; | %arccoth.qname;
+      | %arccsc.qname; | %arccsch.qname; | %arcsec.qname;
+      | %arcsech.qname; | %arcsinh.qname; | %arctanh.qname;
+      " >
+
+<!ELEMENT %sin.qname;  EMPTY >
+<!ATTLIST %sin.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %cos.qname;  EMPTY >
+<!ATTLIST %cos.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %tan.qname;  EMPTY >
+<!ATTLIST %tan.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %sec.qname;  EMPTY >
+<!ATTLIST %sec.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %csc.qname;  EMPTY >
+<!ATTLIST %csc.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %cot.qname;  EMPTY >
+<!ATTLIST %cot.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %sinh.qname;  EMPTY >
+<!ATTLIST %sinh.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %cosh.qname;  EMPTY >
+<!ATTLIST %cosh.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %tanh.qname;  EMPTY >
+<!ATTLIST %tanh.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %sech.qname;  EMPTY >
+<!ATTLIST %sech.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %csch.qname;  EMPTY >
+<!ATTLIST %csch.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %coth.qname;  EMPTY >
+<!ATTLIST %coth.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %arcsin.qname;  EMPTY >
+<!ATTLIST %arcsin.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %arccos.qname;  EMPTY >
+<!ATTLIST %arccos.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %arctan.qname;  EMPTY >
+<!ATTLIST %arctan.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %arccosh.qname;  EMPTY >
+<!ATTLIST %arccosh.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+
+<!ELEMENT %arccot.qname;  EMPTY >
+<!ATTLIST %arccot.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %arccoth.qname;  EMPTY >
+<!ATTLIST %arccoth.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+
+<!ELEMENT %arccsc.qname;  EMPTY >
+<!ATTLIST %arccsc.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %arccsch.qname;  EMPTY >
+<!ATTLIST %arccsch.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %arcsec.qname;  EMPTY >
+<!ATTLIST %arcsec.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %arcsech.qname;  EMPTY >
+<!ATTLIST %arcsech.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %arcsinh.qname;  EMPTY >
+<!ATTLIST %arcsinh.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %arctanh.qname;  EMPTY >
+<!ATTLIST %arctanh.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+
+
+<!ENTITY % cstatopnary              
+     "%mean.qname; | %sdev.qname; |
+      %variance.qname; | %median.qname; |
+      %mode.qname;" >
+
+<!ELEMENT %mean.qname;  EMPTY >
+<!ATTLIST %mean.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %sdev.qname;  EMPTY >
+<!ATTLIST %sdev.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %variance.qname;  EMPTY >
+<!ATTLIST %variance.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %median.qname;  EMPTY >
+<!ATTLIST %median.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %mode.qname;  EMPTY >
+<!ATTLIST %mode.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ENTITY % cstatopmoment            
+     "%moment.qname;" >
+
+<!ELEMENT %moment.qname;  EMPTY >
+<!ATTLIST %moment.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ENTITY % clalgop1ary              
+     "%determinant.qname; |
+      %transpose.qname;" >
+
+<!ELEMENT %determinant.qname;  EMPTY >
+<!ATTLIST %determinant.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %transpose.qname;  EMPTY >
+<!ATTLIST %transpose.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ENTITY % clalgop2ary              
+     "%vectorproduct.qname; 
+      | %scalarproduct.qname; 
+      | %outerproduct.qname;" >
+
+<!ELEMENT %vectorproduct.qname;  EMPTY >
+<!ATTLIST %vectorproduct.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %scalarproduct.qname;  EMPTY >
+<!ATTLIST %scalarproduct.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %outerproduct.qname;  EMPTY >
+<!ATTLIST %outerproduct.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ENTITY % clalgopnary              
+     "%selector.qname;" >
+
+<!ELEMENT %selector.qname;  EMPTY >
+<!ATTLIST %selector.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!-- Content elements: relations -->
+
+<!ENTITY % cgenrel2ary             
+     "%neq.qname; | %factorof.qname;" >
+
+<!ELEMENT %neq.qname;  EMPTY >
+<!ATTLIST %neq.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %factorof.qname;  EMPTY >
+<!ATTLIST %factorof.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ENTITY % cgenrelnary              
+     "%eq.qname; | %leq.qname; | %lt.qname; | %geq.qname; 
+      | %gt.qname;| %equivalent.qname; | %approx.qname;" >
+
+<!ELEMENT %eq.qname;  EMPTY >
+<!ATTLIST %eq.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %equivalent.qname;  EMPTY >
+<!ATTLIST %equivalent.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %approx.qname;  EMPTY >
+<!ATTLIST %approx.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %gt.qname;  EMPTY >
+<!ATTLIST %gt.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %lt.qname;  EMPTY >
+<!ATTLIST %lt.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %geq.qname;  EMPTY >
+<!ATTLIST %geq.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %leq.qname;  EMPTY >
+<!ATTLIST %leq.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ENTITY % csetrel2ary              
+     "%in.qname; | %notin.qname; | %notsubset.qname; | %notprsubset.qname;" >
+
+<!ELEMENT %in.qname;  EMPTY >
+<!ATTLIST %in.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %notin.qname;  EMPTY >
+<!ATTLIST %notin.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %notsubset.qname;  EMPTY >
+<!ATTLIST %notsubset.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %notprsubset.qname;  EMPTY >
+<!ATTLIST %notprsubset.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ENTITY % csetrelnary       
+     "%subset.qname; | %prsubset.qname;" >
+
+<!ELEMENT %subset.qname;  EMPTY >
+<!ATTLIST %subset.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %prsubset.qname;  EMPTY >
+<!ATTLIST %prsubset.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ENTITY % cseqrel2ary              
+     "%tendsto.qname;" >
+
+<!ELEMENT %tendsto.qname;  EMPTY >
+<!ATTLIST %tendsto.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+      %att-type;
+>
+
+<!-- Content elements: quantifiers -->
+
+<!ENTITY % cquantifier            
+     "%lowlimit.qname; | %uplimit.qname; | %bvar.qname; 
+      | %degree.qname; | %logbase.qname;
+      | %momentabout.qname; | %domainofapplication.qname; " >
+
+<!ATTLIST %lowlimit.qname;
+      %MATHML.Common.attrib;
+>
+
+<!ATTLIST %uplimit.qname;
+      %MATHML.Common.attrib;
+>
+
+<!ATTLIST %bvar.qname;
+      %MATHML.Common.attrib;
+>
+
+<!ATTLIST %degree.qname;
+      %MATHML.Common.attrib;
+>
+
+<!ATTLIST %logbase.qname;
+      %MATHML.Common.attrib;
+>
+
+<!ATTLIST %momentabout.qname;
+      %MATHML.Common.attrib;
+>
+
+<!ATTLIST %domainofapplication.qname;
+      %MATHML.Common.attrib;
+>
+
+<!-- Operator groups -->
+
+<!ENTITY % cop1ary                  
+     "%cfuncop1ary; | %carithop1ary; | %clogicop1ary; |
+      %ccalcop1ary; | %ctrigop; | %clalgop1ary; |
+      %csetop1ary;" >
+
+<!ENTITY % cop2ary                  
+     "%carithop2ary; | %clogicop2ary;| %clalgop2ary; | %csetop2ary;" >
+
+<!ENTITY % copnary                  
+     "%cfuncopnary; | %carithopnary; | %clogicopnary; |
+      %csetopnary; | %cstatopnary; | %clalgopnary;" >
+
+<!ENTITY % copmisc                  
+     "%carithoproot; | %carithop1or2ary; | %ccalcop; |
+      %cseqop; | %cstatopmoment; | %clogicopquant;" >
+
+<!-- Relation groups -->
+
+<!ENTITY % crel2ary                 
+     "%cgenrel2ary; | %csetrel2ary; | %cseqrel2ary;" >
+
+<!ENTITY % crelnary                 
+     "%cgenrelnary; | %csetrelnary;" >
+
+<!-- Content constructs: all -->
+
+<!ENTITY % Content                  
+     "%ctoken; | %cspecial; | %cother; | %csemantics; | %c0ary;
+      | %cconstructor; | %cquantifier; | %cop1ary; | %cop2ary; 
+      | %copnary; |%copmisc; | %crel2ary; | %crelnary;" >
+
+<!-- Content constructs for substitution in presentation structures -->
+
+<!ENTITY % ContInPres               
+     "%ci.qname; |%csymbol.qname;| %cn.qname; | %c0ary; |
+      %apply.qname; | %fn.qname; |
+      %lambda.qname; | %reln.qname; |
+      %cconstructor; |
+      %semantics.qname; |%declare.qname;" >
+
+<!-- ............................................................. -->
+<!-- Recursive definition for content of expressions. Include
+     presentation constructs at lowest level so presentation
+     layout schemata hold presentation or content elements.
+     Include content constructs at lowest level so content
+     elements hold PCDATA or presentation elements at leaf
+     level (for permitted substitutable elements in context)
+-->
+
+<!ENTITY % ContentExpression        
+     "(%Content; | %PresInCont;)*" >
+<!ENTITY % PresExpression      
+     "(%Presentation; | %ContInPres;)*" >
+<!ENTITY % MathExpression           
+     "(%PresInCont; | %ContInPres;)*" >
+
+<!-- PCDATA or MathML character elements -->
+<!ENTITY % MathMLCharacters         
+     "#PCDATA | %mglyph.qname; " >
+
+<!-- Content elements: tokens                       -->
+<!-- (may contain embedded presentation constructs) -->
+
+<!ELEMENT %ci.qname;                 (%MathMLCharacters; | %PresInCont;)* >
+<!ELEMENT %csymbol.qname;            (%MathMLCharacters; | %PresInCont;)* >
+<!ELEMENT %cn.qname;                 (%MathMLCharacters; | %sep.qname; | %PresInCont;)* >
+
+<!-- Content elements: special -->
+
+<!ELEMENT %apply.qname;              (%ContentExpression;) >
+<!ELEMENT %reln.qname;               (%ContentExpression;) >
+<!ELEMENT %lambda.qname;             (%ContentExpression;) >
+
+<!-- Content elements: other -->
+
+<!ELEMENT %condition.qname;          (%ContentExpression;) >
+<!ELEMENT %declare.qname;            (%ContentExpression;) >
+
+<!-- Content elements: semantics -->
+
+<!ELEMENT %semantics.qname;          (%ContentExpression;) >
+<!ENTITY % Annotation.content  "( #PCDATA )" >
+<!ELEMENT %annotation.qname;         %Annotation.content; >
+
+<!ENTITY % Annotation-xml.content "ANY" >
+<!ELEMENT %annotation-xml.qname;     %Annotation-xml.content; >
+
+<!-- Content elements: constructors -->
+
+<!ELEMENT %interval.qname;           (%ContentExpression;) >
+<!ELEMENT %set.qname;                (%ContentExpression;) >
+<!ELEMENT %list.qname;               (%ContentExpression;) >
+<!ELEMENT %vector.qname;             (%ContentExpression;) >
+<!ELEMENT %matrix.qname;             (%ContentExpression;) >
+<!ELEMENT %matrixrow.qname;          (%ContentExpression;) >
+
+<!ELEMENT %piecewise.qname;          ((%piece.qname;)*, (%otherwise.qname;)? ) >
+<!ELEMENT %piece.qname;              (%ContentExpression;) >
+<!ELEMENT %otherwise.qname;          (%ContentExpression;) >
+
+<!-- Content elements: operator (user-defined) -->
+
+<!ELEMENT %fn.qname;                 (%ContentExpression;) >
+
+<!-- Content elements: quantifiers -->
+
+<!ELEMENT %lowlimit.qname;           (%ContentExpression;) >
+<!ELEMENT %uplimit.qname;            (%ContentExpression;) >
+<!ELEMENT %bvar.qname;               (%ContentExpression;) >
+<!ELEMENT %degree.qname;             (%ContentExpression;) >
+<!ELEMENT %logbase.qname;            (%ContentExpression;) >
+<!ELEMENT %momentabout.qname;        (%ContentExpression;) >
+<!ELEMENT %domainofapplication.qname; (%ContentExpression;) >
+
+<!-- ............................................................. -->
+<!-- Presentation layout schemata contain tokens,
+     layout and content schemata.
+-->
+
+<!ELEMENT %mstyle.qname;             (%PresExpression;) >
+<!ELEMENT %merror.qname;             (%PresExpression;) >
+<!ELEMENT %mphantom.qname;           (%PresExpression;) >
+<!ELEMENT %mrow.qname;               (%PresExpression;) >
+<!ELEMENT %mfrac.qname;              (%PresExpression;) >
+<!ELEMENT %msqrt.qname;              (%PresExpression;) >
+<!ELEMENT %menclose.qname;           (%PresExpression;) >
+<!ELEMENT %mroot.qname;              (%PresExpression;) >
+<!ELEMENT %msub.qname;               (%PresExpression;) >
+<!ELEMENT %msup.qname;               (%PresExpression;) >
+<!ELEMENT %msubsup.qname;            (%PresExpression;) >
+<!ELEMENT %mmultiscripts.qname;      (%PresExpression;) >
+<!ELEMENT %munder.qname;             (%PresExpression;) >
+<!ELEMENT %mover.qname;              (%PresExpression;) >
+<!ELEMENT %munderover.qname;         (%PresExpression;) >
+<!ELEMENT %mtable.qname;             (%PresExpression;) >
+<!ELEMENT %mtr.qname;                (%PresExpression;) >
+<!ELEMENT %mlabeledtr.qname;         (%PresExpression;) >
+<!ELEMENT %mtd.qname;                (%PresExpression;) >
+<!ELEMENT %maction.qname;            (%PresExpression;) >
+<!ELEMENT %mfenced.qname;            (%PresExpression;) >
+<!ELEMENT %mpadded.qname;            (%PresExpression;) >
+
+<!-- Presentation elements contain PCDATA or malignmark constructs. -->
+
+<!ELEMENT %mi.qname;                 (%MathMLCharacters; |
+      %malignmark.qname;)* >
+<!ELEMENT %mn.qname;                 (%MathMLCharacters; |
+      %malignmark.qname;)* >
+<!ELEMENT %mo.qname;                 (%MathMLCharacters; |
+      %malignmark.qname;)* >
+<!ELEMENT %mtext.qname;              (%MathMLCharacters; |
+      %malignmark.qname;)* >
+<!ELEMENT %ms.qname;                 (%MathMLCharacters; |
+      %malignmark.qname;)* >
+
+<!-- Browser interface definition  ............................... -->
+
+<!-- Attributes for top-level element "math" -->
+
+<!ENTITY % att-macros               
+     "macros       CDATA                    #IMPLIED" >
+<!ENTITY % att-mode                 
+     "mode         CDATA                    #IMPLIED" >
+<!ENTITY % att-display                
+     "display      CDATA                    #IMPLIED" >
+
+<!ENTITY % att-topinfo          
+     "%MATHML.Common.attrib;
+      %att-macros;
+      %att-mode;
+      %att-display;" >
+
+<!-- Attributes for browser interface element -->
+
+<!ENTITY % att-baseline             
+     "baseline     CDATA                    #IMPLIED" >
+<!ENTITY % att-overflow            
+     "overflow  ( scroll | elide | truncate | scale ) 'scroll'" >
+<!ENTITY % att-altimg               
+     "altimg       CDATA                    #IMPLIED" >
+<!ENTITY % att-alttext           
+     "alttext      CDATA                    #IMPLIED" >
+
+<!ENTITY % att-browif           
+     "%att-type;
+      %att-name;
+      %att-height;
+      %att-width;
+      %att-baseline;
+      %att-overflow;
+      %att-altimg;
+      %att-alttext;" >
+
+<!-- ............................................................. -->
+<!-- The top-level element "math" contains MathML encoded
+     mathematics. The "math" element has the browser info
+     attributes iff it is also the browser interface element.
+-->
+
+<!ELEMENT %math.qname;               (%MathExpression;) >
+
+<!ATTLIST %math.qname;
+      %att-topinfo;
+      %att-browif; >
+
+<!-- MathML Character Entities .............................................. -->
+<!ENTITY % mathml-charent.module "INCLUDE" >
+<![%mathml-charent.module;[
+<!-- Entity sets from ISO Technical Report 9573-13 ..... -->
+
+<!ENTITY % ent-isoamsa
+      PUBLIC "-//W3C//ENTITIES Added Math Symbols: Arrow Relations for MathML 2.0//EN"
+             "isoamsa.ent" >
+
+
+<!ENTITY % ent-isoamsb
+      PUBLIC "-//W3C//ENTITIES Added Math Symbols: Binary Operators for MathML 2.0//EN"
+             "isoamsb.ent" >
+
+
+<!ENTITY % ent-isoamsc
+      PUBLIC "-//W3C//ENTITIES Added Math Symbols: Delimiters for MathML 2.0//EN"
+             "isoamsc.ent" >
+
+
+<!ENTITY % ent-isoamsn
+      PUBLIC "-//W3C//ENTITIES Added Math Symbols: Negated Relations for MathML 2.0//EN"
+             "isoamsn.ent" >
+
+
+<!ENTITY % ent-isoamso
+      PUBLIC "-//W3C//ENTITIES Added Math Symbols: Ordinary for MathML 2.0//EN"
+             "isoamso.ent" >
+
+
+<!ENTITY % ent-isoamsr
+      PUBLIC "-//W3C//ENTITIES Added Math Symbols: Relations for MathML 2.0//EN"
+             "isoamsr.ent" >
+
+
+<!ENTITY % ent-isogrk3
+      PUBLIC "-//W3C//ENTITIES Greek Symbols for MathML 2.0//EN"
+             "isogrk3.ent" >
+
+
+<!ENTITY % ent-isomfrk
+      PUBLIC "-//W3C//ENTITIES Math Alphabets: Fraktur for MathML 2.0//EN"
+             "isomfrk.ent" >
+
+
+<!ENTITY % ent-isomopf
+      PUBLIC "-//W3C//ENTITIES Math Alphabets: Open Face for MathML 2.0//EN"
+             "isomopf.ent" >
+
+
+<!ENTITY % ent-isomscr
+      PUBLIC "-//W3C//ENTITIES Math Alphabets: Script for MathML 2.0//EN"
+             "isomscr.ent" >
+
+
+<!ENTITY % ent-isotech
+      PUBLIC "-//W3C//ENTITIES General Technical for MathML 2.0//EN"
+             "isotech.ent" >
+
+
+<!-- Entity sets from informative annex to ISO 8879:1986 (SGML) ....... -->
+
+<!ENTITY % ent-isobox
+      PUBLIC "-//W3C//ENTITIES Box and Line Drawing for MathML 2.0//EN"
+             "isobox.ent" >
+
+
+<!ENTITY % ent-isocyr1
+      PUBLIC "-//W3C//ENTITIES Russian Cyrillic for MathML 2.0//EN"
+             "isocyr1.ent" >
+
+
+<!ENTITY % ent-isocyr2
+      PUBLIC "-//W3C//ENTITIES Non-Russian Cyrillic for MathML 2.0//EN"
+             "isocyr2.ent" >
+
+
+<!ENTITY % ent-isodia
+      PUBLIC "-//W3C//ENTITIES Diacritical Marks for MathML 2.0//EN"
+             "isodia.ent" >
+
+
+<!ENTITY % ent-isolat1
+      PUBLIC "-//W3C//ENTITIES Added Latin 1 for MathML 2.0//EN"
+             "isolat1.ent" >
+
+
+<!ENTITY % ent-isolat2
+      PUBLIC "-//W3C//ENTITIES Added Latin 2 for MathML 2.0//EN"
+             "isolat2.ent" >
+
+
+<!ENTITY % ent-isonum
+      PUBLIC "-//W3C//ENTITIES Numeric and Special Graphic for MathML 2.0//EN"
+             "isonum.ent" >
+
+
+<!ENTITY % ent-isopub
+      PUBLIC "-//W3C//ENTITIES Publishing for MathML 2.0//EN"
+             "isopub.ent" >
+
+
+<!-- New characters defined by MathML ............................ -->
+
+<!ENTITY % ent-mmlextra
+      PUBLIC "-//W3C//ENTITIES Extra for MathML 2.0//EN"
+             "mmlextra.ent" >
+
+
+<!-- MathML aliases for characters defined above ................. -->
+
+<!ENTITY % ent-mmlalias
+      PUBLIC "-//W3C//ENTITIES Aiases for MathML 2.0//EN"
+             "mmlalias.ent" >
+
+
+<!-- end of MathML Character Entity section -->]]>
+
+<!-- Revision History:
+
+       Initial draft (syntax = XML) 1997-05-09
+          Stephen Buswell
+       Revised 1997-05-14
+          Robert Miner
+       Revised 1997-06-29 and 1997-07-02
+          Stephen Buswell
+       Revised 1997-12-15
+          Stephen Buswell
+       Revised 1998-02-08
+          Stephen Buswell
+       Revised 1998-04-04
+          Stephen Buswell
+       Entities and small revisions 1999-02-21
+          David Carlisle
+       Added attribute definitionURL to ci and cn 1999-10-11
+          Nico Poppelier
+       Additions for MathML 2  1999-12-16
+          David Carlisle
+       Namespace support 2000-01-14
+          David Carlisle
+       XHTML Compatibility 2000-02-23
+          Murray Altheim
+       New content elements 2000-03-26
+          David Carlisle
+       Further revisions for MathML2 CR draft 2000-07-11
+          David Carlisle
+       Further revisions for MathML2 CR draft 2000-10-31
+          David Carlisle
+
+-->
+
+<!-- end of MathML 2.0 DTD  ................................................ -->
+<!-- ....................................................................... -->
+
+
+<!--
+     File isoamsa.ent produced by the XSL script mmldtd.xsl
+     from input data in unicode.xml.
+
+     Please report any errors to 
+     David Carlisle <davidc@nag.co.uk>.
+
+     The numeric character values assigned to each entity
+     (should) match either official Unicode assignments
+     or assignments provisionally allocated by the
+     Unicode Consortium based on the characters in the `STIX'
+     propsal for mathematics. Note that these assignments
+     have not been ratified by the corresponding ISO
+     committee and thus should be considered liable to
+     change.
+
+     Entity names in this file are derived from files carrying the
+     following notice:
+
+     (C) International Organization for Standardization 1991
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY angzarr          "&#x0237C;" ><!--angle with down zig-zag arrow -->
+<!ENTITY cirmid           "&#x02AEF;" ><!--circle, mid below -->
+<!ENTITY cudarrl          "&#x02938;" ><!--left, curved, down arrow -->
+<!ENTITY cudarrr          "&#x02935;" ><!--right, curved, down arrow -->
+<!ENTITY cularr           "&#x021B6;" ><!--/curvearrowleft A: left curved arrow -->
+<!ENTITY cularrp          "&#x0293D;" ><!--curved left arrow with plus -->
+<!ENTITY curarr           "&#x021B7;" ><!--/curvearrowright A: rt curved arrow -->
+<!ENTITY curarrm          "&#x0293C;" ><!--curved right arrow with minus -->
+<!ENTITY dArr             "&#x021D3;" ><!--/Downarrow A: down dbl arrow -->
+<!ENTITY Darr             "&#x021A1;" ><!--down two-headed arrow -->
+<!ENTITY ddarr            "&#x021CA;" ><!--/downdownarrows A: two down arrows -->
+<!ENTITY DDotrahd         "&#x02911;" ><!--right arrow with dotted stem -->
+<!ENTITY dfisht           "&#x0297F;" ><!--down fish tail -->
+<!ENTITY dHar             "&#x02965;" ><!--down harpoon-left, down harpoon-right -->
+<!ENTITY dharl            "&#x021C3;" ><!--/downharpoonleft A: dn harpoon-left -->
+<!ENTITY dharr            "&#x021C2;" ><!--/downharpoonright A: down harpoon-rt -->
+<!ENTITY duarr            "&#x021F5;" ><!--down arrow, up arrow -->
+<!ENTITY duhar            "&#x0296F;" ><!--down harp, up harp -->
+<!ENTITY dzigrarr         "&#x0F5A2;" ><!--right long zig-zag arrow -->
+<!ENTITY erarr            "&#x02971;" ><!--equal, right arrow below -->
+<!ENTITY harr             "&#x02194;" ><!--/leftrightarrow A: l&r arrow -->
+<!ENTITY hArr             "&#x021D4;" ><!--/Leftrightarrow A: l&r dbl arrow -->
+<!ENTITY harrcir          "&#x02948;" ><!--left and right arrow with a circle -->
+<!ENTITY harrw            "&#x021AD;" ><!--/leftrightsquigarrow A: l&r arr-wavy -->
+<!ENTITY hoarr            "&#x021FF;" ><!--horizontal open arrow -->
+<!ENTITY imof             "&#x022B7;" ><!--image of -->
+<!ENTITY lAarr            "&#x021DA;" ><!--/Lleftarrow A: left triple arrow -->
+<!ENTITY Larr             "&#x0219E;" ><!--/twoheadleftarrow A: -->
+<!ENTITY larrbfs          "&#x0291F;" ><!--left arrow-bar, filled square -->
+<!ENTITY larrfs           "&#x0291D;" ><!--left arrow, filled square -->
+<!ENTITY larrhk           "&#x021A9;" ><!--/hookleftarrow A: left arrow-hooked -->
+<!ENTITY larrlp           "&#x021AB;" ><!--/looparrowleft A: left arrow-looped -->
+<!ENTITY larrpl           "&#x02939;" ><!--left arrow, plus -->
+<!ENTITY larrsim          "&#x02973;" ><!--left arrow, similar -->
+<!ENTITY larrtl           "&#x021A2;" ><!--/leftarrowtail A: left arrow-tailed -->
+<!ENTITY latail           "&#x02919;" ><!--left arrow-tail -->
+<!ENTITY lAtail           "&#x0291B;" ><!--left double arrow-tail -->
+<!ENTITY lbarr            "&#x0290C;" ><!--left broken arrow -->
+<!ENTITY lBarr            "&#x0290E;" ><!--left doubly broken arrow -->
+<!ENTITY ldca             "&#x02936;" ><!--left down curved arrow -->
+<!ENTITY ldrdhar          "&#x02967;" ><!--left harpoon-down over right harpoon-down -->
+<!ENTITY ldrushar         "&#x0294B;" ><!--left-down-right-up harpoon -->
+<!ENTITY ldsh             "&#x021B2;" ><!--left down angled arrow -->
+<!ENTITY lfisht           "&#x0297C;" ><!--left fish tail -->
+<!ENTITY lHar             "&#x02962;" ><!--left harpoon-up over left harpoon-down -->
+<!ENTITY lhard            "&#x021BD;" ><!--/leftharpoondown A: l harpoon-down -->
+<!ENTITY lharu            "&#x021BC;" ><!--/leftharpoonup A: left harpoon-up -->
+<!ENTITY lharul           "&#x0296A;" ><!--left harpoon-up over long dash -->
+<!ENTITY llarr            "&#x021C7;" ><!--/leftleftarrows A: two left arrows -->
+<!ENTITY llhard           "&#x0296B;" ><!--left harpoon-down below long dash -->
+<!ENTITY loarr            "&#x021FD;" ><!--left open arrow -->
+<!ENTITY lrarr            "&#x021C6;" ><!--/leftrightarrows A: l arr over r arr -->
+<!ENTITY lrhar            "&#x021CB;" ><!--/leftrightharpoons A: l harp over r -->
+<!ENTITY lrhard           "&#x0296D;" ><!--right harpoon-down below long dash -->
+<!ENTITY lsh              "&#x021B0;" ><!--/Lsh A: -->
+<!ENTITY lurdshar         "&#x0294A;" ><!--left-up-right-down harpoon -->
+<!ENTITY luruhar          "&#x02966;" ><!--left harpoon-up over right harpoon-up -->
+<!ENTITY map              "&#x021A6;" ><!--/mapsto A: -->
+<!ENTITY Map              "&#x02905;" ><!--twoheaded mapsto -->
+<!ENTITY midcir           "&#x02AF0;" ><!--mid, circle below  -->
+<!ENTITY mumap            "&#x022B8;" ><!--/multimap A: -->
+<!ENTITY nearhk           "&#x02924;" ><!--NE arrow-hooked -->
+<!ENTITY nearr            "&#x02197;" ><!--/nearrow A: NE pointing arrow -->
+<!ENTITY neArr            "&#x021D7;" ><!--NE pointing dbl arrow -->
+<!ENTITY nesear           "&#x02928;" ><!--/toea A: NE & SE arrows -->
+<!ENTITY nharr            "&#x021AE;" ><!--/nleftrightarrow A: not l&r arrow -->
+<!ENTITY nhArr            "&#x021CE;" ><!--/nLeftrightarrow A: not l&r dbl arr -->
+<!ENTITY nlarr            "&#x0219A;" ><!--/nleftarrow A: not left arrow -->
+<!ENTITY nlArr            "&#x021CD;" ><!--/nLeftarrow A: not implied by -->
+<!ENTITY nrarr            "&#x0219B;" ><!--/nrightarrow A: not right arrow -->
+<!ENTITY nrArr            "&#x021CF;" ><!--/nRightarrow A: not implies -->
+<!ENTITY nrarrc           "&#x02933;&#x00338;" ><!--not right arrow-curved -->
+<!ENTITY nrarrw           "&#x0219D;&#x00338;" ><!--not right arrow-wavy -->
+<!ENTITY nvHarr           "&#x021CE;" ><!--not, vert, left and right double arrow  -->
+<!ENTITY nvlArr           "&#x021CD;" ><!--not, vert, left double arrow -->
+<!ENTITY nvrArr           "&#x021CF;" ><!--not, vert, right double arrow -->
+<!ENTITY nwarhk           "&#x02923;" ><!--NW arrow-hooked -->
+<!ENTITY nwarr            "&#x02196;" ><!--/nwarrow A: NW pointing arrow -->
+<!ENTITY nwArr            "&#x021D6;" ><!--NW pointing dbl arrow -->
+<!ENTITY nwnear           "&#x02927;" ><!--NW & NE arrows -->
+<!ENTITY olarr            "&#x021BA;" ><!--/circlearrowleft A: l arr in circle -->
+<!ENTITY orarr            "&#x021BB;" ><!--/circlearrowright A: r arr in circle -->
+<!ENTITY origof           "&#x022B6;" ><!--original of -->
+<!ENTITY rAarr            "&#x021DB;" ><!--/Rrightarrow A: right triple arrow -->
+<!ENTITY Rarr             "&#x021A0;" ><!--/twoheadrightarrow A: -->
+<!ENTITY rarrap           "&#x02975;" ><!--approximate, right arrow above -->
+<!ENTITY rarrbfs          "&#x02920;" ><!--right arrow-bar, filled square -->
+<!ENTITY rarrc            "&#x02933;" ><!--right arrow-curved -->
+<!ENTITY rarrfs           "&#x0291E;" ><!--right arrow, filled square -->
+<!ENTITY rarrhk           "&#x021AA;" ><!--/hookrightarrow A: rt arrow-hooked -->
+<!ENTITY rarrlp           "&#x021AC;" ><!--/looparrowright A: rt arrow-looped -->
+<!ENTITY rarrpl           "&#x02945;" ><!--right arrow, plus -->
+<!ENTITY rarrsim          "&#x02974;" ><!--right arrow, similar -->
+<!ENTITY rarrtl           "&#x021A3;" ><!--/rightarrowtail A: rt arrow-tailed -->
+<!ENTITY Rarrtl           "&#x02916;" ><!--right two-headed arrow with tail -->
+<!ENTITY rarrw            "&#x0219D;" ><!--/rightsquigarrow A: rt arrow-wavy -->
+<!ENTITY ratail           "&#x021A3;" ><!--right arrow-tail -->
+<!ENTITY rAtail           "&#x0291C;" ><!--right double arrow-tail -->
+<!ENTITY rbarr            "&#x0290D;" ><!--/bkarow A: right broken arrow -->
+<!ENTITY rBarr            "&#x0290F;" ><!--/dbkarow A: right doubly broken arrow -->
+<!ENTITY RBarr            "&#x02910;" ><!--/drbkarow A: twoheaded right broken arrow -->
+<!ENTITY rdca             "&#x02937;" ><!--right down curved arrow -->
+<!ENTITY rdldhar          "&#x02969;" ><!--right harpoon-down over left harpoon-down -->
+<!ENTITY rdsh             "&#x021B3;" ><!--right down angled arrow -->
+<!ENTITY rfisht           "&#x0297D;" ><!--right fish tail -->
+<!ENTITY rHar             "&#x02964;" ><!--right harpoon-up over right harpoon-down -->
+<!ENTITY rhard            "&#x021C1;" ><!--/rightharpoondown A: rt harpoon-down -->
+<!ENTITY rharu            "&#x021C0;" ><!--/rightharpoonup A: rt harpoon-up -->
+<!ENTITY rharul           "&#x0296C;" ><!--right harpoon-up over long dash -->
+<!ENTITY rlarr            "&#x021C4;" ><!--/rightleftarrows A: r arr over l arr -->
+<!ENTITY rlhar            "&#x021CC;" ><!--/rightleftharpoons A: r harp over l -->
+<!ENTITY roarr            "&#x021FE;" ><!--right open arrow -->
+<!ENTITY rrarr            "&#x021C9;" ><!--/rightrightarrows A: two rt arrows -->
+<!ENTITY rsh              "&#x021B1;" ><!--/Rsh A: -->
+<!ENTITY ruluhar          "&#x02968;" ><!--right harpoon-up over left harpoon-up -->
+<!ENTITY searhk           "&#x02925;" ><!--/hksearow A: SE arrow-hooken -->
+<!ENTITY searr            "&#x02198;" ><!--/searrow A: SE pointing arrow -->
+<!ENTITY seArr            "&#x021D8;" ><!--SE pointing dbl arrow -->
+<!ENTITY seswar           "&#x02929;" ><!--/tosa A: SE & SW arrows -->
+<!ENTITY simrarr          "&#x02972;" ><!--similar, right arrow below -->
+<!ENTITY slarr            "&#x02190;&#x0FE00;" ><!--short left arrow -->
+<!ENTITY srarr            "&#x02192;&#x0FE00;" ><!--short right arrow -->
+<!ENTITY swarhk           "&#x02926;" ><!--/hkswarow A: SW arrow-hooked -->
+<!ENTITY swarr            "&#x02199;" ><!--/swarrow A: SW pointing arrow -->
+<!ENTITY swArr            "&#x021D9;" ><!--SW pointing dbl arrow -->
+<!ENTITY swnwar           "&#x0292A;" ><!--SW & NW arrows -->
+<!ENTITY uArr             "&#x021D1;" ><!--/Uparrow A: up dbl arrow -->
+<!ENTITY Uarr             "&#x0219F;" ><!--up two-headed arrow -->
+<!ENTITY Uarrocir         "&#x02949;" ><!--up two-headed arrow above circle -->
+<!ENTITY udarr            "&#x021C5;" ><!--up arrow, down arrow -->
+<!ENTITY udhar            "&#x0296E;" ><!--up harp, down harp -->
+<!ENTITY ufisht           "&#x0297E;" ><!--up fish tail -->
+<!ENTITY uHar             "&#x02963;" ><!--up harpoon-left, up harpoon-right -->
+<!ENTITY uharl            "&#x021BF;" ><!--/upharpoonleft A: up harpoon-left -->
+<!ENTITY uharr            "&#x021BE;" ><!--/upharpoonright /restriction A: up harp-r -->
+<!ENTITY uuarr            "&#x021C8;" ><!--/upuparrows A: two up arrows -->
+<!ENTITY varr             "&#x02195;" ><!--/updownarrow A: up&down arrow -->
+<!ENTITY vArr             "&#x021D5;" ><!--/Updownarrow A: up&down dbl arrow -->
+<!ENTITY xharr            "&#x0F578;" ><!--/longleftrightarrow A: long l&r arr -->
+<!ENTITY xhArr            "&#x0F57B;" ><!--/Longleftrightarrow A: long l&r dbl arr -->
+<!ENTITY xlarr            "&#x0F576;" ><!--/longleftarrow A: long left arrow -->
+<!ENTITY xlArr            "&#x0F579;" ><!--/Longleftarrow A: long l dbl arrow -->
+<!ENTITY xmap             "&#x0F57D;" ><!--/longmapsto A: -->
+<!ENTITY xrarr            "&#x0F577;" ><!--/longrightarrow A: long right arrow -->
+<!ENTITY xrArr            "&#x0F57A;" ><!--/Longrightarrow A: long rt dbl arr -->
+<!ENTITY zigrarr          "&#x021DD;" ><!--right zig-zag arrow -->
+
+<!--
+     File isoamsb.ent produced by the XSL script mmldtd.xsl
+     from input data in unicode.xml.
+
+     Please report any errors to 
+     David Carlisle <davidc@nag.co.uk>.
+
+     The numeric character values assigned to each entity
+     (should) match either official Unicode assignments
+     or assignments provisionally allocated by the
+     Unicode Consortium based on the characters in the `STIX'
+     propsal for mathematics. Note that these assignments
+     have not been ratified by the corresponding ISO
+     committee and thus should be considered liable to
+     change.
+
+     Entity names in this file are derived from files carrying the
+     following notice:
+
+     (C) International Organization for Standardization 1991
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY ac               "&#x0290F;" ><!--most positive -->
+<!ENTITY acE              "&#x029DB;" ><!--most positive, two lines below -->
+<!ENTITY amalg            "&#x02A3F;" ><!--/amalg B: amalgamation or coproduct -->
+<!ENTITY barvee           "&#x022BD;" ><!--bar, vee -->
+<!ENTITY barwed           "&#x022BC;" ><!--/barwedge B: logical and, bar above -->
+<!ENTITY Barwed           "&#x02306;" ><!--/doublebarwedge B: log and, dbl bar above -->
+<!ENTITY bsolb            "&#x029C5;" ><!--reverse solidus in square -->
+<!ENTITY Cap              "&#x022D2;" ><!--/Cap /doublecap B: dbl intersection -->
+<!ENTITY capand           "&#x02A44;" ><!--intersection, and -->
+<!ENTITY capbrcup         "&#x02A49;" ><!--intersection, bar, union -->
+<!ENTITY capcap           "&#x02A4B;" ><!--intersection, intersection, joined -->
+<!ENTITY capcup           "&#x02A47;" ><!--intersection above union -->
+<!ENTITY capdot           "&#x02A40;" ><!--intersection, with dot -->
+<!ENTITY caps             "&#x02229;&#x0FE00;" ><!--intersection, serifs -->
+<!ENTITY ccaps            "&#x02A4D;" ><!--closed intersection, serifs -->
+<!ENTITY ccups            "&#x02A4C;" ><!--closed union, serifs -->
+<!ENTITY ccupssm          "&#x02A50;" ><!--closed union, serifs, smash product -->
+<!ENTITY coprod           "&#x02210;" ><!--/coprod L: coproduct operator -->
+<!ENTITY Cup              "&#x022D3;" ><!--/Cup /doublecup B: dbl union -->
+<!ENTITY cupbrcap         "&#x02A48;" ><!--union, bar, intersection -->
+<!ENTITY cupcap           "&#x02A46;" ><!--union above intersection -->
+<!ENTITY cupcup           "&#x02A4A;" ><!--union, union, joined -->
+<!ENTITY cupdot           "&#x0228D;" ><!--union, with dot -->
+<!ENTITY cupor            "&#x02A45;" ><!--union, or -->
+<!ENTITY cups             "&#x0222A;&#x0FE00;" ><!--union, serifs -->
+<!ENTITY cuvee            "&#x022CE;" ><!--/curlyvee B: curly logical or -->
+<!ENTITY cuwed            "&#x022CF;" ><!--/curlywedge B: curly logical and -->
+<!ENTITY dagger           "&#x02020;" ><!--/dagger B: dagger relation -->
+<!ENTITY Dagger           "&#x02021;" ><!--/ddagger B: double dagger relation -->
+<!ENTITY diam             "&#x022C4;" ><!--/diamond B: open diamond -->
+<!ENTITY divonx           "&#x022C7;" ><!--/divideontimes B: division on times -->
+<!ENTITY eplus            "&#x02A71;" ><!--equal, plus -->
+<!ENTITY hercon           "&#x022B9;" ><!--hermitian conjugate matrix -->
+<!ENTITY intcal           "&#x022BA;" ><!--/intercal B: intercal -->
+<!ENTITY iprod            "&#x02A3C;" ><!--/intprod -->
+<!ENTITY loplus           "&#x02A2D;" ><!--plus sign in left half circle -->
+<!ENTITY lotimes          "&#x02A34;" ><!--multiply sign in left half circle  -->
+<!ENTITY lthree           "&#x022CB;" ><!--/leftthreetimes B: -->
+<!ENTITY ltimes           "&#x022C9;" ><!--/ltimes B: times sign, left closed -->
+<!ENTITY midast           "&#x0002A;" ><!--/ast B: asterisk -->
+<!ENTITY minusb           "&#x0229F;" ><!--/boxminus B: minus sign in box -->
+<!ENTITY minusd           "&#x02238;" ><!--/dotminus B: minus sign, dot above -->
+<!ENTITY minusdu          "&#x02A2A;" ><!--minus sign, dot below -->
+<!ENTITY ncap             "&#x02A43;" ><!--bar, intersection -->
+<!ENTITY ncup             "&#x02A42;" ><!--bar, union -->
+<!ENTITY oast             "&#x0229B;" ><!--/circledast B: asterisk in circle -->
+<!ENTITY ocir             "&#x0229A;" ><!--/circledcirc B: small circle in circle -->
+<!ENTITY odash            "&#x0229D;" ><!--/circleddash B: hyphen in circle -->
+<!ENTITY odiv             "&#x02A38;" ><!--divide in circle -->
+<!ENTITY odot             "&#x02299;" ><!--/odot B: middle dot in circle -->
+<!ENTITY odsold           "&#x029BC;" ><!--dot, solidus, dot in circle -->
+<!ENTITY ofcir            "&#x029BF;" ><!--filled circle in circle -->
+<!ENTITY ogt              "&#x029C1;" ><!--greater-than in circle -->
+<!ENTITY ohbar            "&#x029B5;" ><!--circle with horizontal bar -->
+<!ENTITY olcir            "&#x029BE;" ><!--large circle in circle -->
+<!ENTITY olt              "&#x029C0;" ><!--less-than in circle -->
+<!ENTITY omid             "&#x029B6;" ><!--vertical bar in circle -->
+<!ENTITY ominus           "&#x02296;" ><!--/ominus B: minus sign in circle -->
+<!ENTITY opar             "&#x029B7;" ><!--parallel in circle -->
+<!ENTITY operp            "&#x029B9;" ><!--perpendicular in circle -->
+<!ENTITY oplus            "&#x02295;" ><!--/oplus B: plus sign in circle -->
+<!ENTITY osol             "&#x02298;" ><!--/oslash B: solidus in circle -->
+<!ENTITY otimes           "&#x02297;" ><!--/otimes B: multiply sign in circle -->
+<!ENTITY Otimes           "&#x02A37;" ><!--multiply sign in double circle -->
+<!ENTITY otimesas         "&#x02A36;" ><!--multiply sign in circle, circumflex accent -->
+<!ENTITY ovbar            "&#x0233D;" ><!--circle with vertical bar -->
+<!ENTITY plusacir         "&#x02A23;" ><!--plus, circumflex accent above -->
+<!ENTITY plusb            "&#x0229E;" ><!--/boxplus B: plus sign in box -->
+<!ENTITY pluscir          "&#x02A22;" ><!--plus, small circle above -->
+<!ENTITY plusdo           "&#x02214;" ><!--/dotplus B: plus sign, dot above -->
+<!ENTITY plusdu           "&#x02A25;" ><!--plus sign, dot below -->
+<!ENTITY pluse            "&#x02A72;" ><!--plus, equals -->
+<!ENTITY plussim          "&#x02A26;" ><!--plus, similar below -->
+<!ENTITY plustwo          "&#x02A27;" ><!--plus, two; Nim-addition -->
+<!ENTITY prod             "&#x0220F;" ><!--/prod L: product operator -->
+<!ENTITY race             "&#x029DA;" ><!--reverse most positive, line below -->
+<!ENTITY roplus           "&#x02A2E;" ><!--plus sign in right half circle -->
+<!ENTITY rotimes          "&#x02A35;" ><!--multiply sign in right half circle -->
+<!ENTITY rthree           "&#x022CC;" ><!--/rightthreetimes B: -->
+<!ENTITY rtimes           "&#x022CA;" ><!--/rtimes B: times sign, right closed -->
+<!ENTITY sdot             "&#x022C5;" ><!--/cdot B: small middle dot -->
+<!ENTITY sdotb            "&#x022A1;" ><!--/dotsquare /boxdot B: small dot in box -->
+<!ENTITY setmn            "&#x02216;" ><!--/setminus B: reverse solidus -->
+<!ENTITY simplus          "&#x02A24;" ><!--plus, similar above -->
+<!ENTITY smashp           "&#x02A33;" ><!--smash product -->
+<!ENTITY solb             "&#x029C4;" ><!--solidus in square -->
+<!ENTITY sqcap            "&#x02293;" ><!--/sqcap B: square intersection -->
+<!ENTITY sqcaps           "&#x02293;&#x0FE00;" ><!--square intersection, serifs -->
+<!ENTITY sqcup            "&#x02294;" ><!--/sqcup B: square union -->
+<!ENTITY sqcups           "&#x02294;&#x0FE00;" ><!--square union, serifs -->
+<!ENTITY ssetmn           "&#x02216;&#x0FE00;" ><!--/smallsetminus B: sm reverse solidus -->
+<!ENTITY sstarf           "&#x022C6;" ><!--/star B: small star, filled -->
+<!ENTITY subdot           "&#x02ABD;" ><!--subset, with dot -->
+<!ENTITY sum              "&#x02211;" ><!--/sum L: summation operator -->
+<!ENTITY supdot           "&#x02ABE;" ><!--superset, with dot -->
+<!ENTITY timesb           "&#x022A0;" ><!--/boxtimes B: multiply sign in box -->
+<!ENTITY timesbar         "&#x02A31;" ><!--multiply sign, bar below -->
+<!ENTITY timesd           "&#x02A30;" ><!--times, dot -->
+<!ENTITY tridot           "&#x025EC;" ><!--dot in triangle -->
+<!ENTITY triminus         "&#x02A3A;" ><!--minus in triangle -->
+<!ENTITY triplus          "&#x02A39;" ><!--plus in triangle -->
+<!ENTITY trisb            "&#x029CD;" ><!--triangle, serifs at bottom -->
+<!ENTITY tritime          "&#x02A3B;" ><!--multiply in triangle -->
+<!ENTITY uplus            "&#x0228E;" ><!--/uplus B: plus sign in union -->
+<!ENTITY veebar           "&#x022BB;" ><!--/veebar B: logical or, bar below -->
+<!ENTITY wedbar           "&#x02A5F;" ><!--wedge, bar below -->
+<!ENTITY wreath           "&#x02240;" ><!--/wr B: wreath product -->
+<!ENTITY xcap             "&#x022C2;" ><!--/bigcap L: intersection operator -->
+<!ENTITY xcirc            "&#x025EF;" ><!--/bigcirc B: large circle -->
+<!ENTITY xcup             "&#x022C3;" ><!--/bigcup L: union operator -->
+<!ENTITY xdtri            "&#x025BD;" ><!--/bigtriangledown B: big dn tri, open -->
+<!ENTITY xodot            "&#x02299;" ><!--/bigodot L: circle dot operator -->
+<!ENTITY xoplus           "&#x02295;" ><!--/bigoplus L: circle plus operator -->
+<!ENTITY xotime           "&#x02297;" ><!--/bigotimes L: circle times operator -->
+<!ENTITY xsqcup           "&#x02294;" ><!--/bigsqcup L: square union operator -->
+<!ENTITY xuplus           "&#x0228E;" ><!--/biguplus L: -->
+<!ENTITY xutri            "&#x025B3;" ><!--/bigtriangleup B: big up tri, open -->
+<!ENTITY xvee             "&#x022C1;" ><!--/bigvee L: logical and operator -->
+<!ENTITY xwedge           "&#x022C0;" ><!--/bigwedge L: logical or operator -->
+
+<!--
+     File isoamsc.ent produced by the XSL script mmldtd.xsl
+     from input data in unicode.xml.
+
+     Please report any errors to 
+     David Carlisle <davidc@nag.co.uk>.
+
+     The numeric character values assigned to each entity
+     (should) match either official Unicode assignments
+     or assignments provisionally allocated by the
+     Unicode Consortium based on the characters in the `STIX'
+     propsal for mathematics. Note that these assignments
+     have not been ratified by the corresponding ISO
+     committee and thus should be considered liable to
+     change.
+
+     Entity names in this file are derived from files carrying the
+     following notice:
+
+     (C) International Organization for Standardization 1991
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY dlcorn           "&#x0231E;" ><!--/llcorner O: lower left corner -->
+<!ENTITY drcorn           "&#x0231F;" ><!--/lrcorner C: lower right corner -->
+<!ENTITY gtlPar           "&#x02995;" ><!--dbl left parenthesis, greater -->
+<!ENTITY langd            "&#x02991;" ><!--left angle, dot -->
+<!ENTITY lbrke            "&#x0298B;" ><!--left bracket, equal -->
+<!ENTITY lbrksld          "&#x0298F;" ><!--left bracket, solidus bottom corner -->
+<!ENTITY lbrkslu          "&#x0298D;" ><!--left bracket, solidus top corner -->
+<!ENTITY lceil            "&#x02308;" ><!--/lceil O: left ceiling -->
+<!ENTITY lfloor           "&#x0230A;" ><!--/lfloor O: left floor -->
+<!ENTITY lmoust           "&#x023B0;" ><!--/lmoustache -->
+<!ENTITY lparlt           "&#x02993;" ><!--O: left parenthesis, lt -->
+<!ENTITY ltrPar           "&#x02996;" ><!--dbl right parenthesis, less -->
+<!ENTITY rangd            "&#x02992;" ><!--right angle, dot -->
+<!ENTITY rbrke            "&#x0298C;" ><!--right bracket, equal -->
+<!ENTITY rbrksld          "&#x0298E;" ><!--right bracket, solidus bottom corner -->
+<!ENTITY rbrkslu          "&#x02990;" ><!--right bracket, solidus top corner -->
+<!ENTITY rceil            "&#x02309;" ><!--/rceil C: right ceiling -->
+<!ENTITY rfloor           "&#x0230B;" ><!--/rfloor C: right floor -->
+<!ENTITY rmoust           "&#x023B1;" ><!--/rmoustache -->
+<!ENTITY rpargt           "&#x02994;" ><!--C: right paren, gt -->
+<!ENTITY ulcorn           "&#x0231C;" ><!--/ulcorner O: upper left corner -->
+<!ENTITY urcorn           "&#x0231D;" ><!--/urcorner C: upper right corner -->
+
+<!--
+     File isoamsn.ent produced by the XSL script mmldtd.xsl
+     from input data in unicode.xml.
+
+     Please report any errors to 
+     David Carlisle <davidc@nag.co.uk>.
+
+     The numeric character values assigned to each entity
+     (should) match either official Unicode assignments
+     or assignments provisionally allocated by the
+     Unicode Consortium based on the characters in the `STIX'
+     propsal for mathematics. Note that these assignments
+     have not been ratified by the corresponding ISO
+     committee and thus should be considered liable to
+     change.
+
+     Entity names in this file are derived from files carrying the
+     following notice:
+
+     (C) International Organization for Standardization 1991
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY gnap             "&#x02A8A;" ><!--/gnapprox N: greater, not approximate -->
+<!ENTITY gne              "&#x02269;" ><!--/gneq N: greater, not equals -->
+<!ENTITY gnE              "&#x02269;" ><!--/gneqq N: greater, not dbl equals -->
+<!ENTITY gnsim            "&#x022E7;" ><!--/gnsim N: greater, not similar -->
+<!ENTITY gvnE             "&#x02269;&#x0FE00;" ><!--/gvertneqq N: gt, vert, not dbl eq -->
+<!ENTITY lnap             "&#x02A89;" ><!--/lnapprox N: less, not approximate -->
+<!ENTITY lne              "&#x02268;" ><!--/lneq N: less, not equals -->
+<!ENTITY lnE              "&#x02268;" ><!--/lneqq N: less, not double equals -->
+<!ENTITY lnsim            "&#x022E6;" ><!--/lnsim N: less, not similar -->
+<!ENTITY lvnE             "&#x02268;&#x0FE00;" ><!--/lvertneqq N: less, vert, not dbl eq -->
+<!ENTITY nap              "&#x02249;" ><!--/napprox N: not approximate -->
+<!ENTITY napE             "&#x02A70;&#x00338;" ><!--not approximately equal or equal to -->
+<!ENTITY napid            "&#x0224B;&#x00338;" ><!--not approximately identical to -->
+<!ENTITY ncong            "&#x02247;" ><!--/ncong N: not congruent with -->
+<!ENTITY ncongdot         "&#x02A6D;&#x00338;" ><!--not congruent, dot -->
+<!ENTITY nequiv           "&#x02262;" ><!--/nequiv N: not identical with -->
+<!ENTITY nge              "&#x02271;&#x020E5;" ><!--/ngeq N: not greater-than-or-equal -->
+<!ENTITY ngE              "&#x02271;" ><!--/ngeqq N: not greater, dbl equals -->
+<!ENTITY nges             "&#x02271;" ><!--/ngeqslant N: not gt-or-eq, slanted -->
+<!ENTITY nGg              "&#x022D9;&#x00338;" ><!--not triple greater than -->
+<!ENTITY ngsim            "&#x02275;" ><!--not greater, similar -->
+<!ENTITY ngt              "&#x0226F;" ><!--/ngtr N: not greater-than -->
+<!ENTITY nGt              "&#x0226B;&#x00338;" ><!--not, vert, much greater than -->
+<!ENTITY nGtv             "&#x0226B;&#x00338;&#x0FE00;" ><!--not much greater than, variant -->
+<!ENTITY nle              "&#x02270;&#x020E5;" ><!--/nleq N: not less-than-or-equal -->
+<!ENTITY nlE              "&#x02270;" ><!--/nleqq N: not less, dbl equals -->
+<!ENTITY nles             "&#x02270;" ><!--/nleqslant N: not less-or-eq, slant -->
+<!ENTITY nLl              "&#x022D8;&#x00338;" ><!--not triple less than -->
+<!ENTITY nlsim            "&#x02274;" ><!--not less, similar -->
+<!ENTITY nlt              "&#x0226E;" ><!--/nless N: not less-than -->
+<!ENTITY nLt              "&#x0226A;&#x00338;" ><!--not, vert, much less than -->
+<!ENTITY nltri            "&#x022EA;" ><!--/ntriangleleft N: not left triangle -->
+<!ENTITY nltrie           "&#x022EC;" ><!--/ntrianglelefteq N: not l tri, eq -->
+<!ENTITY nLtv             "&#x0226A;&#x00338;&#x0FE00;" ><!--not much less than, variant -->
+<!ENTITY nmid             "&#x02224;" ><!--/nmid -->
+<!ENTITY npar             "&#x02226;" ><!--/nparallel N: not parallel -->
+<!ENTITY npr              "&#x02280;" ><!--/nprec N: not precedes -->
+<!ENTITY nprcue           "&#x022E0;" ><!--not curly precedes, eq -->
+<!ENTITY npre             "&#x02AAF;&#x00338;" ><!--/npreceq N: not precedes, equals -->
+<!ENTITY nrtri            "&#x022EB;" ><!--/ntriangleright N: not rt triangle -->
+<!ENTITY nrtrie           "&#x022ED;" ><!--/ntrianglerighteq N: not r tri, eq -->
+<!ENTITY nsc              "&#x02281;" ><!--/nsucc N: not succeeds -->
+<!ENTITY nsccue           "&#x022E1;" ><!--not succeeds, curly eq -->
+<!ENTITY nsce             "&#x02AB0;&#x00338;" ><!--/nsucceq N: not succeeds, equals -->
+<!ENTITY nsim             "&#x02241;" ><!--/nsim N: not similar -->
+<!ENTITY nsime            "&#x02244;" ><!--/nsimeq N: not similar, equals -->
+<!ENTITY nsmid            "&#x02224;&#x0FE00;" ><!--/nshortmid -->
+<!ENTITY nspar            "&#x02226;&#x0FE00;" ><!--/nshortparallel N: not short par -->
+<!ENTITY nsqsube          "&#x022E2;" ><!--not, square subset, equals -->
+<!ENTITY nsqsupe          "&#x022E3;" ><!--not, square superset, equals -->
+<!ENTITY nsub             "&#x02284;" ><!--not subset -->
+<!ENTITY nsube            "&#x02288;" ><!--/nsubseteq N: not subset, equals -->
+<!ENTITY nsubE            "&#x02288;" ><!--/nsubseteqq N: not subset, dbl eq -->
+<!ENTITY nsup             "&#x02285;" ><!--not superset -->
+<!ENTITY nsupe            "&#x02289;" ><!--/nsupseteq N: not superset, equals -->
+<!ENTITY nsupE            "&#x02289;" ><!--/nsupseteqq N: not superset, dbl eq -->
+<!ENTITY ntgl             "&#x02279;" ><!--not greater, less -->
+<!ENTITY ntlg             "&#x02278;" ><!--not less, greater -->
+<!ENTITY nvap             "&#x02249;&#x00338;" ><!--not, vert, approximate -->
+<!ENTITY nvdash           "&#x022AC;" ><!--/nvdash N: not vertical, dash -->
+<!ENTITY nvDash           "&#x022AD;" ><!--/nvDash N: not vertical, dbl dash -->
+<!ENTITY nVdash           "&#x022AE;" ><!--/nVdash N: not dbl vertical, dash -->
+<!ENTITY nVDash           "&#x022AF;" ><!--/nVDash N: not dbl vert, dbl dash -->
+<!ENTITY nvge             "&#x02271;" ><!--not, vert, greater-than-or-equal -->
+<!ENTITY nvgt             "&#x0226F;" ><!--not, vert, greater-than -->
+<!ENTITY nvle             "&#x02270;" ><!--not, vert, less-than-or-equal -->
+<!ENTITY nvlt             "&#x0226E;" ><!--not, vert, less-than -->
+<!ENTITY nvltrie          "&#x022EC;&#x00338;" ><!--not, vert, left triangle, equals -->
+<!ENTITY nvrtrie          "&#x022ED;&#x00338;" ><!--not, vert, right triangle, equals -->
+<!ENTITY nvsim            "&#x02241;&#x00338;" ><!--not, vert, similar -->
+<!ENTITY parsim           "&#x02AF3;" ><!--parallel, similar -->
+<!ENTITY prnap            "&#x022E8;" ><!--/precnapprox N: precedes, not approx -->
+<!ENTITY prnE             "&#x02AB5;" ><!--/precneqq N: precedes, not dbl eq -->
+<!ENTITY prnsim           "&#x022E8;" ><!--/precnsim N: precedes, not similar -->
+<!ENTITY rnmid            "&#x02AEE;" ><!--reverse /nmid -->
+<!ENTITY scnap            "&#x022E9;" ><!--/succnapprox N: succeeds, not approx -->
+<!ENTITY scnE             "&#x02AB6;" ><!--/succneqq N: succeeds, not dbl eq -->
+<!ENTITY scnsim           "&#x022E9;" ><!--/succnsim N: succeeds, not similar -->
+<!ENTITY simne            "&#x02246;" ><!--similar, not equals -->
+<!ENTITY solbar           "&#x0233F;" ><!--solidus, bar through -->
+<!ENTITY subne            "&#x0228A;" ><!--/subsetneq N: subset, not equals -->
+<!ENTITY subnE            "&#x0228A;" ><!--/subsetneqq N: subset, not dbl eq -->
+<!ENTITY supne            "&#x0228B;" ><!--/supsetneq N: superset, not equals -->
+<!ENTITY supnE            "&#x0228B;" ><!--/supsetneqq N: superset, not dbl eq -->
+<!ENTITY vnsub            "&#x02284;" ><!--/nsubset N: not subset, var -->
+<!ENTITY vnsup            "&#x02285;" ><!--/nsupset N: not superset, var -->
+<!ENTITY vsubne           "&#x0228A;&#x0FE00;" ><!--/varsubsetneq N: subset, not eq, var -->
+<!ENTITY vsubnE           "&#x0228A;&#x0FE00;" ><!--/varsubsetneqq N: subset not dbl eq, var -->
+<!ENTITY vsupne           "&#x0228B;&#x0FE00;" ><!--/varsupsetneq N: superset, not eq, var -->
+<!ENTITY vsupnE           "&#x0228B;&#x0FE00;" ><!--/varsupsetneqq N: super not dbl eq, var -->
+
+<!--
+     File isoamso.ent produced by the XSL script mmldtd.xsl
+     from input data in unicode.xml.
+
+     Please report any errors to 
+     David Carlisle <davidc@nag.co.uk>.
+
+     The numeric character values assigned to each entity
+     (should) match either official Unicode assignments
+     or assignments provisionally allocated by the
+     Unicode Consortium based on the characters in the `STIX'
+     propsal for mathematics. Note that these assignments
+     have not been ratified by the corresponding ISO
+     committee and thus should be considered liable to
+     change.
+
+     Entity names in this file are derived from files carrying the
+     following notice:
+
+     (C) International Organization for Standardization 1991
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY ang              "&#x02220;" ><!--/angle - angle -->
+<!ENTITY ange             "&#x029A4;" ><!--angle, equal -->
+<!ENTITY angmsd           "&#x02221;" ><!--/measuredangle - angle-measured -->
+<!ENTITY angmsdaa         "&#x029A8;" ><!--angle-measured, arrow, up, right -->
+<!ENTITY angmsdab         "&#x029A9;" ><!--angle-measured, arrow, up, left -->
+<!ENTITY angmsdac         "&#x029AA;" ><!--angle-measured, arrow, down, right -->
+<!ENTITY angmsdad         "&#x029AB;" ><!--angle-measured, arrow, down, left -->
+<!ENTITY angmsdae         "&#x029AC;" ><!--angle-measured, arrow, right, up -->
+<!ENTITY angmsdaf         "&#x029AD;" ><!--angle-measured, arrow, left, up -->
+<!ENTITY angmsdag         "&#x029AE;" ><!--angle-measured, arrow, right, down -->
+<!ENTITY angmsdah         "&#x029AF;" ><!--angle-measured, arrow, left, down -->
+<!ENTITY angrtvb          "&#x0299D;&#x0FE00;" ><!--right angle-measured -->
+<!ENTITY angrtvbd         "&#x0299D;" ><!--right angle-measured, dot -->
+<!ENTITY bbrk             "&#x023B5;" ><!--bottom square bracket -->
+<!ENTITY bemptyv          "&#x029B0;" ><!--reversed circle, slash -->
+<!ENTITY beth             "&#x02136;" ><!--/beth - beth, Hebrew -->
+<!ENTITY boxbox           "&#x029C9;" ><!--two joined squares -->
+<!ENTITY bprime           "&#x02035;" ><!--/backprime - reverse prime -->
+<!ENTITY bsemi            "&#x0204F;" ><!--reverse semi-colon -->
+<!ENTITY cemptyv          "&#x029B2;" ><!--circle, slash, small circle above -->
+<!ENTITY cirE             "&#x029C3;" ><!--circle, two horizontal stroked to the right -->
+<!ENTITY cirscir          "&#x029C2;" ><!--circle, small circle to the right -->
+<!ENTITY comp             "&#x02201;" ><!--/complement - complement sign -->
+<!ENTITY daleth           "&#x02138;" ><!--/daleth - daleth, Hebrew -->
+<!ENTITY demptyv          "&#x029B1;" ><!--circle, slash, bar above -->
+<!ENTITY ell              "&#x02113;" ><!--/ell - cursive small l -->
+<!ENTITY empty            "&#x02205;&#x0FE00;" ><!--/emptyset - zero, slash -->
+<!ENTITY emptyv           "&#x02205;" ><!--/varnothing - circle, slash -->
+<!ENTITY gimel            "&#x02137;" ><!--/gimel - gimel, Hebrew -->
+<!ENTITY iiota            "&#x02129;" ><!--inverted iota -->
+<!ENTITY image            "&#x02111;" ><!--/Im - imaginary   -->
+<!ENTITY imath            "&#x00131;" ><!--/imath - small i, no dot -->
+<!ENTITY jmath            "&#x0006A;&#x0FE00;" ><!--/jmath - small j, no dot -->
+<!ENTITY laemptyv         "&#x029B4;" ><!--circle, slash, left arrow above -->
+<!ENTITY lltri            "&#x025FA;" ><!--lower left triangle -->
+<!ENTITY lrtri            "&#x022BF;" ><!--lower right triangle -->
+<!ENTITY mho              "&#x02127;" ><!--/mho - conductance -->
+<!ENTITY nang             "&#x02220;&#x00338;" ><!--not, vert, angle -->
+<!ENTITY nexist           "&#x02204;" ><!--/nexists - negated exists -->
+<!ENTITY oS               "&#x024C8;" ><!--/circledS - capital S in circle -->
+<!ENTITY planck           "&#x0210F;&#x0FE00;" ><!--/hbar - Planck's over 2pi -->
+<!ENTITY plankv           "&#x0210F;" ><!--/hslash - variant Planck's over 2pi -->
+<!ENTITY raemptyv         "&#x029B3;" ><!--circle, slash, right arrow above -->
+<!ENTITY range            "&#x029A5;" ><!--reverse angle, equal -->
+<!ENTITY real             "&#x0211C;" ><!--/Re - real -->
+<!ENTITY tbrk             "&#x023B4;" ><!--top square bracket -->
+<!ENTITY ultri            "&#x025F8;" ><!--upper left triangle -->
+<!ENTITY urtri            "&#x025F9;" ><!--upper right triangle -->
+<!ENTITY vzigzag          "&#x0299A;" ><!--vertical zig-zag line -->
+<!ENTITY weierp           "&#x02118;" ><!--/wp - Weierstrass p -->
+
+<!--
+     File isoamsr.ent produced by the XSL script mmldtd.xsl
+     from input data in unicode.xml.
+
+     Please report any errors to 
+     David Carlisle <davidc@nag.co.uk>.
+
+     The numeric character values assigned to each entity
+     (should) match either official Unicode assignments
+     or assignments provisionally allocated by the
+     Unicode Consortium based on the characters in the `STIX'
+     propsal for mathematics. Note that these assignments
+     have not been ratified by the corresponding ISO
+     committee and thus should be considered liable to
+     change.
+
+     Entity names in this file are derived from files carrying the
+     following notice:
+
+     (C) International Organization for Standardization 1991
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY ape              "&#x0224A;" ><!--/approxeq R: approximate, equals -->
+<!ENTITY apE              "&#x0224A;" ><!--approximately equal or equal to -->
+<!ENTITY apid             "&#x0224B;" ><!--approximately identical to -->
+<!ENTITY asymp            "&#x0224D;" ><!--/asymp R: asymptotically equal to -->
+<!ENTITY Barv             "&#x02AE7;" ><!--vert, dbl bar (over) -->
+<!ENTITY bcong            "&#x0224C;" ><!--/backcong R: reverse congruent -->
+<!ENTITY bepsi            "&#x003F6;" ><!--/backepsilon R: such that -->
+<!ENTITY bowtie           "&#x022C8;" ><!--/bowtie R: -->
+<!ENTITY bsim             "&#x0223D;" ><!--/backsim R: reverse similar -->
+<!ENTITY bsime            "&#x022CD;" ><!--/backsimeq R: reverse similar, eq -->
+<!ENTITY bsolhsub         "&#x0005C;&#x02282;" ><!--reverse solidus, subset -->
+<!ENTITY bump             "&#x0224E;" ><!--/Bumpeq R: bumpy equals -->
+<!ENTITY bumpe            "&#x0224F;" ><!--/bumpeq R: bumpy equals, equals -->
+<!ENTITY bumpE            "&#x02AAE;" ><!--bump, equals -->
+<!ENTITY cire             "&#x02257;" ><!--/circeq R: circle, equals -->
+<!ENTITY Colon            "&#x02237;" ><!--/Colon, two colons -->
+<!ENTITY colone           "&#x02254;" ><!--/coloneq R: colon, equals -->
+<!ENTITY Colone           "&#x02A74;" ><!--double colon, equals -->
+<!ENTITY congdot          "&#x02A6D;" ><!--congruent, dot -->
+<!ENTITY csub             "&#x02ACF;" ><!--subset, closed -->
+<!ENTITY csube            "&#x02AD1;" ><!--subset, closed, equals -->
+<!ENTITY csup             "&#x02AD0;" ><!--superset, closed -->
+<!ENTITY csupe            "&#x02AD2;" ><!--superset, closed, equals -->
+<!ENTITY cuepr            "&#x022DE;" ><!--/curlyeqprec R: curly eq, precedes -->
+<!ENTITY cuesc            "&#x022DF;" ><!--/curlyeqsucc R: curly eq, succeeds -->
+<!ENTITY dashv            "&#x022A3;" ><!--/dashv R: dash, vertical -->
+<!ENTITY Dashv            "&#x02AE4;" ><!--dbl dash, vertical -->
+<!ENTITY easter           "&#x0225B;" ><!--equal, asterisk above -->
+<!ENTITY ecir             "&#x02256;" ><!--/eqcirc R: circle on equals sign -->
+<!ENTITY ecolon           "&#x02255;" ><!--/eqcolon R: equals, colon -->
+<!ENTITY eDDot            "&#x02A77;" ><!--/ddotseq R: equal with four dots -->
+<!ENTITY eDot             "&#x02251;" ><!--/doteqdot /Doteq R: eq, even dots -->
+<!ENTITY efDot            "&#x02252;" ><!--/fallingdotseq R: eq, falling dots -->
+<!ENTITY eg               "&#x02A9A;" ><!--equal-or-greater -->
+<!ENTITY egs              "&#x022DD;" ><!--/eqslantgtr R: equal-or-gtr, slanted -->
+<!ENTITY egsdot           "&#x02A98;" ><!--equal-or-greater, slanted, dot inside -->
+<!ENTITY el               "&#x02A99;" ><!--equal-or-less -->
+<!ENTITY els              "&#x022DC;" ><!--/eqslantless R: eq-or-less, slanted -->
+<!ENTITY elsdot           "&#x02A97;" ><!--equal-or-less, slanted, dot inside -->
+<!ENTITY equest           "&#x0225F;" ><!--/questeq R: equal with questionmark -->
+<!ENTITY equivDD          "&#x02A78;" ><!--equivalent, four dots above -->
+<!ENTITY erDot            "&#x02253;" ><!--/risingdotseq R: eq, rising dots -->
+<!ENTITY esdot            "&#x02250;" ><!--/doteq R: equals, single dot above -->
+<!ENTITY esim             "&#x02242;" ><!--/esim R: equals, similar -->
+<!ENTITY Esim             "&#x02A73;" ><!--equal, similar -->
+<!ENTITY fork             "&#x022D4;" ><!--/pitchfork R: pitchfork -->
+<!ENTITY forkv            "&#x02AD9;" ><!--fork, variant -->
+<!ENTITY frown            "&#x02322;" ><!--/frown R: down curve -->
+<!ENTITY gap              "&#x02273;" ><!--/gtrapprox R: greater, approximate -->
+<!ENTITY gE               "&#x02267;" ><!--/geqq R: greater, double equals -->
+<!ENTITY gel              "&#x022DB;" ><!--/gtreqless R: greater, equals, less -->
+<!ENTITY gEl              "&#x022DB;" ><!--/gtreqqless R: gt, dbl equals, less -->
+<!ENTITY ges              "&#x02A7E;" ><!--/geqslant R: gt-or-equal, slanted -->
+<!ENTITY gescc            "&#x02AA9;" ><!--greater than, closed by curve, equal, slanted -->
+<!ENTITY gesdot           "&#x02A80;" ><!--greater-than-or-equal, slanted, dot inside -->
+<!ENTITY gesdoto          "&#x02A82;" ><!--greater-than-or-equal, slanted, dot above -->
+<!ENTITY gesdotol         "&#x02A84;" ><!--greater-than-or-equal, slanted, dot above left -->
+<!ENTITY gesl             "&#x022DB;&#x0FE00;" ><!--greater, equal, slanted, less -->
+<!ENTITY gesles           "&#x02A94;" ><!--greater, equal, slanted, less, equal, slanted -->
+<!ENTITY Gg               "&#x022D9;" ><!--/ggg /Gg /gggtr R: triple gtr-than -->
+<!ENTITY gl               "&#x02277;" ><!--/gtrless R: greater, less -->
+<!ENTITY gla              "&#x02AA5;" ><!--greater, less, apart -->
+<!ENTITY glE              "&#x02A92;" ><!--greater, less, equal -->
+<!ENTITY glj              "&#x02AA4;" ><!--greater, less, overlapping -->
+<!ENTITY gsim             "&#x02273;" ><!--/gtrsim R: greater, similar -->
+<!ENTITY gsime            "&#x02A8E;" ><!--greater, similar, equal -->
+<!ENTITY gsiml            "&#x02A90;" ><!--greater, similar, less -->
+<!ENTITY Gt               "&#x0226B;" ><!--/gg R: dbl greater-than sign -->
+<!ENTITY gtcc             "&#x02AA7;" ><!--greater than, closed by curve -->
+<!ENTITY gtcir            "&#x02A7A;" ><!--greater than, circle inside -->
+<!ENTITY gtdot            "&#x022D7;" ><!--/gtrdot R: greater than, with dot -->
+<!ENTITY gtquest          "&#x02A7C;" ><!--greater than, questionmark above -->
+<!ENTITY gtrarr           "&#x02978;" ><!--greater than, right arrow -->
+<!ENTITY homtht           "&#x0223B;" ><!--homothetic -->
+<!ENTITY lap              "&#x02272;" ><!--/lessapprox R: less, approximate -->
+<!ENTITY lat              "&#x02AAB;" ><!--larger than -->
+<!ENTITY late             "&#x02AAD;" ><!--larger than or equal -->
+<!ENTITY lates            "&#x02AAD;&#x0FE00;" ><!--larger than or equal, slanted -->
+<!ENTITY lE               "&#x02266;" ><!--/leqq R: less, double equals -->
+<!ENTITY leg              "&#x022DA;" ><!--/lesseqgtr R: less, eq, greater -->
+<!ENTITY lEg              "&#x022DA;" ><!--/lesseqqgtr R: less, dbl eq, greater -->
+<!ENTITY les              "&#x02A7D;" ><!--/leqslant R: less-than-or-eq, slant -->
+<!ENTITY lescc            "&#x02AA8;" ><!--less than, closed by curve, equal, slanted -->
+<!ENTITY lesdot           "&#x02A7F;" ><!--less-than-or-equal, slanted, dot inside -->
+<!ENTITY lesdoto          "&#x02A81;" ><!--less-than-or-equal, slanted, dot above -->
+<!ENTITY lesdotor         "&#x02A83;" ><!--less-than-or-equal, slanted, dot above right -->
+<!ENTITY lesg             "&#x022DA;&#x0FE00;" ><!--less, equal, slanted, greater -->
+<!ENTITY lesges           "&#x02A93;" ><!--less, equal, slanted, greater, equal, slanted -->
+<!ENTITY lg               "&#x02276;" ><!--/lessgtr R: less, greater -->
+<!ENTITY lgE              "&#x02A91;" ><!--less, greater, equal -->
+<!ENTITY Ll               "&#x022D8;" ><!--/Ll /lll /llless R: triple less-than -->
+<!ENTITY lsim             "&#x02272;" ><!--/lesssim R: less, similar -->
+<!ENTITY lsime            "&#x02A8D;" ><!--less, similar, equal -->
+<!ENTITY lsimg            "&#x02A8F;" ><!--less, similar, greater -->
+<!ENTITY Lt               "&#x0226A;" ><!--/ll R: double less-than sign -->
+<!ENTITY ltcc             "&#x02AA6;" ><!--less than, closed by curve -->
+<!ENTITY ltcir            "&#x02A79;" ><!--less than, circle inside -->
+<!ENTITY ltdot            "&#x022D6;" ><!--/lessdot R: less than, with dot -->
+<!ENTITY ltlarr           "&#x02976;" ><!--less than, left arrow -->
+<!ENTITY ltquest          "&#x02A7B;" ><!--less than, questionmark above -->
+<!ENTITY ltrie            "&#x022B4;" ><!--/trianglelefteq R: left triangle, eq -->
+<!ENTITY mcomma           "&#x02A29;" ><!--minus, comma above -->
+<!ENTITY mDDot            "&#x0223A;" ><!--minus with four dots, geometric properties -->
+<!ENTITY mid              "&#x02223;" ><!--/mid R: -->
+<!ENTITY mlcp             "&#x02ADB;" ><!--/mlcp -->
+<!ENTITY models           "&#x022A7;" ><!--/models R: -->
+<!ENTITY mstpos           "&#x0223E;" ><!--most positive -->
+<!ENTITY pr               "&#x0227A;" ><!--/prec R: precedes -->
+<!ENTITY Pr               "&#x02ABB;" ><!--dbl precedes -->
+<!ENTITY prap             "&#x0227E;" ><!--/precapprox R: precedes, approximate -->
+<!ENTITY prcue            "&#x0227C;" ><!--/preccurlyeq R: precedes, curly eq -->
+<!ENTITY pre              "&#x02AAF;" ><!--/preceq R: precedes, equals -->
+<!ENTITY prE              "&#x02AAF;" ><!--precedes, dbl equals -->
+<!ENTITY prsim            "&#x0227E;" ><!--/precsim R: precedes, similar -->
+<!ENTITY prurel           "&#x022B0;" ><!--element precedes under relation -->
+<!ENTITY ratio            "&#x02236;" ><!--/ratio -->
+<!ENTITY rtrie            "&#x022B5;" ><!--/trianglerighteq R: right tri, eq -->
+<!ENTITY rtriltri         "&#x029CE;" ><!--right triangle above left triangle -->
+<!ENTITY sc               "&#x0227B;" ><!--/succ R: succeeds -->
+<!ENTITY Sc               "&#x02ABC;" ><!--dbl succeeds -->
+<!ENTITY scap             "&#x0227F;" ><!--/succapprox R: succeeds, approximate -->
+<!ENTITY sccue            "&#x0227D;" ><!--/succcurlyeq R: succeeds, curly eq -->
+<!ENTITY sce              "&#x0227D;" ><!--/succeq R: succeeds, equals -->
+<!ENTITY scE              "&#x0227E;" ><!--succeeds, dbl equals -->
+<!ENTITY scsim            "&#x0227F;" ><!--/succsim R: succeeds, similar -->
+<!ENTITY sdote            "&#x02A66;" ><!--equal, dot below -->
+<!ENTITY simg             "&#x02A9E;" ><!--similar, greater -->
+<!ENTITY simgE            "&#x02AA0;" ><!--similar, greater, equal -->
+<!ENTITY siml             "&#x02A9D;" ><!--similar, less -->
+<!ENTITY simlE            "&#x02A9F;" ><!--similar, less, equal -->
+<!ENTITY smid             "&#x02223;&#x0FE00;" ><!--/shortmid R: -->
+<!ENTITY smile            "&#x02323;" ><!--/smile R: up curve -->
+<!ENTITY smt              "&#x02AAA;" ><!--smaller than -->
+<!ENTITY smte             "&#x02AAC;" ><!--smaller than or equal -->
+<!ENTITY smtes            "&#x02AAC;&#x0FE00;" ><!--smaller than or equal, slanted -->
+<!ENTITY spar             "&#x02225;&#x0FE00;" ><!--/shortparallel R: short parallel -->
+<!ENTITY sqsub            "&#x0228F;" ><!--/sqsubset R: square subset -->
+<!ENTITY sqsube           "&#x02291;" ><!--/sqsubseteq R: square subset, equals -->
+<!ENTITY sqsup            "&#x02290;" ><!--/sqsupset R: square superset -->
+<!ENTITY sqsupe           "&#x02292;" ><!--/sqsupseteq R: square superset, eq -->
+<!ENTITY Sub              "&#x022D0;" ><!--/Subset R: double subset -->
+<!ENTITY subE             "&#x02286;" ><!--/subseteqq R: subset, dbl equals -->
+<!ENTITY subedot          "&#x02AC3;" ><!--subset, equals, dot -->
+<!ENTITY submult          "&#x02AC1;" ><!--subset, multiply -->
+<!ENTITY subplus          "&#x02ABF;" ><!--subset, plus -->
+<!ENTITY subrarr          "&#x02979;" ><!--subset, right arrow -->
+<!ENTITY subsim           "&#x02AC7;" ><!--subset, similar -->
+<!ENTITY subsub           "&#x02AD5;" ><!--subset above subset -->
+<!ENTITY subsup           "&#x02AD3;" ><!--subset above superset -->
+<!ENTITY Sup              "&#x022D1;" ><!--/Supset R: dbl superset -->
+<!ENTITY supdsub          "&#x02AD8;" ><!--superset, subset, dash joining them -->
+<!ENTITY supE             "&#x02287;" ><!--/supseteqq R: superset, dbl equals -->
+<!ENTITY supedot          "&#x02AC4;" ><!--superset, equals, dot -->
+<!ENTITY suphsol          "&#x02283;&#x0002F;" ><!--superset, solidus -->
+<!ENTITY suphsub          "&#x02AD7;" ><!--superset, subset -->
+<!ENTITY suplarr          "&#x0297B;" ><!--superset, left arrow -->
+<!ENTITY supmult          "&#x02AC2;" ><!--superset, multiply -->
+<!ENTITY supplus          "&#x02AC0;" ><!--superset, plus -->
+<!ENTITY supsim           "&#x02AC8;" ><!--superset, similar -->
+<!ENTITY supsub           "&#x02AD4;" ><!--superset above subset -->
+<!ENTITY supsup           "&#x02AD6;" ><!--superset above superset -->
+<!ENTITY thkap            "&#x02248;&#x0FE00;" ><!--/thickapprox R: thick approximate -->
+<!ENTITY thksim           "&#x0223C;&#x0FE00;" ><!--/thicksim R: thick similar -->
+<!ENTITY topfork          "&#x02ADA;" ><!--fork with top -->
+<!ENTITY trie             "&#x0225C;" ><!--/triangleq R: triangle, equals -->
+<!ENTITY twixt            "&#x0226C;" ><!--/between R: between -->
+<!ENTITY vBar             "&#x02AE8;" ><!--vert, dbl bar (under) -->
+<!ENTITY Vbar             "&#x02AEB;" ><!--dbl vert, bar (under) -->
+<!ENTITY vBarv            "&#x02AE9;" ><!--dbl bar, vert over and under -->
+<!ENTITY vdash            "&#x022A2;" ><!--/vdash R: vertical, dash -->
+<!ENTITY vDash            "&#x022A8;" ><!--/vDash R: vertical, dbl dash -->
+<!ENTITY Vdash            "&#x022A9;" ><!--/Vdash R: dbl vertical, dash -->
+<!ENTITY VDash            "&#x022AB;" ><!--dbl vert, dbl dash -->
+<!ENTITY Vdashl           "&#x02AE6;" ><!--vertical, dash (long) -->
+<!ENTITY vltri            "&#x022B2;" ><!--/vartriangleleft R: l tri, open, var -->
+<!ENTITY vprop            "&#x0221D;" ><!--/varpropto R: proportional, variant -->
+<!ENTITY vrtri            "&#x022B3;" ><!--/vartriangleright R: r tri, open, var -->
+<!ENTITY Vvdash           "&#x022AA;" ><!--/Vvdash R: triple vertical, dash -->
+
+<!--
+     File isobox.ent produced by the XSL script mmldtd.xsl
+     from input data in unicode.xml.
+
+     Please report any errors to 
+     David Carlisle <davidc@nag.co.uk>.
+
+     The numeric character values assigned to each entity
+     (should) match either official Unicode assignments
+     or assignments provisionally allocated by the
+     Unicode Consortium based on the characters in the `STIX'
+     propsal for mathematics. Note that these assignments
+     have not been ratified by the corresponding ISO
+     committee and thus should be considered liable to
+     change.
+
+     Entity names in this file are derived from files carrying the
+     following notice:
+
+     (C) International Organization for Standardization 1986
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY boxdl            "&#x02510;" ><!--lower left quadrant -->
+<!ENTITY boxdL            "&#x02555;" ><!--lower left quadrant -->
+<!ENTITY boxDl            "&#x02556;" ><!--lower left quadrant -->
+<!ENTITY boxDL            "&#x02557;" ><!--lower left quadrant -->
+<!ENTITY boxdr            "&#x0250C;" ><!--lower right quadrant -->
+<!ENTITY boxdR            "&#x02552;" ><!--lower right quadrant -->
+<!ENTITY boxDr            "&#x02553;" ><!--lower right quadrant -->
+<!ENTITY boxDR            "&#x02554;" ><!--lower right quadrant -->
+<!ENTITY boxh             "&#x02500;" ><!--horizontal line  -->
+<!ENTITY boxH             "&#x02550;" ><!--horizontal line -->
+<!ENTITY boxhd            "&#x0252C;" ><!--lower left and right quadrants -->
+<!ENTITY boxhD            "&#x02565;" ><!--lower left and right quadrants -->
+<!ENTITY boxHd            "&#x02564;" ><!--lower left and right quadrants -->
+<!ENTITY boxHD            "&#x02566;" ><!--lower left and right quadrants -->
+<!ENTITY boxhu            "&#x02534;" ><!--upper left and right quadrants -->
+<!ENTITY boxhU            "&#x02568;" ><!--upper left and right quadrants -->
+<!ENTITY boxHu            "&#x02567;" ><!--upper left and right quadrants -->
+<!ENTITY boxHU            "&#x02569;" ><!--upper left and right quadrants -->
+<!ENTITY boxul            "&#x02518;" ><!--upper left quadrant -->
+<!ENTITY boxuL            "&#x0255B;" ><!--upper left quadrant -->
+<!ENTITY boxUl            "&#x0255C;" ><!--upper left quadrant -->
+<!ENTITY boxUL            "&#x0255D;" ><!--upper left quadrant -->
+<!ENTITY boxur            "&#x02514;" ><!--upper right quadrant -->
+<!ENTITY boxuR            "&#x02558;" ><!--upper right quadrant -->
+<!ENTITY boxUr            "&#x02559;" ><!--upper right quadrant -->
+<!ENTITY boxUR            "&#x0255A;" ><!--upper right quadrant -->
+<!ENTITY boxv             "&#x02502;" ><!--vertical line -->
+<!ENTITY boxV             "&#x02551;" ><!--vertical line -->
+<!ENTITY boxvh            "&#x0253C;" ><!--all four quadrants -->
+<!ENTITY boxvH            "&#x0256A;" ><!--all four quadrants -->
+<!ENTITY boxVh            "&#x0256B;" ><!--all four quadrants -->
+<!ENTITY boxVH            "&#x0256C;" ><!--all four quadrants -->
+<!ENTITY boxvl            "&#x02524;" ><!--upper and lower left quadrants -->
+<!ENTITY boxvL            "&#x02561;" ><!--upper and lower left quadrants -->
+<!ENTITY boxVl            "&#x02562;" ><!--upper and lower left quadrants -->
+<!ENTITY boxVL            "&#x02563;" ><!--upper and lower left quadrants -->
+<!ENTITY boxvr            "&#x0251C;" ><!--upper and lower right quadrants -->
+<!ENTITY boxvR            "&#x0255E;" ><!--upper and lower right quadrants -->
+<!ENTITY boxVr            "&#x0255F;" ><!--upper and lower right quadrants -->
+<!ENTITY boxVR            "&#x02560;" ><!--upper and lower right quadrants -->
+
+<!--
+     File isocyr1.ent produced by the XSL script mmldtd.xsl
+     from input data in unicode.xml.
+
+     Please report any errors to 
+     David Carlisle <davidc@nag.co.uk>.
+
+     The numeric character values assigned to each entity
+     (should) match either official Unicode assignments
+     or assignments provisionally allocated by the
+     Unicode Consortium based on the characters in the `STIX'
+     propsal for mathematics. Note that these assignments
+     have not been ratified by the corresponding ISO
+     committee and thus should be considered liable to
+     change.
+
+     Entity names in this file are derived from files carrying the
+     following notice:
+
+     (C) International Organization for Standardization 1986
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY acy              "&#x00430;" ><!--=small a, Cyrillic -->
+<!ENTITY Acy              "&#x00410;" ><!--=capital A, Cyrillic -->
+<!ENTITY bcy              "&#x00431;" ><!--=small be, Cyrillic -->
+<!ENTITY Bcy              "&#x00411;" ><!--=capital BE, Cyrillic -->
+<!ENTITY chcy             "&#x00447;" ><!--=small che, Cyrillic -->
+<!ENTITY CHcy             "&#x00427;" ><!--=capital CHE, Cyrillic -->
+<!ENTITY dcy              "&#x00434;" ><!--=small de, Cyrillic -->
+<!ENTITY Dcy              "&#x00414;" ><!--=capital DE, Cyrillic -->
+<!ENTITY ecy              "&#x0044D;" ><!--=small e, Cyrillic -->
+<!ENTITY Ecy              "&#x0042D;" ><!--=capital E, Cyrillic -->
+<!ENTITY fcy              "&#x00444;" ><!--=small ef, Cyrillic -->
+<!ENTITY Fcy              "&#x00424;" ><!--=capital EF, Cyrillic -->
+<!ENTITY gcy              "&#x00433;" ><!--=small ghe, Cyrillic -->
+<!ENTITY Gcy              "&#x00413;" ><!--=capital GHE, Cyrillic -->
+<!ENTITY hardcy           "&#x0044A;" ><!--=small hard sign, Cyrillic -->
+<!ENTITY HARDcy           "&#x0042A;" ><!--=capital HARD sign, Cyrillic -->
+<!ENTITY icy              "&#x00438;" ><!--=small i, Cyrillic -->
+<!ENTITY Icy              "&#x00418;" ><!--=capital I, Cyrillic -->
+<!ENTITY iecy             "&#x00435;" ><!--=small ie, Cyrillic -->
+<!ENTITY IEcy             "&#x00415;" ><!--=capital IE, Cyrillic -->
+<!ENTITY iocy             "&#x00451;" ><!--=small io, Russian -->
+<!ENTITY IOcy             "&#x00401;" ><!--=capital IO, Russian -->
+<!ENTITY jcy              "&#x00439;" ><!--=small short i, Cyrillic -->
+<!ENTITY Jcy              "&#x00419;" ><!--=capital short I, Cyrillic -->
+<!ENTITY kcy              "&#x0043A;" ><!--=small ka, Cyrillic -->
+<!ENTITY Kcy              "&#x0041A;" ><!--=capital KA, Cyrillic -->
+<!ENTITY khcy             "&#x00445;" ><!--=small ha, Cyrillic -->
+<!ENTITY KHcy             "&#x00425;" ><!--=capital HA, Cyrillic -->
+<!ENTITY lcy              "&#x0043B;" ><!--=small el, Cyrillic -->
+<!ENTITY Lcy              "&#x0041B;" ><!--=capital EL, Cyrillic -->
+<!ENTITY mcy              "&#x0043C;" ><!--=small em, Cyrillic -->
+<!ENTITY Mcy              "&#x0041C;" ><!--=capital EM, Cyrillic -->
+<!ENTITY ncy              "&#x0043D;" ><!--=small en, Cyrillic -->
+<!ENTITY Ncy              "&#x0041D;" ><!--=capital EN, Cyrillic -->
+<!ENTITY numero           "&#x02116;" ><!--=numero sign -->
+<!ENTITY ocy              "&#x0043E;" ><!--=small o, Cyrillic -->
+<!ENTITY Ocy              "&#x0041E;" ><!--=capital O, Cyrillic -->
+<!ENTITY pcy              "&#x0043F;" ><!--=small pe, Cyrillic -->
+<!ENTITY Pcy              "&#x0041F;" ><!--=capital PE, Cyrillic -->
+<!ENTITY rcy              "&#x00440;" ><!--=small er, Cyrillic -->
+<!ENTITY Rcy              "&#x00420;" ><!--=capital ER, Cyrillic -->
+<!ENTITY scy              "&#x00441;" ><!--=small es, Cyrillic -->
+<!ENTITY Scy              "&#x00421;" ><!--=capital ES, Cyrillic -->
+<!ENTITY shchcy           "&#x00449;" ><!--=small shcha, Cyrillic -->
+<!ENTITY SHCHcy           "&#x00429;" ><!--=capital SHCHA, Cyrillic -->
+<!ENTITY shcy             "&#x00448;" ><!--=small sha, Cyrillic -->
+<!ENTITY SHcy             "&#x00428;" ><!--=capital SHA, Cyrillic -->
+<!ENTITY softcy           "&#x0044C;" ><!--=small soft sign, Cyrillic -->
+<!ENTITY SOFTcy           "&#x0042C;" ><!--=capital SOFT sign, Cyrillic -->
+<!ENTITY tcy              "&#x00442;" ><!--=small te, Cyrillic -->
+<!ENTITY Tcy              "&#x00422;" ><!--=capital TE, Cyrillic -->
+<!ENTITY tscy             "&#x00446;" ><!--=small tse, Cyrillic -->
+<!ENTITY TScy             "&#x00426;" ><!--=capital TSE, Cyrillic -->
+<!ENTITY ucy              "&#x00443;" ><!--=small u, Cyrillic -->
+<!ENTITY Ucy              "&#x00423;" ><!--=capital U, Cyrillic -->
+<!ENTITY vcy              "&#x00432;" ><!--=small ve, Cyrillic -->
+<!ENTITY Vcy              "&#x00412;" ><!--=capital VE, Cyrillic -->
+<!ENTITY yacy             "&#x0044F;" ><!--=small ya, Cyrillic -->
+<!ENTITY YAcy             "&#x0042F;" ><!--=capital YA, Cyrillic -->
+<!ENTITY ycy              "&#x0044B;" ><!--=small yeru, Cyrillic -->
+<!ENTITY Ycy              "&#x0042B;" ><!--=capital YERU, Cyrillic -->
+<!ENTITY yucy             "&#x0044E;" ><!--=small yu, Cyrillic -->
+<!ENTITY YUcy             "&#x0042E;" ><!--=capital YU, Cyrillic -->
+<!ENTITY zcy              "&#x00437;" ><!--=small ze, Cyrillic -->
+<!ENTITY Zcy              "&#x00417;" ><!--=capital ZE, Cyrillic -->
+<!ENTITY zhcy             "&#x00436;" ><!--=small zhe, Cyrillic -->
+<!ENTITY ZHcy             "&#x00416;" ><!--=capital ZHE, Cyrillic -->
+
+<!--
+     File isocyr2.ent produced by the XSL script mmldtd.xsl
+     from input data in unicode.xml.
+
+     Please report any errors to 
+     David Carlisle <davidc@nag.co.uk>.
+
+     The numeric character values assigned to each entity
+     (should) match either official Unicode assignments
+     or assignments provisionally allocated by the
+     Unicode Consortium based on the characters in the `STIX'
+     propsal for mathematics. Note that these assignments
+     have not been ratified by the corresponding ISO
+     committee and thus should be considered liable to
+     change.
+
+     Entity names in this file are derived from files carrying the
+     following notice:
+
+     (C) International Organization for Standardization 1986
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY djcy             "&#x00452;" ><!--=small dje, Serbian -->
+<!ENTITY DJcy             "&#x00402;" ><!--=capital DJE, Serbian -->
+<!ENTITY dscy             "&#x00455;" ><!--=small dse, Macedonian -->
+<!ENTITY DScy             "&#x00405;" ><!--=capital DSE, Macedonian -->
+<!ENTITY dzcy             "&#x0045F;" ><!--=small dze, Serbian -->
+<!ENTITY DZcy             "&#x0040F;" ><!--=capital dze, Serbian -->
+<!ENTITY gjcy             "&#x00453;" ><!--=small gje, Macedonian -->
+<!ENTITY GJcy             "&#x00403;" ><!--=capital GJE Macedonian -->
+<!ENTITY iukcy            "&#x00456;" ><!--=small i, Ukrainian -->
+<!ENTITY Iukcy            "&#x00406;" ><!--=capital I, Ukrainian -->
+<!ENTITY jsercy           "&#x00458;" ><!--=small je, Serbian -->
+<!ENTITY Jsercy           "&#x00408;" ><!--=capital JE, Serbian -->
+<!ENTITY jukcy            "&#x00454;" ><!--=small je, Ukrainian -->
+<!ENTITY Jukcy            "&#x00404;" ><!--=capital JE, Ukrainian -->
+<!ENTITY kjcy             "&#x0045C;" ><!--=small kje Macedonian -->
+<!ENTITY KJcy             "&#x0040C;" ><!--=capital KJE, Macedonian -->
+<!ENTITY ljcy             "&#x00459;" ><!--=small lje, Serbian -->
+<!ENTITY LJcy             "&#x00409;" ><!--=capital LJE, Serbian -->
+<!ENTITY njcy             "&#x0045A;" ><!--=small nje, Serbian -->
+<!ENTITY NJcy             "&#x0040A;" ><!--=capital NJE, Serbian -->
+<!ENTITY tshcy            "&#x0045B;" ><!--=small tshe, Serbian -->
+<!ENTITY TSHcy            "&#x0040B;" ><!--=capital TSHE, Serbian -->
+<!ENTITY ubrcy            "&#x0045E;" ><!--=small u, Byelorussian -->
+<!ENTITY Ubrcy            "&#x0040E;" ><!--=capital U, Byelorussian -->
+<!ENTITY yicy             "&#x00457;" ><!--=small yi, Ukrainian -->
+<!ENTITY YIcy             "&#x00407;" ><!--=capital YI, Ukrainian -->
+
+<!--
+     File isodia.ent produced by the XSL script mmldtd.xsl
+     from input data in unicode.xml.
+
+     Please report any errors to 
+     David Carlisle <davidc@nag.co.uk>.
+
+     The numeric character values assigned to each entity
+     (should) match either official Unicode assignments
+     or assignments provisionally allocated by the
+     Unicode Consortium based on the characters in the `STIX'
+     propsal for mathematics. Note that these assignments
+     have not been ratified by the corresponding ISO
+     committee and thus should be considered liable to
+     change.
+
+     Entity names in this file are derived from files carrying the
+     following notice:
+
+     (C) International Organization for Standardization 1986
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY acute            "&#x000B4;" ><!--=acute accent -->
+<!ENTITY breve            "&#x002D8;" ><!--=breve -->
+<!ENTITY caron            "&#x002C7;" ><!--=caron -->
+<!ENTITY cedil            "&#x000B8;" ><!--=cedilla -->
+<!ENTITY circ             "&#x0005E;" ><!--circumflex accent -->
+<!ENTITY dblac            "&#x002DD;" ><!--=double acute accent -->
+<!ENTITY die              "&#x000A8;" ><!--=dieresis -->
+<!ENTITY dot              "&#x002D9;" ><!--=dot above -->
+<!ENTITY grave            "&#x00060;" ><!--=grave accent -->
+<!ENTITY macr             "&#x000AF;" ><!--=macron -->
+<!ENTITY ogon             "&#x002DB;" ><!--=ogonek -->
+<!ENTITY ring             "&#x002DA;" ><!--=ring -->
+<!ENTITY tilde            "&#x002DC;" ><!--=tilde -->
+<!ENTITY uml              "&#x000A8;" ><!--=umlaut mark -->
+
+<!--
+     File isogrk3.ent produced by the XSL script mmldtd.xsl
+     from input data in unicode.xml.
+
+     Please report any errors to 
+     David Carlisle <davidc@nag.co.uk>.
+
+     The numeric character values assigned to each entity
+     (should) match either official Unicode assignments
+     or assignments provisionally allocated by the
+     Unicode Consortium based on the characters in the `STIX'
+     propsal for mathematics. Note that these assignments
+     have not been ratified by the corresponding ISO
+     committee and thus should be considered liable to
+     change.
+
+     Entity names in this file are derived from files carrying the
+     following notice:
+
+     (C) International Organization for Standardization 1991
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY alpha            "&#x003B1;" ><!--/alpha small alpha, Greek -->
+<!ENTITY beta             "&#x003B2;" ><!--/beta small beta, Greek -->
+<!ENTITY chi              "&#x003C7;" ><!--/chi small chi, Greek -->
+<!ENTITY delta            "&#x003B4;" ><!--/delta small delta, Greek -->
+<!ENTITY Delta            "&#x00394;" ><!--/Delta capital Delta, Greek -->
+<!ENTITY epsi             "&#x003B5;" ><!--/straightepsilon, small epsilon, Greek -->
+<!ENTITY epsiv            "&#x0025B;" ><!--/varepsilon -->
+<!ENTITY eta              "&#x003B7;" ><!--/eta small eta, Greek -->
+<!ENTITY gamma            "&#x003B3;" ><!--/gamma small gamma, Greek -->
+<!ENTITY Gamma            "&#x00393;" ><!--/Gamma capital Gamma, Greek -->
+<!ENTITY gammad           "&#x003DC;" ><!--/digamma -->
+<!ENTITY Gammad           "&#x003DC;" ><!--capital digamma -->
+<!ENTITY iota             "&#x003B9;" ><!--/iota small iota, Greek -->
+<!ENTITY kappa            "&#x003BA;" ><!--/kappa small kappa, Greek -->
+<!ENTITY kappav           "&#x003F0;" ><!--/varkappa -->
+<!ENTITY lambda           "&#x003BB;" ><!--/lambda small lambda, Greek -->
+<!ENTITY Lambda           "&#x0039B;" ><!--/Lambda capital Lambda, Greek -->
+<!ENTITY mu               "&#x003BC;" ><!--/mu small mu, Greek -->
+<!ENTITY nu               "&#x003BD;" ><!--/nu small nu, Greek -->
+<!ENTITY omega            "&#x003C9;" ><!--/omega small omega, Greek -->
+<!ENTITY Omega            "&#x003A9;" ><!--/Omega capital Omega, Greek -->
+<!ENTITY phi              "&#x003C6;" ><!--/straightphi - small phi, Greek -->
+<!ENTITY Phi              "&#x003A6;" ><!--/Phi capital Phi, Greek -->
+<!ENTITY phiv             "&#x003D5;" ><!--/varphi - curly or open phi -->
+<!ENTITY pi               "&#x003C0;" ><!--/pi small pi, Greek -->
+<!ENTITY Pi               "&#x003A0;" ><!--/Pi capital Pi, Greek -->
+<!ENTITY piv              "&#x003D6;" ><!--/varpi -->
+<!ENTITY psi              "&#x003C8;" ><!--/psi small psi, Greek -->
+<!ENTITY Psi              "&#x003A8;" ><!--/Psi capital Psi, Greek -->
+<!ENTITY rho              "&#x003C1;" ><!--/rho small rho, Greek -->
+<!ENTITY rhov             "&#x003F1;" ><!--/varrho -->
+<!ENTITY sigma            "&#x003C3;" ><!--/sigma small sigma, Greek -->
+<!ENTITY Sigma            "&#x003A3;" ><!--/Sigma capital Sigma, Greek -->
+<!ENTITY sigmav           "&#x003C2;" ><!--/varsigma -->
+<!ENTITY tau              "&#x003C4;" ><!--/tau small tau, Greek -->
+<!ENTITY theta            "&#x003B8;" ><!--/theta straight theta, small theta, Greek -->
+<!ENTITY Theta            "&#x00398;" ><!--/Theta capital Theta, Greek -->
+<!ENTITY thetav           "&#x003D1;" ><!--/vartheta - curly or open theta -->
+<!ENTITY upsi             "&#x003C5;" ><!--/upsilon small upsilon, Greek -->
+<!ENTITY Upsi             "&#x003D2;" ><!--/Upsilon capital Upsilon, Greek -->
+<!ENTITY xi               "&#x003BE;" ><!--/xi small xi, Greek -->
+<!ENTITY Xi               "&#x0039E;" ><!--/Xi capital Xi, Greek -->
+<!ENTITY zeta             "&#x003B6;" ><!--/zeta small zeta, Greek -->
+
+<!--
+     File isolat1.ent produced by the XSL script mmldtd.xsl
+     from input data in unicode.xml.
+
+     Please report any errors to 
+     David Carlisle <davidc@nag.co.uk>.
+
+     The numeric character values assigned to each entity
+     (should) match either official Unicode assignments
+     or assignments provisionally allocated by the
+     Unicode Consortium based on the characters in the `STIX'
+     propsal for mathematics. Note that these assignments
+     have not been ratified by the corresponding ISO
+     committee and thus should be considered liable to
+     change.
+
+     Entity names in this file are derived from files carrying the
+     following notice:
+
+     (C) International Organization for Standardization 1986
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY aacute           "&#x000E1;" ><!--=small a, acute accent -->
+<!ENTITY Aacute           "&#x000C1;" ><!--=capital A, acute accent -->
+<!ENTITY acirc            "&#x000E2;" ><!--=small a, circumflex accent -->
+<!ENTITY Acirc            "&#x000C2;" ><!--=capital A, circumflex accent -->
+<!ENTITY aelig            "&#x000E6;" ><!--=small ae diphthong (ligature) -->
+<!ENTITY AElig            "&#x000C6;" ><!--=capital AE diphthong (ligature) -->
+<!ENTITY agrave           "&#x000E0;" ><!--=small a, grave accent -->
+<!ENTITY Agrave           "&#x000C0;" ><!--=capital A, grave accent -->
+<!ENTITY aring            "&#x000E5;" ><!--=small a, ring -->
+<!ENTITY Aring            "&#x000C5;" ><!--=capital A, ring -->
+<!ENTITY atilde           "&#x000E3;" ><!--=small a, tilde -->
+<!ENTITY Atilde           "&#x000C3;" ><!--=capital A, tilde -->
+<!ENTITY auml             "&#x000E4;" ><!--=small a, dieresis or umlaut mark -->
+<!ENTITY Auml             "&#x000C4;" ><!--=capital A, dieresis or umlaut mark -->
+<!ENTITY ccedil           "&#x000E7;" ><!--=small c, cedilla -->
+<!ENTITY Ccedil           "&#x000C7;" ><!--=capital C, cedilla -->
+<!ENTITY eacute           "&#x000E9;" ><!--=small e, acute accent -->
+<!ENTITY Eacute           "&#x000C9;" ><!--=capital E, acute accent -->
+<!ENTITY ecirc            "&#x000EA;" ><!--=small e, circumflex accent -->
+<!ENTITY Ecirc            "&#x000CA;" ><!--=capital E, circumflex accent -->
+<!ENTITY egrave           "&#x000E8;" ><!--=small e, grave accent -->
+<!ENTITY Egrave           "&#x000C8;" ><!--=capital E, grave accent -->
+<!ENTITY eth              "&#x000F0;" ><!--=small eth, Icelandic -->
+<!ENTITY ETH              "&#x000D0;" ><!--=capital Eth, Icelandic -->
+<!ENTITY euml             "&#x000EB;" ><!--=small e, dieresis or umlaut mark -->
+<!ENTITY Euml             "&#x000CB;" ><!--=capital E, dieresis or umlaut mark -->
+<!ENTITY iacute           "&#x000ED;" ><!--=small i, acute accent -->
+<!ENTITY Iacute           "&#x000CD;" ><!--=capital I, acute accent -->
+<!ENTITY icirc            "&#x000EE;" ><!--=small i, circumflex accent -->
+<!ENTITY Icirc            "&#x000CE;" ><!--=capital I, circumflex accent -->
+<!ENTITY igrave           "&#x000EC;" ><!--=small i, grave accent -->
+<!ENTITY Igrave           "&#x000CC;" ><!--=capital I, grave accent -->
+<!ENTITY iuml             "&#x000EF;" ><!--=small i, dieresis or umlaut mark -->
+<!ENTITY Iuml             "&#x000CF;" ><!--=capital I, dieresis or umlaut mark -->
+<!ENTITY ntilde           "&#x000F1;" ><!--=small n, tilde -->
+<!ENTITY Ntilde           "&#x000D1;" ><!--=capital N, tilde -->
+<!ENTITY oacute           "&#x000F3;" ><!--=small o, acute accent -->
+<!ENTITY Oacute           "&#x000D3;" ><!--=capital O, acute accent -->
+<!ENTITY ocirc            "&#x000F4;" ><!--=small o, circumflex accent -->
+<!ENTITY Ocirc            "&#x000D4;" ><!--=capital O, circumflex accent -->
+<!ENTITY ograve           "&#x000F2;" ><!--=small o, grave accent -->
+<!ENTITY Ograve           "&#x000D2;" ><!--=capital O, grave accent -->
+<!ENTITY oslash           "&#x000F8;" ><!--latin small letter o with stroke -->
+<!ENTITY Oslash           "&#x000D8;" ><!--=capital O, slash -->
+<!ENTITY otilde           "&#x000F5;" ><!--=small o, tilde -->
+<!ENTITY Otilde           "&#x000D5;" ><!--=capital O, tilde -->
+<!ENTITY ouml             "&#x000F6;" ><!--=small o, dieresis or umlaut mark -->
+<!ENTITY Ouml             "&#x000D6;" ><!--=capital O, dieresis or umlaut mark -->
+<!ENTITY szlig            "&#x000DF;" ><!--=small sharp s, German (sz ligature) -->
+<!ENTITY thorn            "&#x000FE;" ><!--=small thorn, Icelandic -->
+<!ENTITY THORN            "&#x000DE;" ><!--=capital THORN, Icelandic -->
+<!ENTITY uacute           "&#x000FA;" ><!--=small u, acute accent -->
+<!ENTITY Uacute           "&#x000DA;" ><!--=capital U, acute accent -->
+<!ENTITY ucirc            "&#x000FB;" ><!--=small u, circumflex accent -->
+<!ENTITY Ucirc            "&#x000DB;" ><!--=capital U, circumflex accent -->
+<!ENTITY ugrave           "&#x000F9;" ><!--=small u, grave accent -->
+<!ENTITY Ugrave           "&#x000D9;" ><!--=capital U, grave accent -->
+<!ENTITY uuml             "&#x000FC;" ><!--=small u, dieresis or umlaut mark -->
+<!ENTITY Uuml             "&#x000DC;" ><!--=capital U, dieresis or umlaut mark -->
+<!ENTITY yacute           "&#x000FD;" ><!--=small y, acute accent -->
+<!ENTITY Yacute           "&#x000DD;" ><!--=capital Y, acute accent -->
+<!ENTITY yuml             "&#x000FF;" ><!--=small y, dieresis or umlaut mark -->
+
+<!--
+     File isolat2.ent produced by the XSL script mmldtd.xsl
+     from input data in unicode.xml.
+
+     Please report any errors to 
+     David Carlisle <davidc@nag.co.uk>.
+
+     The numeric character values assigned to each entity
+     (should) match either official Unicode assignments
+     or assignments provisionally allocated by the
+     Unicode Consortium based on the characters in the `STIX'
+     propsal for mathematics. Note that these assignments
+     have not been ratified by the corresponding ISO
+     committee and thus should be considered liable to
+     change.
+
+     Entity names in this file are derived from files carrying the
+     following notice:
+
+     (C) International Organization for Standardization 1986
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY abreve           "&#x00103;" ><!--=small a, breve -->
+<!ENTITY Abreve           "&#x00102;" ><!--=capital A, breve -->
+<!ENTITY amacr            "&#x00101;" ><!--=small a, macron -->
+<!ENTITY Amacr            "&#x00100;" ><!--=capital A, macron -->
+<!ENTITY aogon            "&#x00105;" ><!--=small a, ogonek -->
+<!ENTITY Aogon            "&#x00104;" ><!--=capital A, ogonek -->
+<!ENTITY cacute           "&#x00107;" ><!--=small c, acute accent -->
+<!ENTITY Cacute           "&#x00106;" ><!--=capital C, acute accent -->
+<!ENTITY ccaron           "&#x0010D;" ><!--=small c, caron -->
+<!ENTITY Ccaron           "&#x0010C;" ><!--=capital C, caron -->
+<!ENTITY ccirc            "&#x00109;" ><!--=small c, circumflex accent -->
+<!ENTITY Ccirc            "&#x00108;" ><!--=capital C, circumflex accent -->
+<!ENTITY cdot             "&#x0010B;" ><!--=small c, dot above -->
+<!ENTITY Cdot             "&#x0010A;" ><!--=capital C, dot above -->
+<!ENTITY dcaron           "&#x0010F;" ><!--=small d, caron -->
+<!ENTITY Dcaron           "&#x0010E;" ><!--=capital D, caron -->
+<!ENTITY dstrok           "&#x00111;" ><!--=small d, stroke -->
+<!ENTITY Dstrok           "&#x00110;" ><!--=capital D, stroke -->
+<!ENTITY ecaron           "&#x0011B;" ><!--=small e, caron -->
+<!ENTITY Ecaron           "&#x0011A;" ><!--=capital E, caron -->
+<!ENTITY edot             "&#x00117;" ><!--=small e, dot above -->
+<!ENTITY Edot             "&#x00116;" ><!--=capital E, dot above -->
+<!ENTITY emacr            "&#x00113;" ><!--=small e, macron -->
+<!ENTITY Emacr            "&#x00112;" ><!--=capital E, macron -->
+<!ENTITY eng              "&#x0014B;" ><!--=small eng, Lapp -->
+<!ENTITY ENG              "&#x0014A;" ><!--=capital ENG, Lapp -->
+<!ENTITY eogon            "&#x00119;" ><!--=small e, ogonek -->
+<!ENTITY Eogon            "&#x00118;" ><!--=capital E, ogonek -->
+<!ENTITY gacute           "&#x001F5;" ><!--=small g, acute accent -->
+<!ENTITY gbreve           "&#x0011F;" ><!--=small g, breve -->
+<!ENTITY Gbreve           "&#x0011E;" ><!--=capital G, breve -->
+<!ENTITY Gcedil           "&#x00122;" ><!--=capital G, cedilla -->
+<!ENTITY gcirc            "&#x0011D;" ><!--=small g, circumflex accent -->
+<!ENTITY Gcirc            "&#x0011C;" ><!--=capital G, circumflex accent -->
+<!ENTITY gdot             "&#x00121;" ><!--=small g, dot above -->
+<!ENTITY Gdot             "&#x00120;" ><!--=capital G, dot above -->
+<!ENTITY hcirc            "&#x00125;" ><!--=small h, circumflex accent -->
+<!ENTITY Hcirc            "&#x00124;" ><!--=capital H, circumflex accent -->
+<!ENTITY hstrok           "&#x00127;" ><!--=small h, stroke -->
+<!ENTITY Hstrok           "&#x00126;" ><!--=capital H, stroke -->
+<!ENTITY Idot             "&#x00130;" ><!--=capital I, dot above -->
+<!ENTITY ijlig            "&#x00133;" ><!--=small ij ligature -->
+<!ENTITY IJlig            "&#x00132;" ><!--=capital IJ ligature -->
+<!ENTITY imacr            "&#x0012B;" ><!--=small i, macron -->
+<!ENTITY Imacr            "&#x0012A;" ><!--=capital I, macron -->
+<!ENTITY inodot           "&#x00131;" ><!--=small i without dot -->
+<!ENTITY iogon            "&#x0012F;" ><!--=small i, ogonek -->
+<!ENTITY Iogon            "&#x0012E;" ><!--=capital I, ogonek -->
+<!ENTITY itilde           "&#x00129;" ><!--=small i, tilde -->
+<!ENTITY Itilde           "&#x00128;" ><!--=capital I, tilde -->
+<!ENTITY jcirc            "&#x00135;" ><!--=small j, circumflex accent -->
+<!ENTITY Jcirc            "&#x00134;" ><!--=capital J, circumflex accent -->
+<!ENTITY kcedil           "&#x00137;" ><!--=small k, cedilla -->
+<!ENTITY Kcedil           "&#x00136;" ><!--=capital K, cedilla -->
+<!ENTITY kgreen           "&#x00138;" ><!--=small k, Greenlandic -->
+<!ENTITY lacute           "&#x0013A;" ><!--=small l, acute accent -->
+<!ENTITY Lacute           "&#x00139;" ><!--=capital L, acute accent -->
+<!ENTITY lcaron           "&#x0013E;" ><!--=small l, caron -->
+<!ENTITY Lcaron           "&#x0013D;" ><!--=capital L, caron -->
+<!ENTITY lcedil           "&#x0013C;" ><!--=small l, cedilla -->
+<!ENTITY Lcedil           "&#x0013B;" ><!--=capital L, cedilla -->
+<!ENTITY lmidot           "&#x00140;" ><!--=small l, middle dot -->
+<!ENTITY Lmidot           "&#x0013F;" ><!--=capital L, middle dot -->
+<!ENTITY lstrok           "&#x00142;" ><!--=small l, stroke -->
+<!ENTITY Lstrok           "&#x00141;" ><!--=capital L, stroke -->
+<!ENTITY nacute           "&#x00144;" ><!--=small n, acute accent -->
+<!ENTITY Nacute           "&#x00143;" ><!--=capital N, acute accent -->
+<!ENTITY napos            "&#x00149;" ><!--=small n, apostrophe -->
+<!ENTITY ncaron           "&#x00148;" ><!--=small n, caron -->
+<!ENTITY Ncaron           "&#x00147;" ><!--=capital N, caron -->
+<!ENTITY ncedil           "&#x00146;" ><!--=small n, cedilla -->
+<!ENTITY Ncedil           "&#x00145;" ><!--=capital N, cedilla -->
+<!ENTITY odblac           "&#x00151;" ><!--=small o, double acute accent -->
+<!ENTITY Odblac           "&#x00150;" ><!--=capital O, double acute accent -->
+<!ENTITY oelig            "&#x00153;" ><!--=small oe ligature -->
+<!ENTITY OElig            "&#x00152;" ><!--=capital OE ligature -->
+<!ENTITY omacr            "&#x0014D;" ><!--=small o, macron -->
+<!ENTITY Omacr            "&#x0014C;" ><!--=capital O, macron -->
+<!ENTITY racute           "&#x00155;" ><!--=small r, acute accent -->
+<!ENTITY Racute           "&#x00154;" ><!--=capital R, acute accent -->
+<!ENTITY rcaron           "&#x00159;" ><!--=small r, caron -->
+<!ENTITY Rcaron           "&#x00158;" ><!--=capital R, caron -->
+<!ENTITY rcedil           "&#x00157;" ><!--=small r, cedilla -->
+<!ENTITY Rcedil           "&#x00156;" ><!--=capital R, cedilla -->
+<!ENTITY sacute           "&#x0015B;" ><!--=small s, acute accent -->
+<!ENTITY Sacute           "&#x0015A;" ><!--=capital S, acute accent -->
+<!ENTITY scaron           "&#x00161;" ><!--=small s, caron -->
+<!ENTITY Scaron           "&#x00160;" ><!--=capital S, caron -->
+<!ENTITY scedil           "&#x0015F;" ><!--=small s, cedilla -->
+<!ENTITY Scedil           "&#x0015E;" ><!--=capital S, cedilla -->
+<!ENTITY scirc            "&#x0015D;" ><!--=small s, circumflex accent -->
+<!ENTITY Scirc            "&#x0015C;" ><!--=capital S, circumflex accent -->
+<!ENTITY tcaron           "&#x00165;" ><!--=small t, caron -->
+<!ENTITY Tcaron           "&#x00164;" ><!--=capital T, caron -->
+<!ENTITY tcedil           "&#x00163;" ><!--=small t, cedilla -->
+<!ENTITY Tcedil           "&#x00162;" ><!--=capital T, cedilla -->
+<!ENTITY tstrok           "&#x00167;" ><!--=small t, stroke -->
+<!ENTITY Tstrok           "&#x00166;" ><!--=capital T, stroke -->
+<!ENTITY ubreve           "&#x0016D;" ><!--=small u, breve -->
+<!ENTITY Ubreve           "&#x0016C;" ><!--=capital U, breve -->
+<!ENTITY udblac           "&#x00171;" ><!--=small u, double acute accent -->
+<!ENTITY Udblac           "&#x00170;" ><!--=capital U, double acute accent -->
+<!ENTITY umacr            "&#x0016B;" ><!--=small u, macron -->
+<!ENTITY Umacr            "&#x0016A;" ><!--=capital U, macron -->
+<!ENTITY uogon            "&#x00173;" ><!--=small u, ogonek -->
+<!ENTITY Uogon            "&#x00172;" ><!--=capital U, ogonek -->
+<!ENTITY uring            "&#x0016F;" ><!--=small u, ring -->
+<!ENTITY Uring            "&#x0016E;" ><!--=capital U, ring -->
+<!ENTITY utilde           "&#x00169;" ><!--=small u, tilde -->
+<!ENTITY Utilde           "&#x00168;" ><!--=capital U, tilde -->
+<!ENTITY wcirc            "&#x00175;" ><!--=small w, circumflex accent -->
+<!ENTITY Wcirc            "&#x00174;" ><!--=capital W, circumflex accent -->
+<!ENTITY ycirc            "&#x00177;" ><!--=small y, circumflex accent -->
+<!ENTITY Ycirc            "&#x00176;" ><!--=capital Y, circumflex accent -->
+<!ENTITY Yuml             "&#x00178;" ><!--=capital Y, dieresis or umlaut mark -->
+<!ENTITY zacute           "&#x0017A;" ><!--=small z, acute accent -->
+<!ENTITY Zacute           "&#x00179;" ><!--=capital Z, acute accent -->
+<!ENTITY zcaron           "&#x0017E;" ><!--=small z, caron -->
+<!ENTITY Zcaron           "&#x0017D;" ><!--=capital Z, caron -->
+<!ENTITY zdot             "&#x0017C;" ><!--=small z, dot above -->
+<!ENTITY Zdot             "&#x0017B;" ><!--=capital Z, dot above -->
+
+<!--
+     File isomfrk.ent produced by the XSL script mmldtd.xsl
+     from input data in unicode.xml.
+
+     Please report any errors to 
+     David Carlisle <davidc@nag.co.uk>.
+
+     The numeric character values assigned to each entity
+     (should) match either official Unicode assignments
+     or assignments provisionally allocated by the
+     Unicode Consortium based on the characters in the `STIX'
+     propsal for mathematics. Note that these assignments
+     have not been ratified by the corresponding ISO
+     committee and thus should be considered liable to
+     change.
+
+     Entity names in this file are derived from files carrying the
+     following notice:
+
+     (C) International Organization for Standardization 1991
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY afr              "&#x1D51E;" ><!--/frak a, lower case a -->
+<!ENTITY Afr              "&#x1D504;" ><!--/frak A, upper case a -->
+<!ENTITY bfr              "&#x1D51F;" ><!--/frak b, lower case b -->
+<!ENTITY Bfr              "&#x1D505;" ><!--/frak B, upper case b -->
+<!ENTITY cfr              "&#x1D520;" ><!--/frak c, lower case c -->
+<!ENTITY Cfr              "&#x0212D;" ><!--/frak C, upper case c -->
+<!ENTITY dfr              "&#x1D521;" ><!--/frak d, lower case d -->
+<!ENTITY Dfr              "&#x1D507;" ><!--/frak D, upper case d -->
+<!ENTITY efr              "&#x1D522;" ><!--/frak e, lower case e -->
+<!ENTITY Efr              "&#x1D508;" ><!--/frak E, upper case e -->
+<!ENTITY ffr              "&#x1D523;" ><!--/frak f, lower case f -->
+<!ENTITY Ffr              "&#x1D509;" ><!--/frak F, upper case f -->
+<!ENTITY gfr              "&#x1D524;" ><!--/frak g, lower case g -->
+<!ENTITY Gfr              "&#x1D50A;" ><!--/frak G, upper case g -->
+<!ENTITY hfr              "&#x1D525;" ><!--/frak h, lower case h -->
+<!ENTITY Hfr              "&#x0210C;" ><!--/frak H, upper case h -->
+<!ENTITY ifr              "&#x1D526;" ><!--/frak i, lower case i -->
+<!ENTITY Ifr              "&#x02111;" ><!--/frak I, upper case i -->
+<!ENTITY jfr              "&#x1D527;" ><!--/frak j, lower case j -->
+<!ENTITY Jfr              "&#x1D50D;" ><!--/frak J, upper case j -->
+<!ENTITY kfr              "&#x1D528;" ><!--/frak k, lower case k -->
+<!ENTITY Kfr              "&#x1D50E;" ><!--/frak K, upper case k -->
+<!ENTITY lfr              "&#x1D529;" ><!--/frak l, lower case l -->
+<!ENTITY Lfr              "&#x1D50F;" ><!--/frak L, upper case l -->
+<!ENTITY mfr              "&#x1D52A;" ><!--/frak m, lower case m -->
+<!ENTITY Mfr              "&#x1D510;" ><!--/frak M, upper case m -->
+<!ENTITY nfr              "&#x1D52B;" ><!--/frak n, lower case n -->
+<!ENTITY Nfr              "&#x1D511;" ><!--/frak N, upper case n -->
+<!ENTITY ofr              "&#x1D52C;" ><!--/frak o, lower case o -->
+<!ENTITY Ofr              "&#x1D512;" ><!--/frak O, upper case o -->
+<!ENTITY pfr              "&#x1D52D;" ><!--/frak p, lower case p -->
+<!ENTITY Pfr              "&#x1D513;" ><!--/frak P, upper case p -->
+<!ENTITY qfr              "&#x1D52E;" ><!--/frak q, lower case q -->
+<!ENTITY Qfr              "&#x1D514;" ><!--/frak Q, upper case q -->
+<!ENTITY rfr              "&#x1D52F;" ><!--/frak r, lower case r -->
+<!ENTITY Rfr              "&#x0211C;" ><!--/frak R, upper case r -->
+<!ENTITY sfr              "&#x1D530;" ><!--/frak s, lower case s -->
+<!ENTITY Sfr              "&#x1D516;" ><!--/frak S, upper case s -->
+<!ENTITY tfr              "&#x1D531;" ><!--/frak t, lower case t -->
+<!ENTITY Tfr              "&#x1D517;" ><!--/frak T, upper case t -->
+<!ENTITY ufr              "&#x1D532;" ><!--/frak u, lower case u -->
+<!ENTITY Ufr              "&#x1D518;" ><!--/frak U, upper case u -->
+<!ENTITY vfr              "&#x1D533;" ><!--/frak v, lower case v -->
+<!ENTITY Vfr              "&#x1D519;" ><!--/frak V, upper case v -->
+<!ENTITY wfr              "&#x1D534;" ><!--/frak w, lower case w -->
+<!ENTITY Wfr              "&#x1D51A;" ><!--/frak W, upper case w -->
+<!ENTITY xfr              "&#x1D535;" ><!--/frak x, lower case x -->
+<!ENTITY Xfr              "&#x1D51B;" ><!--/frak X, upper case x -->
+<!ENTITY yfr              "&#x1D536;" ><!--/frak y, lower case y -->
+<!ENTITY Yfr              "&#x1D51C;" ><!--/frak Y, upper case y -->
+<!ENTITY zfr              "&#x1D537;" ><!--/frak z, lower case z -->
+<!ENTITY Zfr              "&#x02128;" ><!--/frak Z, upper case z  -->
+
+<!--
+     File isomopf.ent produced by the XSL script mmldtd.xsl
+     from input data in unicode.xml.
+
+     Please report any errors to 
+     David Carlisle <davidc@nag.co.uk>.
+
+     The numeric character values assigned to each entity
+     (should) match either official Unicode assignments
+     or assignments provisionally allocated by the
+     Unicode Consortium based on the characters in the `STIX'
+     propsal for mathematics. Note that these assignments
+     have not been ratified by the corresponding ISO
+     committee and thus should be considered liable to
+     change.
+
+     Entity names in this file are derived from files carrying the
+     following notice:
+
+     (C) International Organization for Standardization 1991
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY Aopf             "&#x1D538;" ><!--/Bbb A, open face A -->
+<!ENTITY Bopf             "&#x1D539;" ><!--/Bbb B, open face B -->
+<!ENTITY Copf             "&#x02102;" ><!--/Bbb C, open face C -->
+<!ENTITY Dopf             "&#x1D53B;" ><!--/Bbb D, open face D -->
+<!ENTITY Eopf             "&#x1D53C;" ><!--/Bbb E, open face E -->
+<!ENTITY Fopf             "&#x1D53D;" ><!--/Bbb F, open face F -->
+<!ENTITY Gopf             "&#x1D53E;" ><!--/Bbb G, open face G -->
+<!ENTITY Hopf             "&#x0210D;" ><!--/Bbb H, open face H -->
+<!ENTITY Iopf             "&#x1D540;" ><!--/Bbb I, open face I -->
+<!ENTITY Jopf             "&#x1D541;" ><!--/Bbb J, open face J -->
+<!ENTITY Kopf             "&#x1D542;" ><!--/Bbb K, open face K  -->
+<!ENTITY Lopf             "&#x1D543;" ><!--/Bbb L, open face L  -->
+<!ENTITY Mopf             "&#x1D544;" ><!--/Bbb M, open face M  -->
+<!ENTITY Nopf             "&#x02115;" ><!--/Bbb N, open face N -->
+<!ENTITY Oopf             "&#x1D546;" ><!--/Bbb O, open face O -->
+<!ENTITY Popf             "&#x02119;" ><!--/Bbb P, open face P -->
+<!ENTITY Qopf             "&#x0211A;" ><!--/Bbb Q, open face Q -->
+<!ENTITY Ropf             "&#x0211D;" ><!--/Bbb R, open face R -->
+<!ENTITY Sopf             "&#x1D54A;" ><!--/Bbb S, open face S -->
+<!ENTITY Topf             "&#x1D54B;" ><!--/Bbb T, open face T -->
+<!ENTITY Uopf             "&#x1D54C;" ><!--/Bbb U, open face U -->
+<!ENTITY Vopf             "&#x1D54D;" ><!--/Bbb V, open face V -->
+<!ENTITY Wopf             "&#x1D54E;" ><!--/Bbb W, open face W -->
+<!ENTITY Xopf             "&#x1D54F;" ><!--/Bbb X, open face X -->
+<!ENTITY Yopf             "&#x1D550;" ><!--/Bbb Y, open face Y -->
+<!ENTITY Zopf             "&#x02124;" ><!--/Bbb Z, open face Z -->
+
+<!--
+     File isomscr.ent produced by the XSL script mmldtd.xsl
+     from input data in unicode.xml.
+
+     Please report any errors to 
+     David Carlisle <davidc@nag.co.uk>.
+
+     The numeric character values assigned to each entity
+     (should) match either official Unicode assignments
+     or assignments provisionally allocated by the
+     Unicode Consortium based on the characters in the `STIX'
+     propsal for mathematics. Note that these assignments
+     have not been ratified by the corresponding ISO
+     committee and thus should be considered liable to
+     change.
+
+     Entity names in this file are derived from files carrying the
+     following notice:
+
+     (C) International Organization for Standardization 1991
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY ascr             "&#x1D4B6;" ><!--/scr a, script letter a -->
+<!ENTITY Ascr             "&#x1D49C;" ><!--/scr A, script letter A -->
+<!ENTITY bscr             "&#x1D4B7;" ><!--/scr b, script letter b -->
+<!ENTITY Bscr             "&#x0212C;" ><!--/scr B, script letter B -->
+<!ENTITY cscr             "&#x1D4B8;" ><!--/scr c, script letter c -->
+<!ENTITY Cscr             "&#x1D49E;" ><!--/scr C, script letter C -->
+<!ENTITY dscr             "&#x1D4B9;" ><!--/scr d, script letter d -->
+<!ENTITY Dscr             "&#x1D49F;" ><!--/scr D, script letter D -->
+<!ENTITY escr             "&#x0212F;" ><!--/scr e, script letter e -->
+<!ENTITY Escr             "&#x02130;" ><!--/scr E, script letter E -->
+<!ENTITY fscr             "&#x1D4BB;" ><!--/scr f, script letter f -->
+<!ENTITY Fscr             "&#x02131;" ><!--/scr F, script letter F -->
+<!ENTITY gscr             "&#x0210A;" ><!--/scr g, script letter g -->
+<!ENTITY Gscr             "&#x1D4A2;" ><!--/scr G, script letter G -->
+<!ENTITY hscr             "&#x1D4BD;" ><!--/scr h, script letter h -->
+<!ENTITY Hscr             "&#x0210B;" ><!--/scr H, script letter H -->
+<!ENTITY iscr             "&#x1D4BE;" ><!--/scr i, script letter i -->
+<!ENTITY Iscr             "&#x02110;" ><!--/scr I, script letter I -->
+<!ENTITY jscr             "&#x1D4BF;" ><!--/scr j, script letter j -->
+<!ENTITY Jscr             "&#x1D4A5;" ><!--/scr J, script letter J -->
+<!ENTITY kscr             "&#x1D4C0;" ><!--/scr k, script letter k -->
+<!ENTITY Kscr             "&#x1D4A6;" ><!--/scr K, script letter K -->
+<!ENTITY lscr             "&#x02113;" ><!--/scr l, script letter l -->
+<!ENTITY Lscr             "&#x02112;" ><!--/scr L, script letter L -->
+<!ENTITY mscr             "&#x1D4C2;" ><!--/scr m, script letter m -->
+<!ENTITY Mscr             "&#x02133;" ><!--/scr M, script letter M -->
+<!ENTITY nscr             "&#x1D4C3;" ><!--/scr n, script letter n -->
+<!ENTITY Nscr             "&#x1D4A9;" ><!--/scr N, script letter N -->
+<!ENTITY oscr             "&#x02134;" ><!--/scr o, script letter o -->
+<!ENTITY Oscr             "&#x1D4AA;" ><!--/scr O, script letter O -->
+<!ENTITY pscr             "&#x1D4C5;" ><!--/scr p, script letter p -->
+<!ENTITY Pscr             "&#x1D4AB;" ><!--/scr P, script letter P -->
+<!ENTITY qscr             "&#x1D4C6;" ><!--/scr q, script letter q -->
+<!ENTITY Qscr             "&#x1D4AC;" ><!--/scr Q, script letter Q -->
+<!ENTITY rscr             "&#x1D4C7;" ><!--/scr r, script letter r -->
+<!ENTITY Rscr             "&#x0211B;" ><!--/scr R, script letter R -->
+<!ENTITY sscr             "&#x1D4C8;" ><!--/scr s, script letter s -->
+<!ENTITY Sscr             "&#x1D4AE;" ><!--/scr S, script letter S -->
+<!ENTITY tscr             "&#x1D4C9;" ><!--/scr t, script letter t -->
+<!ENTITY Tscr             "&#x1D4AF;" ><!--/scr T, script letter T -->
+<!ENTITY uscr             "&#x1D4CA;" ><!--/scr u, script letter u -->
+<!ENTITY Uscr             "&#x1D4B0;" ><!--/scr U, script letter U -->
+<!ENTITY vscr             "&#x1D4CB;" ><!--/scr v, script letter v -->
+<!ENTITY Vscr             "&#x1D4B1;" ><!--/scr V, script letter V -->
+<!ENTITY wscr             "&#x1D4CC;" ><!--/scr w, script letter w -->
+<!ENTITY Wscr             "&#x1D4B2;" ><!--/scr W, script letter W -->
+<!ENTITY xscr             "&#x1D4CD;" ><!--/scr x, script letter x -->
+<!ENTITY Xscr             "&#x1D4B3;" ><!--/scr X, script letter X -->
+<!ENTITY yscr             "&#x1D4CE;" ><!--/scr y, script letter y -->
+<!ENTITY Yscr             "&#x1D4B4;" ><!--/scr Y, script letter Y -->
+<!ENTITY zscr             "&#x1D4CF;" ><!--/scr z, script letter z -->
+<!ENTITY Zscr             "&#x1D4B5;" ><!--/scr Z, script letter Z -->
+
+<!--
+     File isonum.ent produced by the XSL script mmldtd.xsl
+     from input data in unicode.xml.
+
+     Please report any errors to 
+     David Carlisle <davidc@nag.co.uk>.
+
+     The numeric character values assigned to each entity
+     (should) match either official Unicode assignments
+     or assignments provisionally allocated by the
+     Unicode Consortium based on the characters in the `STIX'
+     propsal for mathematics. Note that these assignments
+     have not been ratified by the corresponding ISO
+     committee and thus should be considered liable to
+     change.
+
+     Entity names in this file are derived from files carrying the
+     following notice:
+
+     (C) International Organization for Standardization 1986
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY amp              "&#x26;&#x00026;" ><!--=ampersand -->
+<!ENTITY apos             "&#x00027;" ><!--=apostrophe -->
+<!ENTITY ast              "&#x0002A;" ><!--/ast B: =asterisk -->
+<!ENTITY brvbar           "&#x000A6;" ><!--=broken (vertical) bar -->
+<!ENTITY bsol             "&#x0005C;" ><!--/backslash =reverse solidus -->
+<!ENTITY cent             "&#x000A2;" ><!--=cent sign -->
+<!ENTITY colon            "&#x0003A;" ><!--/colon P: -->
+<!ENTITY comma            "&#x0002C;" ><!--P: =comma -->
+<!ENTITY commat           "&#x00040;" ><!--=commercial at -->
+<!ENTITY copy             "&#x000A9;" ><!--=copyright sign -->
+<!ENTITY curren           "&#x000A4;" ><!--=general currency sign -->
+<!ENTITY darr             "&#x02193;" ><!--/downarrow A: =downward arrow -->
+<!ENTITY deg              "&#x000B0;" ><!--=degree sign -->
+<!ENTITY divide           "&#x000F7;" ><!--/div B: =divide sign -->
+<!ENTITY dollar           "&#x00024;" ><!--=dollar sign -->
+<!ENTITY equals           "&#x0003D;" ><!--=equals sign R: -->
+<!ENTITY excl             "&#x00021;" ><!--=exclamation mark -->
+<!ENTITY frac12           "&#x000BD;" ><!--=fraction one-half -->
+<!ENTITY frac14           "&#x000BC;" ><!--=fraction one-quarter -->
+<!ENTITY frac18           "&#x0215B;" ><!--=fraction one-eighth -->
+<!ENTITY frac34           "&#x000BE;" ><!--=fraction three-quarters -->
+<!ENTITY frac38           "&#x0215C;" ><!--=fraction three-eighths -->
+<!ENTITY frac58           "&#x0215D;" ><!--=fraction five-eighths -->
+<!ENTITY frac78           "&#x0215E;" ><!--=fraction seven-eighths -->
+<!ENTITY gt               "&#x0003E;" ><!--=greater-than sign R: -->
+<!ENTITY half             "&#x000BD;" ><!--=fraction one-half -->
+<!ENTITY horbar           "&#x02015;" ><!--=horizontal bar -->
+<!ENTITY hyphen           "&#x02010;" ><!--=hyphen -->
+<!ENTITY iexcl            "&#x000A1;" ><!--=inverted exclamation mark -->
+<!ENTITY iquest           "&#x000BF;" ><!--=inverted question mark -->
+<!ENTITY laquo            "&#x000AB;" ><!--=angle quotation mark, left -->
+<!ENTITY larr             "&#x02190;" ><!--/leftarrow /gets A: =leftward arrow -->
+<!ENTITY lcub             "&#x0007B;" ><!--/lbrace O: =left curly bracket -->
+<!ENTITY ldquo            "&#x0201C;" ><!--=double quotation mark, left -->
+<!ENTITY lowbar           "&#x0005F;" ><!--=low line -->
+<!ENTITY lpar             "&#x00028;" ><!--O: =left parenthesis -->
+<!ENTITY lsqb             "&#x0005B;" ><!--/lbrack O: =left square bracket -->
+<!ENTITY lsquo            "&#x02018;" ><!--=single quotation mark, left -->
+<!ENTITY lt               "&#x26;&#x0003C;" ><!--=less-than sign R: -->
+<!ENTITY micro            "&#x000B5;" ><!--=micro sign -->
+<!ENTITY middot           "&#x000B7;" ><!--/centerdot B: =middle dot -->
+<!ENTITY nbsp             "&#x000A0;" ><!--=no break (required) space -->
+<!ENTITY not              "&#x000AC;" ><!--/neg /lnot =not sign -->
+<!ENTITY num              "&#x00023;" ><!--=number sign -->
+<!ENTITY ohm              "&#x02126;" ><!--=ohm sign -->
+<!ENTITY ordf             "&#x000AA;" ><!--=ordinal indicator, feminine -->
+<!ENTITY ordm             "&#x000BA;" ><!--=ordinal indicator, masculine -->
+<!ENTITY para             "&#x000B6;" ><!--=pilcrow (paragraph sign) -->
+<!ENTITY percnt           "&#x00025;" ><!--=percent sign -->
+<!ENTITY period           "&#x0002E;" ><!--=full stop, period -->
+<!ENTITY plus             "&#x0002B;" ><!--=plus sign B: -->
+<!ENTITY plusmn           "&#x000B1;" ><!--/pm B: =plus-or-minus sign -->
+<!ENTITY pound            "&#x000A3;" ><!--=pound sign -->
+<!ENTITY quest            "&#x0003F;" ><!--=question mark -->
+<!ENTITY quot             "&#x00022;" ><!--=quotation mark -->
+<!ENTITY raquo            "&#x000BB;" ><!--=angle quotation mark, right -->
+<!ENTITY rarr             "&#x02192;" ><!--/rightarrow /to A: =rightward arrow -->
+<!ENTITY rcub             "&#x0007D;" ><!--/rbrace C: =right curly bracket -->
+<!ENTITY rdquo            "&#x0201D;" ><!--=double quotation mark, right -->
+<!ENTITY reg              "&#x000AE;" ><!--/circledR =registered sign -->
+<!ENTITY rpar             "&#x00029;" ><!--C: =right parenthesis -->
+<!ENTITY rsqb             "&#x0005D;" ><!--/rbrack C: =right square bracket -->
+<!ENTITY rsquo            "&#x02019;" ><!--=single quotation mark, right -->
+<!ENTITY sect             "&#x000A7;" ><!--=section sign -->
+<!ENTITY semi             "&#x0003B;" ><!--=semicolon P: -->
+<!ENTITY shy              "&#x000AD;" ><!--=soft hyphen -->
+<!ENTITY sol              "&#x0002F;" ><!--=solidus -->
+<!ENTITY sung             "&#x0266A;" ><!--=music note (sung text sign) -->
+<!ENTITY sup1             "&#x000B9;" ><!--=superscript one -->
+<!ENTITY sup2             "&#x000B2;" ><!--=superscript two -->
+<!ENTITY sup3             "&#x000B3;" ><!--=superscript three -->
+<!ENTITY times            "&#x000D7;" ><!--/times B: =multiply sign -->
+<!ENTITY trade            "&#x02122;" ><!--=trade mark sign -->
+<!ENTITY uarr             "&#x02191;" ><!--/uparrow A: =upward arrow -->
+<!ENTITY verbar           "&#x0007C;" ><!--/vert =vertical bar -->
+<!ENTITY yen              "&#x000A5;" ><!--/yen =yen sign -->
+
+<!--
+     File isopub.ent produced by the XSL script mmldtd.xsl
+     from input data in unicode.xml.
+
+     Please report any errors to 
+     David Carlisle <davidc@nag.co.uk>.
+
+     The numeric character values assigned to each entity
+     (should) match either official Unicode assignments
+     or assignments provisionally allocated by the
+     Unicode Consortium based on the characters in the `STIX'
+     propsal for mathematics. Note that these assignments
+     have not been ratified by the corresponding ISO
+     committee and thus should be considered liable to
+     change.
+
+     Entity names in this file are derived from files carrying the
+     following notice:
+
+     (C) International Organization for Standardization 1986
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY blank            "&#x02423;" ><!--=significant blank symbol -->
+<!ENTITY blk12            "&#x02592;" ><!--=50% shaded block -->
+<!ENTITY blk14            "&#x02591;" ><!--=25% shaded block -->
+<!ENTITY blk34            "&#x02593;" ><!--=75% shaded block -->
+<!ENTITY block            "&#x02588;" ><!--=full block -->
+<!ENTITY bull             "&#x02022;" ><!--/bullet B: =round bullet, filled -->
+<!ENTITY caret            "&#x02041;" ><!--=caret (insertion mark) -->
+<!ENTITY check            "&#x02713;" ><!--/checkmark =tick, check mark -->
+<!ENTITY cir              "&#x025CB;" ><!--/circ B: =circle, open -->
+<!ENTITY clubs            "&#x02663;" ><!--/clubsuit =club suit symbol  -->
+<!ENTITY copysr           "&#x02117;" ><!--=sound recording copyright sign -->
+<!ENTITY cross            "&#x02717;" ><!--=ballot cross -->
+<!ENTITY dagger           "&#x02020;" ><!--/dagger B: =dagger -->
+<!ENTITY Dagger           "&#x02021;" ><!--/ddagger B: =double dagger -->
+<!ENTITY dash             "&#x02010;" ><!--=hyphen (true graphic) -->
+<!ENTITY diams            "&#x02666;" ><!--/diamondsuit =diamond suit symbol  -->
+<!ENTITY dlcrop           "&#x0230D;" ><!--downward left crop mark  -->
+<!ENTITY drcrop           "&#x0230C;" ><!--downward right crop mark  -->
+<!ENTITY dtri             "&#x025BF;" ><!--/triangledown =down triangle, open -->
+<!ENTITY dtrif            "&#x025BE;" ><!--/blacktriangledown =dn tri, filled -->
+<!ENTITY emsp             "&#x02003;" ><!--=em space -->
+<!ENTITY emsp13           "&#x02004;" ><!--=1/3-em space -->
+<!ENTITY emsp14           "&#x02005;" ><!--=1/4-em space -->
+<!ENTITY ensp             "&#x02002;" ><!--=en space (1/2-em) -->
+<!ENTITY female           "&#x02640;" ><!--=female symbol -->
+<!ENTITY ffilig           "&#x0FB03;" ><!--small ffi ligature -->
+<!ENTITY fflig            "&#x0FB00;" ><!--small ff ligature -->
+<!ENTITY ffllig           "&#x0FB04;" ><!--small ffl ligature -->
+<!ENTITY filig            "&#x0FB01;" ><!--small fi ligature -->
+<!ENTITY flat             "&#x0266D;" ><!--/flat =musical flat -->
+<!ENTITY fllig            "&#x0FB02;" ><!--small fl ligature -->
+<!ENTITY frac13           "&#x02153;" ><!--=fraction one-third -->
+<!ENTITY frac15           "&#x02155;" ><!--=fraction one-fifth -->
+<!ENTITY frac16           "&#x02159;" ><!--=fraction one-sixth -->
+<!ENTITY frac23           "&#x02154;" ><!--=fraction two-thirds -->
+<!ENTITY frac25           "&#x02156;" ><!--=fraction two-fifths -->
+<!ENTITY frac35           "&#x02157;" ><!--=fraction three-fifths -->
+<!ENTITY frac45           "&#x02158;" ><!--=fraction four-fifths -->
+<!ENTITY frac56           "&#x0215A;" ><!--=fraction five-sixths -->
+<!ENTITY hairsp           "&#x0200A;" ><!--=hair space -->
+<!ENTITY hellip           "&#x02026;" ><!--=ellipsis (horizontal) -->
+<!ENTITY hybull           "&#x02043;" ><!--rectangle, filled (hyphen bullet) -->
+<!ENTITY incare           "&#x02105;" ><!--=in-care-of symbol -->
+<!ENTITY ldquor           "&#x0201E;" ><!--=rising dbl quote, left (low) -->
+<!ENTITY lhblk            "&#x02584;" ><!--=lower half block -->
+<!ENTITY loz              "&#x025CA;" ><!--/lozenge - lozenge or total mark -->
+<!ENTITY lozf             "&#x029EB;" ><!--/blacklozenge - lozenge, filled -->
+<!ENTITY lsquor           "&#x0201A;" ><!--=rising single quote, left (low) -->
+<!ENTITY ltri             "&#x025C3;" ><!--/triangleleft B: l triangle, open -->
+<!ENTITY ltrif            "&#x025C2;" ><!--/blacktriangleleft R: =l tri, filled -->
+<!ENTITY male             "&#x02642;" ><!--=male symbol -->
+<!ENTITY malt             "&#x02720;" ><!--/maltese =maltese cross -->
+<!ENTITY marker           "&#x025AE;" ><!--=histogram marker -->
+<!ENTITY mdash            "&#x02014;" ><!--=em dash  -->
+<!ENTITY mldr             "&#x02026;" ><!--em leader -->
+<!ENTITY natur            "&#x0266E;" ><!--/natural - music natural -->
+<!ENTITY ndash            "&#x02013;" ><!--=en dash -->
+<!ENTITY nldr             "&#x02025;" ><!--=double baseline dot (en leader) -->
+<!ENTITY numsp            "&#x02007;" ><!--=digit space (width of a number) -->
+<!ENTITY phone            "&#x0260E;" ><!--=telephone symbol  -->
+<!ENTITY puncsp           "&#x02008;" ><!--=punctuation space (width of comma) -->
+<!ENTITY rdquor           "&#x0201D;" ><!--rising dbl quote, right (high) -->
+<!ENTITY rect             "&#x025AD;" ><!--=rectangle, open -->
+<!ENTITY rsquor           "&#x02019;" ><!--rising single quote, right (high) -->
+<!ENTITY rtri             "&#x025B9;" ><!--/triangleright B: r triangle, open -->
+<!ENTITY rtrif            "&#x025B8;" ><!--/blacktriangleright R: =r tri, filled -->
+<!ENTITY rx               "&#x0211E;" ><!--pharmaceutical prescription (Rx) -->
+<!ENTITY sext             "&#x02736;" ><!--sextile (6-pointed star) -->
+<!ENTITY sharp            "&#x0266F;" ><!--/sharp =musical sharp -->
+<!ENTITY spades           "&#x02660;" ><!--/spadesuit =spades suit symbol  -->
+<!ENTITY squ              "&#x025A1;" ><!--=square, open -->
+<!ENTITY squf             "&#x025AA;" ><!--/blacksquare =sq bullet, filled -->
+<!ENTITY star             "&#x022C6;" ><!--=star, open -->
+<!ENTITY starf            "&#x02605;" ><!--/bigstar - star, filled  -->
+<!ENTITY target           "&#x02316;" ><!--register mark or target -->
+<!ENTITY telrec           "&#x02315;" ><!--=telephone recorder symbol -->
+<!ENTITY thinsp           "&#x02009;" ><!--=thin space (1/6-em) -->
+<!ENTITY uhblk            "&#x02580;" ><!--=upper half block -->
+<!ENTITY ulcrop           "&#x0230F;" ><!--upward left crop mark  -->
+<!ENTITY urcrop           "&#x0230E;" ><!--upward right crop mark  -->
+<!ENTITY utri             "&#x025B5;" ><!--/triangle =up triangle, open -->
+<!ENTITY utrif            "&#x025B4;" ><!--/blacktriangle =up tri, filled -->
+<!ENTITY vellip           "&#x022EE;" ><!--vertical ellipsis -->
+
+<!--
+     File isotech.ent produced by the XSL script mmldtd.xsl
+     from input data in unicode.xml.
+
+     Please report any errors to 
+     David Carlisle <davidc@nag.co.uk>.
+
+     The numeric character values assigned to each entity
+     (should) match either official Unicode assignments
+     or assignments provisionally allocated by the
+     Unicode Consortium based on the characters in the `STIX'
+     propsal for mathematics. Note that these assignments
+     have not been ratified by the corresponding ISO
+     committee and thus should be considered liable to
+     change.
+
+     Entity names in this file are derived from files carrying the
+     following notice:
+
+     (C) International Organization for Standardization 1991
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY acd              "&#x0223F;" ><!--ac current -->
+<!ENTITY aleph            "&#x02135;" ><!--/aleph aleph, Hebrew -->
+<!ENTITY and              "&#x02227;" ><!--/wedge /land B: logical and -->
+<!ENTITY And              "&#x02A53;" ><!--dbl logical and -->
+<!ENTITY andand           "&#x02A55;" ><!--two logical and -->
+<!ENTITY andd             "&#x02A5C;" ><!--and, horizontal dash -->
+<!ENTITY andslope         "&#x02A58;" ><!--sloping large and -->
+<!ENTITY andv             "&#x02A5A;" ><!--and with middle stem -->
+<!ENTITY angrt            "&#x0221F;" ><!--right (90 degree) angle -->
+<!ENTITY angsph           "&#x02222;" ><!--/sphericalangle angle-spherical -->
+<!ENTITY angst            "&#x0212B;" ><!--Angstrom capital A, ring -->
+<!ENTITY ap               "&#x02248;" ><!--/approx R: approximate -->
+<!ENTITY apacir           "&#x02A6F;" ><!--approximate, circumflex accent -->
+<!ENTITY awconint         "&#x02233;" ><!--contour integral, anti-clockwise -->
+<!ENTITY awint            "&#x02A11;" ><!--anti clock-wise integration -->
+<!ENTITY becaus           "&#x02235;" ><!--/because R: because -->
+<!ENTITY bernou           "&#x0212C;" ><!--Bernoulli function (script capital B)  -->
+<!ENTITY bne              "&#x0003D;&#x020E5;" ><!--reverse not equal -->
+<!ENTITY bnequiv          "&#x02261;&#x020E5;" ><!--reverse not equivalent -->
+<!ENTITY bnot             "&#x02310;" ><!--reverse not -->
+<!ENTITY bNot             "&#x02AED;" ><!--reverse not with two horizontal strokes -->
+<!ENTITY bottom           "&#x022A5;" ><!--/bot bottom -->
+<!ENTITY cap              "&#x02229;" ><!--/cap B: intersection -->
+<!ENTITY Cconint          "&#x02230;" ><!--triple contour integral operator -->
+<!ENTITY cirfnint         "&#x02A10;" ><!--circulation function -->
+<!ENTITY compfn           "&#x02218;" ><!--/circ B: composite function (small circle) -->
+<!ENTITY cong             "&#x02245;" ><!--/cong R: congruent with -->
+<!ENTITY conint           "&#x0222E;" ><!--/oint L: contour integral operator -->
+<!ENTITY Conint           "&#x0222F;" ><!--double contour integral operator -->
+<!ENTITY ctdot            "&#x022EF;" ><!--/cdots, three dots, centered -->
+<!ENTITY cup              "&#x0222A;" ><!--/cup B: union or logical sum -->
+<!ENTITY cwconint         "&#x02232;" ><!--contour integral, clockwise -->
+<!ENTITY cwint            "&#x02231;" ><!--clockwise integral -->
+<!ENTITY cylcty           "&#x0232D;" ><!--cylindricity -->
+<!ENTITY disin            "&#x022F2;" ><!--set membership, long horizontal stroke -->
+<!ENTITY Dot              "&#x000A8;" ><!--dieresis or umlaut mark -->
+<!ENTITY DotDot           "&#x020DC;" ><!--four dots above -->
+<!ENTITY dsol             "&#x029F6;" ><!--solidus, bar above -->
+<!ENTITY dtdot            "&#x022F1;" ><!--/ddots, three dots, descending -->
+<!ENTITY dwangle          "&#x029A6;" ><!--large downward pointing angle -->
+<!ENTITY epar             "&#x022D5;" ><!--parallel, equal; equal or parallel -->
+<!ENTITY eparsl           "&#x029E3;" ><!--parallel, slanted, equal; homothetically congruent to -->
+<!ENTITY equiv            "&#x02261;" ><!--/equiv R: identical with -->
+<!ENTITY eqvparsl         "&#x029E5;" ><!--equivalent, equal; congruent and parallel -->
+<!ENTITY exist            "&#x02203;" ><!--/exists at least one exists -->
+<!ENTITY fnof             "&#x00192;" ><!--function of (italic small f) -->
+<!ENTITY forall           "&#x02200;" ><!--/forall for all -->
+<!ENTITY fpartint         "&#x02A0D;" ><!--finite part integral -->
+<!ENTITY ge               "&#x02265;" ><!--/geq /ge R: greater-than-or-equal -->
+<!ENTITY hamilt           "&#x0210B;" ><!--Hamiltonian (script capital H)  -->
+<!ENTITY iff              "&#x021D4;" ><!--/iff if and only if  -->
+<!ENTITY iinfin           "&#x029DC;" ><!--infinity sign, incomplete -->
+<!ENTITY imped            "&#x1D543;" ><!--impedance -->
+<!ENTITY infin            "&#x0221E;" ><!--/infty infinity -->
+<!ENTITY int              "&#x0222B;" ><!--/int L: integral operator -->
+<!ENTITY Int              "&#x0222C;" ><!--double integral operator -->
+<!ENTITY intlarhk         "&#x02A17;" ><!--integral, left arrow with hook -->
+<!ENTITY isin             "&#x02208;" ><!--/in R: set membership  -->
+<!ENTITY isindot          "&#x022F5;" ><!--set membership, dot above -->
+<!ENTITY isinE            "&#x022F9;" ><!--set membership, two horizontal strokes -->
+<!ENTITY isins            "&#x022F4;" ><!--set membership, vertical bar on horizontal stroke -->
+<!ENTITY isinsv           "&#x022F3;" ><!--large set membership, vertical bar on horizontal stroke -->
+<!ENTITY isinv            "&#x02208;" ><!--set membership, variant -->
+<!ENTITY lagran           "&#x02112;" ><!--Lagrangian (script capital L)  -->
+<!ENTITY lang             "&#x02329;" ><!--/langle O: left angle bracket -->
+<!ENTITY Lang             "&#x0300A;" ><!--left angle bracket, double -->
+<!ENTITY lArr             "&#x021D0;" ><!--/Leftarrow A: is implied by -->
+<!ENTITY lbbrk            "&#x03014;" ><!--left broken bracket -->
+<!ENTITY le               "&#x02264;" ><!--/leq /le R: less-than-or-equal -->
+<!ENTITY loang            "&#x0F558;" ><!--left open angular bracket -->
+<!ENTITY lobrk            "&#x0301A;" ><!--left open bracket -->
+<!ENTITY lopar            "&#x03018;" ><!--left open parenthesis -->
+<!ENTITY lowast           "&#x02217;" ><!--low asterisk -->
+<!ENTITY minus            "&#x02212;" ><!--B: minus sign -->
+<!ENTITY mnplus           "&#x02213;" ><!--/mp B: minus-or-plus sign -->
+<!ENTITY nabla            "&#x02207;" ><!--/nabla del, Hamilton operator -->
+<!ENTITY ne               "&#x02260;" ><!--/ne /neq R: not equal -->
+<!ENTITY nedot            "&#x02260;&#x0FE00;" ><!--not equal, dot -->
+<!ENTITY nhpar            "&#x02AF2;" ><!--not, horizontal, parallel -->
+<!ENTITY ni               "&#x0220B;" ><!--/ni /owns R: contains -->
+<!ENTITY nis              "&#x022FC;" ><!--contains, vertical bar on horizontal stroke -->
+<!ENTITY nisd             "&#x022FA;" ><!--contains, long horizontal stroke -->
+<!ENTITY niv              "&#x0220B;" ><!--contains, variant -->
+<!ENTITY Not              "&#x02AEC;" ><!--not with two horizontal strokes -->
+<!ENTITY notin            "&#x02209;" ><!--/notin N: negated set membership -->
+<!ENTITY notindot         "&#x022F6;&#x0FE00;" ><!--negated set membership, dot above -->
+<!ENTITY notinva          "&#x02209;&#x00338;" ><!--negated set membership, variant -->
+<!ENTITY notinvb          "&#x022F7;" ><!--negated set membership, variant -->
+<!ENTITY notinvc          "&#x022F6;" ><!--negated set membership, variant -->
+<!ENTITY notni            "&#x0220C;" ><!--negated contains -->
+<!ENTITY notniva          "&#x0220C;" ><!--negated contains, variant -->
+<!ENTITY notnivb          "&#x022FE;" ><!--contains, variant -->
+<!ENTITY notnivc          "&#x022FD;" ><!--contains, variant -->
+<!ENTITY nparsl           "&#x02225;&#x0FE00;&#x020E5;" ><!--not parallel, slanted -->
+<!ENTITY npart            "&#x02202;&#x00338;" ><!--not partial differential -->
+<!ENTITY npolint          "&#x02A14;" ><!--line integration, not including the pole -->
+<!ENTITY nvinfin          "&#x029DE;" ><!--not, vert, infinity -->
+<!ENTITY olcross          "&#x029BB;" ><!--circle, cross -->
+<!ENTITY or               "&#x02228;" ><!--/vee /lor B: logical or -->
+<!ENTITY Or               "&#x02A54;" ><!--dbl logical or -->
+<!ENTITY ord              "&#x02A5D;" ><!--or, horizontal dash -->
+<!ENTITY order            "&#x02134;" ><!--order of (script small o)  -->
+<!ENTITY oror             "&#x02A56;" ><!--two logical or -->
+<!ENTITY orslope          "&#x02A57;" ><!--sloping large or -->
+<!ENTITY orv              "&#x02A5B;" ><!--or with middle stem -->
+<!ENTITY par              "&#x02225;" ><!--/parallel R: parallel -->
+<!ENTITY parsl            "&#x02225;&#x0FE00;" ><!--parallel, slanted -->
+<!ENTITY part             "&#x02202;" ><!--/partial partial differential -->
+<!ENTITY permil           "&#x02030;" ><!--per thousand -->
+<!ENTITY perp             "&#x022A5;" ><!--/perp R: perpendicular -->
+<!ENTITY pertenk          "&#x02031;" ><!--per 10 thousand -->
+<!ENTITY phmmat           "&#x02133;" ><!--physics M-matrix (script capital M)  -->
+<!ENTITY pointint         "&#x02A15;" ><!--integral around a point operator -->
+<!ENTITY prime            "&#x02032;" ><!--/prime prime or minute -->
+<!ENTITY Prime            "&#x02033;" ><!--double prime or second -->
+<!ENTITY profalar         "&#x0232E;" ><!--all-around profile -->
+<!ENTITY profline         "&#x02312;" ><!--profile of a line -->
+<!ENTITY profsurf         "&#x02313;" ><!--profile of a surface -->
+<!ENTITY prop             "&#x0221D;" ><!--/propto R: is proportional to -->
+<!ENTITY qint             "&#x02A0C;" ><!--/iiiint quadruple integral operator -->
+<!ENTITY qprime           "&#x02057;" ><!--quadruple prime -->
+<!ENTITY quatint          "&#x02A16;" ><!--quaternion integral operator -->
+<!ENTITY radic            "&#x0221A;" ><!--/surd radical -->
+<!ENTITY rang             "&#x0232A;" ><!--/rangle C: right angle bracket -->
+<!ENTITY Rang             "&#x0300B;" ><!--right angle bracket, double -->
+<!ENTITY rArr             "&#x021D2;" ><!--/Rightarrow A: implies -->
+<!ENTITY rbbrk            "&#x03015;" ><!--right broken bracket -->
+<!ENTITY roang            "&#x0F559;" ><!--right open angular bracket -->
+<!ENTITY robrk            "&#x0301B;" ><!--right open bracket -->
+<!ENTITY ropar            "&#x03019;" ><!--right open parenthesis -->
+<!ENTITY rppolint         "&#x02A12;" ><!--line integration, rectangular path around pole -->
+<!ENTITY scpolint         "&#x02A13;" ><!--line integration, semi-circular path around pole -->
+<!ENTITY sim              "&#x0223C;" ><!--/sim R: similar -->
+<!ENTITY simdot           "&#x02A6A;" ><!--similar, dot -->
+<!ENTITY sime             "&#x02243;" ><!--/simeq R: similar, equals -->
+<!ENTITY smeparsl         "&#x029E4;" ><!--similar, parallel, slanted, equal -->
+<!ENTITY square           "&#x025A1;" ><!--/square, square -->
+<!ENTITY squarf           "&#x025AA;" ><!--/blacksquare, square, filled  -->
+<!ENTITY sub              "&#x02282;" ><!--/subset R: subset or is implied by -->
+<!ENTITY sube             "&#x02286;" ><!--/subseteq R: subset, equals -->
+<!ENTITY sup              "&#x02283;" ><!--/supset R: superset or implies -->
+<!ENTITY supe             "&#x02287;" ><!--/supseteq R: superset, equals -->
+<!ENTITY tdot             "&#x020DB;" ><!--three dots above -->
+<!ENTITY there4           "&#x02234;" ><!--/therefore R: therefore -->
+<!ENTITY tint             "&#x0222D;" ><!--/iiint triple integral operator -->
+<!ENTITY top              "&#x022A4;" ><!--/top top -->
+<!ENTITY topbot           "&#x02336;" ><!--top and bottom -->
+<!ENTITY topcir           "&#x02AF1;" ><!--top, circle below -->
+<!ENTITY tprime           "&#x02034;" ><!--triple prime -->
+<!ENTITY utdot            "&#x022F0;" ><!--three dots, ascending -->
+<!ENTITY uwangle          "&#x029A7;" ><!--large upward pointing angle -->
+<!ENTITY vangrt           "&#x022BE;" ><!--right angle, variant -->
+<!ENTITY veeeq            "&#x0225A;" ><!--logical or, equals -->
+<!ENTITY Verbar           "&#x02016;" ><!--/Vert dbl vertical bar -->
+<!ENTITY wedgeq           "&#x02259;" ><!--/wedgeq R: corresponds to (wedge, equals) -->
+<!ENTITY xnis             "&#x022FB;" ><!--large contains, vertical bar on horizontal stroke -->
+
+<!--
+     File mmlalias.ent produced by the XSL script mmldtd.xsl
+     from input data in unicode.xml.
+
+     Please report any errors to 
+     David Carlisle <davidc@nag.co.uk>.
+
+     The numeric character values assigned to each entity
+     (should) match either official Unicode assignments
+     or assignments provisionally allocated by the
+     Unicode Consortium based on the characters in the `STIX'
+     propsal for mathematics. Note that these assignments
+     have not been ratified by the corresponding ISO
+     committee and thus should be considered liable to
+     change.
+
+-->
+
+<!ENTITY angle            "&#x02220;" ><!--alias ISOAMSO ang -->
+<!ENTITY ApplyFunction    "&#x02061;" ><!--character showing function application in presentation tagging -->
+<!ENTITY approx           "&#x02248;" ><!--alias ISOTECH ap -->
+<!ENTITY approxeq         "&#x0224A;" ><!--alias ISOAMSR ape -->
+<!ENTITY Assign           "&#x02254;" ><!--assignment operator, alias ISOAMSR colone -->
+<!ENTITY backcong         "&#x0224C;" ><!--alias ISOAMSR bcong -->
+<!ENTITY backepsilon      "&#x003F6;" ><!--alias ISOAMSR bepsi -->
+<!ENTITY backprime        "&#x02035;" ><!--alias ISOAMSO bprime -->
+<!ENTITY backsim          "&#x0223D;" ><!--alias ISOAMSR bsim -->
+<!ENTITY backsimeq        "&#x022CD;" ><!--alias ISOAMSR bsime -->
+<!ENTITY Backslash        "&#x02216;" ><!--alias ISOAMSB setmn -->
+<!ENTITY barwedge         "&#x022BC;" ><!--alias ISOAMSB barwed -->
+<!ENTITY because          "&#x02235;" ><!--alias ISOTECH becaus -->
+<!ENTITY Because          "&#x02235;" ><!--alias ISOTECH becaus -->
+<!ENTITY Bernoullis       "&#x0212C;" ><!--alias ISOTECH bernou -->
+<!ENTITY between          "&#x0226C;" ><!--alias ISOAMSR twixt -->
+<!ENTITY bigcap           "&#x022C2;" ><!--alias ISOAMSB xcap -->
+<!ENTITY bigcirc          "&#x025EF;" ><!--alias ISOAMSB xcirc -->
+<!ENTITY bigcup           "&#x022C3;" ><!--alias ISOAMSB xcup -->
+<!ENTITY bigodot          "&#x02299;" ><!--alias ISOAMSB xodot -->
+<!ENTITY bigoplus         "&#x02295;" ><!--alias ISOAMSB xoplus -->
+<!ENTITY bigotimes        "&#x02297;" ><!--alias ISOAMSB xotime -->
+<!ENTITY bigsqcup         "&#x02294;" ><!--alias ISOAMSB xsqcup -->
+<!ENTITY bigstar          "&#x02605;" ><!--ISOPUB    starf  -->
+<!ENTITY bigtriangledown  "&#x025BD;" ><!--alias ISOAMSB xdtri -->
+<!ENTITY bigtriangleup    "&#x025B3;" ><!--alias ISOAMSB xutri -->
+<!ENTITY biguplus         "&#x0228E;" ><!--alias ISOAMSB xuplus -->
+<!ENTITY bigvee           "&#x022C1;" ><!--alias ISOAMSB xvee -->
+<!ENTITY bigwedge         "&#x022C0;" ><!--alias ISOAMSB xwedge -->
+<!ENTITY bkarow           "&#x0290D;" ><!--alias ISOAMSA rbarr -->
+<!ENTITY blacklozenge     "&#x029EB;" ><!--alias ISOPUB lozf -->
+<!ENTITY blacksquare      "&#x025AA;" ><!--ISOTECH  squarf  -->
+<!ENTITY blacktriangle    "&#x025B4;" ><!--alias ISOPUB utrif -->
+<!ENTITY blacktriangledown "&#x025BE;" ><!--alias ISOPUB dtrif -->
+<!ENTITY blacktriangleleft "&#x025C2;" ><!--alias ISOPUB ltrif -->
+<!ENTITY blacktriangleright "&#x025B8;" ><!--alias ISOPUB rtrif -->
+<!ENTITY bot              "&#x022A5;" ><!--alias ISOTECH bottom -->
+<!ENTITY boxminus         "&#x0229F;" ><!--alias ISOAMSB minusb -->
+<!ENTITY boxplus          "&#x0229E;" ><!--alias ISOAMSB plusb -->
+<!ENTITY boxtimes         "&#x022A0;" ><!--alias ISOAMSB timesb -->
+<!ENTITY Breve            "&#x002D8;" ><!--alias ISODIA breve -->
+<!ENTITY bullet           "&#x02022;" ><!--alias ISOPUB bull -->
+<!ENTITY bumpeq           "&#x0224F;" ><!--alias ISOAMSR bumpe -->
+<!ENTITY Bumpeq           "&#x0224E;" ><!--alias ISOAMSR bump -->
+<!ENTITY CapitalDifferentialD "&#x02145;" ><!--D for use in differentials, e.g., within integrals -->
+<!ENTITY Cayleys          "&#x0212D;" ><!--the non-associative ring of octonions or Cayley numbers -->
+<!ENTITY Cedilla          "&#x000B8;" ><!--alias ISODIA cedil -->
+<!ENTITY centerdot        "&#x000B7;" ><!--alias ISONUM middot -->
+<!ENTITY CenterDot        "&#x000B7;" ><!--alias ISONUM middot -->
+<!ENTITY checkmark        "&#x02713;" ><!--alias ISOPUB check -->
+<!ENTITY circeq           "&#x02257;" ><!--alias ISOAMSR cire -->
+<!ENTITY circlearrowleft  "&#x021BA;" ><!--alias ISOAMSA olarr -->
+<!ENTITY circlearrowright "&#x021BB;" ><!--alias ISOAMSA orarr -->
+<!ENTITY circledast       "&#x0229B;" ><!--alias ISOAMSB oast -->
+<!ENTITY circledcirc      "&#x0229A;" ><!--alias ISOAMSB ocir -->
+<!ENTITY circleddash      "&#x0229D;" ><!--alias ISOAMSB odash -->
+<!ENTITY CircleDot        "&#x02299;" ><!--alias ISOAMSB odot -->
+<!ENTITY circledR         "&#x000AE;" ><!--alias ISONUM reg -->
+<!ENTITY circledS         "&#x024C8;" ><!--alias ISOAMSO oS -->
+<!ENTITY CircleMinus      "&#x02296;" ><!--alias ISOAMSB ominus -->
+<!ENTITY CirclePlus       "&#x02295;" ><!--alias ISOAMSB oplus -->
+<!ENTITY CircleTimes      "&#x02297;" ><!--alias ISOAMSB otimes -->
+<!ENTITY ClockwiseContourIntegral "&#x02232;" ><!--alias ISOTECH cwconint -->
+<!ENTITY CloseCurlyDoubleQuote "&#x0201D;" ><!--alias ISONUM rdquo -->
+<!ENTITY CloseCurlyQuote  "&#x02019;" ><!--alias ISONUM rsquo -->
+<!ENTITY clubsuit         "&#x02663;" ><!--ISOPUB    clubs  -->
+<!ENTITY coloneq          "&#x02254;" ><!--alias ISOAMSR colone -->
+<!ENTITY complement       "&#x02201;" ><!--alias ISOAMSO comp -->
+<!ENTITY complexes        "&#x02102;" ><!--the field of complex numbers -->
+<!ENTITY Congruent        "&#x02261;" ><!--alias ISOTECH equiv -->
+<!ENTITY ContourIntegral  "&#x0222E;" ><!--alias ISOTECH conint -->
+<!ENTITY Coproduct        "&#x02210;" ><!--alias ISOAMSB coprod -->
+<!ENTITY CounterClockwiseContourIntegral "&#x02233;" ><!--alias ISOTECH awconint -->
+<!ENTITY CupCap           "&#x0224D;" ><!--alias ISOAMSR asymp -->
+<!ENTITY curlyeqprec      "&#x022DE;" ><!--alias ISOAMSR cuepr -->
+<!ENTITY curlyeqsucc      "&#x022DF;" ><!--alias ISOAMSR cuesc -->
+<!ENTITY curlyvee         "&#x022CE;" ><!--alias ISOAMSB cuvee -->
+<!ENTITY curlywedge       "&#x022CF;" ><!--alias ISOAMSB cuwed -->
+<!ENTITY curvearrowleft   "&#x021B6;" ><!--alias ISOAMSA cularr -->
+<!ENTITY curvearrowright  "&#x021B7;" ><!--alias ISOAMSA curarr -->
+<!ENTITY dbkarow          "&#x0290F;" ><!--alias ISOAMSA rBarr -->
+<!ENTITY ddagger          "&#x02021;" ><!--alias ISOPUB Dagger -->
+<!ENTITY ddotseq          "&#x02A77;" ><!--alias ISOAMSR eDDot -->
+<!ENTITY Del              "&#x02207;" ><!--alias ISOTECH nabla -->
+<!ENTITY DiacriticalAcute "&#x000B4;" ><!--alias ISODIA acute -->
+<!ENTITY DiacriticalDot   "&#x002D9;" ><!--alias ISODIA dot -->
+<!ENTITY DiacriticalDoubleAcute "&#x002DD;" ><!--alias ISODIA dblac -->
+<!ENTITY DiacriticalGrave "&#x00060;" ><!--alias ISODIA grave -->
+<!ENTITY DiacriticalTilde "&#x002DC;" ><!--alias ISODIA tilde -->
+<!ENTITY diamond          "&#x022C4;" ><!--alias ISOAMSB diam -->
+<!ENTITY Diamond          "&#x022C4;" ><!--alias ISOAMSB diam -->
+<!ENTITY diamondsuit      "&#x02666;" ><!--ISOPUB    diams  -->
+<!ENTITY DifferentialD    "&#x02146;" ><!--d for use in differentials, e.g., within integrals -->
+<!ENTITY digamma          "&#x003DC;" ><!--alias ISOGRK3 gammad -->
+<!ENTITY div              "&#x000F7;" ><!--alias ISONUM divide -->
+<!ENTITY divideontimes    "&#x022C7;" ><!--alias ISOAMSB divonx -->
+<!ENTITY doteq            "&#x02250;" ><!--alias ISOAMSR esdot -->
+<!ENTITY doteqdot         "&#x02251;" ><!--alias ISOAMSR eDot -->
+<!ENTITY DotEqual         "&#x02250;" ><!--alias ISOAMSR esdot -->
+<!ENTITY dotminus         "&#x02238;" ><!--alias ISOAMSB minusd -->
+<!ENTITY dotplus          "&#x02214;" ><!--alias ISOAMSB plusdo -->
+<!ENTITY dotsquare        "&#x022A1;" ><!--alias ISOAMSB sdotb -->
+<!ENTITY doublebarwedge   "&#x02306;" ><!--alias ISOAMSB Barwed -->
+<!ENTITY DoubleContourIntegral "&#x0222F;" ><!--alias ISOTECH Conint -->
+<!ENTITY DoubleDot        "&#x000A8;" ><!--alias ISODIA die -->
+<!ENTITY DoubleDownArrow  "&#x021D3;" ><!--alias ISOAMSA dArr -->
+<!ENTITY DoubleLeftArrow  "&#x021D0;" ><!--alias ISOTECH lArr -->
+<!ENTITY DoubleLeftRightArrow "&#x021D4;" ><!--alias ISOAMSA hArr -->
+<!ENTITY DoubleLeftTee    "&#x02AE4;" ><!--alias for  &Dashv;  -->
+<!ENTITY DoubleLongLeftArrow "&#x0F579;" ><!--alias ISOAMSA xlArr -->
+<!ENTITY DoubleLongLeftRightArrow "&#x0F57B;" ><!--alias ISOAMSA xhArr -->
+<!ENTITY DoubleLongRightArrow "&#x0F57A;" ><!--alias ISOAMSA xrArr -->
+<!ENTITY DoubleRightArrow "&#x021D2;" ><!--alias ISOTECH rArr -->
+<!ENTITY DoubleRightTee   "&#x022A8;" ><!--alias ISOAMSR vDash -->
+<!ENTITY DoubleUpArrow    "&#x021D1;" ><!--alias ISOAMSA uArr -->
+<!ENTITY DoubleUpDownArrow "&#x021D5;" ><!--alias ISOAMSA vArr -->
+<!ENTITY DoubleVerticalBar "&#x02225;" ><!--alias ISOTECH par -->
+<!ENTITY downarrow        "&#x02193;" ><!--alias ISONUM darr -->
+<!ENTITY Downarrow        "&#x021D3;" ><!--alias ISOAMSA dArr -->
+<!ENTITY DownArrow        "&#x02193;" ><!--alias ISONUM darr -->
+<!ENTITY DownArrowUpArrow "&#x021F5;" ><!--alias ISOAMSA duarr -->
+<!ENTITY downdownarrows   "&#x021CA;" ><!--alias ISOAMSA ddarr -->
+<!ENTITY downharpoonleft  "&#x021C3;" ><!--alias ISOAMSA dharl -->
+<!ENTITY downharpoonright "&#x021C2;" ><!--alias ISOAMSA dharr -->
+<!ENTITY DownLeftVector   "&#x021BD;" ><!--alias ISOAMSA lhard -->
+<!ENTITY DownRightVector  "&#x021C1;" ><!--alias ISOAMSA rhard -->
+<!ENTITY DownTee          "&#x022A4;" ><!--alias ISOTECH top -->
+<!ENTITY DownTeeArrow     "&#x021A7;" ><!--alias for mapstodown -->
+<!ENTITY drbkarow         "&#x02910;" ><!--alias ISOAMSA RBarr -->
+<!ENTITY Element          "&#x02208;" ><!--alias ISOTECH isinv -->
+<!ENTITY emptyset         "&#x02205;&#x0FE00;" ><!--alias ISOAMSO empty -->
+<!ENTITY eqcirc           "&#x02256;" ><!--alias ISOAMSR ecir -->
+<!ENTITY eqcolon          "&#x02255;" ><!--alias ISOAMSR ecolon -->
+<!ENTITY eqsim            "&#x02242;" ><!--alias ISOAMSR esim -->
+<!ENTITY eqslantgtr       "&#x022DD;" ><!--alias ISOAMSR egs -->
+<!ENTITY eqslantless      "&#x022DC;" ><!--alias ISOAMSR els -->
+<!ENTITY EqualTilde       "&#x02242;" ><!--alias ISOAMSR esim -->
+<!ENTITY Equilibrium      "&#x021CC;" ><!--alias ISOAMSA rlhar -->
+<!ENTITY Exists           "&#x02203;" ><!--alias ISOTECH exist -->
+<!ENTITY expectation      "&#x02130;" ><!--expectation (operator) -->
+<!ENTITY exponentiale     "&#x02147;" ><!--base of the Napierian logarithms -->
+<!ENTITY ExponentialE     "&#x02147;" ><!--e use for the exponential base of the natural logarithms -->
+<!ENTITY fallingdotseq    "&#x02252;" ><!--alias ISOAMSR efDot -->
+<!ENTITY ForAll           "&#x02200;" ><!--alias ISOTECH forall -->
+<!ENTITY Fouriertrf       "&#x02131;" ><!--Fourier transform -->
+<!ENTITY geq              "&#x02265;" ><!--alias ISOTECH ge -->
+<!ENTITY geqq             "&#x02267;" ><!--alias ISOAMSR gE -->
+<!ENTITY geqslant         "&#x02A7E;" ><!--alias ISOAMSR ges -->
+<!ENTITY gg               "&#x0226B;" ><!--alias ISOAMSR Gt -->
+<!ENTITY ggg              "&#x022D9;" ><!--alias ISOAMSR Gg -->
+<!ENTITY gnapprox         "&#x02A8A;" ><!--alias ISOAMSN gnap -->
+<!ENTITY gneq             "&#x02269;" ><!--alias ISOAMSN gne -->
+<!ENTITY gneqq            "&#x02269;" ><!--alias ISOAMSN gnE -->
+<!ENTITY GreaterEqual     "&#x02265;" ><!--alias ISOTECH ge -->
+<!ENTITY GreaterEqualLess "&#x022DB;" ><!--alias ISOAMSR gel -->
+<!ENTITY GreaterFullEqual "&#x02267;" ><!--alias ISOAMSR gE -->
+<!ENTITY GreaterLess      "&#x02277;" ><!--alias ISOAMSR gl -->
+<!ENTITY GreaterSlantEqual "&#x02A7E;" ><!--alias ISOAMSR ges -->
+<!ENTITY GreaterTilde     "&#x02273;" ><!--alias ISOAMSR gsim -->
+<!ENTITY gtrapprox        "&#x02273;" ><!--alias ISOAMSR gap -->
+<!ENTITY gtrdot           "&#x022D7;" ><!--alias ISOAMSR gtdot -->
+<!ENTITY gtreqless        "&#x022DB;" ><!--alias ISOAMSR gel -->
+<!ENTITY gtreqqless       "&#x022DB;" ><!--alias ISOAMSR gEl -->
+<!ENTITY gtrless          "&#x02277;" ><!--alias ISOAMSR gl -->
+<!ENTITY gtrsim           "&#x02273;" ><!--alias ISOAMSR gsim -->
+<!ENTITY gvertneqq        "&#x02269;&#x0FE00;" ><!--alias ISOAMSN gvnE -->
+<!ENTITY Hacek            "&#x002C7;" ><!--alias ISODIA caron -->
+<!ENTITY Hat              "&#x00302;" ><!--circumflex accent (circ in ISODIA) -->
+<!ENTITY hbar             "&#x0210F;&#x0FE00;" ><!--alias ISOAMSO plank -->
+<!ENTITY heartsuit        "&#x02661;" ><!--ISOPUB    hearts  -->
+<!ENTITY HilbertSpace     "&#x0210B;" ><!--Hilbert space -->
+<!ENTITY hksearow         "&#x02925;" ><!--alias ISOAMSA searhk -->
+<!ENTITY hkswarow         "&#x02926;" ><!--alias ISOAMSA swarhk -->
+<!ENTITY hookleftarrow    "&#x021A9;" ><!--alias ISOAMSA larrhk -->
+<!ENTITY hookrightarrow   "&#x021AA;" ><!--alias ISOAMSA rarrhk -->
+<!ENTITY hslash           "&#x0210F;" ><!--alias ISOAMSO plankv -->
+<!ENTITY HumpDownHump     "&#x0224E;" ><!--alias ISOAMSR bump -->
+<!ENTITY HumpEqual        "&#x0224F;" ><!--alias ISOAMSR bumpe -->
+<!ENTITY iiiint           "&#x02A0C;" ><!--alias ISOTECH qint -->
+<!ENTITY iiint            "&#x0222D;" ><!--alias ISOTECH tint -->
+<!ENTITY Im               "&#x02111;" ><!--alias ISOAMSO image -->
+<!ENTITY ImaginaryI       "&#x02148;" ><!--i for use as a square root of -1 -->
+<!ENTITY imagline         "&#x02110;" ><!--the geometric imaginary line -->
+<!ENTITY imagpart         "&#x02111;" ><!--alias ISOAMSO image -->
+<!ENTITY Implies          "&#x021D2;" ><!--alias ISOTECH rArr -->
+<!ENTITY in               "&#x02208;" ><!--ISOTECH   isin  -->
+<!ENTITY integers         "&#x02124;" ><!--the ring of integers -->
+<!ENTITY Integral         "&#x0222B;" ><!--alias ISOTECH int -->
+<!ENTITY intercal         "&#x022BA;" ><!--alias ISOAMSB intcal -->
+<!ENTITY Intersection     "&#x022C2;" ><!--alias ISOAMSB xcap -->
+<!ENTITY intprod          "&#x02A3C;" ><!--alias ISOAMSB iprod -->
+<!ENTITY InvisibleComma   "&#x0200B;" ><!--used as a separator, e.g., in indices -->
+<!ENTITY InvisibleTimes   "&#x02062;" ><!--marks multiplication when it is understood without a mark -->
+<!ENTITY langle           "&#x02329;" ><!--alias ISOTECH lang -->
+<!ENTITY Laplacetrf       "&#x02112;" ><!--Laplace transform -->
+<!ENTITY lbrace           "&#x0007B;" ><!--alias ISONUM lcub -->
+<!ENTITY lbrack           "&#x0005B;" ><!--alias ISONUM lsqb -->
+<!ENTITY LeftAngleBracket "&#x02329;" ><!--alias ISOTECH lang -->
+<!ENTITY leftarrow        "&#x02190;" ><!--alias ISONUM larr -->
+<!ENTITY Leftarrow        "&#x021D0;" ><!--alias ISOTECH lArr -->
+<!ENTITY LeftArrow        "&#x02190;" ><!--alias ISONUM larr -->
+<!ENTITY LeftArrowBar     "&#x021E4;" ><!--alias for larrb -->
+<!ENTITY LeftArrowRightArrow "&#x021C6;" ><!--alias ISOAMSA lrarr -->
+<!ENTITY leftarrowtail    "&#x021A2;" ><!--alias ISOAMSA larrtl -->
+<!ENTITY LeftCeiling      "&#x02308;" ><!--alias ISOAMSC lceil -->
+<!ENTITY LeftDoubleBracket "&#x0301A;" ><!--left double bracket delimiter -->
+<!ENTITY LeftDownVector   "&#x021C3;" ><!--alias ISOAMSA dharl -->
+<!ENTITY LeftFloor        "&#x0230A;" ><!--alias ISOAMSC lfloor -->
+<!ENTITY leftharpoondown  "&#x021BD;" ><!--alias ISOAMSA lhard -->
+<!ENTITY leftharpoonup    "&#x021BC;" ><!--alias ISOAMSA lharu -->
+<!ENTITY leftleftarrows   "&#x021C7;" ><!--alias ISOAMSA llarr -->
+<!ENTITY leftrightarrow   "&#x02194;" ><!--alias ISOAMSA harr -->
+<!ENTITY Leftrightarrow   "&#x021D4;" ><!--alias ISOAMSA hArr -->
+<!ENTITY LeftRightArrow   "&#x02194;" ><!--alias ISOAMSA harr -->
+<!ENTITY leftrightarrows  "&#x021C6;" ><!--alias ISOAMSA lrarr -->
+<!ENTITY leftrightharpoons "&#x021CB;" ><!--alias ISOAMSA lrhar -->
+<!ENTITY leftrightsquigarrow "&#x021AD;" ><!--alias ISOAMSA harrw -->
+<!ENTITY LeftTee          "&#x022A3;" ><!--alias ISOAMSR dashv -->
+<!ENTITY LeftTeeArrow     "&#x021A4;" ><!--alias for mapstoleft -->
+<!ENTITY leftthreetimes   "&#x022CB;" ><!--alias ISOAMSB lthree -->
+<!ENTITY LeftTriangle     "&#x022B2;" ><!--alias ISOAMSR vltri -->
+<!ENTITY LeftTriangleEqual "&#x022B4;" ><!--alias ISOAMSR ltrie -->
+<!ENTITY LeftUpVector     "&#x021BF;" ><!--alias ISOAMSA uharl -->
+<!ENTITY LeftVector       "&#x021BC;" ><!--alias ISOAMSA lharu -->
+<!ENTITY leq              "&#x02264;" ><!--alias ISOTECH le -->
+<!ENTITY leqq             "&#x02266;" ><!--alias ISOAMSR lE -->
+<!ENTITY leqslant         "&#x02A7D;" ><!--alias ISOAMSR les -->
+<!ENTITY lessapprox       "&#x02272;" ><!--alias ISOAMSR lap -->
+<!ENTITY lessdot          "&#x022D6;" ><!--alias ISOAMSR ltdot -->
+<!ENTITY lesseqgtr        "&#x022DA;" ><!--alias ISOAMSR leg -->
+<!ENTITY lesseqqgtr       "&#x022DA;" ><!--alias ISOAMSR lEg -->
+<!ENTITY LessEqualGreater "&#x022DA;" ><!--alias ISOAMSR leg -->
+<!ENTITY LessFullEqual    "&#x02266;" ><!--alias ISOAMSR lE -->
+<!ENTITY LessGreater      "&#x02276;" ><!--alias ISOAMSR lg -->
+<!ENTITY lessgtr          "&#x02276;" ><!--alias ISOAMSR lg -->
+<!ENTITY lesssim          "&#x02272;" ><!--alias ISOAMSR lsim -->
+<!ENTITY LessSlantEqual   "&#x02A7D;" ><!--alias ISOAMSR les -->
+<!ENTITY LessTilde        "&#x02272;" ><!--alias ISOAMSR lsim -->
+<!ENTITY ll               "&#x0226A;" ><!--alias ISOAMSR Lt -->
+<!ENTITY llcorner         "&#x0231E;" ><!--alias ISOAMSC dlcorn -->
+<!ENTITY Lleftarrow       "&#x021DA;" ><!--alias ISOAMSA lAarr -->
+<!ENTITY lmoustache       "&#x023B0;" ><!--alias ISOAMSC lmoust -->
+<!ENTITY lnapprox         "&#x02A89;" ><!--alias ISOAMSN lnap -->
+<!ENTITY lneq             "&#x02268;" ><!--alias ISOAMSN lne -->
+<!ENTITY lneqq            "&#x02268;" ><!--alias ISOAMSN lnE -->
+<!ENTITY longleftarrow    "&#x0F576;" ><!--alias ISOAMSA xlarr -->
+<!ENTITY Longleftarrow    "&#x0F579;" ><!--alias ISOAMSA xlArr -->
+<!ENTITY LongLeftArrow    "&#x0F576;" ><!--alias ISOAMSA xlarr -->
+<!ENTITY longleftrightarrow "&#x0F578;" ><!--alias ISOAMSA xharr -->
+<!ENTITY Longleftrightarrow "&#x0F57B;" ><!--alias ISOAMSA xhArr -->
+<!ENTITY LongLeftRightArrow "&#x0F578;" ><!--alias ISOAMSA xharr -->
+<!ENTITY longmapsto       "&#x0F57D;" ><!--alias ISOAMSA xmap -->
+<!ENTITY longrightarrow   "&#x0F577;" ><!--alias ISOAMSA xrarr -->
+<!ENTITY Longrightarrow   "&#x0F57A;" ><!--alias ISOAMSA xrArr -->
+<!ENTITY LongRightArrow   "&#x0F577;" ><!--alias ISOAMSA xrarr -->
+<!ENTITY looparrowleft    "&#x021AB;" ><!--alias ISOAMSA larrlp -->
+<!ENTITY looparrowright   "&#x021AC;" ><!--alias ISOAMSA rarrlp -->
+<!ENTITY LowerLeftArrow   "&#x02199;" ><!--alias ISOAMSA swarr -->
+<!ENTITY LowerRightArrow  "&#x02198;" ><!--alias ISOAMSA searr -->
+<!ENTITY lozenge          "&#x025CA;" ><!--alias ISOPUB loz -->
+<!ENTITY lrcorner         "&#x0231F;" ><!--alias ISOAMSC drcorn -->
+<!ENTITY Lsh              "&#x021B0;" ><!--alias ISOAMSA lsh -->
+<!ENTITY lvertneqq        "&#x02268;&#x0FE00;" ><!--alias ISOAMSN lvnE -->
+<!ENTITY maltese          "&#x02720;" ><!--alias ISOPUB malt -->
+<!ENTITY mapsto           "&#x021A6;" ><!--alias ISOAMSA map -->
+<!ENTITY measuredangle    "&#x02221;" ><!--alias ISOAMSO angmsd -->
+<!ENTITY Mellintrf        "&#x02133;" ><!--Mellin transform -->
+<!ENTITY MinusPlus        "&#x02213;" ><!--alias ISOTECH mnplus -->
+<!ENTITY mp               "&#x02213;" ><!--alias ISOTECH mnplus -->
+<!ENTITY multimap         "&#x022B8;" ><!--alias ISOAMSA mumap -->
+<!ENTITY napprox          "&#x02249;" ><!--alias ISOAMSN nap -->
+<!ENTITY natural          "&#x0266E;" ><!--alias ISOPUB natur -->
+<!ENTITY naturals         "&#x02115;" ><!--the semi-ring of natural numbers -->
+<!ENTITY nearrow          "&#x02197;" ><!--alias ISOAMSA nearr -->
+<!ENTITY NestedGreaterGreater "&#x0226B;" ><!--alias ISOAMSR Gt -->
+<!ENTITY NestedLessLess   "&#x0226A;" ><!--alias ISOAMSR Lt -->
+<!ENTITY nexists          "&#x02204;" ><!--alias ISOAMSO nexist -->
+<!ENTITY ngeq             "&#x02271;&#x020E5;" ><!--alias ISOAMSN nge -->
+<!ENTITY ngeqq            "&#x02271;" ><!--alias ISOAMSN ngE -->
+<!ENTITY ngeqslant        "&#x02271;" ><!--alias ISOAMSN nges -->
+<!ENTITY ngtr             "&#x0226F;" ><!--alias ISOAMSN ngt -->
+<!ENTITY nleftarrow       "&#x0219A;" ><!--alias ISOAMSA nlarr -->
+<!ENTITY nLeftarrow       "&#x021CD;" ><!--alias ISOAMSA nlArr -->
+<!ENTITY nleftrightarrow  "&#x021AE;" ><!--alias ISOAMSA nharr -->
+<!ENTITY nLeftrightarrow  "&#x021CE;" ><!--alias ISOAMSA nhArr -->
+<!ENTITY nleq             "&#x02270;&#x020E5;" ><!--alias ISOAMSN nle -->
+<!ENTITY nleqq            "&#x02270;" ><!--alias ISOAMSN nlE -->
+<!ENTITY nleqslant        "&#x02270;" ><!--alias ISOAMSN nles -->
+<!ENTITY nless            "&#x0226E;" ><!--alias ISOAMSN nlt -->
+<!ENTITY NonBreakingSpace "&#x000A0;" ><!--alias ISONUM nbsp -->
+<!ENTITY NotCongruent     "&#x02262;" ><!--alias ISOAMSN nequiv -->
+<!ENTITY NotDoubleVerticalBar "&#x02226;" ><!--alias ISOAMSN npar -->
+<!ENTITY NotElement       "&#x02209;" ><!--alias ISOTECH notin -->
+<!ENTITY NotEqual         "&#x02260;" ><!--alias ISOTECH ne -->
+<!ENTITY NotEqualTilde    "&#x02242;&#x00338;" ><!--alias for  &nesim; -->
+<!ENTITY NotExists        "&#x02204;" ><!--alias ISOAMSO nexist -->
+<!ENTITY NotGreater       "&#x0226F;" ><!--alias ISOAMSN ngt -->
+<!ENTITY NotGreaterEqual  "&#x02271;&#x020E5;" ><!--alias ISOAMSN nge -->
+<!ENTITY NotGreaterFullEqual "&#x02270;" ><!--alias ISOAMSN nlE -->
+<!ENTITY NotGreaterGreater "&#x0226B;&#x00338;&#x0FE00;" ><!--alias ISOAMSN nGtv -->
+<!ENTITY NotGreaterLess   "&#x02279;" ><!--alias ISOAMSN ntvgl -->
+<!ENTITY NotGreaterSlantEqual "&#x02271;" ><!--alias ISOAMSN nges -->
+<!ENTITY NotGreaterTilde  "&#x02275;" ><!--alias ISOAMSN ngsim -->
+<!ENTITY NotHumpDownHump  "&#x0224E;&#x00338;" ><!--alias for &nbump; -->
+<!ENTITY NotLeftTriangle  "&#x022EA;" ><!--alias ISOAMSN nltri -->
+<!ENTITY NotLeftTriangleEqual "&#x022EC;" ><!--alias ISOAMSN nltrie -->
+<!ENTITY NotLess          "&#x0226E;" ><!--alias ISOAMSN nlt -->
+<!ENTITY NotLessEqual     "&#x02270;&#x020E5;" ><!--alias ISOAMSN nle -->
+<!ENTITY NotLessGreater   "&#x02278;" ><!--alias ISOAMSN ntvlg -->
+<!ENTITY NotLessLess      "&#x0226A;&#x00338;&#x0FE00;" ><!--alias ISOAMSN nLtv -->
+<!ENTITY NotLessSlantEqual "&#x02270;" ><!--alias ISOAMSN nles -->
+<!ENTITY NotLessTilde     "&#x02274;" ><!--alias ISOAMSN nlsim -->
+<!ENTITY NotPrecedes      "&#x02280;" ><!--alias ISOAMSN npr -->
+<!ENTITY NotPrecedesEqual "&#x02AAF;&#x00338;" ><!--alias ISOAMSN npre -->
+<!ENTITY NotPrecedesSlantEqual "&#x022E0;" ><!--alias ISOAMSN nprcue -->
+<!ENTITY NotReverseElement "&#x0220C;" ><!--alias ISOTECH notniva -->
+<!ENTITY NotRightTriangle "&#x022EB;" ><!--alias ISOAMSN nrtri -->
+<!ENTITY NotRightTriangleEqual "&#x022ED;" ><!--alias ISOAMSN nrtrie -->
+<!ENTITY NotSquareSubsetEqual "&#x022E2;" ><!--alias ISOAMSN nsqsube -->
+<!ENTITY NotSquareSupersetEqual "&#x022E3;" ><!--alias ISOAMSN nsqsupe -->
+<!ENTITY NotSubset        "&#x02284;" ><!--alias ISOAMSN vnsub -->
+<!ENTITY NotSubsetEqual   "&#x02288;" ><!--alias ISOAMSN nsube -->
+<!ENTITY NotSucceeds      "&#x02281;" ><!--alias ISOAMSN nsc -->
+<!ENTITY NotSucceedsEqual "&#x02AB0;&#x00338;" ><!--alias ISOAMSN nsce -->
+<!ENTITY NotSucceedsSlantEqual "&#x022E1;" ><!--alias ISOAMSN nsccue -->
+<!ENTITY NotSuperset      "&#x02285;" ><!--alias ISOAMSN vnsup -->
+<!ENTITY NotSupersetEqual "&#x02289;" ><!--alias ISOAMSN nsupe -->
+<!ENTITY NotTilde         "&#x02241;" ><!--alias ISOAMSN nsim -->
+<!ENTITY NotTildeEqual    "&#x02244;" ><!--alias ISOAMSN nsime -->
+<!ENTITY NotTildeFullEqual "&#x02247;" ><!--alias ISOAMSN ncong -->
+<!ENTITY NotTildeTilde    "&#x02249;" ><!--alias ISOAMSN nap -->
+<!ENTITY NotVerticalBar   "&#x02224;" ><!--alias ISOAMSN nmid -->
+<!ENTITY nparallel        "&#x02226;" ><!--alias ISOAMSN npar -->
+<!ENTITY nprec            "&#x02280;" ><!--alias ISOAMSN npr -->
+<!ENTITY npreceq          "&#x02AAF;&#x00338;" ><!--alias ISOAMSN npre -->
+<!ENTITY nrightarrow      "&#x0219B;" ><!--alias ISOAMSA nrarr -->
+<!ENTITY nRightarrow      "&#x021CF;" ><!--alias ISOAMSA nrArr -->
+<!ENTITY nshortmid        "&#x02224;&#x0FE00;" ><!--alias ISOAMSN nsmid -->
+<!ENTITY nshortparallel   "&#x02226;&#x0FE00;" ><!--alias ISOAMSN nspar -->
+<!ENTITY nsimeq           "&#x02244;" ><!--alias ISOAMSN nsime -->
+<!ENTITY nsubset          "&#x02284;" ><!--alias ISOAMSN vnsub -->
+<!ENTITY nsubseteq        "&#x02288;" ><!--alias ISOAMSN nsube -->
+<!ENTITY nsubseteqq       "&#x02288;" ><!--alias ISOAMSN nsubE -->
+<!ENTITY nsucc            "&#x02281;" ><!--alias ISOAMSN nsc -->
+<!ENTITY nsucceq          "&#x02AB0;&#x00338;" ><!--alias ISOAMSN nsce -->
+<!ENTITY nsupset          "&#x02285;" ><!--alias ISOAMSN vnsup -->
+<!ENTITY nsupseteq        "&#x02289;" ><!--alias ISOAMSN nsupe -->
+<!ENTITY nsupseteqq       "&#x02289;" ><!--alias ISOAMSN nsupE -->
+<!ENTITY ntriangleleft    "&#x022EA;" ><!--alias ISOAMSN nltri -->
+<!ENTITY ntrianglelefteq  "&#x022EC;" ><!--alias ISOAMSN nltrie -->
+<!ENTITY ntriangleright   "&#x022EB;" ><!--alias ISOAMSN nrtri -->
+<!ENTITY ntrianglerighteq "&#x022ED;" ><!--alias ISOAMSN nrtrie -->
+<!ENTITY nwarrow          "&#x02196;" ><!--alias ISOAMSA nwarr -->
+<!ENTITY oint             "&#x0222E;" ><!--alias ISOTECH conint -->
+<!ENTITY OpenCurlyDoubleQuote "&#x0201C;" ><!--alias ISONUM ldquo -->
+<!ENTITY OpenCurlyQuote   "&#x02018;" ><!--alias ISONUM lsquo -->
+<!ENTITY orderof          "&#x02134;" ><!--alias ISOTECH order -->
+<!ENTITY parallel         "&#x02225;" ><!--alias ISOTECH par -->
+<!ENTITY PartialD         "&#x02202;" ><!--alias ISOTECH part -->
+<!ENTITY pitchfork        "&#x022D4;" ><!--alias ISOAMSR fork -->
+<!ENTITY PlusMinus        "&#x000B1;" ><!--alias ISONUM plusmn -->
+<!ENTITY pm               "&#x000B1;" ><!--alias ISONUM plusmn -->
+<!ENTITY Poincareplane    "&#x0210C;" ><!--the Poincare upper half-plane -->
+<!ENTITY prec             "&#x0227A;" ><!--alias ISOAMSR pr -->
+<!ENTITY precapprox       "&#x0227E;" ><!--alias ISOAMSR prap -->
+<!ENTITY preccurlyeq      "&#x0227C;" ><!--alias ISOAMSR prcue -->
+<!ENTITY Precedes         "&#x0227A;" ><!--alias ISOAMSR pr -->
+<!ENTITY PrecedesEqual    "&#x02AAF;" ><!--alias ISOAMSR pre -->
+<!ENTITY PrecedesSlantEqual "&#x0227C;" ><!--alias ISOAMSR prcue -->
+<!ENTITY PrecedesTilde    "&#x0227E;" ><!--alias ISOAMSR prsim -->
+<!ENTITY preceq           "&#x02AAF;" ><!--alias ISOAMSR pre -->
+<!ENTITY precnapprox      "&#x022E8;" ><!--alias ISOAMSN prnap -->
+<!ENTITY precneqq         "&#x02AB5;" ><!--alias ISOAMSN prnE -->
+<!ENTITY precnsim         "&#x022E8;" ><!--alias ISOAMSN prnsim -->
+<!ENTITY precsim          "&#x0227E;" ><!--alias ISOAMSR prsim -->
+<!ENTITY primes           "&#x02119;" ><!--the prime natural numbers -->
+<!ENTITY Proportion       "&#x02237;" ><!--alias ISOAMSR Colon -->
+<!ENTITY Proportional     "&#x0221D;" ><!--alias ISOTECH prop -->
+<!ENTITY propto           "&#x0221D;" ><!--alias ISOTECH prop -->
+<!ENTITY quaternions      "&#x0210D;" ><!--the ring (skew field) of quaternions -->
+<!ENTITY questeq          "&#x0225F;" ><!--alias ISOAMSR equest -->
+<!ENTITY rangle           "&#x0232A;" ><!--alias ISOTECH rang -->
+<!ENTITY rationals        "&#x0211A;" ><!--the field of rational numbers -->
+<!ENTITY rbrace           "&#x0007D;" ><!--alias ISONUM rcub -->
+<!ENTITY rbrack           "&#x0005D;" ><!--alias ISONUM rsqb -->
+<!ENTITY Re               "&#x0211C;" ><!--alias ISOAMSO real -->
+<!ENTITY realine          "&#x0211B;" ><!--the geometric real line -->
+<!ENTITY realpart         "&#x0211C;" ><!--alias ISOAMSO real -->
+<!ENTITY reals            "&#x0211D;" ><!--the field of real numbers -->
+<!ENTITY ReverseElement   "&#x0220B;" ><!--alias ISOTECH niv -->
+<!ENTITY ReverseEquilibrium "&#x021CB;" ><!--alias ISOAMSA lrhar -->
+<!ENTITY ReverseUpEquilibrium "&#x0296F;" ><!--alias ISOAMSA duhar -->
+<!ENTITY RightAngleBracket "&#x0232A;" ><!--alias ISOTECH rang -->
+<!ENTITY rightarrow       "&#x02192;" ><!--alias ISONUM rarr -->
+<!ENTITY Rightarrow       "&#x021D2;" ><!--alias ISOTECH rArr -->
+<!ENTITY RightArrow       "&#x02192;" ><!--alias ISONUM rarr -->
+<!ENTITY RightArrowBar    "&#x021E5;" ><!--alias for rarrb -->
+<!ENTITY RightArrowLeftArrow "&#x021C4;" ><!--alias ISOAMSA rlarr -->
+<!ENTITY rightarrowtail   "&#x021A3;" ><!--alias ISOAMSA rarrtl -->
+<!ENTITY RightCeiling     "&#x02309;" ><!--alias ISOAMSC rceil -->
+<!ENTITY RightDoubleBracket "&#x0301B;" ><!--right double bracket delimiter -->
+<!ENTITY RightDownVector  "&#x021C2;" ><!--alias ISOAMSA dharr -->
+<!ENTITY RightFloor       "&#x0230B;" ><!--alias ISOAMSC rfloor -->
+<!ENTITY rightharpoondown "&#x021C1;" ><!--alias ISOAMSA rhard -->
+<!ENTITY rightharpoonup   "&#x021C0;" ><!--alias ISOAMSA rharu -->
+<!ENTITY rightleftarrows  "&#x021C4;" ><!--alias ISOAMSA rlarr -->
+<!ENTITY rightleftharpoons "&#x021CC;" ><!--alias ISOAMSA rlhar -->
+<!ENTITY rightrightarrows "&#x021C9;" ><!--alias ISOAMSA rrarr -->
+<!ENTITY rightsquigarrow  "&#x0219D;" ><!--alias ISOAMSA rarrw -->
+<!ENTITY RightTee         "&#x022A2;" ><!--alias ISOAMSR vdash -->
+<!ENTITY RightTeeArrow    "&#x021A6;" ><!--alias ISOAMSA map -->
+<!ENTITY rightthreetimes  "&#x022CC;" ><!--alias ISOAMSB rthree -->
+<!ENTITY RightTriangle    "&#x022B3;" ><!--alias ISOAMSR vrtri -->
+<!ENTITY RightTriangleEqual "&#x022B5;" ><!--alias ISOAMSR rtrie -->
+<!ENTITY RightUpVector    "&#x021BE;" ><!--alias ISOAMSA uharr -->
+<!ENTITY RightVector      "&#x021C0;" ><!--alias ISOAMSA rharu -->
+<!ENTITY risingdotseq     "&#x02253;" ><!--alias ISOAMSR erDot -->
+<!ENTITY rmoustache       "&#x023B1;" ><!--alias ISOAMSC rmoust -->
+<!ENTITY Rrightarrow      "&#x021DB;" ><!--alias ISOAMSA rAarr -->
+<!ENTITY Rsh              "&#x021B1;" ><!--alias ISOAMSA rsh -->
+<!ENTITY searrow          "&#x02198;" ><!--alias ISOAMSA searr -->
+<!ENTITY setminus         "&#x02216;" ><!--alias ISOAMSB setmn -->
+<!ENTITY ShortLeftArrow   "&#x02190;&#x0FE00;" ><!--alias ISOAMSA slarr -->
+<!ENTITY shortmid         "&#x02223;&#x0FE00;" ><!--alias ISOAMSR smid -->
+<!ENTITY shortparallel    "&#x02225;&#x0FE00;" ><!--alias ISOAMSR spar -->
+<!ENTITY ShortRightArrow  "&#x02192;&#x0FE00;" ><!--alias ISOAMSA srarr -->
+<!ENTITY simeq            "&#x02243;" ><!--alias ISOTECH sime -->
+<!ENTITY SmallCircle      "&#x02218;" ><!--alias ISOTECH compfn -->
+<!ENTITY smallsetminus    "&#x02216;&#x0FE00;" ><!--alias ISOAMSB ssetmn -->
+<!ENTITY spadesuit        "&#x02660;" ><!--ISOPUB    spades  -->
+<!ENTITY Sqrt             "&#x0221A;" ><!--alias ISOTECH radic -->
+<!ENTITY sqsubset         "&#x0228F;" ><!--alias ISOAMSR sqsub -->
+<!ENTITY sqsubseteq       "&#x02291;" ><!--alias ISOAMSR sqsube -->
+<!ENTITY sqsupset         "&#x02290;" ><!--alias ISOAMSR sqsup -->
+<!ENTITY sqsupseteq       "&#x02292;" ><!--alias ISOAMSR sqsupe -->
+<!ENTITY Square           "&#x025A1;" ><!--alias for square -->
+<!ENTITY SquareIntersection "&#x02293;" ><!--alias ISOAMSB sqcap -->
+<!ENTITY SquareSubset     "&#x0228F;" ><!--alias ISOAMSR sqsub -->
+<!ENTITY SquareSubsetEqual "&#x02291;" ><!--alias ISOAMSR sqsube -->
+<!ENTITY SquareSuperset   "&#x02290;" ><!--alias ISOAMSR sqsup -->
+<!ENTITY SquareSupersetEqual "&#x02292;" ><!--alias ISOAMSR sqsupe -->
+<!ENTITY SquareUnion      "&#x02294;" ><!--alias ISOAMSB sqcup -->
+<!ENTITY Star             "&#x022C6;" ><!--alias ISOAMSB sstarf -->
+<!ENTITY straightepsilon  "&#x003B5;" ><!--alias ISOGRK3 epsi -->
+<!ENTITY straightphi      "&#x003C6;" ><!--alias ISOGRK3 phi -->
+<!ENTITY subset           "&#x02282;" ><!--alias ISOTECH sub -->
+<!ENTITY Subset           "&#x022D0;" ><!--alias ISOAMSR Sub -->
+<!ENTITY subseteq         "&#x02286;" ><!--alias ISOTECH sube -->
+<!ENTITY subseteqq        "&#x02286;" ><!--alias ISOAMSR subE -->
+<!ENTITY SubsetEqual      "&#x02286;" ><!--alias ISOTECH sube -->
+<!ENTITY subsetneq        "&#x0228A;" ><!--alias ISOAMSN subne -->
+<!ENTITY subsetneqq       "&#x0228A;" ><!--alias ISOAMSN subnE -->
+<!ENTITY succ             "&#x0227B;" ><!--alias ISOAMSR sc -->
+<!ENTITY succapprox       "&#x0227F;" ><!--alias ISOAMSR scap -->
+<!ENTITY succcurlyeq      "&#x0227D;" ><!--alias ISOAMSR sccue -->
+<!ENTITY Succeeds         "&#x0227B;" ><!--alias ISOAMSR sc -->
+<!ENTITY SucceedsEqual    "&#x0227D;" ><!--alias ISOAMSR sce -->
+<!ENTITY SucceedsSlantEqual "&#x0227D;" ><!--alias ISOAMSR sccue -->
+<!ENTITY SucceedsTilde    "&#x0227F;" ><!--alias ISOAMSR scsim -->
+<!ENTITY succeq           "&#x0227D;" ><!--alias ISOAMSR sce -->
+<!ENTITY succnapprox      "&#x022E9;" ><!--alias ISOAMSN scnap -->
+<!ENTITY succneqq         "&#x02AB6;" ><!--alias ISOAMSN scnE -->
+<!ENTITY succnsim         "&#x022E9;" ><!--alias ISOAMSN scnsim -->
+<!ENTITY succsim          "&#x0227F;" ><!--alias ISOAMSR scsim -->
+<!ENTITY SuchThat         "&#x0220B;" ><!--ISOTECH  ni -->
+<!ENTITY Sum              "&#x02211;" ><!--alias ISOAMSB sum -->
+<!ENTITY Superset         "&#x02283;" ><!--alias ISOTECH sup -->
+<!ENTITY SupersetEqual    "&#x02287;" ><!--alias ISOTECH supe -->
+<!ENTITY supset           "&#x02283;" ><!--alias ISOTECH sup -->
+<!ENTITY Supset           "&#x022D1;" ><!--alias ISOAMSR Sup -->
+<!ENTITY supseteq         "&#x02287;" ><!--alias ISOTECH supe -->
+<!ENTITY supseteqq        "&#x02287;" ><!--alias ISOAMSR supE -->
+<!ENTITY supsetneq        "&#x0228B;" ><!--alias ISOAMSN supne -->
+<!ENTITY supsetneqq       "&#x0228B;" ><!--alias ISOAMSN supnE -->
+<!ENTITY swarrow          "&#x02199;" ><!--alias ISOAMSA swarr -->
+<!ENTITY therefore        "&#x02234;" ><!--alias ISOTECH there4 -->
+<!ENTITY Therefore        "&#x02234;" ><!--alias ISOTECH there4 -->
+<!ENTITY thickapprox      "&#x02248;&#x0FE00;" ><!--ISOAMSR   thkap  -->
+<!ENTITY thicksim         "&#x0223C;&#x0FE00;" ><!--ISOAMSR   thksim -->
+<!ENTITY ThinSpace        "&#x02009;" ><!--space of width 3/18 em alias ISOPUB thinsp -->
+<!ENTITY Tilde            "&#x0223C;" ><!--alias ISOTECH sim -->
+<!ENTITY TildeEqual       "&#x02243;" ><!--alias ISOTECH sime -->
+<!ENTITY TildeFullEqual   "&#x02245;" ><!--alias ISOTECH cong -->
+<!ENTITY TildeTilde       "&#x02248;" ><!--alias ISOTECH ap -->
+<!ENTITY toea             "&#x02928;" ><!--alias ISOAMSA nesear -->
+<!ENTITY tosa             "&#x02929;" ><!--alias ISOAMSA seswar -->
+<!ENTITY triangle         "&#x025B5;" ><!--alias ISOPUB utri -->
+<!ENTITY triangledown     "&#x025BF;" ><!--alias ISOPUB dtri -->
+<!ENTITY triangleleft     "&#x025C3;" ><!--alias ISOPUB ltri -->
+<!ENTITY trianglelefteq   "&#x022B4;" ><!--alias ISOAMSR ltrie -->
+<!ENTITY triangleq        "&#x0225C;" ><!--alias ISOAMSR trie -->
+<!ENTITY triangleright    "&#x025B9;" ><!--alias ISOPUB rtri -->
+<!ENTITY trianglerighteq  "&#x022B5;" ><!--alias ISOAMSR rtrie -->
+<!ENTITY TripleDot        "&#x020DB;" ><!--alias ISOTECH tdot -->
+<!ENTITY twoheadleftarrow "&#x0219E;" ><!--alias ISOAMSA Larr -->
+<!ENTITY twoheadrightarrow "&#x021A0;" ><!--alias ISOAMSA Rarr -->
+<!ENTITY ulcorner         "&#x0231C;" ><!--alias ISOAMSC ulcorn -->
+<!ENTITY Union            "&#x022C3;" ><!--alias ISOAMSB xcup -->
+<!ENTITY UnionPlus        "&#x0228E;" ><!--alias ISOAMSB uplus -->
+<!ENTITY uparrow          "&#x02191;" ><!--alias ISONUM uarr -->
+<!ENTITY Uparrow          "&#x021D1;" ><!--alias ISOAMSA uArr -->
+<!ENTITY UpArrow          "&#x02191;" ><!--alias ISONUM uarr -->
+<!ENTITY UpArrowDownArrow "&#x021C5;" ><!--alias ISOAMSA udarr -->
+<!ENTITY updownarrow      "&#x02195;" ><!--alias ISOAMSA varr -->
+<!ENTITY Updownarrow      "&#x021D5;" ><!--alias ISOAMSA vArr -->
+<!ENTITY UpDownArrow      "&#x02195;" ><!--alias ISOAMSA varr -->
+<!ENTITY UpEquilibrium    "&#x0296E;" ><!--alias ISOAMSA udhar -->
+<!ENTITY upharpoonleft    "&#x021BF;" ><!--alias ISOAMSA uharl -->
+<!ENTITY upharpoonright   "&#x021BE;" ><!--alias ISOAMSA uharr -->
+<!ENTITY UpperLeftArrow   "&#x02196;" ><!--alias ISOAMSA nwarr -->
+<!ENTITY UpperRightArrow  "&#x02197;" ><!--alias ISOAMSA nearr -->
+<!ENTITY upsilon          "&#x003C5;" ><!--alias ISOGRK3 upsi -->
+<!ENTITY Upsilon          "&#x003D2;" ><!--alias ISOGRK3 Upsi -->
+<!ENTITY UpTee            "&#x022A5;" ><!--alias ISOTECH perp -->
+<!ENTITY UpTeeArrow       "&#x021A5;" ><!--Alias mapstoup -->
+<!ENTITY upuparrows       "&#x021C8;" ><!--alias ISOAMSA uuarr -->
+<!ENTITY urcorner         "&#x0231D;" ><!--alias ISOAMSC urcorn -->
+<!ENTITY varepsilon       "&#x0025B;" ><!--alias ISOGRK3 epsiv -->
+<!ENTITY varkappa         "&#x003F0;" ><!--alias ISOGRK3 kappav -->
+<!ENTITY varnothing       "&#x02205;" ><!--alias ISOAMSO emptyv -->
+<!ENTITY varphi           "&#x003D5;" ><!--alias ISOGRK3 phiv -->
+<!ENTITY varpi            "&#x003D6;" ><!--alias ISOGRK3 piv -->
+<!ENTITY varpropto        "&#x0221D;" ><!--alias ISOAMSR vprop -->
+<!ENTITY varrho           "&#x003F1;" ><!--alias ISOGRK3 rhov -->
+<!ENTITY varsigma         "&#x003C2;" ><!--alias ISOGRK3 sigmav -->
+<!ENTITY varsubsetneq     "&#x0228A;&#x0FE00;" ><!--alias ISOAMSN vsubne -->
+<!ENTITY varsubsetneqq    "&#x0228A;&#x0FE00;" ><!--alias ISOAMSN vsubnE -->
+<!ENTITY varsupsetneq     "&#x0228B;&#x0FE00;" ><!--alias ISOAMSN vsupne -->
+<!ENTITY varsupsetneqq    "&#x0228B;&#x0FE00;" ><!--alias ISOAMSN vsupnE -->
+<!ENTITY vartheta         "&#x003D1;" ><!--alias ISOGRK3 thetav -->
+<!ENTITY vartriangleleft  "&#x022B2;" ><!--alias ISOAMSR vltri -->
+<!ENTITY vartriangleright "&#x022B3;" ><!--alias ISOAMSR vrtri -->
+<!ENTITY vee              "&#x02228;" ><!--alias ISOTECH or -->
+<!ENTITY Vee              "&#x022C1;" ><!--alias ISOAMSB xvee -->
+<!ENTITY vert             "&#x0007C;" ><!--alias ISONUM verbar -->
+<!ENTITY Vert             "&#x02016;" ><!--alias ISOTECH Verbar -->
+<!ENTITY VerticalBar      "&#x02223;" ><!--alias ISOAMSR mid -->
+<!ENTITY VerticalTilde    "&#x02240;" ><!--alias ISOAMSB wreath -->
+<!ENTITY VeryThinSpace    "&#x0200A;" ><!--space of width 1/18 em alias ISOPUB hairsp -->
+<!ENTITY wedge            "&#x02227;" ><!--alias ISOTECH and -->
+<!ENTITY Wedge            "&#x022C0;" ><!--alias ISOAMSB xwedge -->
+<!ENTITY wp               "&#x02118;" ><!--alias ISOAMSO weierp -->
+<!ENTITY wr               "&#x02240;" ><!--alias ISOAMSB wreath -->
+<!ENTITY zeetrf           "&#x02128;" ><!--zee transform -->
+<!ENTITY ZeroWidthSpace   "&#x0200B;" ><!--zero width space -->
+
+<!--
+     File mmlextra.ent produced by the XSL script mmldtd.xsl
+     from input data in unicode.xml.
+
+     Please report any errors to 
+     David Carlisle <davidc@nag.co.uk>.
+
+     The numeric character values assigned to each entity
+     (should) match either official Unicode assignments
+     or assignments provisionally allocated by the
+     Unicode Consortium based on the characters in the `STIX'
+     propsal for mathematics. Note that these assignments
+     have not been ratified by the corresponding ISO
+     committee and thus should be considered liable to
+     change.
+
+-->
+
+<!ENTITY af               "&#x02061;" ><!--character showing function application in presentation tagging -->
+<!ENTITY aopf             "&#x1D552;" ><!-- -->
+<!ENTITY bopf             "&#x1D553;" ><!-- -->
+<!ENTITY copf             "&#x1D554;" ><!-- -->
+<!ENTITY Cross            "&#x02A2F;" ><!--cross or vector product -->
+<!ENTITY dd               "&#x02146;" ><!--d for use in differentials, e.g., within integrals -->
+<!ENTITY DD               "&#x02145;" ><!--D for use in differentials, e.g., within integrals -->
+<!ENTITY dopf             "&#x1D555;" ><!-- -->
+<!ENTITY DownArrowBar     "&#x02913;" ><!--down arrow to bar -->
+<!ENTITY DownBreve        "&#x00311;" ><!--breve, inverted (non-spacing) -->
+<!ENTITY DownLeftRightVector "&#x02950;" ><!--left-down-right-down harpoon -->
+<!ENTITY DownLeftTeeVector "&#x0295E;" ><!--left-down harpoon from bar -->
+<!ENTITY DownLeftVectorBar "&#x02956;" ><!--left-down harpoon to bar -->
+<!ENTITY DownRightTeeVector "&#x0295F;" ><!--right-down harpoon from bar -->
+<!ENTITY DownRightVectorBar "&#x02957;" ><!--right-down harpoon to bar -->
+<!ENTITY ee               "&#x02147;" ><!--e use for the exponential base of the natural logarithms -->
+<!ENTITY EmptySmallSquare "&#x025FD;" ><!--empty small square -->
+<!ENTITY EmptyVerySmallSquare "&#x0F59C;" ><!--empty small square -->
+<!ENTITY eopf             "&#x1D556;" ><!-- -->
+<!ENTITY Equal            "&#x02A75;" ><!--two consecutive equal signs -->
+<!ENTITY FilledSmallSquare "&#x025FE;" ><!--filled small square -->
+<!ENTITY FilledVerySmallSquare "&#x0F59B;" ><!--filled very small square -->
+<!ENTITY fopf             "&#x1D557;" ><!-- -->
+<!ENTITY gopf             "&#x1D558;" ><!-- -->
+<!ENTITY GreaterGreater   "&#x02AA2;" ><!--alias for GT -->
+<!ENTITY hopf             "&#x1D559;" ><!-- -->
+<!ENTITY HorizontalLine   "&#x02500;" ><!--short horizontal line  -->
+<!ENTITY ic               "&#x0200B;" ><!--short form of  &InvisibleComma; -->
+<!ENTITY ii               "&#x02148;" ><!--i for use as a square root of -1 -->
+<!ENTITY iopf             "&#x1D55A;" ><!-- -->
+<!ENTITY it               "&#x02062;" ><!--marks multiplication when it is understood without a mark -->
+<!ENTITY jopf             "&#x1D55B;" ><!-- -->
+<!ENTITY kopf             "&#x1D55C;" ><!-- -->
+<!ENTITY larrb            "&#x021E4;" ><!--leftwards arrow to bar -->
+<!ENTITY LeftDownTeeVector "&#x02961;" ><!--down-left harpoon from bar -->
+<!ENTITY LeftDownVectorBar "&#x02959;" ><!--down-left harpoon to bar -->
+<!ENTITY LeftRightVector  "&#x0294E;" ><!--left-up-right-up harpoon -->
+<!ENTITY LeftTeeVector    "&#x0295A;" ><!--left-up harpoon from bar -->
+<!ENTITY LeftTriangleBar  "&#x029CF;" ><!--not left triangle, vertical bar -->
+<!ENTITY LeftUpDownVector "&#x02951;" ><!--up-left-down-left harpoon -->
+<!ENTITY LeftUpTeeVector  "&#x02960;" ><!--up-left harpoon from bar -->
+<!ENTITY LeftUpVectorBar  "&#x02958;" ><!--up-left harpoon to bar -->
+<!ENTITY LeftVectorBar    "&#x02952;" ><!--left-up harpoon to bar -->
+<!ENTITY LessLess         "&#x02AA1;" ><!--alias for Lt -->
+<!ENTITY lopf             "&#x1D55D;" ><!-- -->
+<!ENTITY mapstodown       "&#x021A7;" ><!--downwards arrow from bar -->
+<!ENTITY mapstoleft       "&#x021A4;" ><!--leftwards arrow from bar -->
+<!ENTITY mapstoup         "&#x021A5;" ><!--upwards arrow from bar -->
+<!ENTITY MediumSpace      "&#x0205F;" ><!--space of width 4/18 em -->
+<!ENTITY mopf             "&#x1D55E;" ><!-- -->
+<!ENTITY nbump            "&#x0224E;&#x00338;" ><!--not bumpy equals -->
+<!ENTITY nbumpe           "&#x0224F;&#x00338;" ><!--not bumpy single equals -->
+<!ENTITY NegativeMediumSpace "&#x0205F;&#x0FE00;" ><!--space of width -4/18 em -->
+<!ENTITY NegativeThickSpace "&#x02005;&#x0FE00;" ><!--space of width -5/18 em -->
+<!ENTITY NegativeThinSpace "&#x02009;&#x0FE00;" ><!--space of width -3/18 em -->
+<!ENTITY NegativeVeryThinSpace "&#x0200A;&#x0FE00;" ><!--space of width -1/18 em -->
+<!ENTITY nesim            "&#x02242;&#x00338;" ><!--not equal or similar -->
+<!ENTITY NewLine          "&#x0000A;" ><!--force a line break; line feed -->
+<!ENTITY NoBreak          "&#x0FEFF;" ><!--never break line here -->
+<!ENTITY nopf             "&#x1D55F;" ><!-- -->
+<!ENTITY NotCupCap        "&#x0226D;" ><!--alias for &nasymp; -->
+<!ENTITY NotHumpEqual     "&#x0224F;&#x00338;" ><!--alias for &nbumpe; -->
+<!ENTITY NotLeftTriangleBar "&#x029CF;&#x00338;" ><!--not left triangle, vertical bar -->
+<!ENTITY NotNestedGreaterGreater "&#x024A2;&#x00338;" ><!--not double greater-than sign -->
+<!ENTITY NotNestedLessLess "&#x024A1;&#x00338;" ><!--not double less-than sign -->
+<!ENTITY NotRightTriangleBar "&#x029D0;&#x00338;" ><!--not vertical bar, right triangle -->
+<!ENTITY NotSquareSubset  "&#x0228F;&#x00338;" ><!--square not subset -->
+<!ENTITY NotSquareSuperset "&#x02290;&#x00338;" ><!--negated set-like partial order operator -->
+<!ENTITY NotSucceedsTilde "&#x0227F;&#x00338;" ><!--not succeeds or similar -->
+<!ENTITY oopf             "&#x1D560;" ><!-- -->
+<!ENTITY OverBar          "&#x000AF;" ><!--over bar -->
+<!ENTITY OverBrace        "&#x0FE37;" ><!--over brace  -->
+<!ENTITY OverBracket      "&#x023B4;" ><!--over bracket -->
+<!ENTITY OverParenthesis  "&#x0FE35;" ><!--over parenthesis -->
+<!ENTITY planckh          "&#x0210E;" ><!--the ring (skew field) of quaternions -->
+<!ENTITY popf             "&#x1D561;" ><!-- -->
+<!ENTITY Product          "&#x0220F;" ><!--alias for &prod -->
+<!ENTITY qopf             "&#x1D562;" ><!-- -->
+<!ENTITY rarrb            "&#x021E5;" ><!--leftwards arrow to bar -->
+<!ENTITY RightDownTeeVector "&#x0295D;" ><!--down-right harpoon from bar -->
+<!ENTITY RightDownVectorBar "&#x02955;" ><!--down-right harpoon to bar -->
+<!ENTITY RightTeeVector   "&#x0295B;" ><!--right-up harpoon from bar -->
+<!ENTITY RightTriangleBar "&#x029D0;" ><!--vertical bar, right triangle -->
+<!ENTITY RightUpDownVector "&#x0294F;" ><!--up-right-down-right harpoon -->
+<!ENTITY RightUpTeeVector "&#x0295C;" ><!--up-right harpoon from bar -->
+<!ENTITY RightUpVectorBar "&#x02954;" ><!--up-right harpoon to bar -->
+<!ENTITY RightVectorBar   "&#x02953;" ><!--up-right harpoon to bar -->
+<!ENTITY ropf             "&#x1D563;" ><!-- -->
+<!ENTITY RoundImplies     "&#x02970;" ><!--round implies -->
+<!ENTITY RuleDelayed      "&#x029F4;" ><!--rule-delayed (colon right arrow) -->
+<!ENTITY ShortDownArrow   "&#x02304;&#x0FE00;" ><!--short down arrow -->
+<!ENTITY ShortUpArrow     "&#x02303;&#x0FE00;" ><!--short up arrow  -->
+<!ENTITY sopf             "&#x1D564;" ><!-- -->
+<!ENTITY Tab              "&#x00009;" ><!--tabulator stop; horizontal tabulation -->
+<!ENTITY ThickSpace       "&#x02009;&#x0200A;&#x0200A;" ><!--space of width 5/18 em -->
+<!ENTITY topf             "&#x1D565;" ><!-- -->
+<!ENTITY UnderBar         "&#x00332;" ><!--combining low line -->
+<!ENTITY UnderBrace       "&#x0FE38;" ><!--under brace  -->
+<!ENTITY UnderBracket     "&#x023B5;" ><!--under bracket -->
+<!ENTITY UnderParenthesis "&#x0FE36;" ><!--under parenthesis -->
+<!ENTITY uopf             "&#x1D566;" ><!-- -->
+<!ENTITY UpArrowBar       "&#x02912;" ><!--up arrow to bar -->
+<!ENTITY VerticalLine     "&#x0007C;" ><!--alias ISONUM verbar -->
+<!ENTITY VerticalSeparator "&#x02758;" ><!--vertical separating operator -->
+<!ENTITY vopf             "&#x1D567;" ><!-- -->
+<!ENTITY wopf             "&#x1D568;" ><!-- -->
+<!ENTITY xopf             "&#x1D569;" ><!-- -->
+<!ENTITY yopf             "&#x1D56A;" ><!-- -->
+<!ENTITY zopf             "&#x1D56B;" ><!-- -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/ruby/xhtml-ruby-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,242 @@
+<!-- ...................................................................... -->
+<!-- XHTML Ruby Module .................................................... -->
+<!-- file: xhtml-ruby-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1999-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-ruby-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $
+
+     This module is based on the W3C Ruby Annotation Specification:
+
+        http://www.w3.org/TR/ruby
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Ruby 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/ruby/xhtml-ruby-1.mod"
+
+     ...................................................................... -->
+
+<!-- Ruby Elements
+
+        ruby, rbc, rtc, rb, rt, rp
+
+     This module declares the elements and their attributes used to
+     support ruby annotation markup.
+-->
+
+<!-- declare qualified element type names:
+-->
+<!ENTITY % ruby.qname  "ruby" >
+<!ENTITY % rbc.qname  "rbc" >
+<!ENTITY % rtc.qname  "rtc" >
+<!ENTITY % rb.qname  "rb" >
+<!ENTITY % rt.qname  "rt" >
+<!ENTITY % rp.qname  "rp" >
+
+<!-- rp fallback is included by default.
+-->
+<!ENTITY % Ruby.fallback "INCLUDE" >
+<!ENTITY % Ruby.fallback.mandatory "IGNORE" >
+
+<!-- Complex ruby is included by default; it may be 
+     overridden by other modules to ignore it.
+-->
+<!ENTITY % Ruby.complex "INCLUDE" >
+
+<!-- Fragments for the content model of the ruby element -->
+<![%Ruby.fallback;[
+<![%Ruby.fallback.mandatory;[
+<!ENTITY % Ruby.content.simple 
+     "( %rb.qname;, %rp.qname;, %rt.qname;, %rp.qname; )"
+>
+]]>
+<!ENTITY % Ruby.content.simple 
+     "( %rb.qname;, ( %rt.qname; | ( %rp.qname;, %rt.qname;, %rp.qname; ) ) )"
+>
+]]>
+<!ENTITY % Ruby.content.simple "( %rb.qname;, %rt.qname; )" >
+
+<![%Ruby.complex;[
+<!ENTITY % Ruby.content.complex 
+     "| ( %rbc.qname;, %rtc.qname;, %rtc.qname;? )"
+>
+]]>
+<!ENTITY % Ruby.content.complex "" >
+
+<!-- Content models of the rb and the rt elements are intended to
+     allow other inline-level elements of its parent markup language,
+     but it should not include ruby descendent elements. The following
+     parameter entity %NoRuby.content; can be used to redefine
+     those content models with minimum effort.  It's defined as
+     '( #PCDATA )' by default.
+-->
+<!ENTITY % NoRuby.content "( #PCDATA )" >
+
+<!-- one or more digits (NUMBER) -->
+<!ENTITY % Number.datatype "CDATA" >
+
+<!-- ruby element ...................................... -->
+
+<!ENTITY % ruby.element  "INCLUDE" >
+<![%ruby.element;[
+<!ENTITY % ruby.content
+     "( %Ruby.content.simple; %Ruby.content.complex; )"
+>
+<!ELEMENT %ruby.qname;  %ruby.content; >
+<!-- end of ruby.element -->]]>
+
+<![%Ruby.complex;[
+<!-- rbc (ruby base component) element ................. -->
+
+<!ENTITY % rbc.element  "INCLUDE" >
+<![%rbc.element;[
+<!ENTITY % rbc.content
+     "(%rb.qname;)+"
+>
+<!ELEMENT %rbc.qname;  %rbc.content; >
+<!-- end of rbc.element -->]]>
+
+<!-- rtc (ruby text component) element ................. -->
+
+<!ENTITY % rtc.element  "INCLUDE" >
+<![%rtc.element;[
+<!ENTITY % rtc.content
+     "(%rt.qname;)+"
+>
+<!ELEMENT %rtc.qname;  %rtc.content; >
+<!-- end of rtc.element -->]]>
+]]>
+
+<!-- rb (ruby base) element ............................ -->
+
+<!ENTITY % rb.element  "INCLUDE" >
+<![%rb.element;[
+<!-- %rb.content; uses %NoRuby.content; as its content model,
+     which is '( #PCDATA )' by default. It may be overridden
+     by other modules to allow other inline-level elements
+     of its parent markup language, but it should not include
+     ruby descendent elements.
+-->
+<!ENTITY % rb.content "%NoRuby.content;" >
+<!ELEMENT %rb.qname;  %rb.content; >
+<!-- end of rb.element -->]]>
+
+<!-- rt (ruby text) element ............................ -->
+
+<!ENTITY % rt.element  "INCLUDE" >
+<![%rt.element;[
+<!-- %rt.content; uses %NoRuby.content; as its content model,
+     which is '( #PCDATA )' by default. It may be overridden
+     by other modules to allow other inline-level elements
+     of its parent markup language, but it should not include
+     ruby descendent elements.
+-->
+<!ENTITY % rt.content "%NoRuby.content;" >
+
+<!ELEMENT %rt.qname;  %rt.content; >
+<!-- end of rt.element -->]]>
+
+<!-- rbspan attribute is used for complex ruby only ...... -->
+<![%Ruby.complex;[
+<!ENTITY % rt.attlist  "INCLUDE" >
+<![%rt.attlist;[
+<!ATTLIST %rt.qname;
+      rbspan         %Number.datatype;      "1"
+>
+<!-- end of rt.attlist -->]]>
+]]>
+
+<!-- rp (ruby parenthesis) element ..................... -->
+
+<![%Ruby.fallback;[
+<!ENTITY % rp.element  "INCLUDE" >
+<![%rp.element;[
+<!ENTITY % rp.content
+     "( #PCDATA )"
+>
+<!ELEMENT %rp.qname;  %rp.content; >
+<!-- end of rp.element -->]]>
+]]>
+
+<!-- Ruby Common Attributes
+
+     The following optional ATTLIST declarations provide an easy way
+     to define common attributes for ruby elements.  These declarations
+     are ignored by default.
+
+     Ruby elements are intended to have common attributes of its
+     parent markup language.  For example, if a markup language defines
+     common attributes as a parameter entity %attrs;, you may add
+     those attributes by just declaring the following parameter entities
+
+         <!ENTITY % Ruby.common.attlists  "INCLUDE" >
+         <!ENTITY % Ruby.common.attrib  "%attrs;" >
+
+     before including the Ruby module.
+-->
+
+<!ENTITY % Ruby.common.attlists  "IGNORE" >
+<![%Ruby.common.attlists;[
+<!ENTITY % Ruby.common.attrib  "" >
+
+<!-- common attributes for ruby ........................ -->
+
+<!ENTITY % Ruby.common.attlist  "INCLUDE" >
+<![%Ruby.common.attlist;[
+<!ATTLIST %ruby.qname;
+      %Ruby.common.attrib;
+>
+<!-- end of Ruby.common.attlist -->]]>
+
+<![%Ruby.complex;[
+<!-- common attributes for rbc ......................... -->
+
+<!ENTITY % Rbc.common.attlist  "INCLUDE" >
+<![%Rbc.common.attlist;[
+<!ATTLIST %rbc.qname;
+      %Ruby.common.attrib;
+>
+<!-- end of Rbc.common.attlist -->]]>
+
+<!-- common attributes for rtc ......................... -->
+
+<!ENTITY % Rtc.common.attlist  "INCLUDE" >
+<![%Rtc.common.attlist;[
+<!ATTLIST %rtc.qname;
+      %Ruby.common.attrib;
+>
+<!-- end of Rtc.common.attlist -->]]>
+]]>
+
+<!-- common attributes for rb .......................... -->
+
+<!ENTITY % Rb.common.attlist  "INCLUDE" >
+<![%Rb.common.attlist;[
+<!ATTLIST %rb.qname;
+      %Ruby.common.attrib;
+>
+<!-- end of Rb.common.attlist -->]]>
+
+<!-- common attributes for rt .......................... -->
+
+<!ENTITY % Rt.common.attlist  "INCLUDE" >
+<![%Rt.common.attlist;[
+<!ATTLIST %rt.qname;
+      %Ruby.common.attrib;
+>
+<!-- end of Rt.common.attlist -->]]>
+
+<![%Ruby.fallback;[
+<!-- common attributes for rp .......................... -->
+
+<!ENTITY % Rp.common.attlist  "INCLUDE" >
+<![%Rp.common.attlist;[
+<!ATTLIST %rp.qname;
+      %Ruby.common.attrib;
+>
+<!-- end of Rp.common.attlist -->]]>
+]]>
+]]>
+
+<!-- end of xhtml-ruby-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/xhtml-basic/xhtml-basic-form-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,185 @@
+<!-- ...................................................................... -->
+<!-- XHTML Simplified Forms Module  ....................................... -->
+<!-- file: xhtml-basic-form-1.mod
+
+     This is XHTML Basic, a proper subset of XHTML.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-basic-form-1.mod,v 1.1 2004-03-16 10:54:15 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Basic Forms 1.0//EN"  
+       SYSTEM "http://www.w3.org/TR/xhtml-modulatization/DTD/xhtml-basic-form-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Basic Forms
+
+     This forms module is based on the HTML 3.2 forms model, with
+     the WAI-requested addition of the label element. While this 
+     module essentially mimics the content model and attributes of 
+     HTML 3.2 forms, the element types declared herein also include
+     all HTML 4 common attributes.
+
+        form, label, input, select, option, textarea
+-->
+
+<!-- declare qualified element type names:
+-->
+<!ENTITY % form.qname  "form" >
+<!ENTITY % label.qname  "label" >
+<!ENTITY % input.qname  "input" >
+<!ENTITY % select.qname  "select" >
+<!ENTITY % option.qname  "option" >
+<!ENTITY % textarea.qname  "textarea" >
+
+<!-- %BlkNoForm.mix; includes all non-form block elements,
+     plus %Misc.class;
+-->
+<!ENTITY % BlkNoForm.mix
+     "%Heading.class;
+      | %List.class;
+      | %BlkStruct.class;
+      %BlkPhras.class;
+      %BlkPres.class;
+      | %table.qname; 
+      %Block.extra;
+      %Misc.class;"
+>
+
+<!-- form: Form Element ................................ -->
+
+<!ENTITY % form.element  "INCLUDE" >
+<![%form.element;[
+<!ENTITY % form.content
+     "( %BlkNoForm.mix; )+"
+>
+<!ELEMENT %form.qname;  %form.content; >
+<!-- end of form.element -->]]>
+
+<!ENTITY % form.attlist  "INCLUDE" >
+<![%form.attlist;[
+<!ATTLIST %form.qname;
+      %Common.attrib;
+      action       %URI.datatype;           #REQUIRED
+      method       ( get | post )           'get'
+      enctype      %ContentType.datatype;   'application/x-www-form-urlencoded'
+>
+<!-- end of form.attlist -->]]>
+
+<!-- label: Form Field Label Text ...................... -->
+
+<!ENTITY % label.element  "INCLUDE" >
+<![%label.element;[
+<!-- Each label must not contain more than ONE field
+-->
+<!ENTITY % label.content
+     "( #PCDATA 
+      | %input.qname; | %select.qname; | %textarea.qname;
+      | %InlStruct.class;
+      %InlPhras.class;
+      %I18n.class;
+      %InlPres.class;
+      %InlSpecial.class;
+      %Misc.class; )*"
+>
+<!ELEMENT %label.qname;  %label.content; >
+<!-- end of label.element -->]]>
+
+<!ENTITY % label.attlist  "INCLUDE" >
+<![%label.attlist;[
+<!ATTLIST %label.qname;
+      %Common.attrib;
+      for          IDREF                    #IMPLIED
+      accesskey    %Character.datatype;     #IMPLIED
+>
+<!-- end of label.attlist -->]]>
+
+<!-- input: Form Control ............................... -->
+
+<!ENTITY % input.element  "INCLUDE" >
+<![%input.element;[
+<!ENTITY % input.content  "EMPTY" >
+<!ELEMENT %input.qname;  %input.content; >
+<!-- end of input.element -->]]>
+
+<!-- Basic Forms removes 'image' and 'file' input types.
+-->
+<!ENTITY % input.attlist  "INCLUDE" >
+<![%input.attlist;[
+<!ENTITY % InputType.class
+     "( text | password | checkbox | radio 
+      | submit | reset | hidden )"
+>
+<!-- attribute name required for all but submit & reset
+-->
+<!ATTLIST %input.qname;
+      %Common.attrib;
+      type         %InputType.class;        'text'
+      name         CDATA                    #IMPLIED
+      value        CDATA                    #IMPLIED
+      checked      ( checked )              #IMPLIED
+      size         CDATA                    #IMPLIED
+      maxlength    %Number.datatype;        #IMPLIED
+      src          %URI.datatype;           #IMPLIED
+      accesskey    %Character.datatype;     #IMPLIED
+>
+<!-- end of input.attlist -->]]>
+
+<!-- select: Option Selector ........................... -->
+
+<!ENTITY % select.element  "INCLUDE" >
+<![%select.element;[
+<!ENTITY % select.content  "( %option.qname; )+" >
+<!ELEMENT %select.qname;  %select.content; >
+<!-- end of select.element -->]]>
+
+<!ENTITY % select.attlist  "INCLUDE" >
+<![%select.attlist;[
+<!ATTLIST %select.qname;
+      %Common.attrib;
+      name         CDATA                    #IMPLIED
+      size         %Number.datatype;        #IMPLIED
+      multiple     ( multiple )             #IMPLIED
+>
+<!-- end of select.attlist -->]]>
+
+<!-- option: Selectable Choice ......................... -->
+
+<!ENTITY % option.element  "INCLUDE" >
+<![%option.element;[
+<!ENTITY % option.content  "( #PCDATA )" >
+<!ELEMENT %option.qname;  %option.content; >
+<!-- end of option.element -->]]>
+
+<!ENTITY % option.attlist  "INCLUDE" >
+<![%option.attlist;[
+<!ATTLIST %option.qname;
+      %Common.attrib;
+      selected     ( selected )             #IMPLIED
+      value        CDATA                    #IMPLIED
+>
+<!-- end of option.attlist -->]]>
+
+<!-- textarea: Multi-Line Text Field ................... -->
+
+<!ENTITY % textarea.element  "INCLUDE" >
+<![%textarea.element;[
+<!ENTITY % textarea.content  "( #PCDATA )" >
+<!ELEMENT %textarea.qname;  %textarea.content; >
+<!-- end of textarea.element -->]]>
+
+<!ENTITY % textarea.attlist  "INCLUDE" >
+<![%textarea.attlist;[
+<!ATTLIST %textarea.qname;
+      %Common.attrib;
+      name         CDATA                    #IMPLIED
+      rows         %Number.datatype;        #REQUIRED
+      cols         %Number.datatype;        #REQUIRED
+      accesskey    %Character.datatype;     #IMPLIED
+>
+<!-- end of textarea.attlist -->]]>
+
+<!-- end of xhtml-basic-form-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/xhtml-basic/xhtml-basic-table-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,166 @@
+<!-- ....................................................................... -->
+<!-- XHTML Basic Table Module  ............................................. -->
+<!-- file: xhtml-basic-table-1.mod
+
+     This is XHTML Basic, a proper subset of XHTML.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-basic-table-1.mod,v 1.1 2004-03-16 10:54:15 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Basic Tables 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modulatization/DTD/xhtml-basic-table-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Basic Tables
+
+        table, caption, tr, th, td
+
+     This table module declares elements and attributes defining
+     a table model based fundamentally on features found in the
+     widely-deployed HTML 3.2 table model.  While this module
+     mimics the content model and table attributes of HTML 3.2
+     tables, the element types declared herein also includes all
+     HTML 4 common and most of the HTML 4 table attributes.
+-->
+
+<!-- declare qualified element type names:
+-->
+<!ENTITY % table.qname  "table" >
+<!ENTITY % caption.qname  "caption" >
+<!ENTITY % tr.qname  "tr" >
+<!ENTITY % th.qname  "th" >
+<!ENTITY % td.qname  "td" >
+
+<!-- horizontal alignment attributes for cell contents
+-->
+<!ENTITY % CellHAlign.attrib
+     "align        ( left
+                   | center
+                   | right )                #IMPLIED"
+>
+
+<!-- vertical alignment attributes for cell contents
+-->
+<!ENTITY % CellVAlign.attrib
+     "valign       ( top
+                   | middle
+                   | bottom )               #IMPLIED"
+>
+
+<!-- scope is simpler than axes attribute for common tables
+-->
+<!ENTITY % scope.attrib
+     "scope        ( row | col  )           #IMPLIED"
+>
+
+<!-- table: Table Element .............................. -->
+
+<!ENTITY % table.element  "INCLUDE" >
+<![%table.element;[
+<!ENTITY % table.content
+     "( %caption.qname;?, %tr.qname;+ )"
+>
+<!ELEMENT %table.qname;  %table.content; >
+<!-- end of table.element -->]]>
+
+<!ENTITY % table.attlist  "INCLUDE" >
+<![%table.attlist;[
+<!ATTLIST %table.qname;
+      %Common.attrib;
+      summary      %Text.datatype;          #IMPLIED
+>
+<!-- end of table.attlist -->]]>
+
+<!-- caption: Table Caption ............................ -->
+
+<!ENTITY % caption.element  "INCLUDE" >
+<![%caption.element;[
+<!ENTITY % caption.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ELEMENT %caption.qname;  %caption.content; >
+<!-- end of caption.element -->]]>
+
+<!ENTITY % caption.attlist  "INCLUDE" >
+<![%caption.attlist;[
+<!ATTLIST %caption.qname;
+      %Common.attrib;
+>
+<!-- end of caption.attlist -->]]>
+
+<!-- tr: Table Row ..................................... -->
+
+<!ENTITY % tr.element  "INCLUDE" >
+<![%tr.element;[
+<!ENTITY % tr.content  "( %th.qname; | %td.qname; )+" >
+<!ELEMENT %tr.qname;  %tr.content; >
+<!-- end of tr.element -->]]>
+
+<!ENTITY % tr.attlist  "INCLUDE" >
+<![%tr.attlist;[
+<!ATTLIST %tr.qname;
+      %Common.attrib;
+      %CellHAlign.attrib;
+      %CellVAlign.attrib;
+>
+<!-- end of tr.attlist -->]]>
+
+<!-- th: Table Header Cell ............................. -->
+
+<!-- th is for header cells, td for data,
+     but for cells acting as both use td
+-->
+
+<!ENTITY % th.element  "INCLUDE" >
+<![%th.element;[
+<!ENTITY % th.content
+     "( #PCDATA | %FlowNoTable.mix; )*"
+>
+<!ELEMENT %th.qname;  %th.content; >
+<!-- end of th.element -->]]>
+
+<!ENTITY % th.attlist  "INCLUDE" >
+<![%th.attlist;[
+<!ATTLIST %th.qname;
+      %Common.attrib;
+      abbr         %Text.datatype;          #IMPLIED
+      axis         CDATA                    #IMPLIED
+      headers      IDREFS                   #IMPLIED
+      %scope.attrib;
+      rowspan      %Number.datatype;        '1'
+      colspan      %Number.datatype;        '1'
+      %CellHAlign.attrib;
+      %CellVAlign.attrib;
+>
+<!-- end of th.attlist -->]]>
+
+<!-- td: Table Data Cell ............................... -->
+
+<!ENTITY % td.element  "INCLUDE" >
+<![%td.element;[
+<!ENTITY % td.content
+     "( #PCDATA | %FlowNoTable.mix; )*"
+>
+<!ELEMENT %td.qname;  %td.content; >
+<!-- end of td.element -->]]>
+
+<!ENTITY % td.attlist  "INCLUDE" >
+<![%td.attlist;[
+<!ATTLIST %td.qname;
+      %Common.attrib;
+      abbr         %Text.datatype;          #IMPLIED
+      axis         CDATA                    #IMPLIED
+      headers      IDREFS                   #IMPLIED
+      %scope.attrib;
+      rowspan      %Number.datatype;        '1'
+      colspan      %Number.datatype;        '1'
+      %CellHAlign.attrib;
+      %CellVAlign.attrib;
+>
+<!-- end of td.attlist -->]]>
+
+<!-- end of xhtml-basic-table-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/xhtml-basic/xhtml-basic10-model-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,148 @@
+<!-- ....................................................................... -->
+<!-- XHTML Basic 1.0 Document Model Module  .................................... -->
+<!-- file: xhtml-basic10-model-1.mod
+
+     This is XHTML Basic, a proper subset of XHTML.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-basic10-model-1.mod,v 1.1 2004-03-16 10:54:15 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ENTITIES XHTML Basic 1.0 Document Model 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-basic/xhtml-basic10-model-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- XHTML Basic Document Model
+
+     This module describes the groupings of elements that make up
+     common content models for XHTML elements.
+-->
+
+<!-- Optional Elements in head  .............. -->
+
+<!ENTITY % HeadOpts.mix
+     "( %meta.qname; | %link.qname; | %object.qname; )*" >
+
+<!-- Miscellaneous Elements  ................. -->
+
+<!ENTITY % Misc.class "" >
+
+<!-- Inline Elements  ........................ -->
+
+<!ENTITY % InlStruct.class "%br.qname; | %span.qname;" >
+
+<!ENTITY % InlPhras.class
+     "| %em.qname; | %strong.qname; | %dfn.qname; | %code.qname;
+      | %samp.qname; | %kbd.qname; | %var.qname; | %cite.qname;
+      | %abbr.qname; | %acronym.qname; | %q.qname;" >
+
+<!ENTITY % InlPres.class "" >
+
+<!ENTITY % I18n.class "" >
+
+<!ENTITY % Anchor.class "| %a.qname;" >
+
+<!ENTITY % InlSpecial.class "| %img.qname; | %object.qname;" >
+
+<!ENTITY % InlForm.class
+     "| %input.qname; | %select.qname; | %textarea.qname;
+      | %label.qname;"
+>
+
+<!ENTITY % Inline.extra "" >
+
+<!ENTITY % Inline.class
+     "%InlStruct.class;
+      %InlPhras.class;
+      %Anchor.class;
+      %InlSpecial.class;
+      %InlForm.class;
+      %Inline.extra;"
+>
+
+<!ENTITY % InlNoAnchor.class
+     "%InlStruct.class;
+      %InlPhras.class;
+      %InlSpecial.class;
+      %InlForm.class;
+      %Inline.extra;"
+>
+
+<!ENTITY % InlNoAnchor.mix
+     "%InlNoAnchor.class;
+      %Misc.class;"
+>
+
+<!ENTITY % Inline.mix
+     "%Inline.class;
+      %Misc.class;"
+>
+
+<!-- Block Elements  ......................... -->
+
+<!ENTITY % Heading.class
+     "%h1.qname; | %h2.qname; | %h3.qname;
+      | %h4.qname; | %h5.qname; | %h6.qname;"
+>
+<!ENTITY % List.class  "%ul.qname; | %ol.qname; | %dl.qname;" >
+
+<!ENTITY % Table.class "| %table.qname;" >
+
+<!ENTITY % Form.class  "| %form.qname;" >
+
+<!ENTITY % BlkStruct.class "%p.qname; | %div.qname;" >
+
+<!ENTITY % BlkPhras.class
+     "| %pre.qname; | %blockquote.qname; | %address.qname;"
+>
+
+<!ENTITY % BlkPres.class "" >
+
+<!ENTITY % BlkSpecial.class
+     "%Table.class;
+      %Form.class;"
+>
+
+<!ENTITY % Block.extra "" >
+
+<!ENTITY % Block.class
+     "%BlkStruct.class;
+      %BlkPhras.class;
+      %BlkSpecial.class;
+      %Block.extra;"
+>
+
+<!ENTITY % Block.mix
+     "%Heading.class;
+      | %List.class;
+      | %Block.class;
+      %Misc.class;"
+>
+
+<!-- All Content Elements  ................... -->
+
+<!-- declares all content except tables
+-->
+<!ENTITY % FlowNoTable.mix
+     "%Heading.class;
+      | %List.class;
+      | %BlkStruct.class;
+      %BlkPhras.class;
+      %Form.class;
+      %Block.extra;
+      | %Inline.class;
+      %Misc.class;"
+>
+
+<!ENTITY % Flow.mix
+     "%Heading.class;
+      | %List.class;
+      | %Block.class;
+      | %Inline.class;
+      %Misc.class;"
+>
+
+<!-- end of xhtml-basic10-model-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/xhtml-basic/xhtml-basic10.dtd	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,183 @@
+<!-- XHTML Basic 1.0 DTD  ...................................................... -->
+<!-- file: xhtml-basic10.dtd -->
+
+<!-- XHTML Basic 1.0 DTD
+
+     This is XHTML Basic, a proper subset of XHTML.
+
+     The Extensible HyperText Markup Language (XHTML)
+     Copyright 1998-2000 World Wide Web Consortium
+        (Massachusetts Institute of Technology, Institut National de
+         Recherche en Informatique et en Automatique, Keio University).
+         All Rights Reserved.
+
+     Permission to use, copy, modify and distribute the XHTML Basic DTD
+     and its accompanying documentation for any purpose and without fee is
+     hereby granted in perpetuity, provided that the above copyright notice
+     and this paragraph appear in all copies.  The copyright holders make
+     no representation about the suitability of the DTD for any purpose.
+
+     It is provided "as is" without expressed or implied warranty.
+
+        Editors:    Murray M. Altheim <mailto:altheim@eng.sun.com>
+                    Peter Stark       <mailto:Peter.Stark@ecs.ericsson.se>
+        Revision:   $Id: xhtml-basic10.dtd,v 1.1 2004-03-16 10:48:38 ylafon Exp $ SMI
+
+-->
+<!-- This is the driver file for version 1.0 of the XHTML Basic DTD.
+
+     This DTD is identified by the PUBLIC and SYSTEM identifiers:
+
+     PUBLIC: "-//W3C//DTD XHTML Basic 1.0//EN"
+     SYSTEM: "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd"
+-->
+<!ENTITY % XHTML.version  "-//W3C//DTD XHTML Basic 1.0//EN" >
+
+<!-- Use this URI to identify the default namespace:
+
+         "http://www.w3.org/1999/xhtml"
+
+     See the Qualified Names module for information
+     on the use of namespace prefixes in the DTD.
+-->
+<!ENTITY % NS.prefixed "IGNORE" >
+<!ENTITY % XHTML.prefix  "" >
+
+<!-- Reserved for use with the XLink namespace:
+-->
+<!ENTITY % XLINK.xmlns "" >
+<!ENTITY % XLINK.xmlns.attrib "" >
+
+<!-- For example, if you are using XHTML Basic 1.0 directly, use
+     the FPI in the DOCTYPE declaration, with the xmlns attribute
+     on the document element to identify the default namespace:
+
+         <?xml version="1.0"?>
+         <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN"
+             "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd" >
+         <html xmlns="http://www.w3.org/1999/xhtml"
+               xml:lang="en" >
+         ...
+         </html>
+-->
+
+<!-- reserved for future use with document profiles -->
+<!ENTITY % XHTML.profile  "" >
+
+<!-- Bidirectional Text features
+     This feature-test entity is used to declare elements
+     and attributes used for bidirectional text support.
+-->
+<!ENTITY % XHTML.bidi  "IGNORE" >
+
+<?doc type="doctype" role="title" { XHTML Basic 1.0 } ?>
+
+<!-- :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
+
+<!ENTITY % xhtml-events.module   "IGNORE" >
+<!ENTITY % xhtml-bdo.module      "%XHTML.bidi;" >
+
+<!ENTITY % xhtml-model.mod
+     PUBLIC "-//W3C//ENTITIES XHTML Basic 1.0 Document Model 1.0//EN"
+            "xhtml-basic10-model-1.mod" >
+
+<!ENTITY % xhtml-framework.mod
+     PUBLIC "-//W3C//ENTITIES XHTML Modular Framework 1.0//EN"
+            "xhtml-framework-1.mod" >
+%xhtml-framework.mod;
+
+<!ENTITY % pre.content
+     "( #PCDATA
+      | %InlStruct.class;
+      %InlPhras.class;
+      %Anchor.class;
+      %Inline.extra; )*"
+>
+
+<!ENTITY % xhtml-text.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Text 1.0//EN"
+            "xhtml-text-1.mod" >
+%xhtml-text.mod;
+
+<!ENTITY % xhtml-hypertext.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Hypertext 1.0//EN"
+            "xhtml-hypertext-1.mod" >
+%xhtml-hypertext.mod;
+
+<!ENTITY % xhtml-list.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Lists 1.0//EN"
+            "xhtml-list-1.mod" >
+%xhtml-list.mod;
+
+<!-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
+
+<!-- Image Module  ............................................... -->
+<!ENTITY % xhtml-image.module "INCLUDE" >
+<![%xhtml-image.module;[
+<!ENTITY % xhtml-image.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Images 1.0//EN"
+            "xhtml-image-1.mod" >
+%xhtml-image.mod;]]>
+
+<!-- Tables Module ............................................... -->
+<!ENTITY % xhtml-table.module "INCLUDE" >
+<![%xhtml-table.module;[
+<!ENTITY % xhtml-table.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Basic Tables 1.0//EN"
+            "xhtml-basic-table-1.mod" >
+%xhtml-table.mod;]]>
+
+<!-- Forms Module  ............................................... -->
+<!ENTITY % xhtml-form.module "INCLUDE" >
+<![%xhtml-form.module;[
+<!ENTITY % xhtml-form.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Basic Forms 1.0//EN"
+            "xhtml-basic-form-1.mod" >
+%xhtml-form.mod;]]>
+
+<!-- Link Element Module  ........................................ -->
+<!ENTITY % xhtml-link.module "INCLUDE" >
+<![%xhtml-link.module;[
+<!ENTITY % xhtml-link.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Link Element 1.0//EN"
+            "xhtml-link-1.mod" >
+%xhtml-link.mod;]]>
+
+<!-- Document Metainformation Module  ............................ -->
+<!ENTITY % xhtml-meta.module "INCLUDE" >
+<![%xhtml-meta.module;[
+<!ENTITY % xhtml-meta.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Metainformation 1.0//EN"
+            "xhtml-meta-1.mod" >
+%xhtml-meta.mod;]]>
+
+<!-- Base Element Module  ........................................ -->
+<!ENTITY % xhtml-base.module "INCLUDE" >
+<![%xhtml-base.module;[
+<!ENTITY % xhtml-base.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Base Element 1.0//EN"
+            "xhtml-base-1.mod" >
+%xhtml-base.mod;]]>
+
+<!-- Param Element Module  ....................................... -->
+<!ENTITY % xhtml-param.module "INCLUDE" >
+<![%xhtml-param.module;[
+<!ENTITY % xhtml-param.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Param Element 1.0//EN"
+            "xhtml-param-1.mod" >
+%xhtml-param.mod;]]>
+
+<!-- Embedded Object Module  ..................................... -->
+<!ENTITY % xhtml-object.module "INCLUDE" >
+<![%xhtml-object.module;[
+<!ENTITY % xhtml-object.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Embedded Object 1.0//EN"
+            "xhtml-object-1.mod" >
+%xhtml-object.mod;]]>
+
+<!ENTITY % xhtml-struct.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Document Structure 1.0//EN"
+            "xhtml-struct-1.mod" >
+%xhtml-struct.mod;
+
+<!-- end of XHTML Basic 1.0 DTD  ........................................... -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/xhtml-modularization/xhtml-attribs-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,78 @@
+<!-- ...................................................................... -->
+<!-- XHTML Common Attributes Module  ...................................... -->
+<!-- file: xhtml-attribs-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-attribs-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ENTITIES XHTML Common Attributes 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-attribs-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Common Attributes
+
+     This module declares many of the common attributes for the XHTML DTD.
+     %NS.decl.attrib; is declared in the XHTML Qname module.
+-->
+
+<!ENTITY % id.attrib
+     "id           ID                       #IMPLIED"
+>
+
+<!ENTITY % class.attrib
+     "class        NMTOKENS                 #IMPLIED"
+>
+
+<!ENTITY % title.attrib
+     "title        %Text.datatype;          #IMPLIED"
+>
+
+<!ENTITY % Core.extra.attrib "" >
+
+<!ENTITY % Core.attrib
+     "%XHTML.xmlns.attrib;
+      %id.attrib;
+      %class.attrib;
+      %title.attrib;
+      %Core.extra.attrib;"
+>
+
+<!ENTITY % lang.attrib
+     "xml:lang     %LanguageCode.datatype;  #IMPLIED"
+>
+
+<![%XHTML.bidi;[
+<!ENTITY % dir.attrib
+     "dir          ( ltr | rtl )            #IMPLIED"
+>
+
+<!ENTITY % I18n.attrib
+     "%dir.attrib;
+      %lang.attrib;"
+>
+
+]]>
+<!ENTITY % I18n.attrib
+     "%lang.attrib;"
+>
+
+<!ENTITY % Common.extra.attrib "" >
+
+<!-- intrinsic event attributes declared previously
+-->
+<!ENTITY % Events.attrib "" >
+
+<!ENTITY % Common.attrib
+     "%Core.attrib;
+      %I18n.attrib;
+      %Events.attrib;
+      %Common.extra.attrib;"
+>
+
+<!-- end of xhtml-attribs-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/xhtml-modularization/xhtml-base-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,53 @@
+<!-- ...................................................................... -->
+<!-- XHTML Base Element Module  ........................................... -->
+<!-- file: xhtml-base-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-base-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Base Element 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-base-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Base element
+
+        base
+
+     This module declares the base element type and its attributes,
+     used to define a base URI against which relative URIs in the
+     document will be resolved.
+
+     Note that this module also redeclares the content model for
+     the head element to include the base element.
+-->
+
+<!-- base: Document Base URI ........................... -->
+
+<!ENTITY % base.element  "INCLUDE" >
+<![%base.element;[
+<!ENTITY % base.content  "EMPTY" >
+<!ENTITY % base.qname  "base" >
+<!ELEMENT %base.qname;  %base.content; >
+<!-- end of base.element -->]]>
+
+<!ENTITY % base.attlist  "INCLUDE" >
+<![%base.attlist;[
+<!ATTLIST %base.qname;
+      %XHTML.xmlns.attrib;
+      href         %URI.datatype;           #REQUIRED
+>
+<!-- end of base.attlist -->]]>
+
+<!ENTITY % head.content
+    "( %HeadOpts.mix;,
+     ( ( %title.qname;, %HeadOpts.mix;, ( %base.qname;, %HeadOpts.mix; )? )
+     | ( %base.qname;, %HeadOpts.mix;, ( %title.qname;, %HeadOpts.mix; ))))"
+>
+
+<!-- end of xhtml-base-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/xhtml-modularization/xhtml-bdo-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,47 @@
+<!-- ...................................................................... -->
+<!-- XHTML BDO Element Module ............................................. -->
+<!-- file: xhtml-bdo-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-bdo-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML BDO Element 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-bdo-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Bidirectional Override (bdo) Element
+
+     This modules declares the element 'bdo', used to override the
+     Unicode bidirectional algorithm for selected fragments of text.
+
+     DEPENDENCIES:
+     Relies on the conditional section keyword %XHTML.bidi; declared
+     as "INCLUDE". Bidirectional text support includes both the bdo
+     element and the 'dir' attribute.
+-->
+
+<!ENTITY % bdo.element  "INCLUDE" >
+<![%bdo.element;[
+<!ENTITY % bdo.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % bdo.qname  "bdo" >
+<!ELEMENT %bdo.qname;  %bdo.content; >
+<!-- end of bdo.element -->]]>
+
+<!ENTITY % bdo.attlist  "INCLUDE" >
+<![%bdo.attlist;[
+<!ATTLIST %bdo.qname;
+      %Core.attrib;
+      xml:lang     %LanguageCode.datatype;  #IMPLIED
+      dir          ( ltr | rtl )            #REQUIRED
+>
+]]>
+
+<!-- end of xhtml-bdo-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/xhtml-modularization/xhtml-blkphras-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,164 @@
+<!-- ...................................................................... -->
+<!-- XHTML Block Phrasal Module  .......................................... -->
+<!-- file: xhtml-blkphras-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-blkphras-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Block Phrasal 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-blkphras-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Block Phrasal
+
+        address, blockquote, pre, h1, h2, h3, h4, h5, h6
+
+     This module declares the elements and their attributes used to
+     support block-level phrasal markup.
+-->
+
+<!ENTITY % address.element  "INCLUDE" >
+<![%address.element;[
+<!ENTITY % address.content
+     "( #PCDATA | %Inline.mix; )*" >
+<!ENTITY % address.qname  "address" >
+<!ELEMENT %address.qname;  %address.content; >
+<!-- end of address.element -->]]>
+
+<!ENTITY % address.attlist  "INCLUDE" >
+<![%address.attlist;[
+<!ATTLIST %address.qname;
+      %Common.attrib;
+>
+<!-- end of address.attlist -->]]>
+
+<!ENTITY % blockquote.element  "INCLUDE" >
+<![%blockquote.element;[
+<!ENTITY % blockquote.content
+     "( %Block.mix; )+"
+>
+<!ENTITY % blockquote.qname  "blockquote" >
+<!ELEMENT %blockquote.qname;  %blockquote.content; >
+<!-- end of blockquote.element -->]]>
+
+<!ENTITY % blockquote.attlist  "INCLUDE" >
+<![%blockquote.attlist;[
+<!ATTLIST %blockquote.qname;
+      %Common.attrib;
+      cite         %URI.datatype;           #IMPLIED
+>
+<!-- end of blockquote.attlist -->]]>
+
+<!ENTITY % pre.element  "INCLUDE" >
+<![%pre.element;[
+<!ENTITY % pre.content
+     "( #PCDATA
+      | %InlStruct.class;
+      %InlPhras.class;
+      | %tt.qname; | %i.qname; | %b.qname;
+      %I18n.class;
+      %Anchor.class;
+      | %script.qname; | %map.qname;
+      %Inline.extra; )*"
+>
+<!ENTITY % pre.qname  "pre" >
+<!ELEMENT %pre.qname;  %pre.content; >
+<!-- end of pre.element -->]]>
+
+<!ENTITY % pre.attlist  "INCLUDE" >
+<![%pre.attlist;[
+<!ATTLIST %pre.qname;
+      %Common.attrib;
+      xml:space    ( preserve )             #FIXED 'preserve'
+>
+<!-- end of pre.attlist -->]]>
+
+<!-- ...................  Heading Elements  ................... -->
+
+<!ENTITY % Heading.content  "( #PCDATA | %Inline.mix; )*" >
+
+<!ENTITY % h1.element  "INCLUDE" >
+<![%h1.element;[
+<!ENTITY % h1.qname  "h1" >
+<!ELEMENT %h1.qname;  %Heading.content; >
+<!-- end of h1.element -->]]>
+
+<!ENTITY % h1.attlist  "INCLUDE" >
+<![%h1.attlist;[
+<!ATTLIST %h1.qname;
+      %Common.attrib;
+>
+<!-- end of h1.attlist -->]]>
+
+<!ENTITY % h2.element  "INCLUDE" >
+<![%h2.element;[
+<!ENTITY % h2.qname  "h2" >
+<!ELEMENT %h2.qname;  %Heading.content; >
+<!-- end of h2.element -->]]>
+
+<!ENTITY % h2.attlist  "INCLUDE" >
+<![%h2.attlist;[
+<!ATTLIST %h2.qname;
+      %Common.attrib;
+>
+<!-- end of h2.attlist -->]]>
+
+<!ENTITY % h3.element  "INCLUDE" >
+<![%h3.element;[
+<!ENTITY % h3.qname  "h3" >
+<!ELEMENT %h3.qname;  %Heading.content; >
+<!-- end of h3.element -->]]>
+
+<!ENTITY % h3.attlist  "INCLUDE" >
+<![%h3.attlist;[
+<!ATTLIST %h3.qname;
+      %Common.attrib;
+>
+<!-- end of h3.attlist -->]]>
+
+<!ENTITY % h4.element  "INCLUDE" >
+<![%h4.element;[
+<!ENTITY % h4.qname  "h4" >
+<!ELEMENT %h4.qname;  %Heading.content; >
+<!-- end of h4.element -->]]>
+
+<!ENTITY % h4.attlist  "INCLUDE" >
+<![%h4.attlist;[
+<!ATTLIST %h4.qname;
+      %Common.attrib;
+>
+<!-- end of h4.attlist -->]]>
+
+<!ENTITY % h5.element  "INCLUDE" >
+<![%h5.element;[
+<!ENTITY % h5.qname  "h5" >
+<!ELEMENT %h5.qname;  %Heading.content; >
+<!-- end of h5.element -->]]>
+
+<!ENTITY % h5.attlist  "INCLUDE" >
+<![%h5.attlist;[
+<!ATTLIST %h5.qname;
+      %Common.attrib;
+>
+<!-- end of h5.attlist -->]]>
+
+<!ENTITY % h6.element  "INCLUDE" >
+<![%h6.element;[
+<!ENTITY % h6.qname  "h6" >
+<!ELEMENT %h6.qname;  %Heading.content; >
+<!-- end of h6.element -->]]>
+
+<!ENTITY % h6.attlist  "INCLUDE" >
+<![%h6.attlist;[
+<!ATTLIST %h6.qname;
+      %Common.attrib;
+>
+<!-- end of h6.attlist -->]]>
+
+<!-- end of xhtml-blkphras-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/xhtml-modularization/xhtml-blkpres-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,40 @@
+<!-- ...................................................................... -->
+<!-- XHTML Block Presentation Module  ..................................... -->
+<!-- file: xhtml-blkpres-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-blkpres-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Block Presentation 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-blkpres-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Block Presentational Elements
+
+        hr
+
+     This module declares the elements and their attributes used to
+     support block-level presentational markup.
+-->
+
+<!ENTITY % hr.element  "INCLUDE" >
+<![%hr.element;[
+<!ENTITY % hr.content  "EMPTY" >
+<!ENTITY % hr.qname  "hr" >
+<!ELEMENT %hr.qname;  %hr.content; >
+<!-- end of hr.element -->]]>
+
+<!ENTITY % hr.attlist  "INCLUDE" >
+<![%hr.attlist;[
+<!ATTLIST %hr.qname;
+      %Common.attrib;
+>
+<!-- end of hr.attlist -->]]>
+
+<!-- end of xhtml-blkpres-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/xhtml-modularization/xhtml-blkstruct-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,57 @@
+<!-- ...................................................................... -->
+<!-- XHTML Block Structural Module  ....................................... -->
+<!-- file: xhtml-blkstruct-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-blkstruct-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Block Structural 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-blkstruct-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Block Structural
+
+        div, p
+
+     This module declares the elements and their attributes used to
+     support block-level structural markup.
+-->
+
+<!ENTITY % div.element  "INCLUDE" >
+<![%div.element;[
+<!ENTITY % div.content
+     "( #PCDATA | %Flow.mix; )*"
+>
+<!ENTITY % div.qname  "div" >
+<!ELEMENT %div.qname;  %div.content; >
+<!-- end of div.element -->]]>
+
+<!ENTITY % div.attlist  "INCLUDE" >
+<![%div.attlist;[
+<!ATTLIST %div.qname;
+      %Common.attrib;
+>
+<!-- end of div.attlist -->]]>
+
+<!ENTITY % p.element  "INCLUDE" >
+<![%p.element;[
+<!ENTITY % p.content
+     "( #PCDATA | %Inline.mix; )*" >
+<!ENTITY % p.qname  "p" >
+<!ELEMENT %p.qname;  %p.content; >
+<!-- end of p.element -->]]>
+
+<!ENTITY % p.attlist  "INCLUDE" >
+<![%p.attlist;[
+<!ATTLIST %p.qname;
+      %Common.attrib;
+>
+<!-- end of p.attlist -->]]>
+
+<!-- end of xhtml-blkstruct-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/xhtml-modularization/xhtml-charent-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,39 @@
+<!-- ...................................................................... -->
+<!-- XHTML Character Entities Module  ......................................... -->
+<!-- file: xhtml-charent-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-charent-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ENTITIES XHTML Character Entities 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-charent-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Character Entities for XHTML
+
+     This module declares the set of character entities for XHTML,
+     including the Latin 1, Symbol and Special character collections.
+-->
+
+<!ENTITY % xhtml-lat1
+    PUBLIC "-//W3C//ENTITIES Latin 1 for XHTML//EN"
+           "xhtml-lat1.ent" >
+%xhtml-lat1;
+
+<!ENTITY % xhtml-symbol
+    PUBLIC "-//W3C//ENTITIES Symbols for XHTML//EN"
+           "xhtml-symbol.ent" >
+%xhtml-symbol;
+
+<!ENTITY % xhtml-special
+    PUBLIC "-//W3C//ENTITIES Special for XHTML//EN"
+           "xhtml-special.ent" >
+%xhtml-special;
+
+<!-- end of xhtml-charent-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/xhtml-modularization/xhtml-csismap-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,114 @@
+<!-- ...................................................................... -->
+<!-- XHTML Client-side Image Map Module  .................................. -->
+<!-- file: xhtml-csismap-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-csismap-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Client-side Image Maps 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-csismap-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Client-side Image Maps
+
+        area, map
+
+     This module declares elements and attributes to support client-side
+     image maps. This requires that the Image Module (or a module
+     declaring the img element type) be included in the DTD.
+
+     These can be placed in the same document or grouped in a
+     separate document, although the latter isn't widely supported
+-->
+
+<!ENTITY % area.element  "INCLUDE" >
+<![%area.element;[
+<!ENTITY % area.content  "EMPTY" >
+<!ENTITY % area.qname  "area" >
+<!ELEMENT %area.qname;  %area.content; >
+<!-- end of area.element -->]]>
+
+<!ENTITY % Shape.datatype "( rect | circle | poly | default )">
+<!ENTITY % Coords.datatype "CDATA" >
+
+<!ENTITY % area.attlist  "INCLUDE" >
+<![%area.attlist;[
+<!ATTLIST %area.qname;
+      %Common.attrib;
+      href         %URI.datatype;           #IMPLIED
+      shape        %Shape.datatype;         'rect'
+      coords       %Coords.datatype;        #IMPLIED
+      nohref       ( nohref )               #IMPLIED
+      alt          %Text.datatype;          #REQUIRED
+      tabindex     %Number.datatype;        #IMPLIED
+      accesskey    %Character.datatype;     #IMPLIED
+>
+<!-- end of area.attlist -->]]>
+
+<!-- modify anchor attribute definition list
+     to allow for client-side image maps
+-->
+<!ATTLIST %a.qname;
+      shape        %Shape.datatype;         'rect'
+      coords       %Coords.datatype;        #IMPLIED
+>
+
+<!-- modify img attribute definition list
+     to allow for client-side image maps
+-->
+<!ATTLIST %img.qname;
+      usemap       IDREF                    #IMPLIED
+>
+
+<!-- modify form input attribute definition list
+     to allow for client-side image maps
+-->
+<!ATTLIST %input.qname;
+      usemap       IDREF                    #IMPLIED
+>
+
+<!-- modify object attribute definition list
+     to allow for client-side image maps
+-->
+<!ATTLIST %object.qname;
+      usemap       IDREF                    #IMPLIED
+>
+
+<!-- 'usemap' points to the 'id' attribute of a <map> element,
+     which must be in the same document; support for external
+     document maps was not widely supported in HTML and is
+     eliminated in XHTML.
+
+     It is considered an error for the element pointed to by
+     a usemap IDREF to occur in anything but a <map> element.
+-->
+
+<!ENTITY % map.element  "INCLUDE" >
+<![%map.element;[
+<!ENTITY % map.content
+     "(( %Block.mix; ) | %area.qname; )+"
+>
+<!ENTITY % map.qname  "map" >
+<!ELEMENT %map.qname;  %map.content; >
+<!-- end of map.element -->]]>
+
+<!ENTITY % map.attlist  "INCLUDE" >
+<![%map.attlist;[
+<!ATTLIST %map.qname;
+      %XHTML.xmlns.attrib;
+      id           ID                       #REQUIRED
+      %class.attrib;
+      %title.attrib;
+      %Core.extra.attrib;
+      %I18n.attrib;
+      %Events.attrib;
+>
+<!-- end of map.attlist -->]]>
+
+<!-- end of xhtml-csismap-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/xhtml-modularization/xhtml-datatypes-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,85 @@
+<!-- ...................................................................... -->
+<!-- XHTML Datatypes Module  .............................................. -->
+<!-- file: xhtml-datatypes-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-datatypes-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ENTITIES XHTML Datatypes 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-datatypes-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Datatypes
+
+     defines containers for the following datatypes, many of
+     these imported from other specifications and standards.
+-->
+
+<!-- Length defined for cellpadding/cellspacing -->
+
+<!-- nn for pixels or nn% for percentage length -->
+<!ENTITY % Length.datatype "CDATA" >
+
+<!-- space-separated list of link types -->
+<!ENTITY % LinkTypes.datatype "NMTOKENS" >
+
+<!-- single or comma-separated list of media descriptors -->
+<!ENTITY % MediaDesc.datatype "CDATA" >
+
+<!-- pixel, percentage, or relative -->
+<!ENTITY % MultiLength.datatype "CDATA" >
+
+<!-- one or more digits (NUMBER) -->
+<!ENTITY % Number.datatype "CDATA" >
+
+<!-- integer representing length in pixels -->
+<!ENTITY % Pixels.datatype "CDATA" >
+
+<!-- script expression -->
+<!ENTITY % Script.datatype "CDATA" >
+
+<!-- textual content -->
+<!ENTITY % Text.datatype "CDATA" >
+
+<!-- Imported Datatypes ................................ -->
+
+<!-- a single character from [ISO10646] -->
+<!ENTITY % Character.datatype "CDATA" >
+
+<!-- a character encoding, as per [RFC2045] -->
+<!ENTITY % Charset.datatype "CDATA" >
+
+<!-- a space separated list of character encodings, as per [RFC2045] -->
+<!ENTITY % Charsets.datatype "CDATA" >
+
+<!-- Color specification using color name or sRGB (#RRGGBB) values -->
+<!ENTITY % Color.datatype "CDATA" >
+
+<!-- media type, as per [RFC2045] -->
+<!ENTITY % ContentType.datatype "CDATA" >
+
+<!-- comma-separated list of media types, as per [RFC2045] -->
+<!ENTITY % ContentTypes.datatype "CDATA" >
+
+<!-- date and time information. ISO date format -->
+<!ENTITY % Datetime.datatype "CDATA" >
+
+<!-- formal public identifier, as per [ISO8879] -->
+<!ENTITY % FPI.datatype "CDATA" >
+
+<!-- a language code, as per [RFC3066] -->
+<!ENTITY % LanguageCode.datatype "NMTOKEN" >
+
+<!-- a Uniform Resource Identifier, see [URI] -->
+<!ENTITY % URI.datatype "CDATA" >
+
+<!-- a space-separated list of Uniform Resource Identifiers, see [URI] -->
+<!ENTITY % URIs.datatype "CDATA" >
+
+<!-- end of xhtml-datatypes-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/xhtml-modularization/xhtml-edit-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,66 @@
+<!-- ...................................................................... -->
+<!-- XHTML Editing Elements Module  ....................................... -->
+<!-- file: xhtml-edit-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-edit-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Editing Markup 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-edit-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Editing Elements
+
+        ins, del
+
+     This module declares element types and attributes used to indicate
+     inserted and deleted content while editing a document.
+-->
+
+<!-- ins: Inserted Text  ............................... -->
+
+<!ENTITY % ins.element  "INCLUDE" >
+<![%ins.element;[
+<!ENTITY % ins.content
+     "( #PCDATA | %Flow.mix; )*"
+>
+<!ENTITY % ins.qname  "ins" >
+<!ELEMENT %ins.qname;  %ins.content; >
+<!-- end of ins.element -->]]>
+
+<!ENTITY % ins.attlist  "INCLUDE" >
+<![%ins.attlist;[
+<!ATTLIST %ins.qname;
+      %Common.attrib;
+      cite         %URI.datatype;           #IMPLIED
+      datetime     %Datetime.datatype;      #IMPLIED
+>
+<!-- end of ins.attlist -->]]>
+
+<!-- del: Deleted Text  ................................ -->
+
+<!ENTITY % del.element  "INCLUDE" >
+<![%del.element;[
+<!ENTITY % del.content
+     "( #PCDATA | %Flow.mix; )*"
+>
+<!ENTITY % del.qname  "del" >
+<!ELEMENT %del.qname;  %del.content; >
+<!-- end of del.element -->]]>
+
+<!ENTITY % del.attlist  "INCLUDE" >
+<![%del.attlist;[
+<!ATTLIST %del.qname;
+      %Common.attrib;
+      cite         %URI.datatype;           #IMPLIED
+      datetime     %Datetime.datatype;      #IMPLIED
+>
+<!-- end of del.attlist -->]]>
+
+<!-- end of xhtml-edit-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/xhtml-modularization/xhtml-events-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,120 @@
+<!-- ...................................................................... -->
+<!-- XHTML Intrinsic Events Module  ....................................... -->
+<!-- file: xhtml-events-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-events-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ENTITIES XHTML Intrinsic Events 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-events-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Intrinsic Event Attributes
+
+     These are the event attributes defined in HTML 4,
+     Section 18.2.3 "Intrinsic Events". This module must be
+     instantiated prior to the Attributes Module but after
+     the Datatype Module in the Modular Framework module.
+
+    "Note: Authors of HTML documents are advised that changes
+     are likely to occur in the realm of intrinsic events
+     (e.g., how scripts are bound to events). Research in
+     this realm is carried on by members of the W3C Document
+     Object Model Working Group (see the W3C Web site at
+     http://www.w3.org/ for more information)."
+-->
+<!-- NOTE: Because the ATTLIST declarations in this module occur
+     before their respective ELEMENT declarations in other
+     modules, there may be a dependency on this module that
+     should be considered if any of the parameter entities used
+     for element type names (eg., %a.qname;) are redeclared.
+-->
+
+<!ENTITY % Events.attrib
+     "onclick      %Script.datatype;        #IMPLIED
+      ondblclick   %Script.datatype;        #IMPLIED
+      onmousedown  %Script.datatype;        #IMPLIED
+      onmouseup    %Script.datatype;        #IMPLIED
+      onmouseover  %Script.datatype;        #IMPLIED
+      onmousemove  %Script.datatype;        #IMPLIED
+      onmouseout   %Script.datatype;        #IMPLIED
+      onkeypress   %Script.datatype;        #IMPLIED
+      onkeydown    %Script.datatype;        #IMPLIED
+      onkeyup      %Script.datatype;        #IMPLIED"
+>
+
+<!-- additional attributes on anchor element
+-->
+<!ATTLIST %a.qname;
+     onfocus      %Script.datatype;         #IMPLIED
+     onblur       %Script.datatype;         #IMPLIED
+>
+
+<!-- additional attributes on form element
+-->
+<!ATTLIST %form.qname;
+      onsubmit     %Script.datatype;        #IMPLIED
+      onreset      %Script.datatype;        #IMPLIED
+>
+
+<!-- additional attributes on label element
+-->
+<!ATTLIST %label.qname;
+      onfocus      %Script.datatype;        #IMPLIED
+      onblur       %Script.datatype;        #IMPLIED
+>
+
+<!-- additional attributes on input element
+-->
+<!ATTLIST %input.qname;
+      onfocus      %Script.datatype;        #IMPLIED
+      onblur       %Script.datatype;        #IMPLIED
+      onselect     %Script.datatype;        #IMPLIED
+      onchange     %Script.datatype;        #IMPLIED
+>
+
+<!-- additional attributes on select element
+-->
+<!ATTLIST %select.qname;
+      onfocus      %Script.datatype;        #IMPLIED
+      onblur       %Script.datatype;        #IMPLIED
+      onchange     %Script.datatype;        #IMPLIED
+>
+
+<!-- additional attributes on textarea element
+-->
+<!ATTLIST %textarea.qname;
+      onfocus      %Script.datatype;        #IMPLIED
+      onblur       %Script.datatype;        #IMPLIED
+      onselect     %Script.datatype;        #IMPLIED
+      onchange     %Script.datatype;        #IMPLIED
+>
+
+<!-- additional attributes on button element
+-->
+<!ATTLIST %button.qname;
+      onfocus      %Script.datatype;        #IMPLIED
+      onblur       %Script.datatype;        #IMPLIED
+>
+
+<!-- additional attributes on body element
+-->
+<!ATTLIST %body.qname;
+      onload       %Script.datatype;        #IMPLIED
+      onunload     %Script.datatype;        #IMPLIED
+>
+
+<!-- additional attributes on area element
+-->
+<!ATTLIST %area.qname;
+      onfocus      %Script.datatype;        #IMPLIED
+      onblur       %Script.datatype;        #IMPLIED
+>
+
+<!-- end of xhtml-events-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/xhtml-modularization/xhtml-form-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,291 @@
+<!-- ...................................................................... -->
+<!-- XHTML Forms Module  .................................................. -->
+<!-- file: xhtml-form-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-form-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Forms 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-form-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Forms
+
+        form, label, input, select, optgroup, option,
+        textarea, fieldset, legend, button
+
+     This module declares markup to provide support for online
+     forms, based on the features found in HTML 4 forms.
+-->
+
+<!-- declare qualified element type names:
+-->
+<!ENTITY % form.qname  "form" >
+<!ENTITY % label.qname  "label" >
+<!ENTITY % input.qname  "input" >
+<!ENTITY % select.qname  "select" >
+<!ENTITY % optgroup.qname  "optgroup" >
+<!ENTITY % option.qname  "option" >
+<!ENTITY % textarea.qname  "textarea" >
+<!ENTITY % fieldset.qname  "fieldset" >
+<!ENTITY % legend.qname  "legend" >
+<!ENTITY % button.qname  "button" >
+
+<!-- %BlkNoForm.mix; includes all non-form block elements,
+     plus %Misc.class;
+-->
+<!ENTITY % BlkNoForm.mix
+     "%Heading.class;
+      | %List.class;
+      | %BlkStruct.class;
+      %BlkPhras.class;
+      %BlkPres.class;
+      %Table.class;
+      %Block.extra;
+      %Misc.class;"
+>
+
+<!-- form: Form Element ................................ -->
+
+<!ENTITY % form.element  "INCLUDE" >
+<![%form.element;[
+<!ENTITY % form.content
+     "( %BlkNoForm.mix;
+      | %fieldset.qname; )+"
+>
+<!ELEMENT %form.qname;  %form.content; >
+<!-- end of form.element -->]]>
+
+<!ENTITY % form.attlist  "INCLUDE" >
+<![%form.attlist;[
+<!ATTLIST %form.qname;
+      %Common.attrib;
+      action       %URI.datatype;           #REQUIRED
+      method       ( get | post )           'get'
+      enctype      %ContentType.datatype;   'application/x-www-form-urlencoded'
+      accept-charset %Charsets.datatype;    #IMPLIED
+      accept       %ContentTypes.datatype;  #IMPLIED
+>
+<!-- end of form.attlist -->]]>
+
+<!-- label: Form Field Label Text ...................... -->
+
+<!-- Each label must not contain more than ONE field
+-->
+
+<!ENTITY % label.element  "INCLUDE" >
+<![%label.element;[
+<!ENTITY % label.content
+     "( #PCDATA
+      | %input.qname; | %select.qname; | %textarea.qname; | %button.qname;
+      | %InlStruct.class;
+      %InlPhras.class;
+      %I18n.class;
+      %InlPres.class;
+      %Anchor.class;
+      %InlSpecial.class;
+      %Inline.extra;
+      %Misc.class; )*"
+>
+<!ELEMENT %label.qname;  %label.content; >
+<!-- end of label.element -->]]>
+
+<!ENTITY % label.attlist  "INCLUDE" >
+<![%label.attlist;[
+<!ATTLIST %label.qname;
+      %Common.attrib;
+      for          IDREF                    #IMPLIED
+      accesskey    %Character.datatype;     #IMPLIED
+>
+<!-- end of label.attlist -->]]>
+
+<!-- input: Form Control ............................... -->
+
+<!ENTITY % input.element  "INCLUDE" >
+<![%input.element;[
+<!ENTITY % input.content  "EMPTY" >
+<!ELEMENT %input.qname;  %input.content; >
+<!-- end of input.element -->]]>
+
+<!ENTITY % input.attlist  "INCLUDE" >
+<![%input.attlist;[
+<!ENTITY % InputType.class
+     "( text | password | checkbox | radio | submit
+      | reset | file | hidden | image | button )"
+>
+<!-- attribute 'name' required for all but submit & reset
+-->
+<!ATTLIST %input.qname;
+      %Common.attrib;
+      type         %InputType.class;        'text'
+      name         CDATA                    #IMPLIED
+      value        CDATA                    #IMPLIED
+      checked      ( checked )              #IMPLIED
+      disabled     ( disabled )             #IMPLIED
+      readonly     ( readonly )             #IMPLIED
+      size         %Number.datatype;        #IMPLIED
+      maxlength    %Number.datatype;        #IMPLIED
+      src          %URI.datatype;           #IMPLIED
+      alt          %Text.datatype;          #IMPLIED
+      tabindex     %Number.datatype;        #IMPLIED
+      accesskey    %Character.datatype;     #IMPLIED
+      accept       %ContentTypes.datatype;  #IMPLIED
+>
+<!-- end of input.attlist -->]]>
+
+<!-- select: Option Selector ........................... -->
+
+<!ENTITY % select.element  "INCLUDE" >
+<![%select.element;[
+<!ENTITY % select.content
+     "( %optgroup.qname; | %option.qname; )+"
+>
+<!ELEMENT %select.qname;  %select.content; >
+<!-- end of select.element -->]]>
+
+<!ENTITY % select.attlist  "INCLUDE" >
+<![%select.attlist;[
+<!ATTLIST %select.qname;
+      %Common.attrib;
+      name         CDATA                    #IMPLIED
+      size         %Number.datatype;        #IMPLIED
+      multiple     ( multiple )             #IMPLIED
+      disabled     ( disabled )             #IMPLIED
+      tabindex     %Number.datatype;        #IMPLIED
+>
+<!-- end of select.attlist -->]]>
+
+<!-- optgroup: Option Group ............................ -->
+
+<!ENTITY % optgroup.element  "INCLUDE" >
+<![%optgroup.element;[
+<!ENTITY % optgroup.content  "( %option.qname; )+" >
+<!ELEMENT %optgroup.qname;  %optgroup.content; >
+<!-- end of optgroup.element -->]]>
+
+<!ENTITY % optgroup.attlist  "INCLUDE" >
+<![%optgroup.attlist;[
+<!ATTLIST %optgroup.qname;
+      %Common.attrib;
+      disabled     ( disabled )             #IMPLIED
+      label        %Text.datatype;          #REQUIRED
+>
+<!-- end of optgroup.attlist -->]]>
+
+<!-- option: Selectable Choice ......................... -->
+
+<!ENTITY % option.element  "INCLUDE" >
+<![%option.element;[
+<!ENTITY % option.content  "( #PCDATA )" >
+<!ELEMENT %option.qname;  %option.content; >
+<!-- end of option.element -->]]>
+
+<!ENTITY % option.attlist  "INCLUDE" >
+<![%option.attlist;[
+<!ATTLIST %option.qname;
+      %Common.attrib;
+      selected     ( selected )             #IMPLIED
+      disabled     ( disabled )             #IMPLIED
+      label        %Text.datatype;          #IMPLIED
+      value        CDATA                    #IMPLIED
+>
+<!-- end of option.attlist -->]]>
+
+<!-- textarea: Multi-Line Text Field ................... -->
+
+<!ENTITY % textarea.element  "INCLUDE" >
+<![%textarea.element;[
+<!ENTITY % textarea.content  "( #PCDATA )" >
+<!ELEMENT %textarea.qname;  %textarea.content; >
+<!-- end of textarea.element -->]]>
+
+<!ENTITY % textarea.attlist  "INCLUDE" >
+<![%textarea.attlist;[
+<!ATTLIST %textarea.qname;
+      %Common.attrib;
+      name         CDATA                    #IMPLIED
+      rows         %Number.datatype;        #REQUIRED
+      cols         %Number.datatype;        #REQUIRED
+      disabled     ( disabled )             #IMPLIED
+      readonly     ( readonly )             #IMPLIED
+      tabindex     %Number.datatype;        #IMPLIED
+      accesskey    %Character.datatype;     #IMPLIED
+>
+<!-- end of textarea.attlist -->]]>
+
+<!-- fieldset: Form Control Group ...................... -->
+
+<!-- #PCDATA is to solve the mixed content problem,
+     per specification only whitespace is allowed
+-->
+
+<!ENTITY % fieldset.element  "INCLUDE" >
+<![%fieldset.element;[
+<!ENTITY % fieldset.content
+     "( #PCDATA | %legend.qname; | %Flow.mix; )*"
+>
+<!ELEMENT %fieldset.qname;  %fieldset.content; >
+<!-- end of fieldset.element -->]]>
+
+<!ENTITY % fieldset.attlist  "INCLUDE" >
+<![%fieldset.attlist;[
+<!ATTLIST %fieldset.qname;
+      %Common.attrib;
+>
+<!-- end of fieldset.attlist -->]]>
+
+<!-- legend: Fieldset Legend ........................... -->
+
+<!ENTITY % legend.element  "INCLUDE" >
+<![%legend.element;[
+<!ENTITY % legend.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ELEMENT %legend.qname;  %legend.content; >
+<!-- end of legend.element -->]]>
+
+<!ENTITY % legend.attlist  "INCLUDE" >
+<![%legend.attlist;[
+<!ATTLIST %legend.qname;
+      %Common.attrib;
+      accesskey    %Character.datatype;     #IMPLIED
+>
+<!-- end of legend.attlist -->]]>
+
+<!-- button: Push Button ............................... -->
+
+<!ENTITY % button.element  "INCLUDE" >
+<![%button.element;[
+<!ENTITY % button.content
+     "( #PCDATA
+      | %BlkNoForm.mix;
+      | %InlStruct.class;
+      %InlPhras.class;
+      %InlPres.class;
+      %I18n.class;
+      %InlSpecial.class;
+      %Inline.extra; )*"
+>
+<!ELEMENT %button.qname;  %button.content; >
+<!-- end of button.element -->]]>
+
+<!ENTITY % button.attlist  "INCLUDE" >
+<![%button.attlist;[
+<!ATTLIST %button.qname;
+      %Common.attrib;
+      name         CDATA                    #IMPLIED
+      value        CDATA                    #IMPLIED
+      type         ( button | submit | reset ) 'submit'
+      disabled     ( disabled )             #IMPLIED
+      tabindex     %Number.datatype;        #IMPLIED
+      accesskey    %Character.datatype;     #IMPLIED
+>
+<!-- end of button.attlist -->]]>
+
+<!-- end of xhtml-form-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/xhtml-modularization/xhtml-framework-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,98 @@
+<!-- ...................................................................... -->
+<!-- XHTML Modular Framework Module  ...................................... -->
+<!-- file: xhtml-framework-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-framework-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ENTITIES XHTML Modular Framework 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-framework-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Modular Framework
+
+     This required module instantiates the modules needed
+     to support the XHTML modularization model, including:
+
+        +  notations
+        +  datatypes
+        +  namespace-qualified names
+        +  common attributes
+        +  document model
+        +  character entities
+
+     The Intrinsic Events module is ignored by default but
+     occurs in this module because it must be instantiated
+     prior to Attributes but after Datatypes.
+-->
+
+<!ENTITY % xhtml-arch.module "IGNORE" >
+<![%xhtml-arch.module;[
+<!ENTITY % xhtml-arch.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Base Architecture 1.0//EN"
+            "xhtml-arch-1.mod" >
+%xhtml-arch.mod;]]>
+
+<!ENTITY % xhtml-notations.module "INCLUDE" >
+<![%xhtml-notations.module;[
+<!ENTITY % xhtml-notations.mod
+     PUBLIC "-//W3C//NOTATIONS XHTML Notations 1.0//EN"
+            "xhtml-notations-1.mod" >
+%xhtml-notations.mod;]]>
+
+<!ENTITY % xhtml-datatypes.module "INCLUDE" >
+<![%xhtml-datatypes.module;[
+<!ENTITY % xhtml-datatypes.mod
+     PUBLIC "-//W3C//ENTITIES XHTML Datatypes 1.0//EN"
+            "xhtml-datatypes-1.mod" >
+%xhtml-datatypes.mod;]]>
+
+<!-- placeholder for XLink support module -->
+<!ENTITY % xhtml-xlink.mod "" >
+%xhtml-xlink.mod;
+
+<!ENTITY % xhtml-qname.module "INCLUDE" >
+<![%xhtml-qname.module;[
+<!ENTITY % xhtml-qname.mod
+     PUBLIC "-//W3C//ENTITIES XHTML Qualified Names 1.0//EN"
+            "xhtml-qname-1.mod" >
+%xhtml-qname.mod;]]>
+
+<!ENTITY % xhtml-events.module "IGNORE" >
+<![%xhtml-events.module;[
+<!ENTITY % xhtml-events.mod
+     PUBLIC "-//W3C//ENTITIES XHTML Intrinsic Events 1.0//EN"
+            "xhtml-events-1.mod" >
+%xhtml-events.mod;]]>
+
+<!ENTITY % xhtml-attribs.module "INCLUDE" >
+<![%xhtml-attribs.module;[
+<!ENTITY % xhtml-attribs.mod
+     PUBLIC "-//W3C//ENTITIES XHTML Common Attributes 1.0//EN"
+            "xhtml-attribs-1.mod" >
+%xhtml-attribs.mod;]]>
+
+<!-- placeholder for content model redeclarations -->
+<!ENTITY % xhtml-model.redecl "" >
+%xhtml-model.redecl;
+
+<!ENTITY % xhtml-model.module "INCLUDE" >
+<![%xhtml-model.module;[
+<!-- instantiate the Document Model module declared in the DTD driver
+-->
+%xhtml-model.mod;]]>
+
+<!ENTITY % xhtml-charent.module "INCLUDE" >
+<![%xhtml-charent.module;[
+<!ENTITY % xhtml-charent.mod
+     PUBLIC "-//W3C//ENTITIES XHTML Character Entities 1.0//EN"
+            "xhtml-charent-1.mod" >
+%xhtml-charent.mod;]]>
+
+<!-- end of xhtml-framework-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/xhtml-modularization/xhtml-hypertext-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,54 @@
+<!-- ...................................................................... -->
+<!-- XHTML Hypertext Module  .............................................. -->
+<!-- file: xhtml-hypertext-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-hypertext-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Hypertext 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-hypertext-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Hypertext
+
+        a
+
+     This module declares the anchor ('a') element type, which
+     defines the source of a hypertext link. The destination
+     (or link 'target') is identified via its 'id' attribute
+     rather than the 'name' attribute as was used in HTML.
+-->
+
+<!-- ............  Anchor Element  ............ -->
+
+<!ENTITY % a.element  "INCLUDE" >
+<![%a.element;[
+<!ENTITY % a.content
+     "( #PCDATA | %InlNoAnchor.mix; )*"
+>
+<!ENTITY % a.qname  "a" >
+<!ELEMENT %a.qname;  %a.content; >
+<!-- end of a.element -->]]>
+
+<!ENTITY % a.attlist  "INCLUDE" >
+<![%a.attlist;[
+<!ATTLIST %a.qname;
+      %Common.attrib;
+      href         %URI.datatype;           #IMPLIED
+      charset      %Charset.datatype;       #IMPLIED
+      type         %ContentType.datatype;   #IMPLIED
+      hreflang     %LanguageCode.datatype;  #IMPLIED
+      rel          %LinkTypes.datatype;     #IMPLIED
+      rev          %LinkTypes.datatype;     #IMPLIED
+      accesskey    %Character.datatype;     #IMPLIED
+      tabindex     %Number.datatype;        #IMPLIED
+>
+<!-- end of a.attlist -->]]>
+
+<!-- end of xhtml-hypertext-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/xhtml-modularization/xhtml-image-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,50 @@
+<!-- ...................................................................... -->
+<!-- XHTML Images Module  ................................................. -->
+<!-- file: xhtml-image-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Rovision: $Id: xhtml-image-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Images 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-image-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Images
+
+        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.
+-->
+
+<!ENTITY % img.element  "INCLUDE" >
+<![%img.element;[
+<!ENTITY % img.content  "EMPTY" >
+<!ENTITY % img.qname  "img" >
+<!ELEMENT %img.qname;  %img.content; >
+<!-- end of img.element -->]]>
+
+<!ENTITY % img.attlist  "INCLUDE" >
+<![%img.attlist;[
+<!ATTLIST %img.qname;
+      %Common.attrib;
+      src          %URI.datatype;           #REQUIRED
+      alt          %Text.datatype;          #REQUIRED
+      longdesc     %URI.datatype;           #IMPLIED
+      height       %Length.datatype;        #IMPLIED
+      width        %Length.datatype;        #IMPLIED
+>
+<!-- end of img.attlist -->]]>
+
+<!-- end of xhtml-image-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/xhtml-modularization/xhtml-inlphras-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,203 @@
+<!-- ...................................................................... -->
+<!-- XHTML Inline Phrasal Module  ......................................... -->
+<!-- file: xhtml-inlphras-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-inlphras-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Inline Phrasal 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-inlphras-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Inline Phrasal
+
+        abbr, acronym, cite, code, dfn, em, kbd, q, samp, strong, var
+
+     This module declares the elements and their attributes used to
+     support inline-level phrasal markup.
+-->
+
+<!ENTITY % abbr.element  "INCLUDE" >
+<![%abbr.element;[
+<!ENTITY % abbr.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % abbr.qname  "abbr" >
+<!ELEMENT %abbr.qname;  %abbr.content; >
+<!-- end of abbr.element -->]]>
+
+<!ENTITY % abbr.attlist  "INCLUDE" >
+<![%abbr.attlist;[
+<!ATTLIST %abbr.qname;
+      %Common.attrib;
+>
+<!-- end of abbr.attlist -->]]>
+
+<!ENTITY % acronym.element  "INCLUDE" >
+<![%acronym.element;[
+<!ENTITY % acronym.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % acronym.qname  "acronym" >
+<!ELEMENT %acronym.qname;  %acronym.content; >
+<!-- end of acronym.element -->]]>
+
+<!ENTITY % acronym.attlist  "INCLUDE" >
+<![%acronym.attlist;[
+<!ATTLIST %acronym.qname;
+      %Common.attrib;
+>
+<!-- end of acronym.attlist -->]]>
+
+<!ENTITY % cite.element  "INCLUDE" >
+<![%cite.element;[
+<!ENTITY % cite.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % cite.qname  "cite" >
+<!ELEMENT %cite.qname;  %cite.content; >
+<!-- end of cite.element -->]]>
+
+<!ENTITY % cite.attlist  "INCLUDE" >
+<![%cite.attlist;[
+<!ATTLIST %cite.qname;
+      %Common.attrib;
+>
+<!-- end of cite.attlist -->]]>
+
+<!ENTITY % code.element  "INCLUDE" >
+<![%code.element;[
+<!ENTITY % code.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % code.qname  "code" >
+<!ELEMENT %code.qname;  %code.content; >
+<!-- end of code.element -->]]>
+
+<!ENTITY % code.attlist  "INCLUDE" >
+<![%code.attlist;[
+<!ATTLIST %code.qname;
+      %Common.attrib;
+>
+<!-- end of code.attlist -->]]>
+
+<!ENTITY % dfn.element  "INCLUDE" >
+<![%dfn.element;[
+<!ENTITY % dfn.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % dfn.qname  "dfn" >
+<!ELEMENT %dfn.qname;  %dfn.content; >
+<!-- end of dfn.element -->]]>
+
+<!ENTITY % dfn.attlist  "INCLUDE" >
+<![%dfn.attlist;[
+<!ATTLIST %dfn.qname;
+      %Common.attrib;
+>
+<!-- end of dfn.attlist -->]]>
+
+<!ENTITY % em.element  "INCLUDE" >
+<![%em.element;[
+<!ENTITY % em.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % em.qname  "em" >
+<!ELEMENT %em.qname;  %em.content; >
+<!-- end of em.element -->]]>
+
+<!ENTITY % em.attlist  "INCLUDE" >
+<![%em.attlist;[
+<!ATTLIST %em.qname;
+      %Common.attrib;
+>
+<!-- end of em.attlist -->]]>
+
+<!ENTITY % kbd.element  "INCLUDE" >
+<![%kbd.element;[
+<!ENTITY % kbd.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % kbd.qname  "kbd" >
+<!ELEMENT %kbd.qname;  %kbd.content; >
+<!-- end of kbd.element -->]]>
+
+<!ENTITY % kbd.attlist  "INCLUDE" >
+<![%kbd.attlist;[
+<!ATTLIST %kbd.qname;
+      %Common.attrib;
+>
+<!-- end of kbd.attlist -->]]>
+
+<!ENTITY % q.element  "INCLUDE" >
+<![%q.element;[
+<!ENTITY % q.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % q.qname  "q" >
+<!ELEMENT %q.qname;  %q.content; >
+<!-- end of q.element -->]]>
+
+<!ENTITY % q.attlist  "INCLUDE" >
+<![%q.attlist;[
+<!ATTLIST %q.qname;
+      %Common.attrib;
+      cite         %URI.datatype;           #IMPLIED
+>
+<!-- end of q.attlist -->]]>
+
+<!ENTITY % samp.element  "INCLUDE" >
+<![%samp.element;[
+<!ENTITY % samp.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % samp.qname  "samp" >
+<!ELEMENT %samp.qname;  %samp.content; >
+<!-- end of samp.element -->]]>
+
+<!ENTITY % samp.attlist  "INCLUDE" >
+<![%samp.attlist;[
+<!ATTLIST %samp.qname;
+      %Common.attrib;
+>
+<!-- end of samp.attlist -->]]>
+
+<!ENTITY % strong.element  "INCLUDE" >
+<![%strong.element;[
+<!ENTITY % strong.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % strong.qname  "strong" >
+<!ELEMENT %strong.qname;  %strong.content; >
+<!-- end of strong.element -->]]>
+
+<!ENTITY % strong.attlist  "INCLUDE" >
+<![%strong.attlist;[
+<!ATTLIST %strong.qname;
+      %Common.attrib;
+>
+<!-- end of strong.attlist -->]]>
+
+<!ENTITY % var.element  "INCLUDE" >
+<![%var.element;[
+<!ENTITY % var.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % var.qname  "var" >
+<!ELEMENT %var.qname;  %var.content; >
+<!-- end of var.element -->]]>
+
+<!ENTITY % var.attlist  "INCLUDE" >
+<![%var.attlist;[
+<!ATTLIST %var.qname;
+      %Common.attrib;
+>
+<!-- end of var.attlist -->]]>
+
+<!-- end of xhtml-inlphras-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/xhtml-modularization/xhtml-inlpres-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,138 @@
+<!-- ...................................................................... -->
+<!-- XHTML Inline Presentation Module  .................................... -->
+<!-- file: xhtml-inlpres-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-inlpres-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Inline Presentation 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-inlpres-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- 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.
+-->
+
+<!ENTITY % b.element  "INCLUDE" >
+<![%b.element;[
+<!ENTITY % b.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % b.qname  "b" >
+<!ELEMENT %b.qname;  %b.content; >
+<!-- end of b.element -->]]>
+
+<!ENTITY % b.attlist  "INCLUDE" >
+<![%b.attlist;[
+<!ATTLIST %b.qname;
+      %Common.attrib;
+>
+<!-- end of b.attlist -->]]>
+
+<!ENTITY % big.element  "INCLUDE" >
+<![%big.element;[
+<!ENTITY % big.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % big.qname  "big" >
+<!ELEMENT %big.qname;  %big.content; >
+<!-- end of big.element -->]]>
+
+<!ENTITY % big.attlist  "INCLUDE" >
+<![%big.attlist;[
+<!ATTLIST %big.qname;
+      %Common.attrib;
+>
+<!-- end of big.attlist -->]]>
+
+<!ENTITY % i.element  "INCLUDE" >
+<![%i.element;[
+<!ENTITY % i.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % i.qname  "i" >
+<!ELEMENT %i.qname;  %i.content; >
+<!-- end of i.element -->]]>
+
+<!ENTITY % i.attlist  "INCLUDE" >
+<![%i.attlist;[
+<!ATTLIST %i.qname;
+      %Common.attrib;
+>
+<!-- end of i.attlist -->]]>
+
+<!ENTITY % small.element  "INCLUDE" >
+<![%small.element;[
+<!ENTITY % small.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % small.qname  "small" >
+<!ELEMENT %small.qname;  %small.content; >
+<!-- end of small.element -->]]>
+
+<!ENTITY % small.attlist  "INCLUDE" >
+<![%small.attlist;[
+<!ATTLIST %small.qname;
+      %Common.attrib;
+>
+<!-- end of small.attlist -->]]>
+
+<!ENTITY % sub.element  "INCLUDE" >
+<![%sub.element;[
+<!ENTITY % sub.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % sub.qname  "sub" >
+<!ELEMENT %sub.qname;  %sub.content; >
+<!-- end of sub.element -->]]>
+
+<!ENTITY % sub.attlist  "INCLUDE" >
+<![%sub.attlist;[
+<!ATTLIST %sub.qname;
+      %Common.attrib;
+>
+<!-- end of sub.attlist -->]]>
+
+<!ENTITY % sup.element  "INCLUDE" >
+<![%sup.element;[
+<!ENTITY % sup.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % sup.qname  "sup" >
+<!ELEMENT %sup.qname;  %sup.content; >
+<!-- end of sup.element -->]]>
+
+<!ENTITY % sup.attlist  "INCLUDE" >
+<![%sup.attlist;[
+<!ATTLIST %sup.qname;
+      %Common.attrib;
+>
+<!-- end of sup.attlist -->]]>
+
+<!ENTITY % tt.element  "INCLUDE" >
+<![%tt.element;[
+<!ENTITY % tt.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % tt.qname  "tt" >
+<!ELEMENT %tt.qname;  %tt.content; >
+<!-- end of tt.element -->]]>
+
+<!ENTITY % tt.attlist  "INCLUDE" >
+<![%tt.attlist;[
+<!ATTLIST %tt.qname;
+      %Common.attrib;
+>
+<!-- end of tt.attlist -->]]>
+
+<!-- end of xhtml-inlpres-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/xhtml-modularization/xhtml-inlstruct-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,62 @@
+<!-- ...................................................................... -->
+<!-- XHTML Inline Structural Module  ...................................... -->
+<!-- file: xhtml-inlstruct-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-inlstruct-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Inline Structural 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-inlstruct-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Inline Structural
+
+        br, span
+
+     This module declares the elements and their attributes
+     used to support inline-level structural markup.
+-->
+
+<!-- br: forced line break ............................. -->
+
+<!ENTITY % br.element  "INCLUDE" >
+<![%br.element;[
+
+<!ENTITY % br.content  "EMPTY" >
+<!ENTITY % br.qname  "br" >
+<!ELEMENT %br.qname;  %br.content; >
+
+<!-- end of br.element -->]]>
+
+<!ENTITY % br.attlist  "INCLUDE" >
+<![%br.attlist;[
+<!ATTLIST %br.qname;
+      %Core.attrib;
+>
+<!-- end of br.attlist -->]]>
+
+<!-- span: generic inline container .................... -->
+
+<!ENTITY % span.element  "INCLUDE" >
+<![%span.element;[
+<!ENTITY % span.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % span.qname  "span" >
+<!ELEMENT %span.qname;  %span.content; >
+<!-- end of span.element -->]]>
+
+<!ENTITY % span.attlist  "INCLUDE" >
+<![%span.attlist;[
+<!ATTLIST %span.qname;
+      %Common.attrib;
+>
+<!-- end of span.attlist -->]]>
+
+<!-- end of xhtml-inlstruct-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/xhtml-modularization/xhtml-inlstyle-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,34 @@
+<!-- ...................................................................... -->
+<!-- XHTML Inline Style Module  ........................................... -->
+<!-- file: xhtml-inlstyle-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-inlstyle-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ENTITIES XHTML Inline Style 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-inlstyle-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Inline Style
+
+     This module declares the 'style' attribute, used to support inline
+     style markup. This module must be instantiated prior to the XHTML
+     Common Attributes module in order to be included in %Core.attrib;.
+-->
+
+<!ENTITY % style.attrib
+     "style        CDATA                    #IMPLIED"
+>
+
+
+<!ENTITY % Core.extra.attrib
+     "%style.attrib;"
+>
+
+<!-- end of xhtml-inlstyle-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/xhtml-modularization/xhtml-lat1.ent	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,121 @@
+<!-- ...................................................................... -->
+<!-- XML-compatible ISO Latin 1 Character Entity Set for XHTML ............ -->
+<!-- file: xhtml-lat1.ent
+
+     Typical invocation:
+
+       <!ENTITY % xhtml-lat1
+           PUBLIC "-//W3C//ENTITIES Latin 1 for XHTML//EN"
+                  "xhtml-lat1.ent" >
+       %xhtml-lat1;
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ENTITIES Latin 1 for XHTML//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-lat1.ent"
+
+     Revision:  $Id: xhtml-lat1.ent,v 1.1 2004-02-23 16:12:06 ylafon Exp $ SMI
+
+     Portions (C) International Organization for Standardization 1986:
+     Permission to copy in any form is granted for use with conforming
+     SGML systems and applications as defined in ISO 8879, provided
+     this notice is included in all copies.
+-->
+
+<!ENTITY nbsp   "&#160;" ><!-- no-break space = non-breaking space, U+00A0 ISOnum -->
+<!ENTITY iexcl  "&#161;" ><!-- inverted exclamation mark, U+00A1 ISOnum -->
+<!ENTITY cent   "&#162;" ><!-- cent sign, U+00A2 ISOnum -->
+<!ENTITY pound  "&#163;" ><!-- pound sign, U+00A3 ISOnum -->
+<!ENTITY curren "&#164;" ><!-- currency sign, U+00A4 ISOnum -->
+<!ENTITY yen    "&#165;" ><!-- yen sign = yuan sign, U+00A5 ISOnum -->
+<!ENTITY brvbar "&#166;" ><!-- broken bar = broken vertical bar, U+00A6 ISOnum -->
+<!ENTITY sect   "&#167;" ><!-- section sign, U+00A7 ISOnum -->
+<!ENTITY uml    "&#168;" ><!-- diaeresis = spacing diaeresis, U+00A8 ISOdia -->
+<!ENTITY copy   "&#169;" ><!-- copyright sign, U+00A9 ISOnum -->
+<!ENTITY ordf   "&#170;" ><!-- feminine ordinal indicator, U+00AA ISOnum -->
+<!ENTITY laquo  "&#171;" ><!-- left-pointing double angle quotation mark = left pointing guillemet, U+00AB ISOnum -->
+<!ENTITY not    "&#172;" ><!-- not sign, U+00AC ISOnum -->
+<!ENTITY shy    "&#173;" ><!-- soft hyphen = discretionary hyphen, U+00AD ISOnum -->
+<!ENTITY reg    "&#174;" ><!-- registered sign = registered trade mark sign, U+00AE ISOnum -->
+<!ENTITY macr   "&#175;" ><!-- macron = spacing macron = overline = APL overbar, U+00AF ISOdia -->
+<!ENTITY deg    "&#176;" ><!-- degree sign, U+00B0 ISOnum -->
+<!ENTITY plusmn "&#177;" ><!-- plus-minus sign = plus-or-minus sign, U+00B1 ISOnum -->
+<!ENTITY sup2   "&#178;" ><!-- superscript two = superscript digit two = squared, U+00B2 ISOnum -->
+<!ENTITY sup3   "&#179;" ><!-- superscript three = superscript digit three = cubed, U+00B3 ISOnum -->
+<!ENTITY acute  "&#180;" ><!-- acute accent = spacing acute, U+00B4 ISOdia -->
+<!ENTITY micro  "&#181;" ><!-- micro sign, U+00B5 ISOnum -->
+<!ENTITY para   "&#182;" ><!-- pilcrow sign = paragraph sign, U+00B6 ISOnum -->
+<!ENTITY middot "&#183;" ><!-- middle dot = Georgian comma = Greek middle dot, U+00B7 ISOnum -->
+<!ENTITY cedil  "&#184;" ><!-- cedilla = spacing cedilla, U+00B8 ISOdia -->
+<!ENTITY sup1   "&#185;" ><!-- superscript one = superscript digit one, U+00B9 ISOnum -->
+<!ENTITY ordm   "&#186;" ><!-- masculine ordinal indicator, U+00BA ISOnum -->
+<!ENTITY raquo  "&#187;" ><!-- right-pointing double angle quotation mark = right pointing guillemet, U+00BB ISOnum -->
+<!ENTITY frac14 "&#188;" ><!-- vulgar fraction one quarter = fraction one quarter, U+00BC ISOnum -->
+<!ENTITY frac12 "&#189;" ><!-- vulgar fraction one half = fraction one half, U+00BD ISOnum -->
+<!ENTITY frac34 "&#190;" ><!-- vulgar fraction three quarters = fraction three quarters, U+00BE ISOnum -->
+<!ENTITY iquest "&#191;" ><!-- inverted question mark = turned question mark, U+00BF ISOnum -->
+<!ENTITY Agrave "&#192;" ><!-- latin capital A with grave = latin capital A grave, U+00C0 ISOlat1 -->
+<!ENTITY Aacute "&#193;" ><!-- latin capital A with acute, U+00C1 ISOlat1 -->
+<!ENTITY Acirc  "&#194;" ><!-- latin capital A with circumflex, U+00C2 ISOlat1 -->
+<!ENTITY Atilde "&#195;" ><!-- latin capital A with tilde, U+00C3 ISOlat1 -->
+<!ENTITY Auml   "&#196;" ><!-- latin capital A with diaeresis, U+00C4 ISOlat1 -->
+<!ENTITY Aring  "&#197;" ><!-- latin capital A with ring above = latin capital A ring, U+00C5 ISOlat1 -->
+<!ENTITY AElig  "&#198;" ><!-- latin capital AE = latin capital ligature AE, U+00C6 ISOlat1 -->
+<!ENTITY Ccedil "&#199;" ><!-- latin capital C with cedilla, U+00C7 ISOlat1 -->
+<!ENTITY Egrave "&#200;" ><!-- latin capital E with grave, U+00C8 ISOlat1 -->
+<!ENTITY Eacute "&#201;" ><!-- latin capital E with acute, U+00C9 ISOlat1 -->
+<!ENTITY Ecirc  "&#202;" ><!-- latin capital E with circumflex, U+00CA ISOlat1 -->
+<!ENTITY Euml   "&#203;" ><!-- latin capital E with diaeresis, U+00CB ISOlat1 -->
+<!ENTITY Igrave "&#204;" ><!-- latin capital I with grave, U+00CC ISOlat1 -->
+<!ENTITY Iacute "&#205;" ><!-- latin capital I with acute, U+00CD ISOlat1 -->
+<!ENTITY Icirc  "&#206;" ><!-- latin capital I with circumflex, U+00CE ISOlat1 -->
+<!ENTITY Iuml   "&#207;" ><!-- latin capital I with diaeresis, U+00CF ISOlat1 -->
+<!ENTITY ETH    "&#208;" ><!-- latin capital ETH, U+00D0 ISOlat1 -->
+<!ENTITY Ntilde "&#209;" ><!-- latin capital N with tilde, U+00D1 ISOlat1 -->
+<!ENTITY Ograve "&#210;" ><!-- latin capital O with grave, U+00D2 ISOlat1 -->
+<!ENTITY Oacute "&#211;" ><!-- latin capital O with acute, U+00D3 ISOlat1 -->
+<!ENTITY Ocirc  "&#212;" ><!-- latin capital O with circumflex, U+00D4 ISOlat1 -->
+<!ENTITY Otilde "&#213;" ><!-- latin capital O with tilde, U+00D5 ISOlat1 -->
+<!ENTITY Ouml   "&#214;" ><!-- latin capital O with diaeresis, U+00D6 ISOlat1 -->
+<!ENTITY times  "&#215;" ><!-- multiplication sign, U+00D7 ISOnum -->
+<!ENTITY Oslash "&#216;" ><!-- latin capital O with stroke = latin capital O slash, U+00D8 ISOlat1 -->
+<!ENTITY Ugrave "&#217;" ><!-- latin capital U with grave, U+00D9 ISOlat1 -->
+<!ENTITY Uacute "&#218;" ><!-- latin capital U with acute, U+00DA ISOlat1 -->
+<!ENTITY Ucirc  "&#219;" ><!-- latin capital U with circumflex, U+00DB ISOlat1 -->
+<!ENTITY Uuml   "&#220;" ><!-- latin capital U with diaeresis, U+00DC ISOlat1 -->
+<!ENTITY Yacute "&#221;" ><!-- latin capital Y with acute, U+00DD ISOlat1 -->
+<!ENTITY THORN  "&#222;" ><!-- latin capital THORN, U+00DE ISOlat1 -->
+<!ENTITY szlig  "&#223;" ><!-- latin small sharp s = ess-zed, U+00DF ISOlat1 -->
+<!ENTITY agrave "&#224;" ><!-- latin small a with grave = latin small a grave, U+00E0 ISOlat1 -->
+<!ENTITY aacute "&#225;" ><!-- latin small a with acute, U+00E1 ISOlat1 -->
+<!ENTITY acirc  "&#226;" ><!-- latin small a with circumflex, U+00E2 ISOlat1 -->
+<!ENTITY atilde "&#227;" ><!-- latin small a with tilde, U+00E3 ISOlat1 -->
+<!ENTITY auml   "&#228;" ><!-- latin small a with diaeresis, U+00E4 ISOlat1 -->
+<!ENTITY aring  "&#229;" ><!-- latin small a with ring above = latin small a ring, U+00E5 ISOlat1 -->
+<!ENTITY aelig  "&#230;" ><!-- latin small ae = latin small ligature ae, U+00E6 ISOlat1 -->
+<!ENTITY ccedil "&#231;" ><!-- latin small c with cedilla, U+00E7 ISOlat1 -->
+<!ENTITY egrave "&#232;" ><!-- latin small e with grave, U+00E8 ISOlat1 -->
+<!ENTITY eacute "&#233;" ><!-- latin small e with acute, U+00E9 ISOlat1 -->
+<!ENTITY ecirc  "&#234;" ><!-- latin small e with circumflex, U+00EA ISOlat1 -->
+<!ENTITY euml   "&#235;" ><!-- latin small e with diaeresis, U+00EB ISOlat1 -->
+<!ENTITY igrave "&#236;" ><!-- latin small i with grave, U+00EC ISOlat1 -->
+<!ENTITY iacute "&#237;" ><!-- latin small i with acute, U+00ED ISOlat1 -->
+<!ENTITY icirc  "&#238;" ><!-- latin small i with circumflex, U+00EE ISOlat1 -->
+<!ENTITY iuml   "&#239;" ><!-- latin small i with diaeresis, U+00EF ISOlat1 -->
+<!ENTITY eth    "&#240;" ><!-- latin small eth, U+00F0 ISOlat1 -->
+<!ENTITY ntilde "&#241;" ><!-- latin small n with tilde, U+00F1 ISOlat1 -->
+<!ENTITY ograve "&#242;" ><!-- latin small o with grave, U+00F2 ISOlat1 -->
+<!ENTITY oacute "&#243;" ><!-- latin small o with acute, U+00F3 ISOlat1 -->
+<!ENTITY ocirc  "&#244;" ><!-- latin small o with circumflex, U+00F4 ISOlat1 -->
+<!ENTITY otilde "&#245;" ><!-- latin small o with tilde, U+00F5 ISOlat1 -->
+<!ENTITY ouml   "&#246;" ><!-- latin small o with diaeresis, U+00F6 ISOlat1 -->
+<!ENTITY divide "&#247;" ><!-- division sign, U+00F7 ISOnum -->
+<!ENTITY oslash "&#248;" ><!-- latin small o with stroke, = latin small o slash, U+00F8 ISOlat1 -->
+<!ENTITY ugrave "&#249;" ><!-- latin small u with grave, U+00F9 ISOlat1 -->
+<!ENTITY uacute "&#250;" ><!-- latin small u with acute, U+00FA ISOlat1 -->
+<!ENTITY ucirc  "&#251;" ><!-- latin small u with circumflex, U+00FB ISOlat1 -->
+<!ENTITY uuml   "&#252;" ><!-- latin small u with diaeresis, U+00FC ISOlat1 -->
+<!ENTITY yacute "&#253;" ><!-- latin small y with acute, U+00FD ISOlat1 -->
+<!ENTITY thorn  "&#254;" ><!-- latin small thorn with, U+00FE ISOlat1 -->
+<!ENTITY yuml   "&#255;" ><!-- latin small y with diaeresis, U+00FF ISOlat1 -->
+<!-- end of xhtml-lat1.ent -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/xhtml-modularization/xhtml-link-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,59 @@
+<!-- ...................................................................... -->
+<!-- XHTML Link Element Module  ........................................... -->
+<!-- file: xhtml-link-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-link-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Link Element 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-link-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Link element
+
+        link
+
+     This module declares the link element type and its attributes,
+     which could (in principle) be used to define document-level links
+     to external resources such as:
+
+     a) for document specific toolbars/menus, e.g. start, contents,
+        previous, next, index, end, help
+     b) to link to a separate style sheet (rel="stylesheet")
+     c) to make a link to a script (rel="script")
+     d) by style sheets to control how collections of html nodes are
+        rendered into printed documents
+     e) to make a link to a printable version of this document
+        e.g. a postscript or pdf version (rel="alternate" media="print")
+-->
+
+<!-- link: Media-Independent Link ...................... -->
+
+<!ENTITY % link.element  "INCLUDE" >
+<![%link.element;[
+<!ENTITY % link.content  "EMPTY" >
+<!ENTITY % link.qname  "link" >
+<!ELEMENT %link.qname;  %link.content; >
+<!-- end of link.element -->]]>
+
+<!ENTITY % link.attlist  "INCLUDE" >
+<![%link.attlist;[
+<!ATTLIST %link.qname;
+      %Common.attrib;
+      charset      %Charset.datatype;       #IMPLIED
+      href         %URI.datatype;           #IMPLIED
+      hreflang     %LanguageCode.datatype;  #IMPLIED
+      type         %ContentType.datatype;   #IMPLIED
+      rel          %LinkTypes.datatype;     #IMPLIED
+      rev          %LinkTypes.datatype;     #IMPLIED
+      media        %MediaDesc.datatype;     #IMPLIED
+>
+<!-- end of link.attlist -->]]>
+
+<!-- end of xhtml-link-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/xhtml-modularization/xhtml-list-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,129 @@
+<!-- ...................................................................... -->
+<!-- XHTML Lists Module  .................................................. -->
+<!-- file: xhtml-list-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-list-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Lists 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-list-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Lists
+
+        dl, dt, dd, ol, ul, li
+
+     This module declares the list-oriented element types
+     and their attributes.
+-->
+
+<!ENTITY % dl.qname  "dl" >
+<!ENTITY % dt.qname  "dt" >
+<!ENTITY % dd.qname  "dd" >
+<!ENTITY % ol.qname  "ol" >
+<!ENTITY % ul.qname  "ul" >
+<!ENTITY % li.qname  "li" >
+
+<!-- dl: Definition List ............................... -->
+
+<!ENTITY % dl.element  "INCLUDE" >
+<![%dl.element;[
+<!ENTITY % dl.content  "( %dt.qname; | %dd.qname; )+" >
+<!ELEMENT %dl.qname;  %dl.content; >
+<!-- end of dl.element -->]]>
+
+<!ENTITY % dl.attlist  "INCLUDE" >
+<![%dl.attlist;[
+<!ATTLIST %dl.qname;
+      %Common.attrib;
+>
+<!-- end of dl.attlist -->]]>
+
+<!-- dt: Definition Term ............................... -->
+
+<!ENTITY % dt.element  "INCLUDE" >
+<![%dt.element;[
+<!ENTITY % dt.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ELEMENT %dt.qname;  %dt.content; >
+<!-- end of dt.element -->]]>
+
+<!ENTITY % dt.attlist  "INCLUDE" >
+<![%dt.attlist;[
+<!ATTLIST %dt.qname;
+      %Common.attrib;
+>
+<!-- end of dt.attlist -->]]>
+
+<!-- dd: Definition Description ........................ -->
+
+<!ENTITY % dd.element  "INCLUDE" >
+<![%dd.element;[
+<!ENTITY % dd.content
+     "( #PCDATA | %Flow.mix; )*"
+>
+<!ELEMENT %dd.qname;  %dd.content; >
+<!-- end of dd.element -->]]>
+
+<!ENTITY % dd.attlist  "INCLUDE" >
+<![%dd.attlist;[
+<!ATTLIST %dd.qname;
+      %Common.attrib;
+>
+<!-- end of dd.attlist -->]]>
+
+<!-- ol: Ordered List (numbered styles) ................ -->
+
+<!ENTITY % ol.element  "INCLUDE" >
+<![%ol.element;[
+<!ENTITY % ol.content  "( %li.qname; )+" >
+<!ELEMENT %ol.qname;  %ol.content; >
+<!-- end of ol.element -->]]>
+
+<!ENTITY % ol.attlist  "INCLUDE" >
+<![%ol.attlist;[
+<!ATTLIST %ol.qname;
+      %Common.attrib;
+>
+<!-- end of ol.attlist -->]]>
+
+<!-- ul: Unordered List (bullet styles) ................ -->
+
+<!ENTITY % ul.element  "INCLUDE" >
+<![%ul.element;[
+<!ENTITY % ul.content  "( %li.qname; )+" >
+<!ELEMENT %ul.qname;  %ul.content; >
+<!-- end of ul.element -->]]>
+
+<!ENTITY % ul.attlist  "INCLUDE" >
+<![%ul.attlist;[
+<!ATTLIST %ul.qname;
+      %Common.attrib;
+>
+<!-- end of ul.attlist -->]]>
+
+<!-- li: List Item ..................................... -->
+
+<!ENTITY % li.element  "INCLUDE" >
+<![%li.element;[
+<!ENTITY % li.content
+     "( #PCDATA | %Flow.mix; )*"
+>
+<!ELEMENT %li.qname;  %li.content; >
+<!-- end of li.element -->]]>
+
+<!ENTITY % li.attlist  "INCLUDE" >
+<![%li.attlist;[
+<!ATTLIST %li.qname;
+      %Common.attrib;
+>
+<!-- end of li.attlist -->]]>
+
+<!-- end of xhtml-list-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/xhtml-modularization/xhtml-meta-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,47 @@
+<!-- ...................................................................... -->
+<!-- XHTML Document Metainformation Module  ............................... -->
+<!-- file: xhtml-meta-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-meta-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Metainformation 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-meta-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Meta Information
+
+        meta
+
+     This module declares the meta element type and its attributes,
+     used to provide declarative document metainformation.
+-->
+
+<!-- meta: Generic Metainformation ..................... -->
+
+<!ENTITY % meta.element  "INCLUDE" >
+<![%meta.element;[
+<!ENTITY % meta.content  "EMPTY" >
+<!ENTITY % meta.qname  "meta" >
+<!ELEMENT %meta.qname;  %meta.content; >
+<!-- end of meta.element -->]]>
+
+<!ENTITY % meta.attlist  "INCLUDE" >
+<![%meta.attlist;[
+<!ATTLIST %meta.qname;
+      %XHTML.xmlns.attrib;
+      %I18n.attrib;
+      http-equiv   NMTOKEN                  #IMPLIED
+      name         NMTOKEN                  #IMPLIED
+      content      CDATA                    #REQUIRED
+      scheme       CDATA                    #IMPLIED
+>
+<!-- end of meta.attlist -->]]>
+
+<!-- end of xhtml-meta-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/xhtml-modularization/xhtml-notations-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,114 @@
+<!-- ...................................................................... -->
+<!-- XHTML Notations Module  .............................................. -->
+<!-- file: xhtml-notations-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-notations-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//NOTATIONS XHTML Notations 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-notations-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Notations
+
+     defines the following notations, many of these imported from
+     other specifications and standards. When an existing FPI is
+     known, it is incorporated here.
+-->
+
+<!-- XML Notations ..................................... -->
+<!-- SGML and XML Notations ............................ -->
+
+<!-- W3C XML 1.0 Recommendation -->
+<!NOTATION w3c-xml
+     PUBLIC "ISO 8879//NOTATION Extensible Markup Language (XML) 1.0//EN" >
+
+<!-- XML 1.0 CDATA -->
+<!NOTATION cdata
+     PUBLIC "-//W3C//NOTATION XML 1.0: CDATA//EN" >
+
+<!-- SGML Formal Public Identifiers -->
+<!NOTATION fpi
+     PUBLIC "ISO 8879:1986//NOTATION Formal Public Identifier//EN" >
+
+<!-- XHTML Notations ................................... -->
+
+<!-- Length defined for cellpadding/cellspacing -->
+
+<!-- nn for pixels or nn% for percentage length -->
+<!NOTATION length
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: Length//EN" >
+
+<!-- space-separated list of link types -->
+<!NOTATION linkTypes
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: LinkTypes//EN" >
+
+<!-- single or comma-separated list of media descriptors -->
+<!NOTATION mediaDesc
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: MediaDesc//EN" >
+
+<!-- pixel, percentage, or relative -->
+<!NOTATION multiLength
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: MultiLength//EN" >
+
+<!-- one or more digits (NUMBER) -->
+<!NOTATION number
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: Number//EN" >
+
+<!-- integer representing length in pixels -->
+<!NOTATION pixels
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: Pixels//EN" >
+
+<!-- script expression -->
+<!NOTATION script
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: Script//EN" >
+
+<!-- textual content -->
+<!NOTATION text
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: Text//EN" >
+
+<!-- Imported Notations ................................ -->
+
+<!-- a single character from [ISO10646] -->
+<!NOTATION character
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: Character//EN" >
+
+<!-- a character encoding, as per [RFC2045] -->
+<!NOTATION charset
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: Charset//EN" >
+
+<!-- a space separated list of character encodings, as per [RFC2045] -->
+<!NOTATION charsets
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: Charsets//EN" >
+
+<!-- media type, as per [RFC2045] -->
+<!NOTATION contentType
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: ContentType//EN" >
+
+<!-- comma-separated list of media types, as per [RFC2045] -->
+<!NOTATION contentTypes
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: ContentTypes//EN" >
+
+<!-- date and time information. ISO date format -->
+<!NOTATION datetime
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: Datetime//EN" >
+
+<!-- a language code, as per [RFC3066] -->
+<!NOTATION languageCode
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: LanguageCode//EN" >
+
+<!-- a Uniform Resource Identifier, see [URI] -->
+<!NOTATION uri
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: URI//EN" >
+
+<!-- a space-separated list of Uniform Resource Identifiers, see [URI] -->
+<!NOTATION uris
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: URIs//EN" >
+
+<!-- end of xhtml-notations-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/xhtml-modularization/xhtml-object-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,60 @@
+<!-- ...................................................................... -->
+<!-- XHTML Embedded Object Module  ........................................ -->
+<!-- file: xhtml-object-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-object-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Embedded Object 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-object-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Embedded Objects
+
+        object
+
+     This module declares the object element type and its attributes, used
+     to embed external objects as part of XHTML pages. In the document,
+     place param elements prior to other content within the object element.
+
+     Note that use of this module requires instantiation of the Param
+     Element Module.
+-->
+
+<!-- object: Generic Embedded Object ................... -->
+
+<!ENTITY % object.element  "INCLUDE" >
+<![%object.element;[
+<!ENTITY % object.content
+     "( #PCDATA | %Flow.mix; | %param.qname; )*"
+>
+<!ENTITY % object.qname  "object" >
+<!ELEMENT %object.qname;  %object.content; >
+<!-- end of object.element -->]]>
+
+<!ENTITY % object.attlist  "INCLUDE" >
+<![%object.attlist;[
+<!ATTLIST %object.qname;
+      %Common.attrib;
+      declare      ( declare )              #IMPLIED
+      classid      %URI.datatype;           #IMPLIED
+      codebase     %URI.datatype;           #IMPLIED
+      data         %URI.datatype;           #IMPLIED
+      type         %ContentType.datatype;   #IMPLIED
+      codetype     %ContentType.datatype;   #IMPLIED
+      archive      %URIs.datatype;          #IMPLIED
+      standby      %Text.datatype;          #IMPLIED
+      height       %Length.datatype;        #IMPLIED
+      width        %Length.datatype;        #IMPLIED
+      name         CDATA                    #IMPLIED
+      tabindex     %Number.datatype;        #IMPLIED
+>
+<!-- end of object.attlist -->]]>
+
+<!-- end of xhtml-object-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/xhtml-modularization/xhtml-param-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,48 @@
+<!-- ...................................................................... -->
+<!-- XHTML Param Element Module  ..................................... -->
+<!-- file: xhtml-param-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-param-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Param Element 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-param-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Parameters for Java Applets and Embedded Objects
+
+        param
+
+     This module provides declarations for the param element,
+     used to provide named property values for the applet
+     and object elements.
+-->
+
+<!-- param: Named Property Value ....................... -->
+
+<!ENTITY % param.element  "INCLUDE" >
+<![%param.element;[
+<!ENTITY % param.content  "EMPTY" >
+<!ENTITY % param.qname  "param" >
+<!ELEMENT %param.qname;  %param.content; >
+<!-- end of param.element -->]]>
+
+<!ENTITY % param.attlist  "INCLUDE" >
+<![%param.attlist;[
+<!ATTLIST %param.qname;
+      %XHTML.xmlns.attrib;
+      %id.attrib;
+      name         CDATA                    #REQUIRED
+      value        CDATA                    #IMPLIED
+      valuetype    ( data | ref | object )  'data'
+      type         %ContentType.datatype;   #IMPLIED
+>
+<!-- end of param.attlist -->]]>
+
+<!-- end of xhtml-param-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/xhtml-modularization/xhtml-pres-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,38 @@
+<!-- ...................................................................... -->
+<!-- XHTML Presentation Module ............................................ -->
+<!-- file: xhtml-pres-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-pres-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Presentation 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-pres-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Presentational Elements
+
+     This module defines elements and their attributes for
+     simple presentation-related markup.
+-->
+
+<!ENTITY % xhtml-inlpres.module "INCLUDE" >
+<![%xhtml-inlpres.module;[
+<!ENTITY % xhtml-inlpres.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Inline Presentation 1.0//EN"
+            "xhtml-inlpres-1.mod" >
+%xhtml-inlpres.mod;]]>
+
+<!ENTITY % xhtml-blkpres.module "INCLUDE" >
+<![%xhtml-blkpres.module;[
+<!ENTITY % xhtml-blkpres.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Block Presentation 1.0//EN"
+            "xhtml-blkpres-1.mod" >
+%xhtml-blkpres.mod;]]>
+
+<!-- end of xhtml-pres-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/xhtml-modularization/xhtml-qname-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,270 @@
+<!-- ....................................................................... -->
+<!-- XHTML Qname Module  ................................................... -->
+<!-- file: xhtml-qname-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-qname-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ENTITIES XHTML Qualified Names 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-qname-1.mod"
+
+     Revisions:
+#2000-10-22: added qname declarations for ruby elements
+     ....................................................................... -->
+
+<!-- XHTML Qname (Qualified Name) Module
+
+     This module is contained in two parts, labeled Section 'A' and 'B':
+
+       Section A declares parameter entities to support namespace-
+       qualified names, namespace declarations, and name prefixing
+       for XHTML and extensions.
+
+       Section B declares parameter entities used to provide
+       namespace-qualified names for all XHTML element types:
+
+         %applet.qname;   the xmlns-qualified name for <applet>
+         %base.qname;     the xmlns-qualified name for <base>
+         ...
+
+     XHTML extensions would create a module similar to this one.
+     Included in the XHTML distribution is a template module
+     ('template-qname-1.mod') suitable for this purpose.
+-->
+
+<!-- Section A: XHTML XML Namespace Framework :::::::::::::::::::: -->
+
+<!-- 1. Declare a %XHTML.prefixed; conditional section keyword, used
+        to activate namespace prefixing. The default value should
+        inherit '%NS.prefixed;' from the DTD driver, so that unless
+        overridden, the default behaviour follows the overall DTD
+        prefixing scheme.
+-->
+<!ENTITY % NS.prefixed "IGNORE" >
+<!ENTITY % XHTML.prefixed "%NS.prefixed;" >
+
+<!-- 2. Declare a parameter entity (eg., %XHTML.xmlns;) containing
+        the URI reference used to identify the XHTML namespace:
+-->
+<!ENTITY % XHTML.xmlns  "http://www.w3.org/1999/xhtml" >
+
+<!-- 3. Declare parameter entities (eg., %XHTML.prefix;) containing
+        the default namespace prefix string(s) to use when prefixing
+        is enabled. This may be overridden in the DTD driver or the
+        internal subset of an document instance. If no default prefix
+        is desired, this may be declared as an empty string.
+
+     NOTE: As specified in [XMLNAMES], the namespace prefix serves
+     as a proxy for the URI reference, and is not in itself significant.
+-->
+<!ENTITY % XHTML.prefix  "" >
+
+<!-- 4. Declare parameter entities (eg., %XHTML.pfx;) containing the
+        colonized prefix(es) (eg., '%XHTML.prefix;:') used when
+        prefixing is active, an empty string when it is not.
+-->
+<![%XHTML.prefixed;[
+<!ENTITY % XHTML.pfx  "%XHTML.prefix;:" >
+]]>
+<!ENTITY % XHTML.pfx  "" >
+
+<!-- declare qualified name extensions here ............ -->
+<!ENTITY % xhtml-qname-extra.mod "" >
+%xhtml-qname-extra.mod;
+
+<!-- 5. The parameter entity %XHTML.xmlns.extra.attrib; may be
+        redeclared to contain any non-XHTML namespace declaration
+        attributes for namespaces embedded in XHTML. The default
+        is an empty string.  XLink should be included here if used
+        in the DTD.
+-->
+<!ENTITY % XHTML.xmlns.extra.attrib "" >
+
+<!-- The remainder of Section A is only followed in XHTML, not extensions. -->
+
+<!-- Declare a parameter entity %NS.decl.attrib; containing
+     all XML Namespace declarations used in the DTD, plus the
+     xmlns declaration for XHTML, its form dependent on whether
+     prefixing is active.
+-->
+<![%XHTML.prefixed;[
+<!ENTITY % NS.decl.attrib
+     "xmlns:%XHTML.prefix;  %URI.datatype;   #FIXED '%XHTML.xmlns;'
+      %XHTML.xmlns.extra.attrib;"
+>
+]]>
+<!ENTITY % NS.decl.attrib
+     "%XHTML.xmlns.extra.attrib;"
+>
+
+<!-- This is a placeholder for future XLink support.
+-->
+<!ENTITY % XLINK.xmlns.attrib "" >
+
+<!-- Declare a parameter entity %NS.decl.attrib; containing all
+     XML namespace declaration attributes used by XHTML, including
+     a default xmlns attribute when prefixing is inactive.
+-->
+<![%XHTML.prefixed;[
+<!ENTITY % XHTML.xmlns.attrib
+     "%NS.decl.attrib;
+      %XLINK.xmlns.attrib;"
+>
+]]>
+<!ENTITY % XHTML.xmlns.attrib
+     "xmlns        %URI.datatype;           #FIXED '%XHTML.xmlns;'
+      %XLINK.xmlns.attrib;"
+>
+
+<!-- placeholder for qualified name redeclarations -->
+<!ENTITY % xhtml-qname.redecl "" >
+%xhtml-qname.redecl;
+
+<!-- Section B: XHTML Qualified Names ::::::::::::::::::::::::::::: -->
+
+<!-- 6. This section declares parameter entities used to provide
+        namespace-qualified names for all XHTML element types.
+-->
+
+<!-- module:  xhtml-applet-1.mod -->
+<!ENTITY % applet.qname  "%XHTML.pfx;applet" >
+
+<!-- module:  xhtml-base-1.mod -->
+<!ENTITY % base.qname    "%XHTML.pfx;base" >
+
+<!-- module:  xhtml-bdo-1.mod -->
+<!ENTITY % bdo.qname     "%XHTML.pfx;bdo" >
+
+<!-- module:  xhtml-blkphras-1.mod -->
+<!ENTITY % address.qname "%XHTML.pfx;address" >
+<!ENTITY % blockquote.qname  "%XHTML.pfx;blockquote" >
+<!ENTITY % pre.qname     "%XHTML.pfx;pre" >
+<!ENTITY % h1.qname      "%XHTML.pfx;h1" >
+<!ENTITY % h2.qname      "%XHTML.pfx;h2" >
+<!ENTITY % h3.qname      "%XHTML.pfx;h3" >
+<!ENTITY % h4.qname      "%XHTML.pfx;h4" >
+<!ENTITY % h5.qname      "%XHTML.pfx;h5" >
+<!ENTITY % h6.qname      "%XHTML.pfx;h6" >
+
+<!-- module:  xhtml-blkpres-1.mod -->
+<!ENTITY % hr.qname      "%XHTML.pfx;hr" >
+
+<!-- module:  xhtml-blkstruct-1.mod -->
+<!ENTITY % div.qname     "%XHTML.pfx;div" >
+<!ENTITY % p.qname       "%XHTML.pfx;p" >
+
+<!-- module:  xhtml-edit-1.mod -->
+<!ENTITY % ins.qname     "%XHTML.pfx;ins" >
+<!ENTITY % del.qname     "%XHTML.pfx;del" >
+
+<!-- module:  xhtml-form-1.mod -->
+<!ENTITY % form.qname    "%XHTML.pfx;form" >
+<!ENTITY % label.qname   "%XHTML.pfx;label" >
+<!ENTITY % input.qname   "%XHTML.pfx;input" >
+<!ENTITY % select.qname  "%XHTML.pfx;select" >
+<!ENTITY % optgroup.qname  "%XHTML.pfx;optgroup" >
+<!ENTITY % option.qname  "%XHTML.pfx;option" >
+<!ENTITY % textarea.qname  "%XHTML.pfx;textarea" >
+<!ENTITY % fieldset.qname  "%XHTML.pfx;fieldset" >
+<!ENTITY % legend.qname  "%XHTML.pfx;legend" >
+<!ENTITY % button.qname  "%XHTML.pfx;button" >
+
+<!-- module:  xhtml-hypertext-1.mod -->
+<!ENTITY % a.qname       "%XHTML.pfx;a" >
+
+<!-- module:  xhtml-image-1.mod -->
+<!ENTITY % img.qname     "%XHTML.pfx;img" >
+
+<!-- module:  xhtml-inlphras-1.mod -->
+<!ENTITY % abbr.qname    "%XHTML.pfx;abbr" >
+<!ENTITY % acronym.qname "%XHTML.pfx;acronym" >
+<!ENTITY % cite.qname    "%XHTML.pfx;cite" >
+<!ENTITY % code.qname    "%XHTML.pfx;code" >
+<!ENTITY % dfn.qname     "%XHTML.pfx;dfn" >
+<!ENTITY % em.qname      "%XHTML.pfx;em" >
+<!ENTITY % kbd.qname     "%XHTML.pfx;kbd" >
+<!ENTITY % q.qname       "%XHTML.pfx;q" >
+<!ENTITY % samp.qname    "%XHTML.pfx;samp" >
+<!ENTITY % strong.qname  "%XHTML.pfx;strong" >
+<!ENTITY % var.qname     "%XHTML.pfx;var" >
+
+<!-- module:  xhtml-inlpres-1.mod -->
+<!ENTITY % b.qname       "%XHTML.pfx;b" >
+<!ENTITY % big.qname     "%XHTML.pfx;big" >
+<!ENTITY % i.qname       "%XHTML.pfx;i" >
+<!ENTITY % small.qname   "%XHTML.pfx;small" >
+<!ENTITY % sub.qname     "%XHTML.pfx;sub" >
+<!ENTITY % sup.qname     "%XHTML.pfx;sup" >
+<!ENTITY % tt.qname      "%XHTML.pfx;tt" >
+
+<!-- module:  xhtml-inlstruct-1.mod -->
+<!ENTITY % br.qname      "%XHTML.pfx;br" >
+<!ENTITY % span.qname    "%XHTML.pfx;span" >
+
+<!-- module:  xhtml-ismap-1.mod (also csismap, ssismap) -->
+<!ENTITY % map.qname     "%XHTML.pfx;map" >
+<!ENTITY % area.qname    "%XHTML.pfx;area" >
+
+<!-- module:  xhtml-link-1.mod -->
+<!ENTITY % link.qname    "%XHTML.pfx;link" >
+
+<!-- module:  xhtml-list-1.mod -->
+<!ENTITY % dl.qname      "%XHTML.pfx;dl" >
+<!ENTITY % dt.qname      "%XHTML.pfx;dt" >
+<!ENTITY % dd.qname      "%XHTML.pfx;dd" >
+<!ENTITY % ol.qname      "%XHTML.pfx;ol" >
+<!ENTITY % ul.qname      "%XHTML.pfx;ul" >
+<!ENTITY % li.qname      "%XHTML.pfx;li" >
+
+<!-- module:  xhtml-meta-1.mod -->
+<!ENTITY % meta.qname    "%XHTML.pfx;meta" >
+
+<!-- module:  xhtml-param-1.mod -->
+<!ENTITY % param.qname   "%XHTML.pfx;param" >
+
+<!-- module:  xhtml-object-1.mod -->
+<!ENTITY % object.qname  "%XHTML.pfx;object" >
+
+<!-- module:  xhtml-script-1.mod -->
+<!ENTITY % script.qname  "%XHTML.pfx;script" >
+<!ENTITY % noscript.qname  "%XHTML.pfx;noscript" >
+
+<!-- module:  xhtml-struct-1.mod -->
+<!ENTITY % html.qname    "%XHTML.pfx;html" >
+<!ENTITY % head.qname    "%XHTML.pfx;head" >
+<!ENTITY % title.qname   "%XHTML.pfx;title" >
+<!ENTITY % body.qname    "%XHTML.pfx;body" >
+
+<!-- module:  xhtml-style-1.mod -->
+<!ENTITY % style.qname   "%XHTML.pfx;style" >
+
+<!-- module:  xhtml-table-1.mod -->
+<!ENTITY % table.qname   "%XHTML.pfx;table" >
+<!ENTITY % caption.qname "%XHTML.pfx;caption" >
+<!ENTITY % thead.qname   "%XHTML.pfx;thead" >
+<!ENTITY % tfoot.qname   "%XHTML.pfx;tfoot" >
+<!ENTITY % tbody.qname   "%XHTML.pfx;tbody" >
+<!ENTITY % colgroup.qname  "%XHTML.pfx;colgroup" >
+<!ENTITY % col.qname     "%XHTML.pfx;col" >
+<!ENTITY % tr.qname      "%XHTML.pfx;tr" >
+<!ENTITY % th.qname      "%XHTML.pfx;th" >
+<!ENTITY % td.qname      "%XHTML.pfx;td" >
+
+<!-- module:  xhtml-ruby-1.mod -->
+
+<!ENTITY % ruby.qname    "%XHTML.pfx;ruby" >
+<!ENTITY % rbc.qname     "%XHTML.pfx;rbc" >
+<!ENTITY % rtc.qname     "%XHTML.pfx;rtc" >
+<!ENTITY % rb.qname      "%XHTML.pfx;rb" >
+<!ENTITY % rt.qname      "%XHTML.pfx;rt" >
+<!ENTITY % rp.qname      "%XHTML.pfx;rp" >
+
+<!-- Provisional XHTML 2.0 Qualified Names  ...................... -->
+
+<!-- module:  xhtml-image-2.mod -->
+<!ENTITY % alt.qname     "%XHTML.pfx;alt" >
+
+<!-- end of xhtml-qname-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/xhtml-modularization/xhtml-script-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,66 @@
+<!-- ...................................................................... -->
+<!-- XHTML Document Scripting Module  ..................................... -->
+<!-- file: xhtml-script-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-script-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Scripting 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-script-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Scripting
+
+        script, noscript
+
+     This module declares element types and attributes used to provide
+     support for executable scripts as well as an alternate content
+     container where scripts are not supported.
+-->
+
+<!-- script: Scripting Statement ....................... -->
+
+<!ENTITY % script.element  "INCLUDE" >
+<![%script.element;[
+<!ENTITY % script.content  "( #PCDATA )" >
+<!ENTITY % script.qname  "script" >
+<!ELEMENT %script.qname;  %script.content; >
+<!-- end of script.element -->]]>
+
+<!ENTITY % script.attlist  "INCLUDE" >
+<![%script.attlist;[
+<!ATTLIST %script.qname;
+      %XHTML.xmlns.attrib;
+      charset      %Charset.datatype;       #IMPLIED
+      type         %ContentType.datatype;   #REQUIRED
+      src          %URI.datatype;           #IMPLIED
+      defer        ( defer )                #IMPLIED
+      xml:space    ( preserve )             #FIXED 'preserve'
+>
+<!-- end of script.attlist -->]]>
+
+<!-- noscript: No-Script Alternate Content ............. -->
+
+<!ENTITY % noscript.element  "INCLUDE" >
+<![%noscript.element;[
+<!ENTITY % noscript.content
+     "( %Block.mix; )+"
+>
+<!ENTITY % noscript.qname  "noscript" >
+<!ELEMENT %noscript.qname;  %noscript.content; >
+<!-- end of noscript.element -->]]>
+
+<!ENTITY % noscript.attlist  "INCLUDE" >
+<![%noscript.attlist;[
+<!ATTLIST %noscript.qname;
+      %Common.attrib;
+>
+<!-- end of noscript.attlist -->]]>
+
+<!-- end of xhtml-script-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/xhtml-modularization/xhtml-special.ent	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,82 @@
+<!-- ...................................................................... -->
+<!-- XML-compatible ISO Special Character Entity Set for XHTML ............ -->
+<!-- file: xhtml-special.ent
+
+     Typical invocation:
+
+       <!ENTITY % xhtml-special
+           PUBLIC "-//W3C//ENTITIES Special for XHTML//EN"
+                  "xhtml-special.ent" >
+       %xhtml-special;
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ENTITIES Special for XHTML//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-special.ent"
+
+     Revision:  $Id: xhtml-special.ent,v 1.1 2004-02-23 16:12:06 ylafon Exp $ SMI
+
+     Portions (C) International Organization for Standardization 1986:
+     Permission to copy in any form is granted for use with conforming
+     SGML systems and applications as defined in ISO 8879, provided
+     this notice is included in all copies.
+
+     Revisions:
+2000-10-28: added &apos; and altered XML Predefined Entities for compatibility
+-->
+
+<!-- Relevant ISO entity set is given unless names are newly introduced.
+     New names (i.e., not in ISO 8879 [SGML] list) do not clash with
+     any existing ISO 8879 entity names. ISO 10646 [ISO10646] character
+     numbers are given for each character, in hex. Entity values are
+     decimal conversions of the ISO 10646 values and refer to the
+     document character set. Names are Unicode [UNICODE] names.
+-->
+
+<!-- C0 Controls and Basic Latin -->
+<!ENTITY lt      "&#38;&#60;" ><!-- less-than sign, U+003C ISOnum -->
+<!ENTITY gt      "&#62;" ><!-- greater-than sign, U+003E ISOnum -->
+<!ENTITY amp     "&#38;&#38;" ><!-- ampersand, U+0026 ISOnum -->
+<!ENTITY apos    "&#39;" ><!-- apostrophe, U+0027 ISOnum -->
+<!ENTITY quot    "&#34;" ><!-- quotation mark = APL quote, U+0022 ISOnum -->
+
+<!-- Latin Extended-A -->
+<!ENTITY OElig   "&#338;" ><!-- latin capital ligature OE, U+0152 ISOlat2 -->
+<!ENTITY oelig   "&#339;" ><!-- latin small ligature oe, U+0153 ISOlat2 -->
+
+<!-- ligature is a misnomer, this is a separate character in some languages -->
+<!ENTITY Scaron  "&#352;" ><!-- latin capital letter S with caron, U+0160 ISOlat2 -->
+<!ENTITY scaron  "&#353;" ><!-- latin small letter s with caron, U+0161 ISOlat2 -->
+<!ENTITY Yuml    "&#376;" ><!-- latin capital letter Y with diaeresis, U+0178 ISOlat2 -->
+
+<!-- Spacing Modifier Letters -->
+<!ENTITY circ    "&#710;" ><!-- modifier letter circumflex accent, U+02C6 ISOpub -->
+<!ENTITY tilde   "&#732;" ><!-- small tilde, U+02DC ISOdia -->
+
+<!-- General Punctuation -->
+<!ENTITY ensp    "&#8194;" ><!-- en space, U+2002 ISOpub -->
+<!ENTITY emsp    "&#8195;" ><!-- em space, U+2003 ISOpub -->
+<!ENTITY thinsp  "&#8201;" ><!-- thin space, U+2009 ISOpub -->
+<!ENTITY zwnj    "&#8204;" ><!-- zero width non-joiner, U+200C NEW RFC 2070 -->
+<!ENTITY zwj     "&#8205;" ><!-- zero width joiner, U+200D NEW RFC 2070 -->
+<!ENTITY lrm     "&#8206;" ><!-- left-to-right mark, U+200E NEW RFC 2070 -->
+<!ENTITY rlm     "&#8207;" ><!-- right-to-left mark, U+200F NEW RFC 2070 -->
+<!ENTITY ndash   "&#8211;" ><!-- en dash, U+2013 ISOpub -->
+<!ENTITY mdash   "&#8212;" ><!-- em dash, U+2014 ISOpub -->
+<!ENTITY lsquo   "&#8216;" ><!-- left single quotation mark, U+2018 ISOnum -->
+<!ENTITY rsquo   "&#8217;" ><!-- right single quotation mark, U+2019 ISOnum -->
+<!ENTITY sbquo   "&#8218;" ><!-- single low-9 quotation mark, U+201A NEW -->
+<!ENTITY ldquo   "&#8220;" ><!-- left double quotation mark, U+201C ISOnum -->
+<!ENTITY rdquo   "&#8221;" ><!-- right double quotation mark, U+201D ISOnum -->
+<!ENTITY bdquo   "&#8222;" ><!-- double low-9 quotation mark, U+201E NEW -->
+<!ENTITY dagger  "&#8224;" ><!-- dagger, U+2020 ISOpub -->
+<!ENTITY Dagger  "&#8225;" ><!-- double dagger, U+2021 ISOpub -->
+<!ENTITY permil  "&#8240;" ><!-- per mille sign, U+2030 ISOtech -->
+
+<!-- lsaquo is proposed but not yet ISO standardized -->
+<!ENTITY lsaquo  "&#8249;" ><!-- single left-pointing angle quotation mark, U+2039 ISO proposed -->
+<!-- rsaquo is proposed but not yet ISO standardized -->
+<!ENTITY rsaquo  "&#8250;" ><!-- single right-pointing angle quotation mark, U+203A ISO proposed -->
+<!ENTITY euro    "&#8364;" ><!-- euro sign, U+20AC NEW -->
+
+<!-- end of xhtml-special.ent -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/xhtml-modularization/xhtml-ssismap-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,32 @@
+<!-- ...................................................................... -->
+<!-- XHTML Server-side Image Map Module  .................................. -->
+<!-- file: xhtml-ssismap-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-ssismap-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Server-side Image Maps 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-ssismap-1.mod"
+
+     Revisions:
+#2000-10-22: added declaration for 'ismap' on <input>
+     ....................................................................... -->
+
+<!-- Server-side Image Maps
+
+     This adds the 'ismap' attribute to the img and input elements
+     to support server-side processing of a user selection.
+-->
+
+<!ATTLIST %img.qname;
+      ismap        ( ismap )                #IMPLIED
+>
+
+<!ATTLIST %input.qname;
+      ismap        ( ismap )                #IMPLIED
+>
+
+<!-- end of xhtml-ssismap-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/xhtml-modularization/xhtml-struct-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,125 @@
+<!-- ...................................................................... -->
+<!-- XHTML Structure Module  .............................................. -->
+<!-- file: xhtml-struct-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-struct-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Document Structure 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-struct-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Document Structure
+
+        title, head, body, html
+
+     The Structure Module defines the major structural elements and
+     their attributes.
+
+     Note that the content model of the head element type is redeclared
+     when the Base Module is included in the DTD.
+
+     The parameter entity containing the XML namespace URI value used
+     for XHTML is '%XHTML.xmlns;', defined in the Qualified Names module.
+-->
+
+<!-- title: Document Title ............................. -->
+
+<!-- The title element is not considered part of the flow of text.
+     It should be displayed, for example as the page header or
+     window title. Exactly one title is required per document.
+-->
+
+<!ENTITY % title.element  "INCLUDE" >
+<![%title.element;[
+<!ENTITY % title.content  "( #PCDATA )" >
+<!ENTITY % title.qname  "title" >
+<!ELEMENT %title.qname;  %title.content; >
+<!-- end of title.element -->]]>
+
+<!ENTITY % title.attlist  "INCLUDE" >
+<![%title.attlist;[
+<!ATTLIST %title.qname;
+      %XHTML.xmlns.attrib;
+      %I18n.attrib;
+>
+<!-- end of title.attlist -->]]>
+
+<!-- head: Document Head ............................... -->
+
+<!ENTITY % head.element  "INCLUDE" >
+<![%head.element;[
+<!ENTITY % head.content
+    "( %HeadOpts.mix;, %title.qname;, %HeadOpts.mix; )"
+>
+<!ENTITY % head.qname  "head" >
+<!ELEMENT %head.qname;  %head.content; >
+<!-- end of head.element -->]]>
+
+<!ENTITY % head.attlist  "INCLUDE" >
+<![%head.attlist;[
+<!-- reserved for future use with document profiles
+-->
+<!ENTITY % profile.attrib
+     "profile      %URI.datatype;           '%XHTML.profile;'"
+>
+
+<!ATTLIST %head.qname;
+      %XHTML.xmlns.attrib;
+      %I18n.attrib;
+      %profile.attrib;
+>
+<!-- end of head.attlist -->]]>
+
+<!-- body: Document Body ............................... -->
+
+<!ENTITY % body.element  "INCLUDE" >
+<![%body.element;[
+<!ENTITY % body.content
+     "( %Block.mix; )+"
+>
+<!ENTITY % body.qname  "body" >
+<!ELEMENT %body.qname;  %body.content; >
+<!-- end of body.element -->]]>
+
+<!ENTITY % body.attlist  "INCLUDE" >
+<![%body.attlist;[
+<!ATTLIST %body.qname;
+      %Common.attrib;
+>
+<!-- end of body.attlist -->]]>
+
+<!-- html: XHTML Document Element ...................... -->
+
+<!ENTITY % html.element  "INCLUDE" >
+<![%html.element;[
+<!ENTITY % html.content  "( %head.qname;, %body.qname; )" >
+<!ENTITY % html.qname  "html" >
+<!ELEMENT %html.qname;  %html.content; >
+<!-- end of html.element -->]]>
+
+<!ENTITY % html.attlist  "INCLUDE" >
+<![%html.attlist;[
+<!-- version attribute value defined in driver
+-->
+<!ENTITY % XHTML.version.attrib
+     "version      %FPI.datatype;           #FIXED '%XHTML.version;'"
+>
+
+<!-- see the Qualified Names module for information
+     on how to extend XHTML using XML namespaces
+-->
+<!ATTLIST %html.qname;
+      %XHTML.xmlns.attrib;
+      %XHTML.version.attrib;
+      %I18n.attrib;
+>
+<!-- end of html.attlist -->]]>
+
+<!-- end of xhtml-struct-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/xhtml-modularization/xhtml-style-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,47 @@
+<!-- ...................................................................... -->
+<!-- XHTML Document Style Sheet Module  ................................... -->
+<!-- file: xhtml-style-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-style-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//DTD XHTML Style Sheets 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-style-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Style Sheets
+
+        style
+
+     This module declares the style element type and its attributes,
+     used to embed style sheet information in the document head element.
+-->
+
+<!-- style: Style Sheet Information .................... -->
+
+<!ENTITY % style.element  "INCLUDE" >
+<![%style.element;[
+<!ENTITY % style.content  "( #PCDATA )" >
+<!ENTITY % style.qname  "style" >
+<!ELEMENT %style.qname;  %style.content; >
+<!-- end of style.element -->]]>
+
+<!ENTITY % style.attlist  "INCLUDE" >
+<![%style.attlist;[
+<!ATTLIST %style.qname;
+      %XHTML.xmlns.attrib;
+      %title.attrib;
+      %I18n.attrib;
+      type         %ContentType.datatype;   #REQUIRED
+      media        %MediaDesc.datatype;     #IMPLIED
+      xml:space    ( preserve )             #FIXED 'preserve'
+>
+<!-- end of style.attlist -->]]>
+
+<!-- end of xhtml-style-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/xhtml-modularization/xhtml-symbol.ent	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,204 @@
+<!-- ...................................................................... -->
+<!-- ISO Math, Greek and Symbolic Character Entity Set for XHTML .......... -->
+<!-- file: xhtml-symbol.ent
+
+     Typical invocation:
+
+       <!ENTITY % xhtml-symbol
+           PUBLIC "-//W3C//ENTITIES Symbols for XHTML//EN"
+                  "xhtml-symbol.ent" >
+       %xhtml-symbol;
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ENTITIES Symbols for XHTML//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-symbol.ent"
+
+     Revision:  $Id: xhtml-symbol.ent,v 1.1 2004-02-23 16:12:06 ylafon Exp $ SMI
+
+     Portions (C) International Organization for Standardization 1986:
+     Permission to copy in any form is granted for use with conforming
+     SGML systems and applications as defined in ISO 8879, provided
+     this notice is included in all copies.
+-->
+
+<!-- Relevant ISO entity set is given unless names are newly introduced.
+     New names (i.e., not in ISO 8879 [SGML] list) do not clash with
+     any existing ISO 8879 entity names. ISO 10646 [ISO10646] character
+     numbers are given for each character, in hex. Entity values are
+     decimal conversions of the ISO 10646 values and refer to the
+     document character set. Names are Unicode [UNICODE] names.
+-->
+
+<!-- Latin Extended-B -->
+<!ENTITY fnof     "&#402;" ><!-- latin small f with hook = function
+                              = florin, U+0192 ISOtech -->
+
+<!-- Greek -->
+<!ENTITY Alpha    "&#913;" ><!-- greek capital letter alpha, U+0391 -->
+<!ENTITY Beta     "&#914;" ><!-- greek capital letter beta, U+0392 -->
+<!ENTITY Gamma    "&#915;" ><!-- greek capital letter gamma, U+0393 ISOgrk3 -->
+<!ENTITY Delta    "&#916;" ><!-- greek capital letter delta, U+0394 ISOgrk3 -->
+<!ENTITY Epsilon  "&#917;" ><!-- greek capital letter epsilon, U+0395 -->
+<!ENTITY Zeta     "&#918;" ><!-- greek capital letter zeta, U+0396 -->
+<!ENTITY Eta      "&#919;" ><!-- greek capital letter eta, U+0397 -->
+<!ENTITY Theta    "&#920;" ><!-- greek capital letter theta, U+0398 ISOgrk3 -->
+<!ENTITY Iota     "&#921;" ><!-- greek capital letter iota, U+0399 -->
+<!ENTITY Kappa    "&#922;" ><!-- greek capital letter kappa, U+039A -->
+<!ENTITY Lambda   "&#923;" ><!-- greek capital letter lambda, U+039B ISOgrk3 -->
+<!ENTITY Mu       "&#924;" ><!-- greek capital letter mu, U+039C -->
+<!ENTITY Nu       "&#925;" ><!-- greek capital letter nu, U+039D -->
+<!ENTITY Xi       "&#926;" ><!-- greek capital letter xi, U+039E ISOgrk3 -->
+<!ENTITY Omicron  "&#927;" ><!-- greek capital letter omicron, U+039F -->
+<!ENTITY Pi       "&#928;" ><!-- greek capital letter pi, U+03A0 ISOgrk3 -->
+<!ENTITY Rho      "&#929;" ><!-- greek capital letter rho, U+03A1 -->
+<!-- there is no Sigmaf, and no U+03A2 character either -->
+<!ENTITY Sigma    "&#931;" ><!-- greek capital letter sigma, U+03A3 ISOgrk3 -->
+<!ENTITY Tau      "&#932;" ><!-- greek capital letter tau, U+03A4 -->
+<!ENTITY Upsilon  "&#933;" ><!-- greek capital letter upsilon,
+                              U+03A5 ISOgrk3 -->
+<!ENTITY Phi      "&#934;" ><!-- greek capital letter phi, U+03A6 ISOgrk3 -->
+<!ENTITY Chi      "&#935;" ><!-- greek capital letter chi, U+03A7 -->
+<!ENTITY Psi      "&#936;" ><!-- greek capital letter psi, U+03A8 ISOgrk3 -->
+<!ENTITY Omega    "&#937;" ><!-- greek capital letter omega, U+03A9 ISOgrk3 -->
+<!ENTITY alpha    "&#945;" ><!-- greek small letter alpha, U+03B1 ISOgrk3 -->
+<!ENTITY beta     "&#946;" ><!-- greek small letter beta, U+03B2 ISOgrk3 -->
+<!ENTITY gamma    "&#947;" ><!-- greek small letter gamma, U+03B3 ISOgrk3 -->
+<!ENTITY delta    "&#948;" ><!-- greek small letter delta, U+03B4 ISOgrk3 -->
+<!ENTITY epsilon  "&#949;" ><!-- greek small letter epsilon, U+03B5 ISOgrk3 -->
+<!ENTITY zeta     "&#950;" ><!-- greek small letter zeta, U+03B6 ISOgrk3 -->
+<!ENTITY eta      "&#951;" ><!-- greek small letter eta, U+03B7 ISOgrk3 -->
+<!ENTITY theta    "&#952;" ><!-- greek small letter theta, U+03B8 ISOgrk3 -->
+<!ENTITY iota     "&#953;" ><!-- greek small letter iota, U+03B9 ISOgrk3 -->
+<!ENTITY kappa    "&#954;" ><!-- greek small letter kappa, U+03BA ISOgrk3 -->
+<!ENTITY lambda   "&#955;" ><!-- greek small letter lambda, U+03BB ISOgrk3 -->
+<!ENTITY mu       "&#956;" ><!-- greek small letter mu, U+03BC ISOgrk3 -->
+<!ENTITY nu       "&#957;" ><!-- greek small letter nu, U+03BD ISOgrk3 -->
+<!ENTITY xi       "&#958;" ><!-- greek small letter xi, U+03BE ISOgrk3 -->
+<!ENTITY omicron  "&#959;" ><!-- greek small letter omicron, U+03BF NEW -->
+<!ENTITY pi       "&#960;" ><!-- greek small letter pi, U+03C0 ISOgrk3 -->
+<!ENTITY rho      "&#961;" ><!-- greek small letter rho, U+03C1 ISOgrk3 -->
+<!ENTITY sigmaf   "&#962;" ><!-- greek small letter final sigma, U+03C2 ISOgrk3 -->
+<!ENTITY sigma    "&#963;" ><!-- greek small letter sigma, U+03C3 ISOgrk3 -->
+<!ENTITY tau      "&#964;" ><!-- greek small letter tau, U+03C4 ISOgrk3 -->
+<!ENTITY upsilon  "&#965;" ><!-- greek small letter upsilon, U+03C5 ISOgrk3 -->
+<!ENTITY phi      "&#966;" ><!-- greek small letter phi, U+03C6 ISOgrk3 -->
+<!ENTITY chi      "&#967;" ><!-- greek small letter chi, U+03C7 ISOgrk3 -->
+<!ENTITY psi      "&#968;" ><!-- greek small letter psi, U+03C8 ISOgrk3 -->
+<!ENTITY omega    "&#969;" ><!-- greek small letter omega, U+03C9 ISOgrk3 -->
+<!ENTITY thetasym "&#977;" ><!-- greek small letter theta symbol, U+03D1 NEW -->
+<!ENTITY upsih    "&#978;" ><!-- greek upsilon with hook symbol, U+03D2 NEW -->
+<!ENTITY piv      "&#982;" ><!-- greek pi symbol, U+03D6 ISOgrk3 -->
+
+<!-- General Punctuation -->
+<!ENTITY bull     "&#8226;" ><!-- bullet = black small circle, U+2022 ISOpub  -->
+<!-- bullet is NOT the same as bullet operator, U+2219 -->
+<!ENTITY hellip   "&#8230;" ><!-- horizontal ellipsis = three dot leader, U+2026 ISOpub  -->
+<!ENTITY prime    "&#8242;" ><!-- prime = minutes = feet, U+2032 ISOtech -->
+<!ENTITY Prime    "&#8243;" ><!-- double prime = seconds = inches, U+2033 ISOtech -->
+<!ENTITY oline    "&#8254;" ><!-- overline = spacing overscore, U+203E NEW -->
+<!ENTITY frasl    "&#8260;" ><!-- fraction slash, U+2044 NEW -->
+
+<!-- Letterlike Symbols -->
+<!ENTITY weierp   "&#8472;" ><!-- script capital P = power set = Weierstrass p, U+2118 ISOamso -->
+<!ENTITY image    "&#8465;" ><!-- blackletter capital I = imaginary part, U+2111 ISOamso -->
+<!ENTITY real     "&#8476;" ><!-- blackletter capital R = real part symbol, U+211C ISOamso -->
+<!ENTITY trade    "&#8482;" ><!-- trade mark sign, U+2122 ISOnum -->
+<!ENTITY alefsym  "&#8501;" ><!-- alef symbol = first transfinite cardinal, U+2135 NEW -->
+<!-- alef symbol is NOT the same as hebrew letter alef, U+05D0 although
+     the same glyph could be used to depict both characters -->
+
+<!-- Arrows -->
+<!ENTITY larr     "&#8592;" ><!-- leftwards arrow, U+2190 ISOnum -->
+<!ENTITY uarr     "&#8593;" ><!-- upwards arrow, U+2191 ISOnum-->
+<!ENTITY rarr     "&#8594;" ><!-- rightwards arrow, U+2192 ISOnum -->
+<!ENTITY darr     "&#8595;" ><!-- downwards arrow, U+2193 ISOnum -->
+<!ENTITY harr     "&#8596;" ><!-- left right arrow, U+2194 ISOamsa -->
+<!ENTITY crarr    "&#8629;" ><!-- downwards arrow with corner leftwards
+                               = carriage return, U+21B5 NEW -->
+<!ENTITY lArr     "&#8656;" ><!-- leftwards double arrow, U+21D0 ISOtech -->
+<!-- Unicode does not say that lArr is the same as the 'is implied by' arrow
+    but also does not have any other character for that function. So ? lArr can
+    be used for 'is implied by' as ISOtech suggests -->
+<!ENTITY uArr     "&#8657;" ><!-- upwards double arrow, U+21D1 ISOamsa -->
+<!ENTITY rArr     "&#8658;" ><!-- rightwards double arrow, U+21D2 ISOtech -->
+<!-- Unicode does not say this is the 'implies' character but does not have
+     another character with this function so ?
+     rArr can be used for 'implies' as ISOtech suggests -->
+<!ENTITY dArr     "&#8659;" ><!-- downwards double arrow, U+21D3 ISOamsa -->
+<!ENTITY hArr     "&#8660;" ><!-- left right double arrow, U+21D4 ISOamsa -->
+
+<!-- Mathematical Operators -->
+<!ENTITY forall   "&#8704;" ><!-- for all, U+2200 ISOtech -->
+<!ENTITY part     "&#8706;" ><!-- partial differential, U+2202 ISOtech  -->
+<!ENTITY exist    "&#8707;" ><!-- there exists, U+2203 ISOtech -->
+<!ENTITY empty    "&#8709;" ><!-- empty set = null set = diameter, U+2205 ISOamso -->
+<!ENTITY nabla    "&#8711;" ><!-- nabla = backward difference, U+2207 ISOtech -->
+<!ENTITY isin     "&#8712;" ><!-- element of, U+2208 ISOtech -->
+<!ENTITY notin    "&#8713;" ><!-- not an element of, U+2209 ISOtech -->
+<!ENTITY ni       "&#8715;" ><!-- contains as member, U+220B ISOtech -->
+<!-- should there be a more memorable name than 'ni'? -->
+<!ENTITY prod     "&#8719;" ><!-- n-ary product = product sign, U+220F ISOamsb -->
+<!-- prod is NOT the same character as U+03A0 'greek capital letter pi' though
+     the same glyph might be used for both -->
+<!ENTITY sum      "&#8721;" ><!-- n-ary sumation, U+2211 ISOamsb -->
+<!-- sum is NOT the same character as U+03A3 'greek capital letter sigma'
+     though the same glyph might be used for both -->
+<!ENTITY minus    "&#8722;" ><!-- minus sign, U+2212 ISOtech -->
+<!ENTITY lowast   "&#8727;" ><!-- asterisk operator, U+2217 ISOtech -->
+<!ENTITY radic    "&#8730;" ><!-- square root = radical sign, U+221A ISOtech -->
+<!ENTITY prop     "&#8733;" ><!-- proportional to, U+221D ISOtech -->
+<!ENTITY infin    "&#8734;" ><!-- infinity, U+221E ISOtech -->
+<!ENTITY ang      "&#8736;" ><!-- angle, U+2220 ISOamso -->
+<!ENTITY and      "&#8743;" ><!-- logical and = wedge, U+2227 ISOtech -->
+<!ENTITY or       "&#8744;" ><!-- logical or = vee, U+2228 ISOtech -->
+<!ENTITY cap      "&#8745;" ><!-- intersection = cap, U+2229 ISOtech -->
+<!ENTITY cup      "&#8746;" ><!-- union = cup, U+222A ISOtech -->
+<!ENTITY int      "&#8747;" ><!-- integral, U+222B ISOtech -->
+<!ENTITY there4   "&#8756;" ><!-- therefore, U+2234 ISOtech -->
+<!ENTITY sim      "&#8764;" ><!-- tilde operator = varies with = similar to, U+223C ISOtech -->
+<!-- tilde operator is NOT the same character as the tilde, U+007E,
+     although the same glyph might be used to represent both  -->
+<!ENTITY cong     "&#8773;" ><!-- approximately equal to, U+2245 ISOtech -->
+<!ENTITY asymp    "&#8776;" ><!-- almost equal to = asymptotic to, U+2248 ISOamsr -->
+<!ENTITY ne       "&#8800;" ><!-- not equal to, U+2260 ISOtech -->
+<!ENTITY equiv    "&#8801;" ><!-- identical to, U+2261 ISOtech -->
+<!ENTITY le       "&#8804;" ><!-- less-than or equal to, U+2264 ISOtech -->
+<!ENTITY ge       "&#8805;" ><!-- greater-than or equal to, U+2265 ISOtech -->
+<!ENTITY sub      "&#8834;" ><!-- subset of, U+2282 ISOtech -->
+<!ENTITY sup      "&#8835;" ><!-- superset of, U+2283 ISOtech -->
+<!-- note that nsup, 'not a superset of, U+2283' is not covered by the Symbol
+     font encoding and is not included. Should it be, for symmetry?
+     It is in ISOamsn  -->
+<!ENTITY nsub     "&#8836;" ><!-- not a subset of, U+2284 ISOamsn -->
+<!ENTITY sube     "&#8838;" ><!-- subset of or equal to, U+2286 ISOtech -->
+<!ENTITY supe     "&#8839;" ><!-- superset of or equal to, U+2287 ISOtech -->
+<!ENTITY oplus    "&#8853;" ><!-- circled plus = direct sum, U+2295 ISOamsb -->
+<!ENTITY otimes   "&#8855;" ><!-- circled times = vector product, U+2297 ISOamsb -->
+<!ENTITY perp     "&#8869;" ><!-- up tack = orthogonal to = perpendicular, U+22A5 ISOtech -->
+<!ENTITY sdot     "&#8901;" ><!-- dot operator, U+22C5 ISOamsb -->
+<!-- dot operator is NOT the same character as U+00B7 middle dot -->
+
+<!-- Miscellaneous Technical -->
+<!ENTITY lceil    "&#8968;" ><!-- left ceiling = apl upstile, U+2308 ISOamsc  -->
+<!ENTITY rceil    "&#8969;" ><!-- right ceiling, U+2309 ISOamsc  -->
+<!ENTITY lfloor   "&#8970;" ><!-- left floor = apl downstile, U+230A ISOamsc  -->
+<!ENTITY rfloor   "&#8971;" ><!-- right floor, U+230B ISOamsc  -->
+<!ENTITY lang     "&#9001;" ><!-- left-pointing angle bracket = bra, U+2329 ISOtech -->
+<!-- lang is NOT the same character as U+003C 'less than'
+     or U+2039 'single left-pointing angle quotation mark' -->
+<!ENTITY rang     "&#9002;" ><!-- right-pointing angle bracket = ket, U+232A ISOtech -->
+<!-- rang is NOT the same character as U+003E 'greater than'
+     or U+203A 'single right-pointing angle quotation mark' -->
+
+<!-- Geometric Shapes -->
+<!ENTITY loz      "&#9674;" ><!-- lozenge, U+25CA ISOpub -->
+
+<!-- Miscellaneous Symbols -->
+<!ENTITY spades   "&#9824;" ><!-- black spade suit, U+2660 ISOpub -->
+<!-- black here seems to mean filled as opposed to hollow -->
+<!ENTITY clubs    "&#9827;" ><!-- black club suit = shamrock, U+2663 ISOpub -->
+<!ENTITY hearts   "&#9829;" ><!-- black heart suit = valentine, U+2665 ISOpub -->
+<!ENTITY diams    "&#9830;" ><!-- black diamond suit, U+2666 ISOpub -->
+
+<!-- end of xhtml-symbol.ent -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/xhtml-modularization/xhtml-table-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,333 @@
+<!-- ...................................................................... -->
+<!-- XHTML Table Module  .................................................. -->
+<!-- file: xhtml-table-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-table-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Tables 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-table-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- 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, including features that enable
+     better accessibility for non-visual user agents.
+-->
+
+<!-- declare qualified element type names:
+-->
+<!ENTITY % table.qname  "table" >
+<!ENTITY % caption.qname  "caption" >
+<!ENTITY % thead.qname  "thead" >
+<!ENTITY % tfoot.qname  "tfoot" >
+<!ENTITY % tbody.qname  "tbody" >
+<!ENTITY % colgroup.qname  "colgroup" >
+<!ENTITY % col.qname  "col" >
+<!ENTITY % tr.qname  "tr" >
+<!ENTITY % th.qname  "th" >
+<!ENTITY % td.qname  "td" >
+
+<!-- The frame attribute specifies which parts of the frame around
+     the table should be rendered. The values are not the same as
+     CALS to avoid a name clash with the valign attribute.
+-->
+<!ENTITY % frame.attrib
+     "frame        ( void
+                   | above
+                   | below
+                   | hsides
+                   | lhs
+                   | rhs
+                   | vsides
+                   | box
+                   | border )               #IMPLIED"
+>
+
+<!-- The rules attribute defines which rules to draw between cells:
+
+     If rules is absent then assume:
+
+       "none" if border is absent or border="0" otherwise "all"
+-->
+<!ENTITY % rules.attrib
+     "rules        ( none
+                   | groups
+                   | rows
+                   | cols
+                   | all )                  #IMPLIED"
+>
+
+<!-- horizontal alignment attributes for cell contents
+-->
+<!ENTITY % CellHAlign.attrib
+     "align        ( left
+                   | center
+                   | right
+                   | justify
+                   | char )                 #IMPLIED
+      char         %Character.datatype;     #IMPLIED
+      charoff      %Length.datatype;        #IMPLIED"
+>
+
+<!-- vertical alignment attribute for cell contents
+-->
+<!ENTITY % CellVAlign.attrib
+     "valign       ( top
+                   | middle
+                   | bottom
+                   | baseline )             #IMPLIED"
+>
+
+<!-- scope is simpler than axes attribute for common tables
+-->
+<!ENTITY % scope.attrib
+     "scope        ( row
+                   | col
+                   | rowgroup
+                   | colgroup )             #IMPLIED"
+>
+
+<!-- table: Table Element .............................. -->
+
+<!ENTITY % table.element  "INCLUDE" >
+<![%table.element;[
+<!ENTITY % table.content
+     "( %caption.qname;?, ( %col.qname;* | %colgroup.qname;* ),
+      (( %thead.qname;?, %tfoot.qname;?, %tbody.qname;+ ) | ( %tr.qname;+ )))"
+>
+<!ELEMENT %table.qname;  %table.content; >
+<!-- end of table.element -->]]>
+
+<!ENTITY % table.attlist  "INCLUDE" >
+<![%table.attlist;[
+<!ATTLIST %table.qname;
+      %Common.attrib;
+      summary      %Text.datatype;          #IMPLIED
+      width        %Length.datatype;        #IMPLIED
+      border       %Pixels.datatype;        #IMPLIED
+      %frame.attrib;
+      %rules.attrib;
+      cellspacing  %Length.datatype;        #IMPLIED
+      cellpadding  %Length.datatype;        #IMPLIED
+>
+<!-- end of table.attlist -->]]>
+
+<!-- caption: Table Caption ............................ -->
+
+<!ENTITY % caption.element  "INCLUDE" >
+<![%caption.element;[
+<!ENTITY % caption.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ELEMENT %caption.qname;  %caption.content; >
+<!-- end of caption.element -->]]>
+
+<!ENTITY % caption.attlist  "INCLUDE" >
+<![%caption.attlist;[
+<!ATTLIST %caption.qname;
+      %Common.attrib;
+>
+<!-- end of caption.attlist -->]]>
+
+<!-- thead: Table Header ............................... -->
+
+<!-- Use thead to duplicate headers when breaking table
+     across page boundaries, or for static headers when
+     tbody sections are rendered in scrolling panel.
+-->
+
+<!ENTITY % thead.element  "INCLUDE" >
+<![%thead.element;[
+<!ENTITY % thead.content  "( %tr.qname; )+" >
+<!ELEMENT %thead.qname;  %thead.content; >
+<!-- end of thead.element -->]]>
+
+<!ENTITY % thead.attlist  "INCLUDE" >
+<![%thead.attlist;[
+<!ATTLIST %thead.qname;
+      %Common.attrib;
+      %CellHAlign.attrib;
+      %CellVAlign.attrib;
+>
+<!-- end of thead.attlist -->]]>
+
+<!-- tfoot: Table Footer ............................... -->
+
+<!-- Use tfoot to duplicate footers when breaking table
+     across page boundaries, or for static footers when
+     tbody sections are rendered in scrolling panel.
+-->
+
+<!ENTITY % tfoot.element  "INCLUDE" >
+<![%tfoot.element;[
+<!ENTITY % tfoot.content  "( %tr.qname; )+" >
+<!ELEMENT %tfoot.qname;  %tfoot.content; >
+<!-- end of tfoot.element -->]]>
+
+<!ENTITY % tfoot.attlist  "INCLUDE" >
+<![%tfoot.attlist;[
+<!ATTLIST %tfoot.qname;
+      %Common.attrib;
+      %CellHAlign.attrib;
+      %CellVAlign.attrib;
+>
+<!-- end of tfoot.attlist -->]]>
+
+<!-- tbody: Table Body ................................. -->
+
+<!-- Use multiple tbody sections when rules are needed
+     between groups of table rows.
+-->
+
+<!ENTITY % tbody.element  "INCLUDE" >
+<![%tbody.element;[
+<!ENTITY % tbody.content  "( %tr.qname; )+" >
+<!ELEMENT %tbody.qname;  %tbody.content; >
+<!-- end of tbody.element -->]]>
+
+<!ENTITY % tbody.attlist  "INCLUDE" >
+<![%tbody.attlist;[
+<!ATTLIST %tbody.qname;
+      %Common.attrib;
+      %CellHAlign.attrib;
+      %CellVAlign.attrib;
+>
+<!-- end of tbody.attlist -->]]>
+
+<!-- colgroup: Table Column Group ...................... -->
+
+<!-- colgroup groups a set of col elements. It allows you
+     to group several semantically-related columns together.
+-->
+
+<!ENTITY % colgroup.element  "INCLUDE" >
+<![%colgroup.element;[
+<!ENTITY % colgroup.content  "( %col.qname; )*" >
+<!ELEMENT %colgroup.qname;  %colgroup.content; >
+<!-- end of colgroup.element -->]]>
+
+<!ENTITY % colgroup.attlist  "INCLUDE" >
+<![%colgroup.attlist;[
+<!ATTLIST %colgroup.qname;
+      %Common.attrib;
+      span         %Number.datatype;        '1'
+      width        %MultiLength.datatype;   #IMPLIED
+      %CellHAlign.attrib;
+      %CellVAlign.attrib;
+>
+<!-- end of colgroup.attlist -->]]>
+
+<!-- col: Table Column ................................. -->
+
+<!-- col elements define the alignment properties for
+     cells in one or more columns.
+
+     The width attribute specifies the width of the
+     columns, e.g.
+
+       width="64"        width in screen pixels
+       width="0.5*"      relative width of 0.5
+
+     The span attribute causes the attributes of one
+     col element to apply to more than one column.
+-->
+
+<!ENTITY % col.element  "INCLUDE" >
+<![%col.element;[
+<!ENTITY % col.content  "EMPTY" >
+<!ELEMENT %col.qname;  %col.content; >
+<!-- end of col.element -->]]>
+
+<!ENTITY % col.attlist  "INCLUDE" >
+<![%col.attlist;[
+<!ATTLIST %col.qname;
+      %Common.attrib;
+      span         %Number.datatype;        '1'
+      width        %MultiLength.datatype;   #IMPLIED
+      %CellHAlign.attrib;
+      %CellVAlign.attrib;
+>
+<!-- end of col.attlist -->]]>
+
+<!-- tr: Table Row ..................................... -->
+
+<!ENTITY % tr.element  "INCLUDE" >
+<![%tr.element;[
+<!ENTITY % tr.content  "( %th.qname; | %td.qname; )+" >
+<!ELEMENT %tr.qname;  %tr.content; >
+<!-- end of tr.element -->]]>
+
+<!ENTITY % tr.attlist  "INCLUDE" >
+<![%tr.attlist;[
+<!ATTLIST %tr.qname;
+      %Common.attrib;
+      %CellHAlign.attrib;
+      %CellVAlign.attrib;
+>
+<!-- end of tr.attlist -->]]>
+
+<!-- th: Table Header Cell ............................. -->
+
+<!-- th is for header cells, td for data,
+     but for cells acting as both use td
+-->
+
+<!ENTITY % th.element  "INCLUDE" >
+<![%th.element;[
+<!ENTITY % th.content
+     "( #PCDATA | %Flow.mix; )*"
+>
+<!ELEMENT %th.qname;  %th.content; >
+<!-- end of th.element -->]]>
+
+<!ENTITY % th.attlist  "INCLUDE" >
+<![%th.attlist;[
+<!ATTLIST %th.qname;
+      %Common.attrib;
+      abbr         %Text.datatype;          #IMPLIED
+      axis         CDATA                    #IMPLIED
+      headers      IDREFS                   #IMPLIED
+      %scope.attrib;
+      rowspan      %Number.datatype;        '1'
+      colspan      %Number.datatype;        '1'
+      %CellHAlign.attrib;
+      %CellVAlign.attrib;
+>
+<!-- end of th.attlist -->]]>
+
+<!-- td: Table Data Cell ............................... -->
+
+<!ENTITY % td.element  "INCLUDE" >
+<![%td.element;[
+<!ENTITY % td.content
+     "( #PCDATA | %Flow.mix; )*"
+>
+<!ELEMENT %td.qname;  %td.content; >
+<!-- end of td.element -->]]>
+
+<!ENTITY % td.attlist  "INCLUDE" >
+<![%td.attlist;[
+<!ATTLIST %td.qname;
+      %Common.attrib;
+      abbr         %Text.datatype;          #IMPLIED
+      axis         CDATA                    #IMPLIED
+      headers      IDREFS                   #IMPLIED
+      %scope.attrib;
+      rowspan      %Number.datatype;        '1'
+      colspan      %Number.datatype;        '1'
+      %CellHAlign.attrib;
+      %CellVAlign.attrib;
+>
+<!-- end of td.attlist -->]]>
+
+<!-- end of xhtml-table-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/xhtml-modularization/xhtml-target-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,53 @@
+<!-- ...................................................................... -->
+<!-- XHTML Target Module  ................................................. -->
+<!-- file: xhtml-target-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-target-1.mod,v 1.1 2004-03-16 10:49:12 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Target 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-target-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Target 
+
+        target
+
+     This module declares the 'target' attribute used for opening windows
+-->
+
+<!-- render in this frame --> 
+<!ENTITY % FrameTarget.datatype "CDATA" >
+
+<!-- add 'target' attribute to 'a' element -->
+<!ATTLIST %a.qname;
+      target       %FrameTarget.datatype;   #IMPLIED
+>
+
+<!-- add 'target' attribute to 'area' element -->
+<!ATTLIST %area.qname;
+      target       %FrameTarget.datatype;   #IMPLIED
+>
+
+<!-- add 'target' attribute to 'link' element -->
+<!ATTLIST %link.qname;
+      target       %FrameTarget.datatype;   #IMPLIED
+>
+
+<!-- add 'target' attribute to 'form' element -->
+<!ATTLIST %form.qname;
+      target       %FrameTarget.datatype;   #IMPLIED
+>
+
+<!-- add 'target' attribute to 'base' element -->
+<!ATTLIST %base.qname;
+      target       %FrameTarget.datatype;   #IMPLIED
+>
+
+<!-- end of xhtml-target-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/xhtml-modularization/xhtml-text-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,52 @@
+<!-- ...................................................................... -->
+<!-- XHTML Text Module  ................................................... -->
+<!-- file: xhtml-text-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-text-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Text 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-text-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Textual Content
+
+     The Text module includes declarations for all core
+     text container elements and their attributes.
+-->
+
+<!ENTITY % xhtml-inlstruct.module "INCLUDE" >
+<![%xhtml-inlstruct.module;[
+<!ENTITY % xhtml-inlstruct.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Inline Structural 1.0//EN"
+            "xhtml-inlstruct-1.mod" >
+%xhtml-inlstruct.mod;]]>
+
+<!ENTITY % xhtml-inlphras.module "INCLUDE" >
+<![%xhtml-inlphras.module;[
+<!ENTITY % xhtml-inlphras.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Inline Phrasal 1.0//EN"
+            "xhtml-inlphras-1.mod" >
+%xhtml-inlphras.mod;]]>
+
+<!ENTITY % xhtml-blkstruct.module "INCLUDE" >
+<![%xhtml-blkstruct.module;[
+<!ENTITY % xhtml-blkstruct.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Block Structural 1.0//EN"
+            "xhtml-blkstruct-1.mod" >
+%xhtml-blkstruct.mod;]]>
+
+<!ENTITY % xhtml-blkphras.module "INCLUDE" >
+<![%xhtml-blkphras.module;[
+<!ENTITY % xhtml-blkphras.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Block Phrasal 1.0//EN"
+            "xhtml-blkphras-1.mod" >
+%xhtml-blkphras.mod;]]>
+
+<!-- end of xhtml-text-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/xhtml1.0/xhtml-lat1.ent	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,196 @@
+<!-- Portions (C) International Organization for Standardization 1986
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+-->
+<!-- Character entity set. Typical invocation:
+    <!ENTITY % HTMLlat1 PUBLIC
+       "-//W3C//ENTITIES Latin 1 for XHTML//EN"
+       "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent">
+    %HTMLlat1;
+-->
+
+<!ENTITY nbsp   "&#160;"> <!-- no-break space = non-breaking space,
+                                  U+00A0 ISOnum -->
+<!ENTITY iexcl  "&#161;"> <!-- inverted exclamation mark, U+00A1 ISOnum -->
+<!ENTITY cent   "&#162;"> <!-- cent sign, U+00A2 ISOnum -->
+<!ENTITY pound  "&#163;"> <!-- pound sign, U+00A3 ISOnum -->
+<!ENTITY curren "&#164;"> <!-- currency sign, U+00A4 ISOnum -->
+<!ENTITY yen    "&#165;"> <!-- yen sign = yuan sign, U+00A5 ISOnum -->
+<!ENTITY brvbar "&#166;"> <!-- broken bar = broken vertical bar,
+                                  U+00A6 ISOnum -->
+<!ENTITY sect   "&#167;"> <!-- section sign, U+00A7 ISOnum -->
+<!ENTITY uml    "&#168;"> <!-- diaeresis = spacing diaeresis,
+                                  U+00A8 ISOdia -->
+<!ENTITY copy   "&#169;"> <!-- copyright sign, U+00A9 ISOnum -->
+<!ENTITY ordf   "&#170;"> <!-- feminine ordinal indicator, U+00AA ISOnum -->
+<!ENTITY laquo  "&#171;"> <!-- left-pointing double angle quotation mark
+                                  = left pointing guillemet, U+00AB ISOnum -->
+<!ENTITY not    "&#172;"> <!-- not sign = discretionary hyphen,
+                                  U+00AC ISOnum -->
+<!ENTITY shy    "&#173;"> <!-- soft hyphen = discretionary hyphen,
+                                  U+00AD ISOnum -->
+<!ENTITY reg    "&#174;"> <!-- registered sign = registered trade mark sign,
+                                  U+00AE ISOnum -->
+<!ENTITY macr   "&#175;"> <!-- macron = spacing macron = overline
+                                  = APL overbar, U+00AF ISOdia -->
+<!ENTITY deg    "&#176;"> <!-- degree sign, U+00B0 ISOnum -->
+<!ENTITY plusmn "&#177;"> <!-- plus-minus sign = plus-or-minus sign,
+                                  U+00B1 ISOnum -->
+<!ENTITY sup2   "&#178;"> <!-- superscript two = superscript digit two
+                                  = squared, U+00B2 ISOnum -->
+<!ENTITY sup3   "&#179;"> <!-- superscript three = superscript digit three
+                                  = cubed, U+00B3 ISOnum -->
+<!ENTITY acute  "&#180;"> <!-- acute accent = spacing acute,
+                                  U+00B4 ISOdia -->
+<!ENTITY micro  "&#181;"> <!-- micro sign, U+00B5 ISOnum -->
+<!ENTITY para   "&#182;"> <!-- pilcrow sign = paragraph sign,
+                                  U+00B6 ISOnum -->
+<!ENTITY middot "&#183;"> <!-- middle dot = Georgian comma
+                                  = Greek middle dot, U+00B7 ISOnum -->
+<!ENTITY cedil  "&#184;"> <!-- cedilla = spacing cedilla, U+00B8 ISOdia -->
+<!ENTITY sup1   "&#185;"> <!-- superscript one = superscript digit one,
+                                  U+00B9 ISOnum -->
+<!ENTITY ordm   "&#186;"> <!-- masculine ordinal indicator,
+                                  U+00BA ISOnum -->
+<!ENTITY raquo  "&#187;"> <!-- right-pointing double angle quotation mark
+                                  = right pointing guillemet, U+00BB ISOnum -->
+<!ENTITY frac14 "&#188;"> <!-- vulgar fraction one quarter
+                                  = fraction one quarter, U+00BC ISOnum -->
+<!ENTITY frac12 "&#189;"> <!-- vulgar fraction one half
+                                  = fraction one half, U+00BD ISOnum -->
+<!ENTITY frac34 "&#190;"> <!-- vulgar fraction three quarters
+                                  = fraction three quarters, U+00BE ISOnum -->
+<!ENTITY iquest "&#191;"> <!-- inverted question mark
+                                  = turned question mark, U+00BF ISOnum -->
+<!ENTITY Agrave "&#192;"> <!-- latin capital letter A with grave
+                                  = latin capital letter A grave,
+                                  U+00C0 ISOlat1 -->
+<!ENTITY Aacute "&#193;"> <!-- latin capital letter A with acute,
+                                  U+00C1 ISOlat1 -->
+<!ENTITY Acirc  "&#194;"> <!-- latin capital letter A with circumflex,
+                                  U+00C2 ISOlat1 -->
+<!ENTITY Atilde "&#195;"> <!-- latin capital letter A with tilde,
+                                  U+00C3 ISOlat1 -->
+<!ENTITY Auml   "&#196;"> <!-- latin capital letter A with diaeresis,
+                                  U+00C4 ISOlat1 -->
+<!ENTITY Aring  "&#197;"> <!-- latin capital letter A with ring above
+                                  = latin capital letter A ring,
+                                  U+00C5 ISOlat1 -->
+<!ENTITY AElig  "&#198;"> <!-- latin capital letter AE
+                                  = latin capital ligature AE,
+                                  U+00C6 ISOlat1 -->
+<!ENTITY Ccedil "&#199;"> <!-- latin capital letter C with cedilla,
+                                  U+00C7 ISOlat1 -->
+<!ENTITY Egrave "&#200;"> <!-- latin capital letter E with grave,
+                                  U+00C8 ISOlat1 -->
+<!ENTITY Eacute "&#201;"> <!-- latin capital letter E with acute,
+                                  U+00C9 ISOlat1 -->
+<!ENTITY Ecirc  "&#202;"> <!-- latin capital letter E with circumflex,
+                                  U+00CA ISOlat1 -->
+<!ENTITY Euml   "&#203;"> <!-- latin capital letter E with diaeresis,
+                                  U+00CB ISOlat1 -->
+<!ENTITY Igrave "&#204;"> <!-- latin capital letter I with grave,
+                                  U+00CC ISOlat1 -->
+<!ENTITY Iacute "&#205;"> <!-- latin capital letter I with acute,
+                                  U+00CD ISOlat1 -->
+<!ENTITY Icirc  "&#206;"> <!-- latin capital letter I with circumflex,
+                                  U+00CE ISOlat1 -->
+<!ENTITY Iuml   "&#207;"> <!-- latin capital letter I with diaeresis,
+                                  U+00CF ISOlat1 -->
+<!ENTITY ETH    "&#208;"> <!-- latin capital letter ETH, U+00D0 ISOlat1 -->
+<!ENTITY Ntilde "&#209;"> <!-- latin capital letter N with tilde,
+                                  U+00D1 ISOlat1 -->
+<!ENTITY Ograve "&#210;"> <!-- latin capital letter O with grave,
+                                  U+00D2 ISOlat1 -->
+<!ENTITY Oacute "&#211;"> <!-- latin capital letter O with acute,
+                                  U+00D3 ISOlat1 -->
+<!ENTITY Ocirc  "&#212;"> <!-- latin capital letter O with circumflex,
+                                  U+00D4 ISOlat1 -->
+<!ENTITY Otilde "&#213;"> <!-- latin capital letter O with tilde,
+                                  U+00D5 ISOlat1 -->
+<!ENTITY Ouml   "&#214;"> <!-- latin capital letter O with diaeresis,
+                                  U+00D6 ISOlat1 -->
+<!ENTITY times  "&#215;"> <!-- multiplication sign, U+00D7 ISOnum -->
+<!ENTITY Oslash "&#216;"> <!-- latin capital letter O with stroke
+                                  = latin capital letter O slash,
+                                  U+00D8 ISOlat1 -->
+<!ENTITY Ugrave "&#217;"> <!-- latin capital letter U with grave,
+                                  U+00D9 ISOlat1 -->
+<!ENTITY Uacute "&#218;"> <!-- latin capital letter U with acute,
+                                  U+00DA ISOlat1 -->
+<!ENTITY Ucirc  "&#219;"> <!-- latin capital letter U with circumflex,
+                                  U+00DB ISOlat1 -->
+<!ENTITY Uuml   "&#220;"> <!-- latin capital letter U with diaeresis,
+                                  U+00DC ISOlat1 -->
+<!ENTITY Yacute "&#221;"> <!-- latin capital letter Y with acute,
+                                  U+00DD ISOlat1 -->
+<!ENTITY THORN  "&#222;"> <!-- latin capital letter THORN,
+                                  U+00DE ISOlat1 -->
+<!ENTITY szlig  "&#223;"> <!-- latin small letter sharp s = ess-zed,
+                                  U+00DF ISOlat1 -->
+<!ENTITY agrave "&#224;"> <!-- latin small letter a with grave
+                                  = latin small letter a grave,
+                                  U+00E0 ISOlat1 -->
+<!ENTITY aacute "&#225;"> <!-- latin small letter a with acute,
+                                  U+00E1 ISOlat1 -->
+<!ENTITY acirc  "&#226;"> <!-- latin small letter a with circumflex,
+                                  U+00E2 ISOlat1 -->
+<!ENTITY atilde "&#227;"> <!-- latin small letter a with tilde,
+                                  U+00E3 ISOlat1 -->
+<!ENTITY auml   "&#228;"> <!-- latin small letter a with diaeresis,
+                                  U+00E4 ISOlat1 -->
+<!ENTITY aring  "&#229;"> <!-- latin small letter a with ring above
+                                  = latin small letter a ring,
+                                  U+00E5 ISOlat1 -->
+<!ENTITY aelig  "&#230;"> <!-- latin small letter ae
+                                  = latin small ligature ae, U+00E6 ISOlat1 -->
+<!ENTITY ccedil "&#231;"> <!-- latin small letter c with cedilla,
+                                  U+00E7 ISOlat1 -->
+<!ENTITY egrave "&#232;"> <!-- latin small letter e with grave,
+                                  U+00E8 ISOlat1 -->
+<!ENTITY eacute "&#233;"> <!-- latin small letter e with acute,
+                                  U+00E9 ISOlat1 -->
+<!ENTITY ecirc  "&#234;"> <!-- latin small letter e with circumflex,
+                                  U+00EA ISOlat1 -->
+<!ENTITY euml   "&#235;"> <!-- latin small letter e with diaeresis,
+                                  U+00EB ISOlat1 -->
+<!ENTITY igrave "&#236;"> <!-- latin small letter i with grave,
+                                  U+00EC ISOlat1 -->
+<!ENTITY iacute "&#237;"> <!-- latin small letter i with acute,
+                                  U+00ED ISOlat1 -->
+<!ENTITY icirc  "&#238;"> <!-- latin small letter i with circumflex,
+                                  U+00EE ISOlat1 -->
+<!ENTITY iuml   "&#239;"> <!-- latin small letter i with diaeresis,
+                                  U+00EF ISOlat1 -->
+<!ENTITY eth    "&#240;"> <!-- latin small letter eth, U+00F0 ISOlat1 -->
+<!ENTITY ntilde "&#241;"> <!-- latin small letter n with tilde,
+                                  U+00F1 ISOlat1 -->
+<!ENTITY ograve "&#242;"> <!-- latin small letter o with grave,
+                                  U+00F2 ISOlat1 -->
+<!ENTITY oacute "&#243;"> <!-- latin small letter o with acute,
+                                  U+00F3 ISOlat1 -->
+<!ENTITY ocirc  "&#244;"> <!-- latin small letter o with circumflex,
+                                  U+00F4 ISOlat1 -->
+<!ENTITY otilde "&#245;"> <!-- latin small letter o with tilde,
+                                  U+00F5 ISOlat1 -->
+<!ENTITY ouml   "&#246;"> <!-- latin small letter o with diaeresis,
+                                  U+00F6 ISOlat1 -->
+<!ENTITY divide "&#247;"> <!-- division sign, U+00F7 ISOnum -->
+<!ENTITY oslash "&#248;"> <!-- latin small letter o with stroke,
+                                  = latin small letter o slash,
+                                  U+00F8 ISOlat1 -->
+<!ENTITY ugrave "&#249;"> <!-- latin small letter u with grave,
+                                  U+00F9 ISOlat1 -->
+<!ENTITY uacute "&#250;"> <!-- latin small letter u with acute,
+                                  U+00FA ISOlat1 -->
+<!ENTITY ucirc  "&#251;"> <!-- latin small letter u with circumflex,
+                                  U+00FB ISOlat1 -->
+<!ENTITY uuml   "&#252;"> <!-- latin small letter u with diaeresis,
+                                  U+00FC ISOlat1 -->
+<!ENTITY yacute "&#253;"> <!-- latin small letter y with acute,
+                                  U+00FD ISOlat1 -->
+<!ENTITY thorn  "&#254;"> <!-- latin small letter thorn with,
+                                  U+00FE ISOlat1 -->
+<!ENTITY yuml   "&#255;"> <!-- latin small letter y with diaeresis,
+                                  U+00FF ISOlat1 -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/xhtml1.0/xhtml-special.ent	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,79 @@
+<!-- Special characters for HTML -->
+
+<!-- Character entity set. Typical invocation:
+     <!ENTITY % HTMLspecial PUBLIC
+        "-//W3C//ENTITIES Special for XHTML//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent">
+     %HTMLspecial;
+-->
+
+<!-- Portions (C) International Organization for Standardization 1986:
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+-->
+
+<!-- Relevant ISO entity set is given unless names are newly introduced.
+     New names (i.e., not in ISO 8879 list) do not clash with any
+     existing ISO 8879 entity names. ISO 10646 character numbers
+     are given for each character, in hex. values are decimal
+     conversions of the ISO 10646 values and refer to the document
+     character set. Names are Unicode names. 
+-->
+
+<!-- C0 Controls and Basic Latin -->
+<!ENTITY quot    "&#34;"> <!--  quotation mark = APL quote,
+                                    U+0022 ISOnum -->
+<!ENTITY amp     "&#38;#38;"> <!--  ampersand, U+0026 ISOnum -->
+<!ENTITY lt      "&#38;#60;"> <!--  less-than sign, U+003C ISOnum -->
+<!ENTITY gt      "&#62;"> <!--  greater-than sign, U+003E ISOnum -->
+<!ENTITY apos	 "&#39;"> <!--  apostrophe mark, U+0027 ISOnum -->
+
+<!-- Latin Extended-A -->
+<!ENTITY OElig   "&#338;"> <!--  latin capital ligature OE,
+                                    U+0152 ISOlat2 -->
+<!ENTITY oelig   "&#339;"> <!--  latin small ligature oe, U+0153 ISOlat2 -->
+<!-- ligature is a misnomer, this is a separate character in some languages -->
+<!ENTITY Scaron  "&#352;"> <!--  latin capital letter S with caron,
+                                    U+0160 ISOlat2 -->
+<!ENTITY scaron  "&#353;"> <!--  latin small letter s with caron,
+                                    U+0161 ISOlat2 -->
+<!ENTITY Yuml    "&#376;"> <!--  latin capital letter Y with diaeresis,
+                                    U+0178 ISOlat2 -->
+
+<!-- Spacing Modifier Letters -->
+<!ENTITY circ    "&#710;"> <!--  modifier letter circumflex accent,
+                                    U+02C6 ISOpub -->
+<!ENTITY tilde   "&#732;"> <!--  small tilde, U+02DC ISOdia -->
+
+<!-- General Punctuation -->
+<!ENTITY ensp    "&#8194;"> <!-- en space, U+2002 ISOpub -->
+<!ENTITY emsp    "&#8195;"> <!-- em space, U+2003 ISOpub -->
+<!ENTITY thinsp  "&#8201;"> <!-- thin space, U+2009 ISOpub -->
+<!ENTITY zwnj    "&#8204;"> <!-- zero width non-joiner,
+                                    U+200C NEW RFC 2070 -->
+<!ENTITY zwj     "&#8205;"> <!-- zero width joiner, U+200D NEW RFC 2070 -->
+<!ENTITY lrm     "&#8206;"> <!-- left-to-right mark, U+200E NEW RFC 2070 -->
+<!ENTITY rlm     "&#8207;"> <!-- right-to-left mark, U+200F NEW RFC 2070 -->
+<!ENTITY ndash   "&#8211;"> <!-- en dash, U+2013 ISOpub -->
+<!ENTITY mdash   "&#8212;"> <!-- em dash, U+2014 ISOpub -->
+<!ENTITY lsquo   "&#8216;"> <!-- left single quotation mark,
+                                    U+2018 ISOnum -->
+<!ENTITY rsquo   "&#8217;"> <!-- right single quotation mark,
+                                    U+2019 ISOnum -->
+<!ENTITY sbquo   "&#8218;"> <!-- single low-9 quotation mark, U+201A NEW -->
+<!ENTITY ldquo   "&#8220;"> <!-- left double quotation mark,
+                                    U+201C ISOnum -->
+<!ENTITY rdquo   "&#8221;"> <!-- right double quotation mark,
+                                    U+201D ISOnum -->
+<!ENTITY bdquo   "&#8222;"> <!-- double low-9 quotation mark, U+201E NEW -->
+<!ENTITY dagger  "&#8224;"> <!-- dagger, U+2020 ISOpub -->
+<!ENTITY Dagger  "&#8225;"> <!-- double dagger, U+2021 ISOpub -->
+<!ENTITY permil  "&#8240;"> <!-- per mille sign, U+2030 ISOtech -->
+<!ENTITY lsaquo  "&#8249;"> <!-- single left-pointing angle quotation mark,
+                                    U+2039 ISO proposed -->
+<!-- lsaquo is proposed but not yet ISO standardized -->
+<!ENTITY rsaquo  "&#8250;"> <!-- single right-pointing angle quotation mark,
+                                    U+203A ISO proposed -->
+<!-- rsaquo is proposed but not yet ISO standardized -->
+<!ENTITY euro   "&#8364;"> <!--  euro sign, U+20AC NEW -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/xhtml1.0/xhtml-symbol.ent	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,242 @@
+<!-- Mathematical, Greek and Symbolic characters for HTML -->
+
+<!-- Character entity set. Typical invocation:
+     <!ENTITY % HTMLsymbol PUBLIC
+        "-//W3C//ENTITIES Symbols for XHTML//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent">
+     %HTMLsymbol;
+-->
+
+<!-- Portions (C) International Organization for Standardization 1986:
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+-->
+
+<!-- Relevant ISO entity set is given unless names are newly introduced.
+     New names (i.e., not in ISO 8879 list) do not clash with any
+     existing ISO 8879 entity names. ISO 10646 character numbers
+     are given for each character, in hex. values are decimal
+     conversions of the ISO 10646 values and refer to the document
+     character set. Names are Unicode names. 
+-->
+
+<!-- Latin Extended-B -->
+<!ENTITY fnof     "&#402;"> <!-- latin small f with hook = function
+                                    = florin, U+0192 ISOtech -->
+
+<!-- Greek -->
+<!ENTITY Alpha    "&#913;"> <!-- greek capital letter alpha, U+0391 -->
+<!ENTITY Beta     "&#914;"> <!-- greek capital letter beta, U+0392 -->
+<!ENTITY Gamma    "&#915;"> <!-- greek capital letter gamma,
+                                    U+0393 ISOgrk3 -->
+<!ENTITY Delta    "&#916;"> <!-- greek capital letter delta,
+                                    U+0394 ISOgrk3 -->
+<!ENTITY Epsilon  "&#917;"> <!-- greek capital letter epsilon, U+0395 -->
+<!ENTITY Zeta     "&#918;"> <!-- greek capital letter zeta, U+0396 -->
+<!ENTITY Eta      "&#919;"> <!-- greek capital letter eta, U+0397 -->
+<!ENTITY Theta    "&#920;"> <!-- greek capital letter theta,
+                                    U+0398 ISOgrk3 -->
+<!ENTITY Iota     "&#921;"> <!-- greek capital letter iota, U+0399 -->
+<!ENTITY Kappa    "&#922;"> <!-- greek capital letter kappa, U+039A -->
+<!ENTITY Lambda   "&#923;"> <!-- greek capital letter lambda,
+                                    U+039B ISOgrk3 -->
+<!ENTITY Mu       "&#924;"> <!-- greek capital letter mu, U+039C -->
+<!ENTITY Nu       "&#925;"> <!-- greek capital letter nu, U+039D -->
+<!ENTITY Xi       "&#926;"> <!-- greek capital letter xi, U+039E ISOgrk3 -->
+<!ENTITY Omicron  "&#927;"> <!-- greek capital letter omicron, U+039F -->
+<!ENTITY Pi       "&#928;"> <!-- greek capital letter pi, U+03A0 ISOgrk3 -->
+<!ENTITY Rho      "&#929;"> <!-- greek capital letter rho, U+03A1 -->
+<!-- there is no Sigmaf, and no U+03A2 character either -->
+<!ENTITY Sigma    "&#931;"> <!-- greek capital letter sigma,
+                                    U+03A3 ISOgrk3 -->
+<!ENTITY Tau      "&#932;"> <!-- greek capital letter tau, U+03A4 -->
+<!ENTITY Upsilon  "&#933;"> <!-- greek capital letter upsilon,
+                                    U+03A5 ISOgrk3 -->
+<!ENTITY Phi      "&#934;"> <!-- greek capital letter phi,
+                                    U+03A6 ISOgrk3 -->
+<!ENTITY Chi      "&#935;"> <!-- greek capital letter chi, U+03A7 -->
+<!ENTITY Psi      "&#936;"> <!-- greek capital letter psi,
+                                    U+03A8 ISOgrk3 -->
+<!ENTITY Omega    "&#937;"> <!-- greek capital letter omega,
+                                    U+03A9 ISOgrk3 -->
+
+<!ENTITY alpha    "&#945;"> <!-- greek small letter alpha,
+                                    U+03B1 ISOgrk3 -->
+<!ENTITY beta     "&#946;"> <!-- greek small letter beta, U+03B2 ISOgrk3 -->
+<!ENTITY gamma    "&#947;"> <!-- greek small letter gamma,
+                                    U+03B3 ISOgrk3 -->
+<!ENTITY delta    "&#948;"> <!-- greek small letter delta,
+                                    U+03B4 ISOgrk3 -->
+<!ENTITY epsilon  "&#949;"> <!-- greek small letter epsilon,
+                                    U+03B5 ISOgrk3 -->
+<!ENTITY zeta     "&#950;"> <!-- greek small letter zeta, U+03B6 ISOgrk3 -->
+<!ENTITY eta      "&#951;"> <!-- greek small letter eta, U+03B7 ISOgrk3 -->
+<!ENTITY theta    "&#952;"> <!-- greek small letter theta,
+                                    U+03B8 ISOgrk3 -->
+<!ENTITY iota     "&#953;"> <!-- greek small letter iota, U+03B9 ISOgrk3 -->
+<!ENTITY kappa    "&#954;"> <!-- greek small letter kappa,
+                                    U+03BA ISOgrk3 -->
+<!ENTITY lambda   "&#955;"> <!-- greek small letter lambda,
+                                    U+03BB ISOgrk3 -->
+<!ENTITY mu       "&#956;"> <!-- greek small letter mu, U+03BC ISOgrk3 -->
+<!ENTITY nu       "&#957;"> <!-- greek small letter nu, U+03BD ISOgrk3 -->
+<!ENTITY xi       "&#958;"> <!-- greek small letter xi, U+03BE ISOgrk3 -->
+<!ENTITY omicron  "&#959;"> <!-- greek small letter omicron, U+03BF NEW -->
+<!ENTITY pi       "&#960;"> <!-- greek small letter pi, U+03C0 ISOgrk3 -->
+<!ENTITY rho      "&#961;"> <!-- greek small letter rho, U+03C1 ISOgrk3 -->
+<!ENTITY sigmaf   "&#962;"> <!-- greek small letter final sigma,
+                                    U+03C2 ISOgrk3 -->
+<!ENTITY sigma    "&#963;"> <!-- greek small letter sigma,
+                                    U+03C3 ISOgrk3 -->
+<!ENTITY tau      "&#964;"> <!-- greek small letter tau, U+03C4 ISOgrk3 -->
+<!ENTITY upsilon  "&#965;"> <!-- greek small letter upsilon,
+                                    U+03C5 ISOgrk3 -->
+<!ENTITY phi      "&#966;"> <!-- greek small letter phi, U+03C6 ISOgrk3 -->
+<!ENTITY chi      "&#967;"> <!-- greek small letter chi, U+03C7 ISOgrk3 -->
+<!ENTITY psi      "&#968;"> <!-- greek small letter psi, U+03C8 ISOgrk3 -->
+<!ENTITY omega    "&#969;"> <!-- greek small letter omega,
+                                    U+03C9 ISOgrk3 -->
+<!ENTITY thetasym "&#977;"> <!-- greek small letter theta symbol,
+                                    U+03D1 NEW -->
+<!ENTITY upsih    "&#978;"> <!-- greek upsilon with hook symbol,
+                                    U+03D2 NEW -->
+<!ENTITY piv      "&#982;"> <!-- greek pi symbol, U+03D6 ISOgrk3 -->
+
+<!-- General Punctuation -->
+<!ENTITY bull     "&#8226;"> <!-- bullet = black small circle,
+                                     U+2022 ISOpub  -->
+<!-- bullet is NOT the same as bullet operator, U+2219 -->
+<!ENTITY hellip   "&#8230;"> <!-- horizontal ellipsis = three dot leader,
+                                     U+2026 ISOpub  -->
+<!ENTITY prime    "&#8242;"> <!-- prime = minutes = feet, U+2032 ISOtech -->
+<!ENTITY Prime    "&#8243;"> <!-- double prime = seconds = inches,
+                                     U+2033 ISOtech -->
+<!ENTITY oline    "&#8254;"> <!-- overline = spacing overscore,
+                                     U+203E NEW -->
+<!ENTITY frasl    "&#8260;"> <!-- fraction slash, U+2044 NEW -->
+
+<!-- Letterlike Symbols -->
+<!ENTITY weierp   "&#8472;"> <!-- script capital P = power set
+                                     = Weierstrass p, U+2118 ISOamso -->
+<!ENTITY image    "&#8465;"> <!-- blackletter capital I = imaginary part,
+                                     U+2111 ISOamso -->
+<!ENTITY real     "&#8476;"> <!-- blackletter capital R = real part symbol,
+                                     U+211C ISOamso -->
+<!ENTITY trade    "&#8482;"> <!-- trade mark sign, U+2122 ISOnum -->
+<!ENTITY alefsym  "&#8501;"> <!-- alef symbol = first transfinite cardinal,
+                                     U+2135 NEW -->
+<!-- alef symbol is NOT the same as hebrew letter alef,
+     U+05D0 although the same glyph could be used to depict both characters -->
+
+<!-- Arrows -->
+<!ENTITY larr     "&#8592;"> <!-- leftwards arrow, U+2190 ISOnum -->
+<!ENTITY uarr     "&#8593;"> <!-- upwards arrow, U+2191 ISOnum-->
+<!ENTITY rarr     "&#8594;"> <!-- rightwards arrow, U+2192 ISOnum -->
+<!ENTITY darr     "&#8595;"> <!-- downwards arrow, U+2193 ISOnum -->
+<!ENTITY harr     "&#8596;"> <!-- left right arrow, U+2194 ISOamsa -->
+<!ENTITY crarr    "&#8629;"> <!-- downwards arrow with corner leftwards
+                                     = carriage return, U+21B5 NEW -->
+<!ENTITY lArr     "&#8656;"> <!-- leftwards double arrow, U+21D0 ISOtech -->
+<!-- Unicode does not say that lArr is the same as the 'is implied by' arrow
+    but also does not have any other character for that function. So ? lArr can
+    be used for 'is implied by' as ISOtech suggests -->
+<!ENTITY uArr     "&#8657;"> <!-- upwards double arrow, U+21D1 ISOamsa -->
+<!ENTITY rArr     "&#8658;"> <!-- rightwards double arrow,
+                                     U+21D2 ISOtech -->
+<!-- Unicode does not say this is the 'implies' character but does not have 
+     another character with this function so ?
+     rArr can be used for 'implies' as ISOtech suggests -->
+<!ENTITY dArr     "&#8659;"> <!-- downwards double arrow, U+21D3 ISOamsa -->
+<!ENTITY hArr     "&#8660;"> <!-- left right double arrow,
+                                     U+21D4 ISOamsa -->
+
+<!-- Mathematical Operators -->
+<!ENTITY forall   "&#8704;"> <!-- for all, U+2200 ISOtech -->
+<!ENTITY part     "&#8706;"> <!-- partial differential, U+2202 ISOtech  -->
+<!ENTITY exist    "&#8707;"> <!-- there exists, U+2203 ISOtech -->
+<!ENTITY empty    "&#8709;"> <!-- empty set = null set = diameter,
+                                     U+2205 ISOamso -->
+<!ENTITY nabla    "&#8711;"> <!-- nabla = backward difference,
+                                     U+2207 ISOtech -->
+<!ENTITY isin     "&#8712;"> <!-- element of, U+2208 ISOtech -->
+<!ENTITY notin    "&#8713;"> <!-- not an element of, U+2209 ISOtech -->
+<!ENTITY ni       "&#8715;"> <!-- contains as member, U+220B ISOtech -->
+<!-- should there be a more memorable name than 'ni'? -->
+<!ENTITY prod     "&#8719;"> <!-- n-ary product = product sign,
+                                     U+220F ISOamsb -->
+<!-- prod is NOT the same character as U+03A0 'greek capital letter pi' though
+     the same glyph might be used for both -->
+<!ENTITY sum      "&#8721;"> <!-- n-ary sumation, U+2211 ISOamsb -->
+<!-- sum is NOT the same character as U+03A3 'greek capital letter sigma'
+     though the same glyph might be used for both -->
+<!ENTITY minus    "&#8722;"> <!-- minus sign, U+2212 ISOtech -->
+<!ENTITY lowast   "&#8727;"> <!-- asterisk operator, U+2217 ISOtech -->
+<!ENTITY radic    "&#8730;"> <!-- square root = radical sign,
+                                     U+221A ISOtech -->
+<!ENTITY prop     "&#8733;"> <!-- proportional to, U+221D ISOtech -->
+<!ENTITY infin    "&#8734;"> <!-- infinity, U+221E ISOtech -->
+<!ENTITY ang      "&#8736;"> <!-- angle, U+2220 ISOamso -->
+<!ENTITY and      "&#8743;"> <!-- logical and = wedge, U+2227 ISOtech -->
+<!ENTITY or       "&#8744;"> <!-- logical or = vee, U+2228 ISOtech -->
+<!ENTITY cap      "&#8745;"> <!-- intersection = cap, U+2229 ISOtech -->
+<!ENTITY cup      "&#8746;"> <!-- union = cup, U+222A ISOtech -->
+<!ENTITY int      "&#8747;"> <!-- integral, U+222B ISOtech -->
+<!ENTITY there4   "&#8756;"> <!-- therefore, U+2234 ISOtech -->
+<!ENTITY sim      "&#8764;"> <!-- tilde operator = varies with = similar to,
+                                     U+223C ISOtech -->
+<!-- tilde operator is NOT the same character as the tilde, U+007E,
+     although the same glyph might be used to represent both  -->
+<!ENTITY cong     "&#8773;"> <!-- approximately equal to, U+2245 ISOtech -->
+<!ENTITY asymp    "&#8776;"> <!-- almost equal to = asymptotic to,
+                                     U+2248 ISOamsr -->
+<!ENTITY ne       "&#8800;"> <!-- not equal to, U+2260 ISOtech -->
+<!ENTITY equiv    "&#8801;"> <!-- identical to, U+2261 ISOtech -->
+<!ENTITY le       "&#8804;"> <!-- less-than or equal to, U+2264 ISOtech -->
+<!ENTITY ge       "&#8805;"> <!-- greater-than or equal to,
+                                     U+2265 ISOtech -->
+<!ENTITY sub      "&#8834;"> <!-- subset of, U+2282 ISOtech -->
+<!ENTITY sup      "&#8835;"> <!-- superset of, U+2283 ISOtech -->
+<!-- note that nsup, 'not a superset of, U+2283' is not covered by the Symbol 
+     font encoding and is not included. Should it be, for symmetry?
+     It is in ISOamsn  --> 
+<!ENTITY nsub     "&#8836;"> <!-- not a subset of, U+2284 ISOamsn -->
+<!ENTITY sube     "&#8838;"> <!-- subset of or equal to, U+2286 ISOtech -->
+<!ENTITY supe     "&#8839;"> <!-- superset of or equal to,
+                                     U+2287 ISOtech -->
+<!ENTITY oplus    "&#8853;"> <!-- circled plus = direct sum,
+                                     U+2295 ISOamsb -->
+<!ENTITY otimes   "&#8855;"> <!-- circled times = vector product,
+                                     U+2297 ISOamsb -->
+<!ENTITY perp     "&#8869;"> <!-- up tack = orthogonal to = perpendicular,
+                                     U+22A5 ISOtech -->
+<!ENTITY sdot     "&#8901;"> <!-- dot operator, U+22C5 ISOamsb -->
+<!-- dot operator is NOT the same character as U+00B7 middle dot -->
+
+<!-- Miscellaneous Technical -->
+<!ENTITY lceil    "&#8968;"> <!-- left ceiling = apl upstile,
+                                     U+2308 ISOamsc  -->
+<!ENTITY rceil    "&#8969;"> <!-- right ceiling, U+2309 ISOamsc  -->
+<!ENTITY lfloor   "&#8970;"> <!-- left floor = apl downstile,
+                                     U+230A ISOamsc  -->
+<!ENTITY rfloor   "&#8971;"> <!-- right floor, U+230B ISOamsc  -->
+<!ENTITY lang     "&#9001;"> <!-- left-pointing angle bracket = bra,
+                                     U+2329 ISOtech -->
+<!-- lang is NOT the same character as U+003C 'less than' 
+     or U+2039 'single left-pointing angle quotation mark' -->
+<!ENTITY rang     "&#9002;"> <!-- right-pointing angle bracket = ket,
+                                     U+232A ISOtech -->
+<!-- rang is NOT the same character as U+003E 'greater than' 
+     or U+203A 'single right-pointing angle quotation mark' -->
+
+<!-- Geometric Shapes -->
+<!ENTITY loz      "&#9674;"> <!-- lozenge, U+25CA ISOpub -->
+
+<!-- Miscellaneous Symbols -->
+<!ENTITY spades   "&#9824;"> <!-- black spade suit, U+2660 ISOpub -->
+<!-- black here seems to mean filled as opposed to hollow -->
+<!ENTITY clubs    "&#9827;"> <!-- black club suit = shamrock,
+                                     U+2663 ISOpub -->
+<!ENTITY hearts   "&#9829;"> <!-- black heart suit = valentine,
+                                     U+2665 ISOpub -->
+<!ENTITY diams    "&#9830;"> <!-- black diamond suit, U+2666 ISOpub -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/xhtml1.0/xhtml1-frameset.dtd	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,1225 @@
+<!--
+   Extensible HTML version 1.0 Frameset DTD
+
+   This is the same as HTML 4.0 Frameset except for
+   changes due to the differences between XML and SGML.
+
+   Namespace = http://www.w3.org/1999/xhtml
+
+   For further information, see: http://www.w3.org/TR/xhtml1
+
+   Copyright (c) 1998-2000 W3C (MIT, INRIA, Keio),
+   All Rights Reserved. 
+
+   This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+   PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
+   SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"
+
+   $Revision: 1.1 $
+   $Date: 2002-04-08 21:19:32 $
+
+-->
+
+<!--================ Character mnemonic entities =========================-->
+
+<!ENTITY % HTMLlat1 PUBLIC
+   "-//W3C//ENTITIES Latin 1 for XHTML//EN"
+   "xhtml-lat1.ent">
+%HTMLlat1;
+
+<!ENTITY % HTMLsymbol PUBLIC
+   "-//W3C//ENTITIES Symbols for XHTML//EN"
+   "xhtml-symbol.ent">
+%HTMLsymbol;
+
+<!ENTITY % HTMLspecial PUBLIC
+   "-//W3C//ENTITIES Special for XHTML//EN"
+   "xhtml-special.ent">
+%HTMLspecial;
+
+<!--================== Imported Names ====================================-->
+
+<!ENTITY % ContentType "CDATA">
+    <!-- media type, as per [RFC2045] -->
+
+<!ENTITY % ContentTypes "CDATA">
+    <!-- comma-separated list of media types, as per [RFC2045] -->
+
+<!ENTITY % Charset "CDATA">
+    <!-- a character encoding, as per [RFC2045] -->
+
+<!ENTITY % Charsets "CDATA">
+    <!-- a space separated list of character encodings, as per [RFC2045] -->
+
+<!ENTITY % LanguageCode "NMTOKEN">
+    <!-- a language code, as per [RFC1766] -->
+
+<!ENTITY % Character "CDATA">
+    <!-- a single character from [ISO10646] -->
+
+<!ENTITY % Number "CDATA">
+    <!-- one or more digits -->
+
+<!ENTITY % LinkTypes "CDATA">
+    <!-- space-separated list of link types -->
+
+<!ENTITY % MediaDesc "CDATA">
+    <!-- single or comma-separated list of media descriptors -->
+
+<!ENTITY % URI "CDATA">
+    <!-- a Uniform Resource Identifier, see [RFC2396] -->
+
+<!ENTITY % UriList "CDATA">
+    <!-- a space separated list of Uniform Resource Identifiers -->
+
+<!ENTITY % Datetime "CDATA">
+    <!-- date and time information. ISO date format -->
+
+<!ENTITY % Script "CDATA">
+    <!-- script expression -->
+
+<!ENTITY % StyleSheet "CDATA">
+    <!-- style sheet data -->
+
+<!ENTITY % Text "CDATA">
+    <!-- used for titles etc. -->
+
+<!ENTITY % FrameTarget "NMTOKEN">
+    <!-- render in this frame -->
+
+<!ENTITY % Length "CDATA">
+    <!-- nn for pixels or nn% for percentage length -->
+
+<!ENTITY % MultiLength "CDATA">
+    <!-- pixel, percentage, or relative -->
+
+<!ENTITY % MultiLengths "CDATA">
+    <!-- comma-separated list of MultiLength -->
+
+<!ENTITY % Pixels "CDATA">
+    <!-- integer representing length in pixels -->
+
+<!-- these are used for image maps -->
+
+<!ENTITY % Shape "(rect|circle|poly|default)">
+
+<!ENTITY % Coords "CDATA">
+    <!-- comma separated list of lengths -->
+
+<!-- used for object, applet, img, input and iframe -->
+<!ENTITY % ImgAlign "(top|middle|bottom|left|right)">
+
+<!-- a color using sRGB: #RRGGBB as Hex values -->
+<!ENTITY % Color "CDATA">
+
+<!-- There are also 16 widely known color names with their sRGB values:
+
+    Black  = #000000    Green  = #008000
+    Silver = #C0C0C0    Lime   = #00FF00
+    Gray   = #808080    Olive  = #808000
+    White  = #FFFFFF    Yellow = #FFFF00
+    Maroon = #800000    Navy   = #000080
+    Red    = #FF0000    Blue   = #0000FF
+    Purple = #800080    Teal   = #008080
+    Fuchsia= #FF00FF    Aqua   = #00FFFF
+-->
+
+<!--=================== Generic Attributes ===============================-->
+
+<!-- core attributes common to most elements
+  id       document-wide unique id
+  class    space separated list of classes
+  style    associated style info
+  title    advisory title/amplification
+-->
+<!ENTITY % coreattrs
+ "id          ID             #IMPLIED
+  class       CDATA          #IMPLIED
+  style       %StyleSheet;   #IMPLIED
+  title       %Text;         #IMPLIED"
+  >
+
+<!-- internationalization attributes
+  lang        language code (backwards compatible)
+  xml:lang    language code (as per XML 1.0 spec)
+  dir         direction for weak/neutral text
+-->
+<!ENTITY % i18n
+ "lang        %LanguageCode; #IMPLIED
+  xml:lang    %LanguageCode; #IMPLIED
+  dir         (ltr|rtl)      #IMPLIED"
+  >
+
+<!-- attributes for common UI events
+  onclick     a pointer button was clicked
+  ondblclick  a pointer button was double clicked
+  onmousedown a pointer button was pressed down
+  onmouseup   a pointer button was released
+  onmousemove a pointer was moved onto the element
+  onmouseout  a pointer was moved away from the element
+  onkeypress  a key was pressed and released
+  onkeydown   a key was pressed down
+  onkeyup     a key was released
+-->
+<!ENTITY % events
+ "onclick     %Script;       #IMPLIED
+  ondblclick  %Script;       #IMPLIED
+  onmousedown %Script;       #IMPLIED
+  onmouseup   %Script;       #IMPLIED
+  onmouseover %Script;       #IMPLIED
+  onmousemove %Script;       #IMPLIED
+  onmouseout  %Script;       #IMPLIED
+  onkeypress  %Script;       #IMPLIED
+  onkeydown   %Script;       #IMPLIED
+  onkeyup     %Script;       #IMPLIED"
+  >
+
+<!-- attributes for elements that can get the focus
+  accesskey   accessibility key character
+  tabindex    position in tabbing order
+  onfocus     the element got the focus
+  onblur      the element lost the focus
+-->
+<!ENTITY % focus
+ "accesskey   %Character;    #IMPLIED
+  tabindex    %Number;       #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED"
+  >
+
+<!ENTITY % attrs "%coreattrs; %i18n; %events;">
+
+<!-- text alignment for p, div, h1-h6. The default is
+     align="left" for ltr headings, "right" for rtl -->
+
+<!ENTITY % TextAlign "align (left|center|right) #IMPLIED">
+
+<!--=================== Text Elements ====================================-->
+
+<!ENTITY % special
+   "br | span | bdo |object | applet | img | map | iframe">
+
+<!ENTITY % fontstyle "tt | i | b | big | small | u
+                      | s | strike |font | basefont">
+
+<!ENTITY % phrase "em | strong | dfn | code | q | sub | sup |
+                   samp | kbd | var | cite | abbr | acronym">
+
+<!ENTITY % inline.forms "input | select | textarea | label | button">
+
+<!-- these can occur at block or inline level -->
+<!ENTITY % misc "ins | del | script | noscript">
+
+<!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">
+
+<!-- %Inline; covers inline or "text-level" elements -->
+<!ENTITY % Inline "(#PCDATA | %inline; | %misc;)*">
+
+<!--================== Block level elements ==============================-->
+
+<!ENTITY % heading "h1|h2|h3|h4|h5|h6">
+<!ENTITY % lists "ul | ol | dl | menu | dir">
+<!ENTITY % blocktext "pre | hr | blockquote | address | center">
+
+<!ENTITY % block
+    "p | %heading; | div | %lists; | %blocktext; | isindex | fieldset | table">
+
+<!ENTITY % Block "(%block; | form | %misc;)*">
+
+<!-- %Flow; mixes Block and Inline and is used for list items etc. -->
+<!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc;)*">
+
+<!--================== Content models for exclusions =====================-->
+
+<!-- a elements use %Inline; excluding a -->
+
+<!ENTITY % a.content
+   "(#PCDATA | %special; | %fontstyle; | %phrase; | %inline.forms; | %misc;)*">
+
+<!-- pre uses %Inline excluding img, object, applet, big, small,
+     sub, sup, font, or basefont -->
+
+<!ENTITY % pre.content
+   "(#PCDATA | a | br | span | bdo | map | tt | i | b | u | s |
+      %phrase; | %inline.forms;)*">
+
+<!-- form uses %Flow; excluding form -->
+
+<!ENTITY % form.content "(#PCDATA | %block; | %inline; | %misc;)*">
+
+<!-- button uses %Flow; but excludes a, form, form controls, iframe -->
+
+<!ENTITY % button.content
+   "(#PCDATA | p | %heading; | div | %lists; | %blocktext; |
+      table | br | span | bdo | object | applet | img | map |
+      %fontstyle; | %phrase; | %misc;)*">
+
+<!--================ Document Structure ==================================-->
+
+<!-- the namespace URI designates the document profile -->
+
+<!ELEMENT html (head, frameset)>
+<!ATTLIST html
+  %i18n;
+  xmlns       %URI;          #FIXED 'http://www.w3.org/1999/xhtml'
+  >
+
+<!--================ Document Head =======================================-->
+
+<!ENTITY % head.misc "(script|style|meta|link|object|isindex)*">
+
+<!-- content model is %head.misc; combined with a single
+     title and an optional base element in any order -->
+
+<!ELEMENT head (%head.misc;,
+     ((title, %head.misc;, (base, %head.misc;)?) |
+      (base, %head.misc;, (title, %head.misc;))))>
+
+<!ATTLIST head
+  %i18n;
+  profile     %URI;          #IMPLIED
+  >
+
+<!-- The title element is not considered part of the flow of text.
+       It should be displayed, for example as the page header or
+       window title. Exactly one title is required per document.
+    -->
+<!ELEMENT title (#PCDATA)>
+<!ATTLIST title %i18n;>
+
+<!-- document base URI -->
+
+<!ELEMENT base EMPTY>
+<!ATTLIST base
+  href        %URI;          #IMPLIED
+  target      %FrameTarget;  #IMPLIED
+  >
+
+<!-- generic metainformation -->
+<!ELEMENT meta EMPTY>
+<!ATTLIST meta
+  %i18n;
+  http-equiv  CDATA          #IMPLIED
+  name        CDATA          #IMPLIED
+  content     CDATA          #REQUIRED
+  scheme      CDATA          #IMPLIED
+  >
+
+<!--
+  Relationship values can be used in principle:
+
+   a) for document specific toolbars/menus when used
+      with the link element in document head e.g.
+        start, contents, previous, next, index, end, help
+   b) to link to a separate style sheet (rel="stylesheet")
+   c) to make a link to a script (rel="script")
+   d) by stylesheets to control how collections of
+      html nodes are rendered into printed documents
+   e) to make a link to a printable version of this document
+      e.g. a PostScript or PDF version (rel="alternate" media="print")
+-->
+
+<!ELEMENT link EMPTY>
+<!ATTLIST link
+  %attrs;
+  charset     %Charset;      #IMPLIED
+  href        %URI;          #IMPLIED
+  hreflang    %LanguageCode; #IMPLIED
+  type        %ContentType;  #IMPLIED
+  rel         %LinkTypes;    #IMPLIED
+  rev         %LinkTypes;    #IMPLIED
+  media       %MediaDesc;    #IMPLIED
+  target      %FrameTarget;  #IMPLIED
+  >
+
+<!-- style info, which may include CDATA sections -->
+<!ELEMENT style (#PCDATA)>
+<!ATTLIST style
+  %i18n;
+  type        %ContentType;  #REQUIRED
+  media       %MediaDesc;    #IMPLIED
+  title       %Text;         #IMPLIED
+  xml:space   (preserve)     #FIXED 'preserve'
+  >
+
+<!-- script statements, which may include CDATA sections -->
+<!ELEMENT script (#PCDATA)>
+<!ATTLIST script
+  charset     %Charset;      #IMPLIED
+  type        %ContentType;  #REQUIRED
+  language    CDATA          #IMPLIED
+  src         %URI;          #IMPLIED
+  defer       (defer)        #IMPLIED
+  xml:space   (preserve)     #FIXED 'preserve'
+  >
+
+<!-- alternate content container for non script-based rendering -->
+
+<!ELEMENT noscript %Flow;>
+<!ATTLIST noscript
+  %attrs;
+  >
+
+<!--======================= Frames =======================================-->
+
+<!-- only one noframes element permitted per document -->
+
+<!ELEMENT frameset (frameset|frame|noframes)*>
+<!ATTLIST frameset
+  %coreattrs;
+  rows        %MultiLengths; #IMPLIED
+  cols        %MultiLengths; #IMPLIED
+  onload      %Script;       #IMPLIED
+  onunload    %Script;       #IMPLIED
+  >
+
+<!-- reserved frame names start with "_" otherwise starts with letter -->
+
+<!-- tiled window within frameset -->
+
+<!ELEMENT frame EMPTY>
+<!ATTLIST frame
+  %coreattrs;
+  longdesc    %URI;          #IMPLIED
+  name        NMTOKEN        #IMPLIED
+  src         %URI;          #IMPLIED
+  frameborder (1|0)          "1"
+  marginwidth %Pixels;       #IMPLIED
+  marginheight %Pixels;      #IMPLIED
+  noresize    (noresize)     #IMPLIED
+  scrolling   (yes|no|auto)  "auto"
+  >
+
+<!-- inline subwindow -->
+
+<!ELEMENT iframe %Flow;>
+<!ATTLIST iframe
+  %coreattrs;
+  longdesc    %URI;          #IMPLIED
+  name        NMTOKEN        #IMPLIED
+  src         %URI;          #IMPLIED
+  frameborder (1|0)          "1"
+  marginwidth %Pixels;       #IMPLIED
+  marginheight %Pixels;      #IMPLIED
+  scrolling   (yes|no|auto)  "auto"
+  align       %ImgAlign;     #IMPLIED
+  height      %Length;       #IMPLIED
+  width       %Length;       #IMPLIED
+  >
+
+<!-- alternate content container for non frame-based rendering -->
+
+<!ELEMENT noframes (body)>
+<!ATTLIST noframes
+  %attrs;
+  >
+
+<!--=================== Document Body ====================================-->
+
+<!ELEMENT body %Flow;>
+<!ATTLIST body
+  %attrs;
+  onload      %Script;       #IMPLIED
+  onunload    %Script;       #IMPLIED
+  background  %URI;          #IMPLIED
+  bgcolor     %Color;        #IMPLIED
+  text        %Color;        #IMPLIED
+  link        %Color;        #IMPLIED
+  vlink       %Color;        #IMPLIED
+  alink       %Color;        #IMPLIED
+  >
+
+<!ELEMENT div %Flow;>  <!-- generic language/style container -->
+<!ATTLIST div
+  %attrs;
+  %TextAlign;
+  >
+
+<!--=================== Paragraphs =======================================-->
+
+<!ELEMENT p %Inline;>
+<!ATTLIST p
+  %attrs;
+  %TextAlign;
+  >
+
+<!--=================== Headings =========================================-->
+
+<!--
+  There are six levels of headings from h1 (the most important)
+  to h6 (the least important).
+-->
+
+<!ELEMENT h1  %Inline;>
+<!ATTLIST h1
+  %attrs;
+  %TextAlign;
+  >
+
+<!ELEMENT h2 %Inline;>
+<!ATTLIST h2
+  %attrs;
+  %TextAlign;
+  >
+
+<!ELEMENT h3 %Inline;>
+<!ATTLIST h3
+  %attrs;
+  %TextAlign;
+  >
+
+<!ELEMENT h4 %Inline;>
+<!ATTLIST h4
+  %attrs;
+  %TextAlign;
+  >
+
+<!ELEMENT h5 %Inline;>
+<!ATTLIST h5
+  %attrs;
+  %TextAlign;
+  >
+
+<!ELEMENT h6 %Inline;>
+<!ATTLIST h6
+  %attrs;
+  %TextAlign;
+  >
+
+<!--=================== Lists ============================================-->
+
+<!-- Unordered list bullet styles -->
+
+<!ENTITY % ULStyle "(disc|square|circle)">
+
+<!-- Unordered list -->
+
+<!ELEMENT ul (li)+>
+<!ATTLIST ul
+  %attrs;
+  type        %ULStyle;     #IMPLIED
+  compact     (compact)     #IMPLIED
+  >
+
+<!-- Ordered list numbering style
+
+    1   arabic numbers      1, 2, 3, ...
+    a   lower alpha         a, b, c, ...
+    A   upper alpha         A, B, C, ...
+    i   lower roman         i, ii, iii, ...
+    I   upper roman         I, II, III, ...
+
+    The style is applied to the sequence number which by default
+    is reset to 1 for the first list item in an ordered list.
+-->
+<!ENTITY % OLStyle "CDATA">
+
+<!-- Ordered (numbered) list -->
+
+<!ELEMENT ol (li)+>
+<!ATTLIST ol
+  %attrs;
+  type        %OLStyle;      #IMPLIED
+  compact     (compact)      #IMPLIED
+  start       %Number;       #IMPLIED
+  >
+
+<!-- single column list (DEPRECATED) --> 
+<!ELEMENT menu (li)+>
+<!ATTLIST menu
+  %attrs;
+  compact     (compact)     #IMPLIED
+  >
+
+<!-- multiple column list (DEPRECATED) --> 
+<!ELEMENT dir (li)+>
+<!ATTLIST dir
+  %attrs;
+  compact     (compact)     #IMPLIED
+  >
+
+<!-- LIStyle is constrained to: "(%ULStyle;|%OLStyle;)" -->
+<!ENTITY % LIStyle "CDATA">
+
+<!-- list item -->
+
+<!ELEMENT li %Flow;>
+<!ATTLIST li
+  %attrs;
+  type        %LIStyle;      #IMPLIED
+  value       %Number;       #IMPLIED
+  >
+
+<!-- definition lists - dt for term, dd for its definition -->
+
+<!ELEMENT dl (dt|dd)+>
+<!ATTLIST dl
+  %attrs;
+  compact     (compact)      #IMPLIED
+  >
+
+<!ELEMENT dt %Inline;>
+<!ATTLIST dt
+  %attrs;
+  >
+
+<!ELEMENT dd %Flow;>
+<!ATTLIST dd
+  %attrs;
+  >
+
+<!--=================== Address ==========================================-->
+
+<!-- information on author -->
+
+<!ELEMENT address %Inline;>
+<!ATTLIST address
+  %attrs;
+  >
+
+<!--=================== Horizontal Rule ==================================-->
+
+<!ELEMENT hr EMPTY>
+<!ATTLIST hr
+  %attrs;
+  align       (left|center|right) #IMPLIED
+  noshade     (noshade)      #IMPLIED
+  size        %Pixels;       #IMPLIED
+  width       %Length;       #IMPLIED
+  >
+
+<!--=================== Preformatted Text ================================-->
+
+<!-- content is %Inline; excluding 
+        "img|object|applet|big|small|sub|sup|font|basefont" -->
+
+<!ELEMENT pre %pre.content;>
+<!ATTLIST pre
+  %attrs;
+  width       %Number;      #IMPLIED
+  xml:space   (preserve)    #FIXED 'preserve'
+  >
+
+<!--=================== Block-like Quotes ================================-->
+
+<!ELEMENT blockquote %Flow;>
+<!ATTLIST blockquote
+  %attrs;
+  cite        %URI;          #IMPLIED
+  >
+
+<!--=================== Text alignment ===================================-->
+
+<!-- center content -->
+<!ELEMENT center %Flow;>
+<!ATTLIST center
+  %attrs;
+  >
+
+<!--=================== Inserted/Deleted Text ============================-->
+
+
+<!--
+  ins/del are allowed in block and inline content, but its
+  inappropriate to include block content within an ins element
+  occurring in inline content.
+-->
+<!ELEMENT ins %Flow;>
+<!ATTLIST ins
+  %attrs;
+  cite        %URI;          #IMPLIED
+  datetime    %Datetime;     #IMPLIED
+  >
+
+<!ELEMENT del %Flow;>
+<!ATTLIST del
+  %attrs;
+  cite        %URI;          #IMPLIED
+  datetime    %Datetime;     #IMPLIED
+  >
+
+<!--================== The Anchor Element ================================-->
+
+<!-- content is %Inline; except that anchors shouldn't be nested -->
+
+<!ELEMENT a %a.content;>
+<!ATTLIST a
+  %attrs;
+  charset     %Charset;      #IMPLIED
+  type        %ContentType;  #IMPLIED
+  name        NMTOKEN        #IMPLIED
+  href        %URI;          #IMPLIED
+  hreflang    %LanguageCode; #IMPLIED
+  rel         %LinkTypes;    #IMPLIED
+  rev         %LinkTypes;    #IMPLIED
+  accesskey   %Character;    #IMPLIED
+  shape       %Shape;        "rect"
+  coords      %Coords;       #IMPLIED
+  tabindex    %Number;       #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED
+  target      %FrameTarget;  #IMPLIED
+  >
+
+<!--===================== Inline Elements ================================-->
+
+<!ELEMENT span %Inline;> <!-- generic language/style container -->
+<!ATTLIST span
+  %attrs;
+  >
+
+<!ELEMENT bdo %Inline;>  <!-- I18N BiDi over-ride -->
+<!ATTLIST bdo
+  %coreattrs;
+  %events;
+  lang        %LanguageCode; #IMPLIED
+  xml:lang    %LanguageCode; #IMPLIED
+  dir         (ltr|rtl)      #REQUIRED
+  >
+
+<!ELEMENT br EMPTY>   <!-- forced line break -->
+<!ATTLIST br
+  %coreattrs;
+  clear       (left|all|right|none) "none"
+  >
+
+<!ELEMENT em %Inline;>   <!-- emphasis -->
+<!ATTLIST em %attrs;>
+
+<!ELEMENT strong %Inline;>   <!-- strong emphasis -->
+<!ATTLIST strong %attrs;>
+
+<!ELEMENT dfn %Inline;>   <!-- definitional -->
+<!ATTLIST dfn %attrs;>
+
+<!ELEMENT code %Inline;>   <!-- program code -->
+<!ATTLIST code %attrs;>
+
+<!ELEMENT samp %Inline;>   <!-- sample -->
+<!ATTLIST samp %attrs;>
+
+<!ELEMENT kbd %Inline;>  <!-- something user would type -->
+<!ATTLIST kbd %attrs;>
+
+<!ELEMENT var %Inline;>   <!-- variable -->
+<!ATTLIST var %attrs;>
+
+<!ELEMENT cite %Inline;>   <!-- citation -->
+<!ATTLIST cite %attrs;>
+
+<!ELEMENT abbr %Inline;>   <!-- abbreviation -->
+<!ATTLIST abbr %attrs;>
+
+<!ELEMENT acronym %Inline;>   <!-- acronym -->
+<!ATTLIST acronym %attrs;>
+
+<!ELEMENT q %Inline;>   <!-- inlined quote -->
+<!ATTLIST q
+   %attrs;
+  cite        %URI;          #IMPLIED
+   >
+
+<!ELEMENT sub %Inline;> <!-- subscript -->
+<!ATTLIST sub %attrs;>
+
+<!ELEMENT sup %Inline;> <!-- superscript -->
+<!ATTLIST sup %attrs;>
+
+<!ELEMENT tt %Inline;>   <!-- fixed pitch font -->
+<!ATTLIST tt %attrs;>
+
+<!ELEMENT i %Inline;>   <!-- italic font -->
+<!ATTLIST i %attrs;>
+
+<!ELEMENT b %Inline;>   <!-- bold font -->
+<!ATTLIST b %attrs;>
+
+<!ELEMENT big %Inline;>   <!-- bigger font -->
+<!ATTLIST big %attrs;>
+
+<!ELEMENT small %Inline;>   <!-- smaller font -->
+<!ATTLIST small %attrs;>
+
+<!ELEMENT u %Inline;>   <!-- underline -->
+<!ATTLIST u %attrs;>
+
+<!ELEMENT s %Inline;>   <!-- strike-through -->
+<!ATTLIST s %attrs;>
+
+<!ELEMENT strike %Inline;>   <!-- strike-through -->
+<!ATTLIST strike %attrs;>
+
+<!ELEMENT basefont EMPTY>  <!-- base font size -->
+<!ATTLIST basefont
+  id          ID             #IMPLIED
+  size        CDATA          #REQUIRED
+  color       %Color;        #IMPLIED
+  face        CDATA          #IMPLIED
+  >
+
+<!ELEMENT font %Inline;> <!-- local change to font -->
+<!ATTLIST font
+  %coreattrs;
+  %i18n;
+  size        CDATA          #IMPLIED
+  color       %Color;        #IMPLIED
+  face        CDATA          #IMPLIED
+  >
+
+<!--==================== Object ======================================-->
+<!--
+  object is used to embed objects as part of HTML pages.
+  param elements should precede other content. Parameters
+  can also be expressed as attribute/value pairs on the
+  object element itself when brevity is desired.
+-->
+
+<!ELEMENT object (#PCDATA | param | %block; | form |%inline; | %misc;)*>
+<!ATTLIST object
+  %attrs;
+  declare     (declare)      #IMPLIED
+  classid     %URI;          #IMPLIED
+  codebase    %URI;          #IMPLIED
+  data        %URI;          #IMPLIED
+  type        %ContentType;  #IMPLIED
+  codetype    %ContentType;  #IMPLIED
+  archive     %UriList;      #IMPLIED
+  standby     %Text;         #IMPLIED
+  height      %Length;       #IMPLIED
+  width       %Length;       #IMPLIED
+  usemap      %URI;          #IMPLIED
+  name        NMTOKEN        #IMPLIED
+  tabindex    %Number;       #IMPLIED
+  align       %ImgAlign;     #IMPLIED
+  border      %Pixels;       #IMPLIED
+  hspace      %Pixels;       #IMPLIED
+  vspace      %Pixels;       #IMPLIED
+  >
+
+<!--
+  param is used to supply a named property value.
+  In XML it would seem natural to follow RDF and support an
+  abbreviated syntax where the param elements are replaced
+  by attribute value pairs on the object start tag.
+-->
+<!ELEMENT param EMPTY>
+<!ATTLIST param
+  id          ID             #IMPLIED
+  name        CDATA          #REQUIRED
+  value       CDATA          #IMPLIED
+  valuetype   (data|ref|object) "data"
+  type        %ContentType;  #IMPLIED
+  >
+
+<!--=================== Java applet ==================================-->
+<!--
+  One of code or object attributes must be present.
+  Place param elements before other content.
+-->
+<!ELEMENT applet (#PCDATA | param | %block; | form | %inline; | %misc;)*>
+<!ATTLIST applet
+  %coreattrs;
+  codebase    %URI;          #IMPLIED
+  archive     CDATA          #IMPLIED
+  code        CDATA          #IMPLIED
+  object      CDATA          #IMPLIED
+  alt         %Text;         #IMPLIED
+  name        NMTOKEN        #IMPLIED
+  width       %Length;       #REQUIRED
+  height      %Length;       #REQUIRED
+  align       %ImgAlign;     #IMPLIED
+  hspace      %Pixels;       #IMPLIED
+  vspace      %Pixels;       #IMPLIED
+  >
+
+<!--=================== Images ===========================================-->
+
+<!--
+   To avoid accessibility problems for people who aren't
+   able to see the image, you should provide a text
+   description using the alt and longdesc attributes.
+   In addition, avoid the use of server-side image maps.
+-->
+
+<!ELEMENT img EMPTY>
+<!ATTLIST img
+  %attrs;
+  src         %URI;          #REQUIRED
+  alt         %Text;         #REQUIRED
+  name        NMTOKEN        #IMPLIED
+  longdesc    %URI;          #IMPLIED
+  height      %Length;       #IMPLIED
+  width       %Length;       #IMPLIED
+  usemap      %URI;          #IMPLIED
+  ismap       (ismap)        #IMPLIED
+  align       %ImgAlign;     #IMPLIED
+  border      %Pixels;       #IMPLIED
+  hspace      %Pixels;       #IMPLIED
+  vspace      %Pixels;       #IMPLIED
+  >
+
+<!-- usemap points to a map element which may be in this document
+  or an external document, although the latter is not widely supported -->
+
+<!--================== Client-side image maps ============================-->
+
+<!-- These can be placed in the same document or grouped in a
+     separate document although this isn't yet widely supported -->
+
+<!ELEMENT map ((%block; | form | %misc;)+ | area+)>
+<!ATTLIST map
+  %i18n;
+  %events;
+  id          ID             #REQUIRED
+  class       CDATA          #IMPLIED
+  style       %StyleSheet;   #IMPLIED
+  title       %Text;         #IMPLIED
+  name        NMTOKEN        #IMPLIED
+  >
+
+<!ELEMENT area EMPTY>
+<!ATTLIST area
+  %attrs;
+  shape       %Shape;        "rect"
+  coords      %Coords;       #IMPLIED
+  href        %URI;          #IMPLIED
+  nohref      (nohref)       #IMPLIED
+  alt         %Text;         #REQUIRED
+  tabindex    %Number;       #IMPLIED
+  accesskey   %Character;    #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED
+  target      %FrameTarget;  #IMPLIED
+  >
+
+<!--================ Forms ===============================================-->
+
+<!ELEMENT form %form.content;>   <!-- forms shouldn't be nested -->
+
+<!ATTLIST form
+  %attrs;
+  action      %URI;          #REQUIRED
+  method      (get|post)     "get"
+  name        NMTOKEN        #IMPLIED
+  enctype     %ContentType;  "application/x-www-form-urlencoded"
+  onsubmit    %Script;       #IMPLIED
+  onreset     %Script;       #IMPLIED
+  accept      %ContentTypes; #IMPLIED
+  accept-charset %Charsets;  #IMPLIED
+  target      %FrameTarget;  #IMPLIED
+  >
+
+<!--
+  Each label must not contain more than ONE field
+  Label elements shouldn't be nested.
+-->
+<!ELEMENT label %Inline;>
+<!ATTLIST label
+  %attrs;
+  for         IDREF          #IMPLIED
+  accesskey   %Character;    #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED
+  >
+
+<!ENTITY % InputType
+  "(text | password | checkbox |
+    radio | submit | reset |
+    file | hidden | image | button)"
+   >
+
+<!-- the name attribute is required for all but submit & reset -->
+
+<!ELEMENT input EMPTY>     <!-- form control -->
+<!ATTLIST input
+  %attrs;
+  type        %InputType;    "text"
+  name        CDATA          #IMPLIED
+  value       CDATA          #IMPLIED
+  checked     (checked)      #IMPLIED
+  disabled    (disabled)     #IMPLIED
+  readonly    (readonly)     #IMPLIED
+  size        CDATA          #IMPLIED
+  maxlength   %Number;       #IMPLIED
+  src         %URI;          #IMPLIED
+  alt         CDATA          #IMPLIED
+  usemap      %URI;          #IMPLIED
+  tabindex    %Number;       #IMPLIED
+  accesskey   %Character;    #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED
+  onselect    %Script;       #IMPLIED
+  onchange    %Script;       #IMPLIED
+  accept      %ContentTypes; #IMPLIED
+  align       %ImgAlign;     #IMPLIED
+  >
+
+<!ELEMENT select (optgroup|option)+>  <!-- option selector -->
+<!ATTLIST select
+  %attrs;
+  name        CDATA          #IMPLIED
+  size        %Number;       #IMPLIED
+  multiple    (multiple)     #IMPLIED
+  disabled    (disabled)     #IMPLIED
+  tabindex    %Number;       #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED
+  onchange    %Script;       #IMPLIED
+  >
+
+<!ELEMENT optgroup (option)+>   <!-- option group -->
+<!ATTLIST optgroup
+  %attrs;
+  disabled    (disabled)     #IMPLIED
+  label       %Text;         #REQUIRED
+  >
+
+<!ELEMENT option (#PCDATA)>     <!-- selectable choice -->
+<!ATTLIST option
+  %attrs;
+  selected    (selected)     #IMPLIED
+  disabled    (disabled)     #IMPLIED
+  label       %Text;         #IMPLIED
+  value       CDATA          #IMPLIED
+  >
+
+<!ELEMENT textarea (#PCDATA)>     <!-- multi-line text field -->
+<!ATTLIST textarea
+  %attrs;
+  name        CDATA          #IMPLIED
+  rows        %Number;       #REQUIRED
+  cols        %Number;       #REQUIRED
+  disabled    (disabled)     #IMPLIED
+  readonly    (readonly)     #IMPLIED
+  tabindex    %Number;       #IMPLIED
+  accesskey   %Character;    #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED
+  onselect    %Script;       #IMPLIED
+  onchange    %Script;       #IMPLIED
+  >
+
+<!--
+  The fieldset element is used to group form fields.
+  Only one legend element should occur in the content
+  and if present should only be preceded by whitespace.
+-->
+<!ELEMENT fieldset (#PCDATA | legend | %block; | form | %inline; | %misc;)*>
+<!ATTLIST fieldset
+  %attrs;
+  >
+
+<!ENTITY % LAlign "(top|bottom|left|right)">
+
+<!ELEMENT legend %Inline;>     <!-- fieldset label -->
+<!ATTLIST legend
+  %attrs;
+  accesskey   %Character;    #IMPLIED
+  align       %LAlign;       #IMPLIED
+  >
+
+<!--
+ Content is %Flow; excluding a, form, form controls, iframe
+--> 
+<!ELEMENT button %button.content;>  <!-- push button -->
+<!ATTLIST button
+  %attrs;
+  name        CDATA          #IMPLIED
+  value       CDATA          #IMPLIED
+  type        (button|submit|reset) "submit"
+  disabled    (disabled)     #IMPLIED
+  tabindex    %Number;       #IMPLIED
+  accesskey   %Character;    #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED
+  >
+
+<!-- single-line text input control (DEPRECATED) -->
+<!ELEMENT isindex EMPTY>
+<!ATTLIST isindex
+  %coreattrs;
+  %i18n;
+  prompt      %Text;         #IMPLIED
+  >
+
+<!--======================= Tables =======================================-->
+
+<!-- Derived from IETF HTML table standard, see [RFC1942] -->
+
+<!--
+ The border attribute sets the thickness of the frame around the
+ table. The default units are screen pixels.
+
+ The frame attribute specifies which parts of the frame around
+ the table should be rendered. The values are not the same as
+ CALS to avoid a name clash with the valign attribute.
+-->
+<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">
+
+<!--
+ The rules attribute defines which rules to draw between cells:
+
+ If rules is absent then assume:
+     "none" if border is absent or border="0" otherwise "all"
+-->
+
+<!ENTITY % TRules "(none | groups | rows | cols | all)">
+  
+<!-- horizontal placement of table relative to document -->
+<!ENTITY % TAlign "(left|center|right)">
+
+<!-- horizontal alignment attributes for cell contents
+
+  char        alignment char, e.g. char=":"
+  charoff     offset for alignment char
+-->
+<!ENTITY % cellhalign
+  "align      (left|center|right|justify|char) #IMPLIED
+   char       %Character;    #IMPLIED
+   charoff    %Length;       #IMPLIED"
+  >
+
+<!-- vertical alignment attributes for cell contents -->
+<!ENTITY % cellvalign
+  "valign     (top|middle|bottom|baseline) #IMPLIED"
+  >
+
+<!ELEMENT table
+     (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>
+<!ELEMENT caption  %Inline;>
+<!ELEMENT thead    (tr)+>
+<!ELEMENT tfoot    (tr)+>
+<!ELEMENT tbody    (tr)+>
+<!ELEMENT colgroup (col)*>
+<!ELEMENT col      EMPTY>
+<!ELEMENT tr       (th|td)+>
+<!ELEMENT th       %Flow;>
+<!ELEMENT td       %Flow;>
+
+<!ATTLIST table
+  %attrs;
+  summary     %Text;         #IMPLIED
+  width       %Length;       #IMPLIED
+  border      %Pixels;       #IMPLIED
+  frame       %TFrame;       #IMPLIED
+  rules       %TRules;       #IMPLIED
+  cellspacing %Length;       #IMPLIED
+  cellpadding %Length;       #IMPLIED
+  align       %TAlign;       #IMPLIED
+  bgcolor     %Color;        #IMPLIED
+  >
+
+<!ENTITY % CAlign "(top|bottom|left|right)">
+
+<!ATTLIST caption
+  %attrs;
+  align       %CAlign;       #IMPLIED
+  >
+
+<!--
+colgroup groups a set of col elements. It allows you to group
+several semantically related columns together.
+-->
+<!ATTLIST colgroup
+  %attrs;
+  span        %Number;       "1"
+  width       %MultiLength;  #IMPLIED
+  %cellhalign;
+  %cellvalign;
+  >
+
+<!--
+ col elements define the alignment properties for cells in
+ one or more columns.
+
+ The width attribute specifies the width of the columns, e.g.
+
+     width=64        width in screen pixels
+     width=0.5*      relative width of 0.5
+
+ The span attribute causes the attributes of one
+ col element to apply to more than one column.
+-->
+<!ATTLIST col
+  %attrs;
+  span        %Number;       "1"
+  width       %MultiLength;  #IMPLIED
+  %cellhalign;
+  %cellvalign;
+  >
+
+<!--
+    Use thead to duplicate headers when breaking table
+    across page boundaries, or for static headers when
+    tbody sections are rendered in scrolling panel.
+
+    Use tfoot to duplicate footers when breaking table
+    across page boundaries, or for static footers when
+    tbody sections are rendered in scrolling panel.
+
+    Use multiple tbody sections when rules are needed
+    between groups of table rows.
+-->
+<!ATTLIST thead
+  %attrs;
+  %cellhalign;
+  %cellvalign;
+  >
+
+<!ATTLIST tfoot
+  %attrs;
+  %cellhalign;
+  %cellvalign;
+  >
+
+<!ATTLIST tbody
+  %attrs;
+  %cellhalign;
+  %cellvalign;
+  >
+
+<!ATTLIST tr
+  %attrs;
+  %cellhalign;
+  %cellvalign;
+  bgcolor     %Color;        #IMPLIED
+  >
+
+<!-- Scope is simpler than headers attribute for common tables -->
+<!ENTITY % Scope "(row|col|rowgroup|colgroup)">
+
+<!-- th is for headers, td for data and for cells acting as both -->
+
+<!ATTLIST th
+  %attrs;
+  abbr        %Text;         #IMPLIED
+  axis        CDATA          #IMPLIED
+  headers     IDREFS         #IMPLIED
+  scope       %Scope;        #IMPLIED
+  rowspan     %Number;       "1"
+  colspan     %Number;       "1"
+  %cellhalign;
+  %cellvalign;
+  nowrap      (nowrap)       #IMPLIED
+  bgcolor     %Color;        #IMPLIED
+  width       %Pixels;       #IMPLIED
+  height      %Pixels;       #IMPLIED
+  >
+
+<!ATTLIST td
+  %attrs;
+  abbr        %Text;         #IMPLIED
+  axis        CDATA          #IMPLIED
+  headers     IDREFS         #IMPLIED
+  scope       %Scope;        #IMPLIED
+  rowspan     %Number;       "1"
+  colspan     %Number;       "1"
+  %cellhalign;
+  %cellvalign;
+  nowrap      (nowrap)       #IMPLIED
+  bgcolor     %Color;        #IMPLIED
+  width       %Pixels;       #IMPLIED
+  height      %Pixels;       #IMPLIED
+  >
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/xhtml1.0/xhtml1-strict.dtd	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,988 @@
+<!--
+   Extensible HTML version 1.0 Strict DTD
+
+   This is the same as HTML 4.0 Strict except for
+   changes due to the differences between XML and SGML.
+
+   Namespace = http://www.w3.org/1999/xhtml
+
+   For further information, see: http://www.w3.org/TR/xhtml1
+
+   Copyright (c) 1998-2000 W3C (MIT, INRIA, Keio),
+   All Rights Reserved. 
+
+   This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+   PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
+
+   $Revision: 1.1 $
+   $Date: 2002-04-08 21:19:32 $
+
+-->
+
+<!--================ Character mnemonic entities =========================-->
+
+<!ENTITY % HTMLlat1 PUBLIC
+   "-//W3C//ENTITIES Latin 1 for XHTML//EN"
+   "xhtml-lat1.ent">
+%HTMLlat1;
+
+<!ENTITY % HTMLsymbol PUBLIC
+   "-//W3C//ENTITIES Symbols for XHTML//EN"
+   "xhtml-symbol.ent">
+%HTMLsymbol;
+
+<!ENTITY % HTMLspecial PUBLIC
+   "-//W3C//ENTITIES Special for XHTML//EN"
+   "xhtml-special.ent">
+%HTMLspecial;
+
+<!--================== Imported Names ====================================-->
+
+<!ENTITY % ContentType "CDATA">
+    <!-- media type, as per [RFC2045] -->
+
+<!ENTITY % ContentTypes "CDATA">
+    <!-- comma-separated list of media types, as per [RFC2045] -->
+
+<!ENTITY % Charset "CDATA">
+    <!-- a character encoding, as per [RFC2045] -->
+
+<!ENTITY % Charsets "CDATA">
+    <!-- a space separated list of character encodings, as per [RFC2045] -->
+
+<!ENTITY % LanguageCode "NMTOKEN">
+    <!-- a language code, as per [RFC1766] -->
+
+<!ENTITY % Character "CDATA">
+    <!-- a single character from [ISO10646] -->
+
+<!ENTITY % Number "CDATA">
+    <!-- one or more digits -->
+
+<!ENTITY % LinkTypes "CDATA">
+    <!-- space-separated list of link types -->
+
+<!ENTITY % MediaDesc "CDATA">
+    <!-- single or comma-separated list of media descriptors -->
+
+<!ENTITY % URI "CDATA">
+    <!-- a Uniform Resource Identifier, see [RFC2396] -->
+
+<!ENTITY % UriList "CDATA">
+    <!-- a space separated list of Uniform Resource Identifiers -->
+
+<!ENTITY % Datetime "CDATA">
+    <!-- date and time information. ISO date format -->
+
+<!ENTITY % Script "CDATA">
+    <!-- script expression -->
+
+<!ENTITY % StyleSheet "CDATA">
+    <!-- style sheet data -->
+
+<!ENTITY % Text "CDATA">
+    <!-- used for titles etc. -->
+
+<!ENTITY % FrameTarget "NMTOKEN">
+    <!-- render in this frame -->
+
+<!ENTITY % Length "CDATA">
+    <!-- nn for pixels or nn% for percentage length -->
+
+<!ENTITY % MultiLength "CDATA">
+    <!-- pixel, percentage, or relative -->
+
+<!ENTITY % MultiLengths "CDATA">
+    <!-- comma-separated list of MultiLength -->
+
+<!ENTITY % Pixels "CDATA">
+    <!-- integer representing length in pixels -->
+
+<!-- these are used for image maps -->
+
+<!ENTITY % Shape "(rect|circle|poly|default)">
+
+<!ENTITY % Coords "CDATA">
+    <!-- comma separated list of lengths -->
+
+<!--=================== Generic Attributes ===============================-->
+
+<!-- core attributes common to most elements
+  id       document-wide unique id
+  class    space separated list of classes
+  style    associated style info
+  title    advisory title/amplification
+-->
+<!ENTITY % coreattrs
+ "id          ID             #IMPLIED
+  class       CDATA          #IMPLIED
+  style       %StyleSheet;   #IMPLIED
+  title       %Text;         #IMPLIED"
+  >
+
+<!-- internationalization attributes
+  lang        language code (backwards compatible)
+  xml:lang    language code (as per XML 1.0 spec)
+  dir         direction for weak/neutral text
+-->
+<!ENTITY % i18n
+ "lang        %LanguageCode; #IMPLIED
+  xml:lang    %LanguageCode; #IMPLIED
+  dir         (ltr|rtl)      #IMPLIED"
+  >
+
+<!-- attributes for common UI events
+  onclick     a pointer button was clicked
+  ondblclick  a pointer button was double clicked
+  onmousedown a pointer button was pressed down
+  onmouseup   a pointer button was released
+  onmousemove a pointer was moved onto the element
+  onmouseout  a pointer was moved away from the element
+  onkeypress  a key was pressed and released
+  onkeydown   a key was pressed down
+  onkeyup     a key was released
+-->
+<!ENTITY % events
+ "onclick     %Script;       #IMPLIED
+  ondblclick  %Script;       #IMPLIED
+  onmousedown %Script;       #IMPLIED
+  onmouseup   %Script;       #IMPLIED
+  onmouseover %Script;       #IMPLIED
+  onmousemove %Script;       #IMPLIED
+  onmouseout  %Script;       #IMPLIED
+  onkeypress  %Script;       #IMPLIED
+  onkeydown   %Script;       #IMPLIED
+  onkeyup     %Script;       #IMPLIED"
+  >
+
+<!-- attributes for elements that can get the focus
+  accesskey   accessibility key character
+  tabindex    position in tabbing order
+  onfocus     the element got the focus
+  onblur      the element lost the focus
+-->
+<!ENTITY % focus
+ "accesskey   %Character;    #IMPLIED
+  tabindex    %Number;       #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED"
+  >
+
+<!ENTITY % attrs "%coreattrs; %i18n; %events;">
+
+<!--=================== Text Elements ====================================-->
+
+<!ENTITY % special
+   "br | span | bdo | object | img | map">
+
+<!ENTITY % fontstyle "tt | i | b | big | small">
+
+<!ENTITY % phrase "em | strong | dfn | code | q | sub | sup |
+                   samp | kbd | var | cite | abbr | acronym">
+
+<!ENTITY % inline.forms "input | select | textarea | label | button">
+
+<!-- these can occur at block or inline level -->
+<!ENTITY % misc "ins | del | script | noscript">
+
+<!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">
+
+<!-- %Inline; covers inline or "text-level" elements -->
+<!ENTITY % Inline "(#PCDATA | %inline; | %misc;)*">
+
+<!--================== Block level elements ==============================-->
+
+<!ENTITY % heading "h1|h2|h3|h4|h5|h6">
+<!ENTITY % lists "ul | ol | dl">
+<!ENTITY % blocktext "pre | hr | blockquote | address">
+
+<!ENTITY % block
+     "p | %heading; | div | %lists; | %blocktext; | fieldset | table">
+
+<!ENTITY % Block "(%block; | form | %misc;)*">
+
+<!-- %Flow; mixes Block and Inline and is used for list items etc. -->
+<!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc;)*">
+
+<!--================== Content models for exclusions =====================-->
+
+<!-- a elements use %Inline; excluding a -->
+
+<!ENTITY % a.content
+   "(#PCDATA | %special; | %fontstyle; | %phrase; | %inline.forms; | %misc;)*">
+
+<!-- pre uses %Inline excluding img, object, big, small, sup or sup -->
+
+<!ENTITY % pre.content
+   "(#PCDATA | a | br | span | bdo | map | tt | i | b |
+      %phrase; | %inline.forms;)*">
+
+<!-- form uses %Block; excluding form -->
+
+<!ENTITY % form.content "(%block; | %misc;)*">
+
+<!-- button uses %Flow; but excludes a, form and form controls -->
+
+<!ENTITY % button.content
+   "(#PCDATA | p | %heading; | div | %lists; | %blocktext; |
+    table | %special; | %fontstyle; | %phrase; | %misc;)*">
+
+<!--================ Document Structure ==================================-->
+
+<!-- the namespace URI designates the document profile -->
+
+<!ELEMENT html (head, body)>
+<!ATTLIST html
+  %i18n;
+  xmlns       %URI;          #FIXED 'http://www.w3.org/1999/xhtml'
+  >
+
+<!--================ Document Head =======================================-->
+
+<!ENTITY % head.misc "(script|style|meta|link|object)*">
+
+<!-- content model is %head.misc; combined with a single
+     title and an optional base element in any order -->
+
+<!ELEMENT head (%head.misc;,
+     ((title, %head.misc;, (base, %head.misc;)?) |
+      (base, %head.misc;, (title, %head.misc;))))>
+
+<!ATTLIST head
+  %i18n;
+  profile     %URI;          #IMPLIED
+  >
+
+<!-- The title element is not considered part of the flow of text.
+       It should be displayed, for example as the page header or
+       window title. Exactly one title is required per document.
+    -->
+<!ELEMENT title (#PCDATA)>
+<!ATTLIST title %i18n;>
+
+<!-- document base URI -->
+
+<!ELEMENT base EMPTY>
+<!ATTLIST base
+  href        %URI;          #IMPLIED
+  >
+
+<!-- generic metainformation -->
+<!ELEMENT meta EMPTY>
+<!ATTLIST meta
+  %i18n;
+  http-equiv  CDATA          #IMPLIED
+  name        CDATA          #IMPLIED
+  content     CDATA          #REQUIRED
+  scheme      CDATA          #IMPLIED
+  >
+
+<!--
+  Relationship values can be used in principle:
+
+   a) for document specific toolbars/menus when used
+      with the link element in document head e.g.
+        start, contents, previous, next, index, end, help
+   b) to link to a separate style sheet (rel="stylesheet")
+   c) to make a link to a script (rel="script")
+   d) by stylesheets to control how collections of
+      html nodes are rendered into printed documents
+   e) to make a link to a printable version of this document
+      e.g. a PostScript or PDF version (rel="alternate" media="print")
+-->
+
+<!ELEMENT link EMPTY>
+<!ATTLIST link
+  %attrs;
+  charset     %Charset;      #IMPLIED
+  href        %URI;          #IMPLIED
+  hreflang    %LanguageCode; #IMPLIED
+  type        %ContentType;  #IMPLIED
+  rel         %LinkTypes;    #IMPLIED
+  rev         %LinkTypes;    #IMPLIED
+  media       %MediaDesc;    #IMPLIED
+  >
+
+<!-- style info, which may include CDATA sections -->
+<!ELEMENT style (#PCDATA)>
+<!ATTLIST style
+  %i18n;
+  type        %ContentType;  #REQUIRED
+  media       %MediaDesc;    #IMPLIED
+  title       %Text;         #IMPLIED
+  xml:space   (preserve)     #FIXED 'preserve'
+  >
+
+<!-- script statements, which may include CDATA sections -->
+<!ELEMENT script (#PCDATA)>
+<!ATTLIST script
+  charset     %Charset;      #IMPLIED
+  type        %ContentType;  #REQUIRED
+  src         %URI;          #IMPLIED
+  defer       (defer)        #IMPLIED
+  xml:space   (preserve)     #FIXED 'preserve'
+  >
+
+<!-- alternate content container for non script-based rendering -->
+
+<!ELEMENT noscript %Block;>
+<!ATTLIST noscript
+  %attrs;
+  >
+
+<!--=================== Document Body ====================================-->
+
+<!ELEMENT body %Block;>
+<!ATTLIST body
+  %attrs;
+  onload          %Script;   #IMPLIED
+  onunload        %Script;   #IMPLIED
+  >
+
+<!ELEMENT div %Flow;>  <!-- generic language/style container -->
+<!ATTLIST div
+  %attrs;
+  >
+
+<!--=================== Paragraphs =======================================-->
+
+<!ELEMENT p %Inline;>
+<!ATTLIST p
+  %attrs;
+  >
+
+<!--=================== Headings =========================================-->
+
+<!--
+  There are six levels of headings from h1 (the most important)
+  to h6 (the least important).
+-->
+
+<!ELEMENT h1  %Inline;>
+<!ATTLIST h1
+   %attrs;
+   >
+
+<!ELEMENT h2 %Inline;>
+<!ATTLIST h2
+   %attrs;
+   >
+
+<!ELEMENT h3 %Inline;>
+<!ATTLIST h3
+   %attrs;
+   >
+
+<!ELEMENT h4 %Inline;>
+<!ATTLIST h4
+   %attrs;
+   >
+
+<!ELEMENT h5 %Inline;>
+<!ATTLIST h5
+   %attrs;
+   >
+
+<!ELEMENT h6 %Inline;>
+<!ATTLIST h6
+   %attrs;
+   >
+
+<!--=================== Lists ============================================-->
+
+<!-- Unordered list -->
+
+<!ELEMENT ul (li)+>
+<!ATTLIST ul
+  %attrs;
+  >
+
+<!-- Ordered (numbered) list -->
+
+<!ELEMENT ol (li)+>
+<!ATTLIST ol
+  %attrs;
+  >
+
+<!-- list item -->
+
+<!ELEMENT li %Flow;>
+<!ATTLIST li
+  %attrs;
+  >
+
+<!-- definition lists - dt for term, dd for its definition -->
+
+<!ELEMENT dl (dt|dd)+>
+<!ATTLIST dl
+  %attrs;
+  >
+
+<!ELEMENT dt %Inline;>
+<!ATTLIST dt
+  %attrs;
+  >
+
+<!ELEMENT dd %Flow;>
+<!ATTLIST dd
+  %attrs;
+  >
+
+<!--=================== Address ==========================================-->
+
+<!-- information on author -->
+
+<!ELEMENT address %Inline;>
+<!ATTLIST address
+  %attrs;
+  >
+
+<!--=================== Horizontal Rule ==================================-->
+
+<!ELEMENT hr EMPTY>
+<!ATTLIST hr
+  %attrs;
+  >
+
+<!--=================== Preformatted Text ================================-->
+
+<!-- content is %Inline; excluding "img|object|big|small|sub|sup" -->
+
+<!ELEMENT pre %pre.content;>
+<!ATTLIST pre
+  %attrs;
+  xml:space (preserve) #FIXED 'preserve'
+  >
+
+<!--=================== Block-like Quotes ================================-->
+
+<!ELEMENT blockquote %Block;>
+<!ATTLIST blockquote
+  %attrs;
+  cite        %URI;          #IMPLIED
+  >
+
+<!--=================== Inserted/Deleted Text ============================-->
+
+<!--
+  ins/del are allowed in block and inline content, but its
+  inappropriate to include block content within an ins element
+  occurring in inline content.
+-->
+<!ELEMENT ins %Flow;>
+<!ATTLIST ins
+  %attrs;
+  cite        %URI;          #IMPLIED
+  datetime    %Datetime;     #IMPLIED
+  >
+
+<!ELEMENT del %Flow;>
+<!ATTLIST del
+  %attrs;
+  cite        %URI;          #IMPLIED
+  datetime    %Datetime;     #IMPLIED
+  >
+
+<!--================== The Anchor Element ================================-->
+
+<!-- content is %Inline; except that anchors shouldn't be nested -->
+
+<!ELEMENT a %a.content;>
+<!ATTLIST a
+  %attrs;
+  charset     %Charset;      #IMPLIED
+  type        %ContentType;  #IMPLIED
+  name        NMTOKEN        #IMPLIED
+  href        %URI;          #IMPLIED
+  hreflang    %LanguageCode; #IMPLIED
+  rel         %LinkTypes;    #IMPLIED
+  rev         %LinkTypes;    #IMPLIED
+  accesskey   %Character;    #IMPLIED
+  shape       %Shape;        "rect"
+  coords      %Coords;       #IMPLIED
+  tabindex    %Number;       #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED
+  >
+
+<!--===================== Inline Elements ================================-->
+
+<!ELEMENT span %Inline;> <!-- generic language/style container -->
+<!ATTLIST span
+  %attrs;
+  >
+
+<!ELEMENT bdo %Inline;>  <!-- I18N BiDi over-ride -->
+<!ATTLIST bdo
+  %coreattrs;
+  %events;
+  lang        %LanguageCode; #IMPLIED
+  xml:lang    %LanguageCode; #IMPLIED
+  dir         (ltr|rtl)      #REQUIRED
+  >
+
+<!ELEMENT br EMPTY>   <!-- forced line break -->
+<!ATTLIST br
+  %coreattrs;
+  >
+
+<!ELEMENT em %Inline;>   <!-- emphasis -->
+<!ATTLIST em %attrs;>
+
+<!ELEMENT strong %Inline;>   <!-- strong emphasis -->
+<!ATTLIST strong %attrs;>
+
+<!ELEMENT dfn %Inline;>   <!-- definitional -->
+<!ATTLIST dfn %attrs;>
+
+<!ELEMENT code %Inline;>   <!-- program code -->
+<!ATTLIST code %attrs;>
+
+<!ELEMENT samp %Inline;>   <!-- sample -->
+<!ATTLIST samp %attrs;>
+
+<!ELEMENT kbd %Inline;>  <!-- something user would type -->
+<!ATTLIST kbd %attrs;>
+
+<!ELEMENT var %Inline;>   <!-- variable -->
+<!ATTLIST var %attrs;>
+
+<!ELEMENT cite %Inline;>   <!-- citation -->
+<!ATTLIST cite %attrs;>
+
+<!ELEMENT abbr %Inline;>   <!-- abbreviation -->
+<!ATTLIST abbr %attrs;>
+
+<!ELEMENT acronym %Inline;>   <!-- acronym -->
+<!ATTLIST acronym %attrs;>
+
+<!ELEMENT q %Inline;>   <!-- inlined quote -->
+<!ATTLIST q
+  %attrs;
+  cite        %URI;          #IMPLIED
+  >
+
+<!ELEMENT sub %Inline;> <!-- subscript -->
+<!ATTLIST sub %attrs;>
+
+<!ELEMENT sup %Inline;> <!-- superscript -->
+<!ATTLIST sup %attrs;>
+
+<!ELEMENT tt %Inline;>   <!-- fixed pitch font -->
+<!ATTLIST tt %attrs;>
+
+<!ELEMENT i %Inline;>   <!-- italic font -->
+<!ATTLIST i %attrs;>
+
+<!ELEMENT b %Inline;>   <!-- bold font -->
+<!ATTLIST b %attrs;>
+
+<!ELEMENT big %Inline;>   <!-- bigger font -->
+<!ATTLIST big %attrs;>
+
+<!ELEMENT small %Inline;>   <!-- smaller font -->
+<!ATTLIST small %attrs;>
+
+<!--==================== Object ======================================-->
+<!--
+  object is used to embed objects as part of HTML pages.
+  param elements should precede other content. Parameters
+  can also be expressed as attribute/value pairs on the
+  object element itself when brevity is desired.
+-->
+
+<!ELEMENT object (#PCDATA | param | %block; | form | %inline; | %misc;)*>
+<!ATTLIST object
+  %attrs;
+  declare     (declare)      #IMPLIED
+  classid     %URI;          #IMPLIED
+  codebase    %URI;          #IMPLIED
+  data        %URI;          #IMPLIED
+  type        %ContentType;  #IMPLIED
+  codetype    %ContentType;  #IMPLIED
+  archive     %UriList;      #IMPLIED
+  standby     %Text;         #IMPLIED
+  height      %Length;       #IMPLIED
+  width       %Length;       #IMPLIED
+  usemap      %URI;          #IMPLIED
+  name        NMTOKEN        #IMPLIED
+  tabindex    %Number;       #IMPLIED
+  >
+
+<!--
+  param is used to supply a named property value.
+  In XML it would seem natural to follow RDF and support an
+  abbreviated syntax where the param elements are replaced
+  by attribute value pairs on the object start tag.
+-->
+<!ELEMENT param EMPTY>
+<!ATTLIST param
+  id          ID             #IMPLIED
+  name        CDATA          #IMPLIED
+  value       CDATA          #IMPLIED
+  valuetype   (data|ref|object) "data"
+  type        %ContentType;  #IMPLIED
+  >
+
+<!--=================== Images ===========================================-->
+
+<!--
+   To avoid accessibility problems for people who aren't
+   able to see the image, you should provide a text
+   description using the alt and longdesc attributes.
+   In addition, avoid the use of server-side image maps.
+   Note that in this DTD there is no name attribute. That
+   is only available in the transitional and frameset DTD.
+-->
+
+<!ELEMENT img EMPTY>
+<!ATTLIST img
+  %attrs;
+  src         %URI;          #REQUIRED
+  alt         %Text;         #REQUIRED
+  longdesc    %URI;          #IMPLIED
+  height      %Length;       #IMPLIED
+  width       %Length;       #IMPLIED
+  usemap      %URI;          #IMPLIED
+  ismap       (ismap)        #IMPLIED
+  >
+
+<!-- usemap points to a map element which may be in this document
+  or an external document, although the latter is not widely supported -->
+
+<!--================== Client-side image maps ============================-->
+
+<!-- These can be placed in the same document or grouped in a
+     separate document although this isn't yet widely supported -->
+
+<!ELEMENT map ((%block; | form | %misc;)+ | area+)>
+<!ATTLIST map
+  %i18n;
+  %events;
+  id          ID             #REQUIRED
+  class       CDATA          #IMPLIED
+  style       %StyleSheet;   #IMPLIED
+  title       %Text;         #IMPLIED
+  name        NMTOKEN        #IMPLIED
+  >
+
+<!ELEMENT area EMPTY>
+<!ATTLIST area
+  %attrs;
+  shape       %Shape;        "rect"
+  coords      %Coords;       #IMPLIED
+  href        %URI;          #IMPLIED
+  nohref      (nohref)       #IMPLIED
+  alt         %Text;         #REQUIRED
+  tabindex    %Number;       #IMPLIED
+  accesskey   %Character;    #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED
+  >
+
+<!--================ Forms ===============================================-->
+<!ELEMENT form %form.content;>   <!-- forms shouldn't be nested -->
+
+<!ATTLIST form
+  %attrs;
+  action      %URI;          #REQUIRED
+  method      (get|post)     "get"
+  enctype     %ContentType;  "application/x-www-form-urlencoded"
+  onsubmit    %Script;       #IMPLIED
+  onreset     %Script;       #IMPLIED
+  accept      %ContentTypes; #IMPLIED
+  accept-charset %Charsets;  #IMPLIED
+  >
+
+<!--
+  Each label must not contain more than ONE field
+  Label elements shouldn't be nested.
+-->
+<!ELEMENT label %Inline;>
+<!ATTLIST label
+  %attrs;
+  for         IDREF          #IMPLIED
+  accesskey   %Character;    #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED
+  >
+
+<!ENTITY % InputType
+  "(text | password | checkbox |
+    radio | submit | reset |
+    file | hidden | image | button)"
+   >
+
+<!-- the name attribute is required for all but submit & reset -->
+
+<!ELEMENT input EMPTY>     <!-- form control -->
+<!ATTLIST input
+  %attrs;
+  type        %InputType;    "text"
+  name        CDATA          #IMPLIED
+  value       CDATA          #IMPLIED
+  checked     (checked)      #IMPLIED
+  disabled    (disabled)     #IMPLIED
+  readonly    (readonly)     #IMPLIED
+  size        CDATA          #IMPLIED
+  maxlength   %Number;       #IMPLIED
+  src         %URI;          #IMPLIED
+  alt         CDATA          #IMPLIED
+  usemap      %URI;          #IMPLIED
+  tabindex    %Number;       #IMPLIED
+  accesskey   %Character;    #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED
+  onselect    %Script;       #IMPLIED
+  onchange    %Script;       #IMPLIED
+  accept      %ContentTypes; #IMPLIED
+  >
+
+<!ELEMENT select (optgroup|option)+>  <!-- option selector -->
+<!ATTLIST select
+  %attrs;
+  name        CDATA          #IMPLIED
+  size        %Number;       #IMPLIED
+  multiple    (multiple)     #IMPLIED
+  disabled    (disabled)     #IMPLIED
+  tabindex    %Number;       #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED
+  onchange    %Script;       #IMPLIED
+  >
+
+<!ELEMENT optgroup (option)+>   <!-- option group -->
+<!ATTLIST optgroup
+  %attrs;
+  disabled    (disabled)     #IMPLIED
+  label       %Text;         #REQUIRED
+  >
+
+<!ELEMENT option (#PCDATA)>     <!-- selectable choice -->
+<!ATTLIST option
+  %attrs;
+  selected    (selected)     #IMPLIED
+  disabled    (disabled)     #IMPLIED
+  label       %Text;         #IMPLIED
+  value       CDATA          #IMPLIED
+  >
+
+<!ELEMENT textarea (#PCDATA)>     <!-- multi-line text field -->
+<!ATTLIST textarea
+  %attrs;
+  name        CDATA          #IMPLIED
+  rows        %Number;       #REQUIRED
+  cols        %Number;       #REQUIRED
+  disabled    (disabled)     #IMPLIED
+  readonly    (readonly)     #IMPLIED
+  tabindex    %Number;       #IMPLIED
+  accesskey   %Character;    #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED
+  onselect    %Script;       #IMPLIED
+  onchange    %Script;       #IMPLIED
+  >
+
+<!--
+  The fieldset element is used to group form fields.
+  Only one legend element should occur in the content
+  and if present should only be preceded by whitespace.
+-->
+<!ELEMENT fieldset (#PCDATA | legend | %block; | form | %inline; | %misc;)*>
+<!ATTLIST fieldset
+  %attrs;
+  >
+
+<!ELEMENT legend %Inline;>     <!-- fieldset label -->
+<!ATTLIST legend
+  %attrs;
+  accesskey   %Character;    #IMPLIED
+  >
+
+<!--
+ Content is %Flow; excluding a, form and form controls
+--> 
+<!ELEMENT button %button.content;>  <!-- push button -->
+<!ATTLIST button
+  %attrs;
+  name        CDATA          #IMPLIED
+  value       CDATA          #IMPLIED
+  type        (button|submit|reset) "submit"
+  disabled    (disabled)     #IMPLIED
+  tabindex    %Number;       #IMPLIED
+  accesskey   %Character;    #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED
+  >
+
+<!--======================= Tables =======================================-->
+
+<!-- Derived from IETF HTML table standard, see [RFC1942] -->
+
+<!--
+ The border attribute sets the thickness of the frame around the
+ table. The default units are screen pixels.
+
+ The frame attribute specifies which parts of the frame around
+ the table should be rendered. The values are not the same as
+ CALS to avoid a name clash with the valign attribute.
+-->
+<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">
+
+<!--
+ The rules attribute defines which rules to draw between cells:
+
+ If rules is absent then assume:
+     "none" if border is absent or border="0" otherwise "all"
+-->
+
+<!ENTITY % TRules "(none | groups | rows | cols | all)">
+  
+<!-- horizontal placement of table relative to document -->
+<!ENTITY % TAlign "(left|center|right)">
+
+<!-- horizontal alignment attributes for cell contents
+
+  char        alignment char, e.g. char=':'
+  charoff     offset for alignment char
+-->
+<!ENTITY % cellhalign
+  "align      (left|center|right|justify|char) #IMPLIED
+   char       %Character;    #IMPLIED
+   charoff    %Length;       #IMPLIED"
+  >
+
+<!-- vertical alignment attributes for cell contents -->
+<!ENTITY % cellvalign
+  "valign     (top|middle|bottom|baseline) #IMPLIED"
+  >
+
+<!ELEMENT table
+     (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>
+<!ELEMENT caption  %Inline;>
+<!ELEMENT thead    (tr)+>
+<!ELEMENT tfoot    (tr)+>
+<!ELEMENT tbody    (tr)+>
+<!ELEMENT colgroup (col)*>
+<!ELEMENT col      EMPTY>
+<!ELEMENT tr       (th|td)+>
+<!ELEMENT th       %Flow;>
+<!ELEMENT td       %Flow;>
+
+<!ATTLIST table
+  %attrs;
+  summary     %Text;         #IMPLIED
+  width       %Length;       #IMPLIED
+  border      %Pixels;       #IMPLIED
+  frame       %TFrame;       #IMPLIED
+  rules       %TRules;       #IMPLIED
+  cellspacing %Length;       #IMPLIED
+  cellpadding %Length;       #IMPLIED
+  >
+
+<!ENTITY % CAlign "(top|bottom|left|right)">
+
+<!ATTLIST caption
+  %attrs;
+  >
+
+<!--
+colgroup groups a set of col elements. It allows you to group
+several semantically related columns together.
+-->
+<!ATTLIST colgroup
+  %attrs;
+  span        %Number;       "1"
+  width       %MultiLength;  #IMPLIED
+  %cellhalign;
+  %cellvalign;
+  >
+
+<!--
+ col elements define the alignment properties for cells in
+ one or more columns.
+
+ The width attribute specifies the width of the columns, e.g.
+
+     width=64        width in screen pixels
+     width=0.5*      relative width of 0.5
+
+ The span attribute causes the attributes of one
+ col element to apply to more than one column.
+-->
+<!ATTLIST col
+  %attrs;
+  span        %Number;       "1"
+  width       %MultiLength;  #IMPLIED
+  %cellhalign;
+  %cellvalign;
+  >
+
+<!--
+    Use thead to duplicate headers when breaking table
+    across page boundaries, or for static headers when
+    tbody sections are rendered in scrolling panel.
+
+    Use tfoot to duplicate footers when breaking table
+    across page boundaries, or for static footers when
+    tbody sections are rendered in scrolling panel.
+
+    Use multiple tbody sections when rules are needed
+    between groups of table rows.
+-->
+<!ATTLIST thead
+  %attrs;
+  %cellhalign;
+  %cellvalign;
+  >
+
+<!ATTLIST tfoot
+  %attrs;
+  %cellhalign;
+  %cellvalign;
+  >
+
+<!ATTLIST tbody
+  %attrs;
+  %cellhalign;
+  %cellvalign;
+  >
+
+<!ATTLIST tr
+  %attrs;
+  %cellhalign;
+  %cellvalign;
+  >
+
+
+<!-- Scope is simpler than headers attribute for common tables -->
+<!ENTITY % Scope "(row|col|rowgroup|colgroup)">
+
+<!-- th is for headers, td for data and for cells acting as both -->
+
+<!ATTLIST th
+  %attrs;
+  abbr        %Text;         #IMPLIED
+  axis        CDATA          #IMPLIED
+  headers     IDREFS         #IMPLIED
+  scope       %Scope;        #IMPLIED
+  rowspan     %Number;       "1"
+  colspan     %Number;       "1"
+  %cellhalign;
+  %cellvalign;
+  >
+
+<!ATTLIST td
+  %attrs;
+  abbr        %Text;         #IMPLIED
+  axis        CDATA          #IMPLIED
+  headers     IDREFS         #IMPLIED
+  scope       %Scope;        #IMPLIED
+  rowspan     %Number;       "1"
+  colspan     %Number;       "1"
+  %cellhalign;
+  %cellvalign;
+  >
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/xhtml1.0/xhtml1-transitional.dtd	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,1196 @@
+<!--
+   Extensible HTML version 1.0 Transitional DTD
+
+   This is the same as HTML 4.0 Transitional except for
+   changes due to the differences between XML and SGML.
+
+   Namespace = http://www.w3.org/1999/xhtml
+
+   For further information, see: http://www.w3.org/TR/xhtml1
+
+   Copyright (c) 1998-2000 W3C (MIT, INRIA, Keio),
+   All Rights Reserved. 
+
+   This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+   PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+   SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
+
+   $Revision: 1.1 $
+   $Date: 2002-04-08 21:19:32 $
+
+-->
+
+<!--================ Character mnemonic entities =========================-->
+
+<!ENTITY % HTMLlat1 PUBLIC
+   "-//W3C//ENTITIES Latin 1 for XHTML//EN"
+   "xhtml-lat1.ent">
+%HTMLlat1;
+
+<!ENTITY % HTMLsymbol PUBLIC
+   "-//W3C//ENTITIES Symbols for XHTML//EN"
+   "xhtml-symbol.ent">
+%HTMLsymbol;
+
+<!ENTITY % HTMLspecial PUBLIC
+   "-//W3C//ENTITIES Special for XHTML//EN"
+   "xhtml-special.ent">
+%HTMLspecial;
+
+<!--================== Imported Names ====================================-->
+
+<!ENTITY % ContentType "CDATA">
+    <!-- media type, as per [RFC2045] -->
+
+<!ENTITY % ContentTypes "CDATA">
+    <!-- comma-separated list of media types, as per [RFC2045] -->
+
+<!ENTITY % Charset "CDATA">
+    <!-- a character encoding, as per [RFC2045] -->
+
+<!ENTITY % Charsets "CDATA">
+    <!-- a space separated list of character encodings, as per [RFC2045] -->
+
+<!ENTITY % LanguageCode "NMTOKEN">
+    <!-- a language code, as per [RFC1766] -->
+
+<!ENTITY % Character "CDATA">
+    <!-- a single character from [ISO10646] -->
+
+<!ENTITY % Number "CDATA">
+    <!-- one or more digits -->
+
+<!ENTITY % LinkTypes "CDATA">
+    <!-- space-separated list of link types -->
+
+<!ENTITY % MediaDesc "CDATA">
+    <!-- single or comma-separated list of media descriptors -->
+
+<!ENTITY % URI "CDATA">
+    <!-- a Uniform Resource Identifier, see [RFC2396] -->
+
+<!ENTITY % UriList "CDATA">
+    <!-- a space separated list of Uniform Resource Identifiers -->
+
+<!ENTITY % Datetime "CDATA">
+    <!-- date and time information. ISO date format -->
+
+<!ENTITY % Script "CDATA">
+    <!-- script expression -->
+
+<!ENTITY % StyleSheet "CDATA">
+    <!-- style sheet data -->
+
+<!ENTITY % Text "CDATA">
+    <!-- used for titles etc. -->
+
+<!ENTITY % FrameTarget "NMTOKEN">
+    <!-- render in this frame -->
+
+<!ENTITY % Length "CDATA">
+    <!-- nn for pixels or nn% for percentage length -->
+
+<!ENTITY % MultiLength "CDATA">
+    <!-- pixel, percentage, or relative -->
+
+<!ENTITY % MultiLengths "CDATA">
+    <!-- comma-separated list of MultiLength -->
+
+<!ENTITY % Pixels "CDATA">
+    <!-- integer representing length in pixels -->
+
+<!-- these are used for image maps -->
+
+<!ENTITY % Shape "(rect|circle|poly|default)">
+
+<!ENTITY % Coords "CDATA">
+    <!-- comma separated list of lengths -->
+
+<!-- used for object, applet, img, input and iframe -->
+<!ENTITY % ImgAlign "(top|middle|bottom|left|right)">
+
+<!-- a color using sRGB: #RRGGBB as Hex values -->
+<!ENTITY % Color "CDATA">
+
+<!-- There are also 16 widely known color names with their sRGB values:
+
+    Black  = #000000    Green  = #008000
+    Silver = #C0C0C0    Lime   = #00FF00
+    Gray   = #808080    Olive  = #808000
+    White  = #FFFFFF    Yellow = #FFFF00
+    Maroon = #800000    Navy   = #000080
+    Red    = #FF0000    Blue   = #0000FF
+    Purple = #800080    Teal   = #008080
+    Fuchsia= #FF00FF    Aqua   = #00FFFF
+-->
+
+<!--=================== Generic Attributes ===============================-->
+
+<!-- core attributes common to most elements
+  id       document-wide unique id
+  class    space separated list of classes
+  style    associated style info
+  title    advisory title/amplification
+-->
+<!ENTITY % coreattrs
+ "id          ID             #IMPLIED
+  class       CDATA          #IMPLIED
+  style       %StyleSheet;   #IMPLIED
+  title       %Text;         #IMPLIED"
+  >
+
+<!-- internationalization attributes
+  lang        language code (backwards compatible)
+  xml:lang    language code (as per XML 1.0 spec)
+  dir         direction for weak/neutral text
+-->
+<!ENTITY % i18n
+ "lang        %LanguageCode; #IMPLIED
+  xml:lang    %LanguageCode; #IMPLIED
+  dir         (ltr|rtl)      #IMPLIED"
+  >
+
+<!-- attributes for common UI events
+  onclick     a pointer button was clicked
+  ondblclick  a pointer button was double clicked
+  onmousedown a pointer button was pressed down
+  onmouseup   a pointer button was released
+  onmousemove a pointer was moved onto the element
+  onmouseout  a pointer was moved away from the element
+  onkeypress  a key was pressed and released
+  onkeydown   a key was pressed down
+  onkeyup     a key was released
+-->
+<!ENTITY % events
+ "onclick     %Script;       #IMPLIED
+  ondblclick  %Script;       #IMPLIED
+  onmousedown %Script;       #IMPLIED
+  onmouseup   %Script;       #IMPLIED
+  onmouseover %Script;       #IMPLIED
+  onmousemove %Script;       #IMPLIED
+  onmouseout  %Script;       #IMPLIED
+  onkeypress  %Script;       #IMPLIED
+  onkeydown   %Script;       #IMPLIED
+  onkeyup     %Script;       #IMPLIED"
+  >
+
+<!-- attributes for elements that can get the focus
+  accesskey   accessibility key character
+  tabindex    position in tabbing order
+  onfocus     the element got the focus
+  onblur      the element lost the focus
+-->
+<!ENTITY % focus
+ "accesskey   %Character;    #IMPLIED
+  tabindex    %Number;       #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED"
+  >
+
+<!ENTITY % attrs "%coreattrs; %i18n; %events;">
+
+<!-- text alignment for p, div, h1-h6. The default is
+     align="left" for ltr headings, "right" for rtl -->
+
+<!ENTITY % TextAlign "align (left|center|right) #IMPLIED">
+
+<!--=================== Text Elements ====================================-->
+
+<!ENTITY % special
+   "br | span | bdo | object | applet | img | map | iframe">
+
+<!ENTITY % fontstyle "tt | i | b | big | small | u
+                      | s | strike |font | basefont">
+
+<!ENTITY % phrase "em | strong | dfn | code | q | sub | sup |
+                   samp | kbd | var | cite | abbr | acronym">
+
+<!ENTITY % inline.forms "input | select | textarea | label | button">
+
+<!-- these can occur at block or inline level -->
+<!ENTITY % misc "ins | del | script | noscript">
+
+<!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">
+
+<!-- %Inline; covers inline or "text-level" elements -->
+<!ENTITY % Inline "(#PCDATA | %inline; | %misc;)*">
+
+<!--================== Block level elements ==============================-->
+
+<!ENTITY % heading "h1|h2|h3|h4|h5|h6">
+<!ENTITY % lists "ul | ol | dl | menu | dir">
+<!ENTITY % blocktext "pre | hr | blockquote | address | center | noframes">
+
+<!ENTITY % block
+    "p | %heading; | div | %lists; | %blocktext; | isindex |fieldset | table">
+
+<!ENTITY % Block "(%block; | form | %misc;)*">
+
+<!-- %Flow; mixes Block and Inline and is used for list items etc. -->
+<!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc;)*">
+
+<!--================== Content models for exclusions =====================-->
+
+<!-- a elements use %Inline; excluding a -->
+
+<!ENTITY % a.content
+   "(#PCDATA | %special; | %fontstyle; | %phrase; | %inline.forms; | %misc;)*">
+
+<!-- pre uses %Inline excluding img, object, applet, big, small,
+     sub, sup, font, or basefont -->
+
+<!ENTITY % pre.content
+   "(#PCDATA | a | br | span | bdo | map | tt | i | b | u | s |
+      %phrase; | %inline.forms;)*">
+
+<!-- form uses %Flow; excluding form -->
+
+<!ENTITY % form.content "(#PCDATA | %block; | %inline; | %misc;)*">
+
+<!-- button uses %Flow; but excludes a, form, form controls, iframe -->
+
+<!ENTITY % button.content
+   "(#PCDATA | p | %heading; | div | %lists; | %blocktext; |
+      table | br | span | bdo | object | applet | img | map |
+      %fontstyle; | %phrase; | %misc;)*">
+
+<!--================ Document Structure ==================================-->
+
+<!-- the namespace URI designates the document profile -->
+
+<!ELEMENT html (head, body)>
+<!ATTLIST html
+  %i18n;
+  xmlns       %URI;          #FIXED 'http://www.w3.org/1999/xhtml'
+  >
+
+<!--================ Document Head =======================================-->
+
+<!ENTITY % head.misc "(script|style|meta|link|object|isindex)*">
+
+<!-- content model is %head.misc; combined with a single
+     title and an optional base element in any order -->
+
+<!ELEMENT head (%head.misc;,
+     ((title, %head.misc;, (base, %head.misc;)?) |
+      (base, %head.misc;, (title, %head.misc;))))>
+
+<!ATTLIST head
+  %i18n;
+  profile     %URI;          #IMPLIED
+  >
+
+<!-- The title element is not considered part of the flow of text.
+       It should be displayed, for example as the page header or
+       window title. Exactly one title is required per document.
+    -->
+<!ELEMENT title (#PCDATA)>
+<!ATTLIST title %i18n;>
+
+<!-- document base URI -->
+
+<!ELEMENT base EMPTY>
+<!ATTLIST base
+  href        %URI;          #IMPLIED
+  target      %FrameTarget;  #IMPLIED
+  >
+
+<!-- generic metainformation -->
+<!ELEMENT meta EMPTY>
+<!ATTLIST meta
+  %i18n;
+  http-equiv  CDATA          #IMPLIED
+  name        CDATA          #IMPLIED
+  content     CDATA          #REQUIRED
+  scheme      CDATA          #IMPLIED
+  >
+
+<!--
+  Relationship values can be used in principle:
+
+   a) for document specific toolbars/menus when used
+      with the link element in document head e.g.
+        start, contents, previous, next, index, end, help
+   b) to link to a separate style sheet (rel="stylesheet")
+   c) to make a link to a script (rel="script")
+   d) by stylesheets to control how collections of
+      html nodes are rendered into printed documents
+   e) to make a link to a printable version of this document
+      e.g. a PostScript or PDF version (rel="alternate" media="print")
+-->
+
+<!ELEMENT link EMPTY>
+<!ATTLIST link
+  %attrs;
+  charset     %Charset;      #IMPLIED
+  href        %URI;          #IMPLIED
+  hreflang    %LanguageCode; #IMPLIED
+  type        %ContentType;  #IMPLIED
+  rel         %LinkTypes;    #IMPLIED
+  rev         %LinkTypes;    #IMPLIED
+  media       %MediaDesc;    #IMPLIED
+  target      %FrameTarget;  #IMPLIED
+  >
+
+<!-- style info, which may include CDATA sections -->
+<!ELEMENT style (#PCDATA)>
+<!ATTLIST style
+  %i18n;
+  type        %ContentType;  #REQUIRED
+  media       %MediaDesc;    #IMPLIED
+  title       %Text;         #IMPLIED
+  xml:space   (preserve)     #FIXED 'preserve'
+  >
+
+<!-- script statements, which may include CDATA sections -->
+<!ELEMENT script (#PCDATA)>
+<!ATTLIST script
+  charset     %Charset;      #IMPLIED
+  type        %ContentType;  #REQUIRED
+  language    CDATA          #IMPLIED
+  src         %URI;          #IMPLIED
+  defer       (defer)        #IMPLIED
+  xml:space   (preserve)     #FIXED 'preserve'
+  >
+
+<!-- alternate content container for non script-based rendering -->
+
+<!ELEMENT noscript %Flow;>
+<!ATTLIST noscript
+  %attrs;
+  >
+
+<!--======================= Frames =======================================-->
+
+<!-- inline subwindow -->
+
+<!ELEMENT iframe %Flow;>
+<!ATTLIST iframe
+  %coreattrs;
+  longdesc    %URI;          #IMPLIED
+  name        NMTOKEN        #IMPLIED
+  src         %URI;          #IMPLIED
+  frameborder (1|0)          "1"
+  marginwidth %Pixels;       #IMPLIED
+  marginheight %Pixels;      #IMPLIED
+  scrolling   (yes|no|auto)  "auto"
+  align       %ImgAlign;     #IMPLIED
+  height      %Length;       #IMPLIED
+  width       %Length;       #IMPLIED
+  >
+
+<!-- alternate content container for non frame-based rendering -->
+
+<!ELEMENT noframes %Flow;>
+<!ATTLIST noframes
+  %attrs;
+  >
+
+<!--=================== Document Body ====================================-->
+
+<!ELEMENT body %Flow;>
+<!ATTLIST body
+  %attrs;
+  onload      %Script;       #IMPLIED
+  onunload    %Script;       #IMPLIED
+  background  %URI;          #IMPLIED
+  bgcolor     %Color;        #IMPLIED
+  text        %Color;        #IMPLIED
+  link        %Color;        #IMPLIED
+  vlink       %Color;        #IMPLIED
+  alink       %Color;        #IMPLIED
+  >
+
+<!ELEMENT div %Flow;>  <!-- generic language/style container -->
+<!ATTLIST div
+  %attrs;
+  %TextAlign;
+  >
+
+<!--=================== Paragraphs =======================================-->
+
+<!ELEMENT p %Inline;>
+<!ATTLIST p
+  %attrs;
+  %TextAlign;
+  >
+
+<!--=================== Headings =========================================-->
+
+<!--
+  There are six levels of headings from h1 (the most important)
+  to h6 (the least important).
+-->
+
+<!ELEMENT h1  %Inline;>
+<!ATTLIST h1
+  %attrs;
+  %TextAlign;
+  >
+
+<!ELEMENT h2 %Inline;>
+<!ATTLIST h2
+  %attrs;
+  %TextAlign;
+  >
+
+<!ELEMENT h3 %Inline;>
+<!ATTLIST h3
+  %attrs;
+  %TextAlign;
+  >
+
+<!ELEMENT h4 %Inline;>
+<!ATTLIST h4
+  %attrs;
+  %TextAlign;
+  >
+
+<!ELEMENT h5 %Inline;>
+<!ATTLIST h5
+  %attrs;
+  %TextAlign;
+  >
+
+<!ELEMENT h6 %Inline;>
+<!ATTLIST h6
+  %attrs;
+  %TextAlign;
+  >
+
+<!--=================== Lists ============================================-->
+
+<!-- Unordered list bullet styles -->
+
+<!ENTITY % ULStyle "(disc|square|circle)">
+
+<!-- Unordered list -->
+
+<!ELEMENT ul (li)+>
+<!ATTLIST ul
+  %attrs;
+  type        %ULStyle;     #IMPLIED
+  compact     (compact)     #IMPLIED
+  >
+
+<!-- Ordered list numbering style
+
+    1   arabic numbers      1, 2, 3, ...
+    a   lower alpha         a, b, c, ...
+    A   upper alpha         A, B, C, ...
+    i   lower roman         i, ii, iii, ...
+    I   upper roman         I, II, III, ...
+
+    The style is applied to the sequence number which by default
+    is reset to 1 for the first list item in an ordered list.
+-->
+<!ENTITY % OLStyle "CDATA">
+
+<!-- Ordered (numbered) list -->
+
+<!ELEMENT ol (li)+>
+<!ATTLIST ol
+  %attrs;
+  type        %OLStyle;      #IMPLIED
+  compact     (compact)      #IMPLIED
+  start       %Number;       #IMPLIED
+  >
+
+<!-- single column list (DEPRECATED) --> 
+<!ELEMENT menu (li)+>
+<!ATTLIST menu
+  %attrs;
+  compact     (compact)     #IMPLIED
+  >
+
+<!-- multiple column list (DEPRECATED) --> 
+<!ELEMENT dir (li)+>
+<!ATTLIST dir
+  %attrs;
+  compact     (compact)     #IMPLIED
+  >
+
+<!-- LIStyle is constrained to: "(%ULStyle;|%OLStyle;)" -->
+<!ENTITY % LIStyle "CDATA">
+
+<!-- list item -->
+
+<!ELEMENT li %Flow;>
+<!ATTLIST li
+  %attrs;
+  type        %LIStyle;      #IMPLIED
+  value       %Number;       #IMPLIED
+  >
+
+<!-- definition lists - dt for term, dd for its definition -->
+
+<!ELEMENT dl (dt|dd)+>
+<!ATTLIST dl
+  %attrs;
+  compact     (compact)      #IMPLIED
+  >
+
+<!ELEMENT dt %Inline;>
+<!ATTLIST dt
+  %attrs;
+  >
+
+<!ELEMENT dd %Flow;>
+<!ATTLIST dd
+  %attrs;
+  >
+
+<!--=================== Address ==========================================-->
+
+<!-- information on author -->
+
+<!ELEMENT address %Inline;>
+<!ATTLIST address
+  %attrs;
+  >
+
+<!--=================== Horizontal Rule ==================================-->
+
+<!ELEMENT hr EMPTY>
+<!ATTLIST hr
+  %attrs;
+  align       (left|center|right) #IMPLIED
+  noshade     (noshade)      #IMPLIED
+  size        %Pixels;       #IMPLIED
+  width       %Length;       #IMPLIED
+  >
+
+<!--=================== Preformatted Text ================================-->
+
+<!-- content is %Inline; excluding 
+        "img|object|applet|big|small|sub|sup|font|basefont" -->
+
+<!ELEMENT pre %pre.content;>
+<!ATTLIST pre
+  %attrs;
+  width       %Number;      #IMPLIED
+  xml:space   (preserve)    #FIXED 'preserve'
+  >
+
+<!--=================== Block-like Quotes ================================-->
+
+<!ELEMENT blockquote %Flow;>
+<!ATTLIST blockquote
+  %attrs;
+  cite        %URI;          #IMPLIED
+  >
+
+<!--=================== Text alignment ===================================-->
+
+<!-- center content -->
+<!ELEMENT center %Flow;>
+<!ATTLIST center
+  %attrs;
+  >
+
+<!--=================== Inserted/Deleted Text ============================-->
+
+<!--
+  ins/del are allowed in block and inline content, but its
+  inappropriate to include block content within an ins element
+  occurring in inline content.
+-->
+<!ELEMENT ins %Flow;>
+<!ATTLIST ins
+  %attrs;
+  cite        %URI;          #IMPLIED
+  datetime    %Datetime;     #IMPLIED
+  >
+
+<!ELEMENT del %Flow;>
+<!ATTLIST del
+  %attrs;
+  cite        %URI;          #IMPLIED
+  datetime    %Datetime;     #IMPLIED
+  >
+
+<!--================== The Anchor Element ================================-->
+
+<!-- content is %Inline; except that anchors shouldn't be nested -->
+
+<!ELEMENT a %a.content;>
+<!ATTLIST a
+  %attrs;
+  charset     %Charset;      #IMPLIED
+  type        %ContentType;  #IMPLIED
+  name        NMTOKEN        #IMPLIED
+  href        %URI;          #IMPLIED
+  hreflang    %LanguageCode; #IMPLIED
+  rel         %LinkTypes;    #IMPLIED
+  rev         %LinkTypes;    #IMPLIED
+  accesskey   %Character;    #IMPLIED
+  shape       %Shape;        "rect"
+  coords      %Coords;       #IMPLIED
+  tabindex    %Number;       #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED
+  target      %FrameTarget;  #IMPLIED
+  >
+
+<!--===================== Inline Elements ================================-->
+
+<!ELEMENT span %Inline;> <!-- generic language/style container -->
+<!ATTLIST span
+  %attrs;
+  >
+
+<!ELEMENT bdo %Inline;>  <!-- I18N BiDi over-ride -->
+<!ATTLIST bdo
+  %coreattrs;
+  %events;
+  lang        %LanguageCode; #IMPLIED
+  xml:lang    %LanguageCode; #IMPLIED
+  dir         (ltr|rtl)      #REQUIRED
+  >
+
+<!ELEMENT br EMPTY>   <!-- forced line break -->
+<!ATTLIST br
+  %coreattrs;
+  clear       (left|all|right|none) "none"
+  >
+
+<!ELEMENT em %Inline;>   <!-- emphasis -->
+<!ATTLIST em %attrs;>
+
+<!ELEMENT strong %Inline;>   <!-- strong emphasis -->
+<!ATTLIST strong %attrs;>
+
+<!ELEMENT dfn %Inline;>   <!-- definitional -->
+<!ATTLIST dfn %attrs;>
+
+<!ELEMENT code %Inline;>   <!-- program code -->
+<!ATTLIST code %attrs;>
+
+<!ELEMENT samp %Inline;>   <!-- sample -->
+<!ATTLIST samp %attrs;>
+
+<!ELEMENT kbd %Inline;>  <!-- something user would type -->
+<!ATTLIST kbd %attrs;>
+
+<!ELEMENT var %Inline;>   <!-- variable -->
+<!ATTLIST var %attrs;>
+
+<!ELEMENT cite %Inline;>   <!-- citation -->
+<!ATTLIST cite %attrs;>
+
+<!ELEMENT abbr %Inline;>   <!-- abbreviation -->
+<!ATTLIST abbr %attrs;>
+
+<!ELEMENT acronym %Inline;>   <!-- acronym -->
+<!ATTLIST acronym %attrs;>
+
+<!ELEMENT q %Inline;>   <!-- inlined quote -->
+<!ATTLIST q
+  %attrs;
+  cite        %URI;          #IMPLIED
+  >
+
+<!ELEMENT sub %Inline;> <!-- subscript -->
+<!ATTLIST sub %attrs;>
+
+<!ELEMENT sup %Inline;> <!-- superscript -->
+<!ATTLIST sup %attrs;>
+
+<!ELEMENT tt %Inline;>   <!-- fixed pitch font -->
+<!ATTLIST tt %attrs;>
+
+<!ELEMENT i %Inline;>   <!-- italic font -->
+<!ATTLIST i %attrs;>
+
+<!ELEMENT b %Inline;>   <!-- bold font -->
+<!ATTLIST b %attrs;>
+
+<!ELEMENT big %Inline;>   <!-- bigger font -->
+<!ATTLIST big %attrs;>
+
+<!ELEMENT small %Inline;>   <!-- smaller font -->
+<!ATTLIST small %attrs;>
+
+<!ELEMENT u %Inline;>   <!-- underline -->
+<!ATTLIST u %attrs;>
+
+<!ELEMENT s %Inline;>   <!-- strike-through -->
+<!ATTLIST s %attrs;>
+
+<!ELEMENT strike %Inline;>   <!-- strike-through -->
+<!ATTLIST strike %attrs;>
+
+<!ELEMENT basefont EMPTY>  <!-- base font size -->
+<!ATTLIST basefont
+  id          ID             #IMPLIED
+  size        CDATA          #REQUIRED
+  color       %Color;        #IMPLIED
+  face        CDATA          #IMPLIED
+  >
+
+<!ELEMENT font %Inline;> <!-- local change to font -->
+<!ATTLIST font
+  %coreattrs;
+  %i18n;
+  size        CDATA          #IMPLIED
+  color       %Color;        #IMPLIED
+  face        CDATA          #IMPLIED
+  >
+
+<!--==================== Object ======================================-->
+<!--
+  object is used to embed objects as part of HTML pages.
+  param elements should precede other content. Parameters
+  can also be expressed as attribute/value pairs on the
+  object element itself when brevity is desired.
+-->
+
+<!ELEMENT object (#PCDATA | param | %block; | form | %inline; | %misc;)*>
+<!ATTLIST object
+  %attrs;
+  declare     (declare)      #IMPLIED
+  classid     %URI;          #IMPLIED
+  codebase    %URI;          #IMPLIED
+  data        %URI;          #IMPLIED
+  type        %ContentType;  #IMPLIED
+  codetype    %ContentType;  #IMPLIED
+  archive     %UriList;      #IMPLIED
+  standby     %Text;         #IMPLIED
+  height      %Length;       #IMPLIED
+  width       %Length;       #IMPLIED
+  usemap      %URI;          #IMPLIED
+  name        NMTOKEN        #IMPLIED
+  tabindex    %Number;       #IMPLIED
+  align       %ImgAlign;     #IMPLIED
+  border      %Pixels;       #IMPLIED
+  hspace      %Pixels;       #IMPLIED
+  vspace      %Pixels;       #IMPLIED
+  >
+
+<!--
+  param is used to supply a named property value.
+  In XML it would seem natural to follow RDF and support an
+  abbreviated syntax where the param elements are replaced
+  by attribute value pairs on the object start tag.
+-->
+<!ELEMENT param EMPTY>
+<!ATTLIST param
+  id          ID             #IMPLIED
+  name        CDATA          #REQUIRED
+  value       CDATA          #IMPLIED
+  valuetype   (data|ref|object) "data"
+  type        %ContentType;  #IMPLIED
+  >
+
+<!--=================== Java applet ==================================-->
+<!--
+  One of code or object attributes must be present.
+  Place param elements before other content.
+-->
+<!ELEMENT applet (#PCDATA | param | %block; | form | %inline; | %misc;)*>
+<!ATTLIST applet
+  %coreattrs;
+  codebase    %URI;          #IMPLIED
+  archive     CDATA          #IMPLIED
+  code        CDATA          #IMPLIED
+  object      CDATA          #IMPLIED
+  alt         %Text;         #IMPLIED
+  name        NMTOKEN        #IMPLIED
+  width       %Length;       #REQUIRED
+  height      %Length;       #REQUIRED
+  align       %ImgAlign;     #IMPLIED
+  hspace      %Pixels;       #IMPLIED
+  vspace      %Pixels;       #IMPLIED
+  >
+
+<!--=================== Images ===========================================-->
+
+<!--
+   To avoid accessibility problems for people who aren't
+   able to see the image, you should provide a text
+   description using the alt and longdesc attributes.
+   In addition, avoid the use of server-side image maps.
+-->
+
+<!ELEMENT img EMPTY>
+<!ATTLIST img
+  %attrs;
+  src         %URI;          #REQUIRED
+  alt         %Text;         #REQUIRED
+  name        NMTOKEN        #IMPLIED
+  longdesc    %URI;          #IMPLIED
+  height      %Length;       #IMPLIED
+  width       %Length;       #IMPLIED
+  usemap      %URI;          #IMPLIED
+  ismap       (ismap)        #IMPLIED
+  align       %ImgAlign;     #IMPLIED
+  border      %Length;       #IMPLIED
+  hspace      %Pixels;       #IMPLIED
+  vspace      %Pixels;       #IMPLIED
+  >
+
+<!-- usemap points to a map element which may be in this document
+  or an external document, although the latter is not widely supported -->
+
+<!--================== Client-side image maps ============================-->
+
+<!-- These can be placed in the same document or grouped in a
+     separate document although this isn't yet widely supported -->
+
+<!ELEMENT map ((%block; | form | %misc;)+ | area+)>
+<!ATTLIST map
+  %i18n;
+  %events;
+  id          ID             #REQUIRED
+  class       CDATA          #IMPLIED
+  style       %StyleSheet;   #IMPLIED
+  title       %Text;         #IMPLIED
+  name        CDATA          #IMPLIED
+  >
+
+<!ELEMENT area EMPTY>
+<!ATTLIST area
+  %attrs;
+  shape       %Shape;        "rect"
+  coords      %Coords;       #IMPLIED
+  href        %URI;          #IMPLIED
+  nohref      (nohref)       #IMPLIED
+  alt         %Text;         #REQUIRED
+  tabindex    %Number;       #IMPLIED
+  accesskey   %Character;    #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED
+  target      %FrameTarget;  #IMPLIED
+  >
+
+<!--================ Forms ===============================================-->
+
+<!ELEMENT form %form.content;>   <!-- forms shouldn't be nested -->
+
+<!ATTLIST form
+  %attrs;
+  action      %URI;          #REQUIRED
+  method      (get|post)     "get"
+  name        NMTOKEN        #IMPLIED
+  enctype     %ContentType;  "application/x-www-form-urlencoded"
+  onsubmit    %Script;       #IMPLIED
+  onreset     %Script;       #IMPLIED
+  accept      %ContentTypes; #IMPLIED
+  accept-charset %Charsets;  #IMPLIED
+  target      %FrameTarget;  #IMPLIED
+  >
+
+<!--
+  Each label must not contain more than ONE field
+  Label elements shouldn't be nested.
+-->
+<!ELEMENT label %Inline;>
+<!ATTLIST label
+  %attrs;
+  for         IDREF          #IMPLIED
+  accesskey   %Character;    #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED
+  >
+
+<!ENTITY % InputType
+  "(text | password | checkbox |
+    radio | submit | reset |
+    file | hidden | image | button)"
+   >
+
+<!-- the name attribute is required for all but submit & reset -->
+
+<!ELEMENT input EMPTY>     <!-- form control -->
+<!ATTLIST input
+  %attrs;
+  type        %InputType;    "text"
+  name        CDATA          #IMPLIED
+  value       CDATA          #IMPLIED
+  checked     (checked)      #IMPLIED
+  disabled    (disabled)     #IMPLIED
+  readonly    (readonly)     #IMPLIED
+  size        CDATA          #IMPLIED
+  maxlength   %Number;       #IMPLIED
+  src         %URI;          #IMPLIED
+  alt         CDATA          #IMPLIED
+  usemap      %URI;          #IMPLIED
+  tabindex    %Number;       #IMPLIED
+  accesskey   %Character;    #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED
+  onselect    %Script;       #IMPLIED
+  onchange    %Script;       #IMPLIED
+  accept      %ContentTypes; #IMPLIED
+  align       %ImgAlign;     #IMPLIED
+  >
+
+<!ELEMENT select (optgroup|option)+>  <!-- option selector -->
+<!ATTLIST select
+  %attrs;
+  name        CDATA          #IMPLIED
+  size        %Number;       #IMPLIED
+  multiple    (multiple)     #IMPLIED
+  disabled    (disabled)     #IMPLIED
+  tabindex    %Number;       #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED
+  onchange    %Script;       #IMPLIED
+  >
+
+<!ELEMENT optgroup (option)+>   <!-- option group -->
+<!ATTLIST optgroup
+  %attrs;
+  disabled    (disabled)     #IMPLIED
+  label       %Text;         #REQUIRED
+  >
+
+<!ELEMENT option (#PCDATA)>     <!-- selectable choice -->
+<!ATTLIST option
+  %attrs;
+  selected    (selected)     #IMPLIED
+  disabled    (disabled)     #IMPLIED
+  label       %Text;         #IMPLIED
+  value       CDATA          #IMPLIED
+  >
+
+<!ELEMENT textarea (#PCDATA)>     <!-- multi-line text field -->
+<!ATTLIST textarea
+  %attrs;
+  name        CDATA          #IMPLIED
+  rows        %Number;       #REQUIRED
+  cols        %Number;       #REQUIRED
+  disabled    (disabled)     #IMPLIED
+  readonly    (readonly)     #IMPLIED
+  tabindex    %Number;       #IMPLIED
+  accesskey   %Character;    #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED
+  onselect    %Script;       #IMPLIED
+  onchange    %Script;       #IMPLIED
+  >
+
+<!--
+  The fieldset element is used to group form fields.
+  Only one legend element should occur in the content
+  and if present should only be preceded by whitespace.
+-->
+<!ELEMENT fieldset (#PCDATA | legend | %block; | form | %inline; | %misc;)*>
+<!ATTLIST fieldset
+  %attrs;
+  >
+
+<!ENTITY % LAlign "(top|bottom|left|right)">
+
+<!ELEMENT legend %Inline;>     <!-- fieldset label -->
+<!ATTLIST legend
+  %attrs;
+  accesskey   %Character;    #IMPLIED
+  align       %LAlign;       #IMPLIED
+  >
+
+<!--
+ Content is %Flow; excluding a, form, form controls, iframe
+--> 
+<!ELEMENT button %button.content;>  <!-- push button -->
+<!ATTLIST button
+  %attrs;
+  name        CDATA          #IMPLIED
+  value       CDATA          #IMPLIED
+  type        (button|submit|reset) "submit"
+  disabled    (disabled)     #IMPLIED
+  tabindex    %Number;       #IMPLIED
+  accesskey   %Character;    #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED
+  >
+
+<!-- single-line text input control (DEPRECATED) -->
+<!ELEMENT isindex EMPTY>
+<!ATTLIST isindex
+  %coreattrs;
+  %i18n;
+  prompt      %Text;         #IMPLIED
+  >
+
+<!--======================= Tables =======================================-->
+
+<!-- Derived from IETF HTML table standard, see [RFC1942] -->
+
+<!--
+ The border attribute sets the thickness of the frame around the
+ table. The default units are screen pixels.
+
+ The frame attribute specifies which parts of the frame around
+ the table should be rendered. The values are not the same as
+ CALS to avoid a name clash with the valign attribute.
+-->
+<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">
+
+<!--
+ The rules attribute defines which rules to draw between cells:
+
+ If rules is absent then assume:
+     "none" if border is absent or border="0" otherwise "all"
+-->
+
+<!ENTITY % TRules "(none | groups | rows | cols | all)">
+  
+<!-- horizontal placement of table relative to document -->
+<!ENTITY % TAlign "(left|center|right)">
+
+<!-- horizontal alignment attributes for cell contents
+
+  char        alignment char, e.g. char=':'
+  charoff     offset for alignment char
+-->
+<!ENTITY % cellhalign
+  "align      (left|center|right|justify|char) #IMPLIED
+   char       %Character;    #IMPLIED
+   charoff    %Length;       #IMPLIED"
+  >
+
+<!-- vertical alignment attributes for cell contents -->
+<!ENTITY % cellvalign
+  "valign     (top|middle|bottom|baseline) #IMPLIED"
+  >
+
+<!ELEMENT table
+     (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>
+<!ELEMENT caption  %Inline;>
+<!ELEMENT thead    (tr)+>
+<!ELEMENT tfoot    (tr)+>
+<!ELEMENT tbody    (tr)+>
+<!ELEMENT colgroup (col)*>
+<!ELEMENT col      EMPTY>
+<!ELEMENT tr       (th|td)+>
+<!ELEMENT th       %Flow;>
+<!ELEMENT td       %Flow;>
+
+<!ATTLIST table
+  %attrs;
+  summary     %Text;         #IMPLIED
+  width       %Length;       #IMPLIED
+  border      %Pixels;       #IMPLIED
+  frame       %TFrame;       #IMPLIED
+  rules       %TRules;       #IMPLIED
+  cellspacing %Length;       #IMPLIED
+  cellpadding %Length;       #IMPLIED
+  align       %TAlign;       #IMPLIED
+  bgcolor     %Color;        #IMPLIED
+  >
+
+<!ENTITY % CAlign "(top|bottom|left|right)">
+
+<!ATTLIST caption
+  %attrs;
+  align       %CAlign;       #IMPLIED
+  >
+
+<!--
+colgroup groups a set of col elements. It allows you to group
+several semantically related columns together.
+-->
+<!ATTLIST colgroup
+  %attrs;
+  span        %Number;       "1"
+  width       %MultiLength;  #IMPLIED
+  %cellhalign;
+  %cellvalign;
+  >
+
+<!--
+ col elements define the alignment properties for cells in
+ one or more columns.
+
+ The width attribute specifies the width of the columns, e.g.
+
+     width=64        width in screen pixels
+     width=0.5*      relative width of 0.5
+
+ The span attribute causes the attributes of one
+ col element to apply to more than one column.
+-->
+<!ATTLIST col
+  %attrs;
+  span        %Number;       "1"
+  width       %MultiLength;  #IMPLIED
+  %cellhalign;
+  %cellvalign;
+  >
+
+<!--
+    Use thead to duplicate headers when breaking table
+    across page boundaries, or for static headers when
+    tbody sections are rendered in scrolling panel.
+
+    Use tfoot to duplicate footers when breaking table
+    across page boundaries, or for static footers when
+    tbody sections are rendered in scrolling panel.
+
+    Use multiple tbody sections when rules are needed
+    between groups of table rows.
+-->
+<!ATTLIST thead
+  %attrs;
+  %cellhalign;
+  %cellvalign;
+  >
+
+<!ATTLIST tfoot
+  %attrs;
+  %cellhalign;
+  %cellvalign;
+  >
+
+<!ATTLIST tbody
+  %attrs;
+  %cellhalign;
+  %cellvalign;
+  >
+
+<!ATTLIST tr
+  %attrs;
+  %cellhalign;
+  %cellvalign;
+  bgcolor     %Color;        #IMPLIED
+  >
+
+<!-- Scope is simpler than headers attribute for common tables -->
+<!ENTITY % Scope "(row|col|rowgroup|colgroup)">
+
+<!-- th is for headers, td for data and for cells acting as both -->
+
+<!ATTLIST th
+  %attrs;
+  abbr        %Text;         #IMPLIED
+  axis        CDATA          #IMPLIED
+  headers     IDREFS         #IMPLIED
+  scope       %Scope;        #IMPLIED
+  rowspan     %Number;       "1"
+  colspan     %Number;       "1"
+  %cellhalign;
+  %cellvalign;
+  nowrap      (nowrap)       #IMPLIED
+  bgcolor     %Color;        #IMPLIED
+  width       %Pixels;       #IMPLIED
+  height      %Pixels;       #IMPLIED
+  >
+
+<!ATTLIST td
+  %attrs;
+  abbr        %Text;         #IMPLIED
+  axis        CDATA          #IMPLIED
+  headers     IDREFS         #IMPLIED
+  scope       %Scope;        #IMPLIED
+  rowspan     %Number;       "1"
+  colspan     %Number;       "1"
+  %cellhalign;
+  %cellvalign;
+  nowrap      (nowrap)       #IMPLIED
+  bgcolor     %Color;        #IMPLIED
+  width       %Pixels;       #IMPLIED
+  height      %Pixels;       #IMPLIED
+  >
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/xhtml1.1/xhtml11-model-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,250 @@
+<!-- ....................................................................... -->
+<!-- XHTML 1.1 Document Model Module  ...................................... -->
+<!-- file: xhtml11-model-1.mod
+
+     This is XHTML 1.1, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml11-model-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ENTITIES XHTML 1.1 Document Model 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml11/DTD/xhtml11-model-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- XHTML 1.1 Document Model
+
+     This module describes the groupings of elements that make up
+     common content models for XHTML elements.
+
+     XHTML has three basic content models:
+
+         %Inline.mix;  character-level elements
+         %Block.mix;   block-like elements, eg., paragraphs and lists
+         %Flow.mix;    any block or inline elements
+
+     Any parameter entities declared in this module may be used
+     to create element content models, but the above three are
+     considered 'global' (insofar as that term applies here).
+
+     The reserved word '#PCDATA' (indicating a text string) is now
+     included explicitly with each element declaration that is
+     declared as mixed content, as XML requires that this token
+     occur first in a content model specification.
+-->
+<!-- Extending the Model
+
+     While in some cases this module may need to be rewritten to
+     accommodate changes to the document model, minor extensions
+     may be accomplished by redeclaring any of the three *.extra;
+     parameter entities to contain extension element types as follows:
+
+         %Misc.extra;    whose parent may be any block or
+                         inline element.
+
+         %Inline.extra;  whose parent may be any inline element.
+
+         %Block.extra;   whose parent may be any block element.
+
+     If used, these parameter entities must be an OR-separated
+     list beginning with an OR separator ("|"), eg., "| a | b | c"
+
+     All block and inline *.class parameter entities not part
+     of the *struct.class classes begin with "| " to allow for
+     exclusion from mixes.
+-->
+
+<!-- ..............  Optional Elements in head  .................. -->
+
+<!ENTITY % HeadOpts.mix
+     "( %script.qname; | %style.qname; | %meta.qname;
+      | %link.qname; | %object.qname; )*"
+>
+
+<!-- .................  Miscellaneous Elements  .................. -->
+
+<!-- ins and del are used to denote editing changes
+-->
+<!ENTITY % Edit.class "| %ins.qname; | %del.qname;" >
+
+<!-- script and noscript are used to contain scripts
+     and alternative content
+-->
+<!ENTITY % Script.class "| %script.qname; | %noscript.qname;" >
+
+<!ENTITY % Misc.extra "" >
+
+<!-- These elements are neither block nor inline, and can
+     essentially be used anywhere in the document body.
+-->
+<!ENTITY % Misc.class
+     "%Edit.class;
+      %Script.class;
+      %Misc.extra;"
+>
+
+<!-- ....................  Inline Elements  ...................... -->
+
+<!ENTITY % InlStruct.class "%br.qname; | %span.qname;" >
+
+<!ENTITY % InlPhras.class
+     "| %em.qname; | %strong.qname; | %dfn.qname; | %code.qname;
+      | %samp.qname; | %kbd.qname; | %var.qname; | %cite.qname;
+      | %abbr.qname; | %acronym.qname; | %q.qname;" >
+
+<!ENTITY % InlPres.class
+     "| %tt.qname; | %i.qname; | %b.qname; | %big.qname;
+      | %small.qname; | %sub.qname; | %sup.qname;" >
+
+<!ENTITY % I18n.class "| %bdo.qname;" >
+
+<!ENTITY % Anchor.class "| %a.qname;" >
+
+<!ENTITY % InlSpecial.class
+     "| %img.qname; | %map.qname;
+      | %object.qname;" >
+
+<!ENTITY % InlForm.class
+     "| %input.qname; | %select.qname; | %textarea.qname;
+      | %label.qname; | %button.qname;" >
+
+<!ENTITY % Inline.extra "" >
+
+<!ENTITY % Ruby.class "| %ruby.qname;" >
+
+<!-- %Inline.class; includes all inline elements,
+     used as a component in mixes
+-->
+<!ENTITY % Inline.class
+     "%InlStruct.class;
+      %InlPhras.class;
+      %InlPres.class;
+      %I18n.class;
+      %Anchor.class;
+      %InlSpecial.class;
+      %InlForm.class;
+      %Ruby.class;
+      %Inline.extra;"
+>
+
+<!-- %InlNoRuby.class; includes all inline elements
+     except ruby, used as a component in mixes
+-->
+<!ENTITY % InlNoRuby.class
+     "%InlStruct.class;
+      %InlPhras.class;
+      %InlPres.class;
+      %I18n.class;
+      %Anchor.class;
+      %InlSpecial.class;
+      %InlForm.class;
+      %Inline.extra;"
+>
+
+<!-- %NoRuby.content; includes all inlines except ruby
+-->
+<!ENTITY % NoRuby.content
+     "( #PCDATA
+      | %InlNoRuby.class;
+      %Misc.class; )*"
+>
+
+<!-- %InlNoAnchor.class; includes all non-anchor inlines,
+     used as a component in mixes
+-->
+<!ENTITY % InlNoAnchor.class
+     "%InlStruct.class;
+      %InlPhras.class;
+      %InlPres.class;
+      %I18n.class;
+      %InlSpecial.class;
+      %InlForm.class;
+      %Ruby.class;
+      %Inline.extra;"
+>
+
+<!-- %InlNoAnchor.mix; includes all non-anchor inlines
+-->
+<!ENTITY % InlNoAnchor.mix
+     "%InlNoAnchor.class;
+      %Misc.class;"
+>
+
+<!-- %Inline.mix; includes all inline elements, including %Misc.class;
+-->
+<!ENTITY % Inline.mix
+     "%Inline.class;
+      %Misc.class;"
+>
+
+<!-- .....................  Block Elements  ...................... -->
+
+<!-- In the HTML 4.0 DTD, heading and list elements were included
+     in the %block; parameter entity. The %Heading.class; and
+     %List.class; parameter entities must now be included explicitly
+     on element declarations where desired.
+-->
+
+<!ENTITY % Heading.class
+     "%h1.qname; | %h2.qname; | %h3.qname;
+      | %h4.qname; | %h5.qname; | %h6.qname;" >
+
+<!ENTITY % List.class "%ul.qname; | %ol.qname; | %dl.qname;" >
+
+<!ENTITY % Table.class "| %table.qname;" >
+
+<!ENTITY % Form.class  "| %form.qname;" >
+
+<!ENTITY % Fieldset.class  "| %fieldset.qname;" >
+
+<!ENTITY % BlkStruct.class "%p.qname; | %div.qname;" >
+
+<!ENTITY % BlkPhras.class
+     "| %pre.qname; | %blockquote.qname; | %address.qname;" >
+
+<!ENTITY % BlkPres.class "| %hr.qname;" >
+
+<!ENTITY % BlkSpecial.class
+     "%Table.class;
+      %Form.class;
+      %Fieldset.class;"
+>
+
+<!ENTITY % Block.extra "" >
+
+<!-- %Block.class; includes all block elements,
+     used as an component in mixes
+-->
+<!ENTITY % Block.class
+     "%BlkStruct.class;
+      %BlkPhras.class;
+      %BlkPres.class;
+      %BlkSpecial.class;
+      %Block.extra;"
+>
+
+<!-- %Block.mix; includes all block elements plus %Misc.class;
+-->
+<!ENTITY % Block.mix
+     "%Heading.class;
+      | %List.class;
+      | %Block.class;
+      %Misc.class;"
+>
+
+<!-- ................  All Content Elements  .................. -->
+
+<!-- %Flow.mix; includes all text content, block and inline
+-->
+<!ENTITY % Flow.mix
+     "%Heading.class;
+      | %List.class;
+      | %Block.class;
+      | %Inline.class;
+      %Misc.class;"
+>
+
+<!-- end of xhtml11-model-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/util/xml/xhtml1.1/xhtml11.dtd	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,294 @@
+<!-- ....................................................................... -->
+<!-- XHTML 1.1 DTD  ........................................................ -->
+<!-- file: xhtml11.dtd
+-->
+
+<!-- XHTML 1.1 DTD
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+
+     The Extensible HyperText Markup Language (XHTML)
+     Copyright 1998-2001 World Wide Web Consortium
+        (Massachusetts Institute of Technology, Institut National de
+         Recherche en Informatique et en Automatique, Keio University).
+         All Rights Reserved.
+
+     Permission to use, copy, modify and distribute the XHTML DTD and its 
+     accompanying documentation for any purpose and without fee is hereby 
+     granted in perpetuity, provided that the above copyright notice and 
+     this paragraph appear in all copies.  The copyright holders make no 
+     representation about the suitability of the DTD for any purpose.
+
+     It is provided "as is" without expressed or implied warranty.
+
+        Author:     Murray M. Altheim <altheim@eng.sun.com>
+        Revision:   $Id: xhtml11.dtd,v 1.1 2004-02-23 16:11:21 ylafon Exp $
+
+-->
+<!-- This is the driver file for version 1.1 of the XHTML DTD.
+
+     Please use this formal public identifier to identify it:
+
+         "-//W3C//DTD XHTML 1.1//EN"
+-->
+<!ENTITY % XHTML.version  "-//W3C//DTD XHTML 1.1//EN" >
+
+<!-- Use this URI to identify the default namespace:
+
+         "http://www.w3.org/1999/xhtml"
+
+     See the Qualified Names module for information
+     on the use of namespace prefixes in the DTD.
+-->
+<!ENTITY % NS.prefixed "IGNORE" >
+<!ENTITY % XHTML.prefix "" >
+
+<!-- Reserved for use with the XLink namespace:
+-->
+<!ENTITY % XLINK.xmlns "" >
+<!ENTITY % XLINK.xmlns.attrib "" >
+
+<!-- For example, if you are using XHTML 1.1 directly, use the FPI
+     in the DOCTYPE declaration, with the xmlns attribute on the
+     document element to identify the default namespace:
+
+       <?xml version="1.0"?>
+       <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "xhtml11.dtd">
+       <html xmlns="http://www.w3.org/1999/xhtml"
+             xml:lang="en">
+       ...
+       </html>
+
+     Revisions:
+     (none)
+-->
+
+<!-- reserved for future use with document profiles -->
+<!ENTITY % XHTML.profile  "" >
+
+<!-- Bidirectional Text features
+     This feature-test entity is used to declare elements
+     and attributes used for bidirectional text support.
+-->
+<!ENTITY % XHTML.bidi  "INCLUDE" >
+
+<?doc type="doctype" role="title" { XHTML 1.1 } ?>
+
+<!-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
+
+<!-- Pre-Framework Redeclaration placeholder  .................... -->
+<!-- this serves as a location to insert markup declarations
+     into the DTD prior to the framework declarations.
+-->
+<!ENTITY % xhtml-prefw-redecl.module "IGNORE" >
+<![%xhtml-prefw-redecl.module;[
+%xhtml-prefw-redecl.mod;
+<!-- end of xhtml-prefw-redecl.module -->]]>
+
+<!ENTITY % xhtml-events.module "INCLUDE" >
+
+<!-- Inline Style Module  ........................................ -->
+<!ENTITY % xhtml-inlstyle.module "INCLUDE" >
+<![%xhtml-inlstyle.module;[
+<!ENTITY % xhtml-inlstyle.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Inline Style 1.0//EN"
+            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-inlstyle-1.mod" >
+%xhtml-inlstyle.mod;]]>
+
+<!-- declare Document Model module instantiated in framework
+-->
+<!ENTITY % xhtml-model.mod
+     PUBLIC "-//W3C//ENTITIES XHTML 1.1 Document Model 1.0//EN"
+            "xhtml11-model-1.mod" >
+
+<!-- Modular Framework Module (required) ......................... -->
+<!ENTITY % xhtml-framework.module "INCLUDE" >
+<![%xhtml-framework.module;[
+<!ENTITY % xhtml-framework.mod
+     PUBLIC "-//W3C//ENTITIES XHTML Modular Framework 1.0//EN"
+            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-framework-1.mod" >
+%xhtml-framework.mod;]]>
+
+<!-- Post-Framework Redeclaration placeholder  ................... -->
+<!-- this serves as a location to insert markup declarations
+     into the DTD following the framework declarations.
+-->
+<!ENTITY % xhtml-postfw-redecl.module "IGNORE" >
+<![%xhtml-postfw-redecl.module;[
+%xhtml-postfw-redecl.mod;
+<!-- end of xhtml-postfw-redecl.module -->]]>
+
+<!-- Text Module (Required)  ..................................... -->
+<!ENTITY % xhtml-text.module "INCLUDE" >
+<![%xhtml-text.module;[
+<!ENTITY % xhtml-text.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Text 1.0//EN"
+            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-text-1.mod" >
+%xhtml-text.mod;]]>
+
+<!-- Hypertext Module (required) ................................. -->
+<!ENTITY % xhtml-hypertext.module "INCLUDE" >
+<![%xhtml-hypertext.module;[
+<!ENTITY % xhtml-hypertext.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Hypertext 1.0//EN"
+            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-hypertext-1.mod" >
+%xhtml-hypertext.mod;]]>
+
+<!-- Lists Module (required)  .................................... -->
+<!ENTITY % xhtml-list.module "INCLUDE" >
+<![%xhtml-list.module;[
+<!ENTITY % xhtml-list.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Lists 1.0//EN"
+            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-list-1.mod" >
+%xhtml-list.mod;]]>
+
+<!-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
+
+<!-- Edit Module  ................................................ -->
+<!ENTITY % xhtml-edit.module "INCLUDE" >
+<![%xhtml-edit.module;[
+<!ENTITY % xhtml-edit.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Editing Elements 1.0//EN"
+            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-edit-1.mod" >
+%xhtml-edit.mod;]]>
+
+<!-- BIDI Override Module  ....................................... -->
+<!ENTITY % xhtml-bdo.module "%XHTML.bidi;" >
+<![%xhtml-bdo.module;[
+<!ENTITY % xhtml-bdo.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML BIDI Override Element 1.0//EN"
+            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-bdo-1.mod" >
+%xhtml-bdo.mod;]]>
+
+<!-- Ruby Module  ................................................ -->
+<!ENTITY % Ruby.common.attlists "INCLUDE" >
+<!ENTITY % Ruby.common.attrib "%Common.attrib;" >
+<!ENTITY % xhtml-ruby.module "INCLUDE" >
+<![%xhtml-ruby.module;[
+<!ENTITY % xhtml-ruby.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Ruby 1.0//EN"
+            "http://www.w3.org/TR/ruby/xhtml-ruby-1.mod" >
+%xhtml-ruby.mod;]]>
+
+<!-- Presentation Module  ........................................ -->
+<!ENTITY % xhtml-pres.module "INCLUDE" >
+<![%xhtml-pres.module;[
+<!ENTITY % xhtml-pres.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Presentation 1.0//EN"
+            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-pres-1.mod" >
+%xhtml-pres.mod;]]>
+
+<!-- Link Element Module  ........................................ -->
+<!ENTITY % xhtml-link.module "INCLUDE" >
+<![%xhtml-link.module;[
+<!ENTITY % xhtml-link.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Link Element 1.0//EN"
+            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-link-1.mod" >
+%xhtml-link.mod;]]>
+
+<!-- Document Metainformation Module  ............................ -->
+<!ENTITY % xhtml-meta.module "INCLUDE" >
+<![%xhtml-meta.module;[
+<!ENTITY % xhtml-meta.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Metainformation 1.0//EN"
+            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-meta-1.mod" >
+%xhtml-meta.mod;]]>
+
+<!-- Base Element Module  ........................................ -->
+<!ENTITY % xhtml-base.module "INCLUDE" >
+<![%xhtml-base.module;[
+<!ENTITY % xhtml-base.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Base Element 1.0//EN"
+            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-base-1.mod" >
+%xhtml-base.mod;]]>
+
+<!-- Scripting Module  ........................................... -->
+<!ENTITY % xhtml-script.module "INCLUDE" >
+<![%xhtml-script.module;[
+<!ENTITY % xhtml-script.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Scripting 1.0//EN"
+            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-script-1.mod" >
+%xhtml-script.mod;]]>
+
+<!-- Style Sheets Module  ......................................... -->
+<!ENTITY % xhtml-style.module "INCLUDE" >
+<![%xhtml-style.module;[
+<!ENTITY % xhtml-style.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Style Sheets 1.0//EN"
+            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-style-1.mod" >
+%xhtml-style.mod;]]>
+
+<!-- Image Module  ............................................... -->
+<!ENTITY % xhtml-image.module "INCLUDE" >
+<![%xhtml-image.module;[
+<!ENTITY % xhtml-image.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Images 1.0//EN"
+            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-image-1.mod" >
+%xhtml-image.mod;]]>
+
+<!-- Client-side Image Map Module  ............................... -->
+<!ENTITY % xhtml-csismap.module "INCLUDE" >
+<![%xhtml-csismap.module;[
+<!ENTITY % xhtml-csismap.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Client-side Image Maps 1.0//EN"
+            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-csismap-1.mod" >
+%xhtml-csismap.mod;]]>
+
+<!-- Server-side Image Map Module  ............................... -->
+<!ENTITY % xhtml-ssismap.module "INCLUDE" >
+<![%xhtml-ssismap.module;[
+<!ENTITY % xhtml-ssismap.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Server-side Image Maps 1.0//EN"
+            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-ssismap-1.mod" >
+%xhtml-ssismap.mod;]]>
+
+<!-- Param Element Module  ....................................... -->
+<!ENTITY % xhtml-param.module "INCLUDE" >
+<![%xhtml-param.module;[
+<!ENTITY % xhtml-param.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Param Element 1.0//EN"
+            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-param-1.mod" >
+%xhtml-param.mod;]]>
+
+<!-- Embedded Object Module  ..................................... -->
+<!ENTITY % xhtml-object.module "INCLUDE" >
+<![%xhtml-object.module;[
+<!ENTITY % xhtml-object.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Embedded Object 1.0//EN"
+            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-object-1.mod" >
+%xhtml-object.mod;]]>
+
+<!-- Tables Module ............................................... -->
+<!ENTITY % xhtml-table.module "INCLUDE" >
+<![%xhtml-table.module;[
+<!ENTITY % xhtml-table.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Tables 1.0//EN"
+            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-table-1.mod" >
+%xhtml-table.mod;]]>
+
+<!-- Forms Module  ............................................... -->
+<!ENTITY % xhtml-form.module "INCLUDE" >
+<![%xhtml-form.module;[
+<!ENTITY % xhtml-form.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Forms 1.0//EN"
+            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-form-1.mod" >
+%xhtml-form.mod;]]>
+
+<!-- Legacy Markup ............................................... -->
+<!ENTITY % xhtml-legacy.module "IGNORE" >
+<![%xhtml-legacy.module;[
+<!ENTITY % xhtml-legacy.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Legacy Markup 1.0//EN"
+            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-legacy-1.mod" >
+%xhtml-legacy.mod;]]>
+
+<!-- Document Structure Module (required)  ....................... -->
+<!ENTITY % xhtml-struct.module "INCLUDE" >
+<![%xhtml-struct.module;[
+<!ENTITY % xhtml-struct.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Document Structure 1.0//EN"
+            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-struct-1.mod" >
+%xhtml-struct.mod;]]>
+
+<!-- end of XHTML 1.1 DTD  ................................................. -->
+<!-- ....................................................................... -->
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/values/ATSCColor.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/values/CssAngle.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/values/CssColor.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/values/CssColorCSS1.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/values/CssColorCSS2.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/values/CssColorCSS21.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/values/CssColorConstants.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/values/CssDate.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/values/CssExpression$ValueOperator.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/values/CssExpression.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/values/CssFrequency.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/values/CssFunction.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/values/CssIdent.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/values/CssLength.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/values/CssNumber.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/values/CssOperator.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/values/CssPercentage.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/values/CssResolution.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/values/CssString.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/values/CssTime.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/values/CssTypes.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/values/CssURL.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/values/CssUnicodeRange.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/values/CssValue.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/values/CssValueFloat.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/values/HSL.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/values/HSLA.class has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/bin/org/w3c/css/values/Makefile	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,47 @@
+SRCS = CssFrequency.java CssPercentage.java\
+CssAngle.java CssIdent.java CssString.java\
+CssColor.java CssLength.java CssTime.java\
+CssColorConstants.java CssNumber.java CssURL.java\
+CssExpression.java CssOperator.java CssValue.java \
+CssFunction.java
+
+OBJS = $(SRCS:.java=.class)
+
+PACKAGE = org.w3c.css.values
+JAVAC = jc -val
+JAVADOC = javadoc
+JAVADOCFLAGS = -version -d docs -protected
+JAVACFLAGS =
+MAKEDEPEND = jmakedepend
+
+.SUFFIXES: .class .java
+.java.class:; $(JAVAC) $(JAVACFLAGS) $<
+
+all: $(OBJS)
+
+javadoc:; $(JAVADOC) $(JAVADOCFLAGS) $(PACKAGE)
+
+clean:; -rm -f $(OBJS) *~ core
+
+depend:; $(MAKEDEPEND) $(SRCS)
+
+# DO NOT DELETE THIS LINE -- make depend depends on it.
+CssURL.class:: CssURL.java\
+	/u/crash/0/w3c/plehegar/Work/Java/java/net/URL.class\
+	/u/crash/0/w3c/plehegar/Work/Java/java/net/MalformedURLException.class
+CssColor.class:: CssColor.java\
+	/u/crash/0/w3c/plehegar/Work/Java/java/util/Hashtable.class
+CssNumber.class:: CssNumber.java
+CssColorConstants.class:: CssColorConstants.java
+CssValue.class:: CssValue.java
+CssTime.class:: CssTime.java
+CssString.class:: CssString.java
+CssFunction.class:: CssFunction.java
+CssOperator.class:: CssOperator.java
+CssIdent.class:: CssIdent.java
+CssPercentage.class:: CssPercentage.java
+CssFrequency.class:: CssFrequency.java
+CssAngle.class:: CssAngle.java
+CssExpression.class:: CssExpression.java\
+	/u/crash/0/w3c/plehegar/Work/Java/java/util/Vector.class
+CssLength.class:: CssLength.java
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/values/RGB.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/values/RGBA.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/css/values/RGBATSC.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/www/mime/MimeType.class has changed
Binary file org.symbian.tools.wrttools/bin/org/w3c/www/mime/MimeTypeFormatException.class has changed
--- a/org.symbian.tools.wrttools/build.properties	Thu Jan 07 14:00:45 2010 -0800
+++ b/org.symbian.tools.wrttools/build.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -1,5 +1,11 @@
-source.. = src/
+source.. = src/,\
+           cssvalidation-src/,\
+           cssvalidator-mods-src/
 output.. = bin/
 bin.includes = META-INF/,\
                .,\
-               plugin.xml
+               plugin.xml,\
+               projecttemplates/,\
+               lib/,\
+               licenses/,\
+               icons/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/css/.cvsignore	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,2 @@
+observer-response.xsd
+properties.zip
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/css/CssCascadingOrder.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,234 @@
+//
+// $Id: CssCascadingOrder.java,v 1.7 2009-03-06 11:15:38 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 org.w3c.css.css;
+
+import java.util.Enumeration;
+
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.CompareFunction;
+import org.w3c.css.util.QuickSortAlgorithm;
+import org.w3c.css.util.SortAlgorithm;
+import org.w3c.css.util.Util;
+
+/**
+ *   <H3>
+ *      &nbsp;&nbsp; Cascading order
+ *   </H3>
+ *
+ * <P> Conflicting rules are intrinsic to the CSS mechanism. To find the value
+ * for an element/property combination, the following algorithm must be
+ * followed:
+ *
+ * <OL>
+ * <LI> Find all declarations that apply to the element/property in question.
+ * Declarations apply if the selector matches the element in question. If no
+ * declarations apply, the inherited value is used. If there is no inherited
+ * value (this is the case for the 'HTML' element and for properties that do
+ * not inherit), the initial value is used.
+ *
+ * <LI> Sort the declarations by explicit weight: declarations marked
+ * '!important' carry more weight than unmarked (normal) declarations.
+ *
+ * <LI> Sort by origin: the author's style sheets override the reader's style
+ * sheet which override the UA's default values. An imported style sheet has
+ * the same origin as the style sheet from which it is imported.
+ *
+ * <LI> Sort by specificity of selector: more specific selectors will override
+ * more general ones. To find the specificity, count the number of ID
+ * attributes in the selector (a), the number of CLASS attributes in the
+ * selector (b), and the number of tag names in the selector (c). Concatenating
+ * the three numbers (in a number system with a large base) gives the
+ * specificity. Some examples:
+ *
+ * <PRE>
+ *   LI            {...}  /* a=0 b=0 c=1 -&gt; specificity =   1 * /
+ *   UL LI         {...}  /* a=0 b=0 c=2 -&gt; specificity =   2 * /
+ *   UL OL LI      {...}  /* a=0 b=0 c=3 -&gt; specificity =   3 * /
+ *   LI.red        {...}  /* a=0 b=1 c=1 -&gt; specificity =  11 * /
+ *   UL OL LI.red  {...}  /* a=0 b=1 c=3 -&gt; specificity =  13 * /
+ *   #x34y         {...}  /* a=1 b=0 c=0 -&gt; specificity = 100 * /
+ * </PRE>
+ *
+ * <P> Pseudo-elements and pseudo-classes are counted as normal elements and
+ * classes, respectively.
+ *
+ * <LI> Sort by order specified: if two rules have the same weight, the latter
+ * specified wins. Rules in imported style sheets are considered to be before
+ * any rules in the style sheet itself.
+ * </OL>
+ *
+ * <P> The search for the property value can be terminated whenever one rule
+ * has a higher weight than the other rules that apply to the same
+ * element/property combination.
+ *
+ * <P> This strategy gives author's style sheets considerably higher weight
+ * than those of the reader. It is therefore important that the reader has the
+ * ability to turn off the influence of a certain style sheet, e.g. through a
+ * pull-down menu.
+ *
+ * <P> A declaration in the 'STYLE' attribute of an element has the same weight
+ * as a declaration with an ID-based selector that is specified at the end of
+ * the style sheet:
+ *
+ * <PRE>
+ * &lt;STYLE TYPE="text/css"&gt;
+ *   #x97z { color: blue }
+ * &lt;/STYLE&gt;
+ * &lt;P ID=x97z STYLE="color: red"&gt;
+ * </PRE>
+ *
+ * <P> In the above example, the color of the 'P' element would be
+ * red. Although the specificity is the same for both declarations, the
+ * declaration in the 'STYLE' attribute will override the one in the 'STYLE'
+ * element because of cascading rule number 5.
+ *
+ * <P> The UA may choose to honor other stylistic HTML attributes, for example
+ * 'ALIGN'.  If so, these attributes are translated to the corresponding CSS
+ * rules with specificity equal to 1. The rules are assumed to be at the start
+ * of the author style sheet and may be overridden by subsequent style sheet
+ * rules. In a transition phase, this policy will make it easier for stylistic
+ * attributes to coexist with style sheets.
+ *
+ * @version $Revision: 1.7 $
+ */
+public final class CssCascadingOrder {
+
+    CssProperty[] propertyData;
+    int propertyCount;
+    final int capacityIncrement = 10;
+
+    /**
+     * Order all properties and returns the winner.
+     *
+     * @param property The default value returned if there is no property.
+     * @param style The current style sheet where we can find all properties.
+     * @param selector The current context.
+     * @return the property with the right value.
+     */
+    public CssProperty order(CssProperty property,
+			     StyleSheet style, CssSelectors selector) {
+	//int i = 0;
+	propertyData = new CssProperty[10];
+	propertyCount = 0;
+	Util.verbose("CASCADING ORDER " + property.getPropertyName()
+		     + " in " + selector);
+
+	// looking for all declarations that apply to the element/property in
+	// question. (step 1)
+	for (Enumeration e = style.getRules().elements(); e.hasMoreElements();) {
+	    CssSelectors context = (CssSelectors) e.nextElement();
+
+	    Util.verbose("######## test with " + context
+			 + " and " + selector);
+	    //	    if (!selector.equals(context) && context.canApply(selector)) {
+	    if (context.canApply(selector)) {
+		// here, don't try to resolve
+		CssProperty prop =
+		    property.getPropertyInStyle(context.getStyle(), false);
+		Util.verbose("%%%%%%%%%%%%%%%%% Found " + context);
+		if (prop != null) {
+		    addProperty(prop);
+		}
+	    }
+	}
+
+	if (propertyCount == 0) {
+	    // if I found nothing
+	    if (selector.getNext() != null && property.inherited()) {
+		// here, I can try to resolve
+		Util.verbose("Found nothing ... try the next "
+			     + selector.getNext());
+		CssStyle s = style.getStyle(selector.getNext());
+		property = property.getPropertyInStyle(s, true);
+	    } // else use the default value
+	} else {
+	    Util.verbose("@@@@@@@@@@@@@@ FOUND "
+			 + propertyCount + " properties");
+	    // runs the cascading order
+	    property = getProperty(selector);
+
+	    if (property.isSoftlyInherited()
+		&& selector.getNext() != null) {
+		// the value of the property is inherited,
+		// recompute again ....
+		CssStyle s = style.getStyle(selector.getNext());
+		property = property.getPropertyInStyle(s, true);
+	    }
+	}
+	// duplicate the property because I change the context ...
+	property = property.duplicate();
+	property.setSelectors(selector);
+
+	return property;
+    }
+
+    // here you can find the algorithm for the cascading order
+    private CssProperty getProperty(CssSelectors selector) {
+	SortAlgorithm sort = new QuickSortAlgorithm();
+
+	// sort by explicit weight and origin (step 2 and 3)
+	sort.sort(propertyData, 0, propertyCount - 1,
+		  new CompareExplicitWeight());
+	int old = propertyData[0].getExplicitWeight();
+	int end = 0;
+	while (end < propertyCount &&
+	       propertyData[end].getExplicitWeight() == old) {
+	    end++;
+	}
+
+	// sort by specificity (step 4)
+	sort.sort(propertyData, 0, end-1, new CompareSpecificity());
+	old = propertyData[0].getSelectors().getSpecificity();
+	end = 0;
+	while (end < propertyCount &&
+	       propertyData[end].getSelectors().getSpecificity() == old) {
+	    end++;
+	}
+
+	// sort by order specified (step 5)
+	sort.sort(propertyData, 0, end - 1, new CompareOrderSpecified());
+
+	return propertyData[0];
+    }
+
+    private final void addProperty(CssProperty property) {
+	int oldCapacity = propertyData.length;
+	if (propertyCount + 1 > oldCapacity) {
+	    CssProperty oldData[] = propertyData;
+	    propertyData = new CssProperty[oldCapacity + capacityIncrement];
+	    System.arraycopy(oldData, 0, propertyData, 0, propertyCount);
+	}
+	propertyData[propertyCount++] = property;
+    }
+
+}
+
+// all compare functions used in the cascading order
+
+class CompareExplicitWeight extends CompareFunction {
+    public boolean compare(Object obj1, Object obj2) {
+	return (((CssProperty) obj1).getExplicitWeight() >
+		((CssProperty) obj2).getExplicitWeight());
+    }
+}
+
+class CompareSpecificity extends CompareFunction {
+    public boolean compare(Object obj1, Object obj2) {
+	return (((CssProperty) obj1).getSelectors().getSpecificity() >
+		((CssProperty) obj2).getSelectors().getSpecificity());
+    }
+}
+
+class CompareOrderSpecified extends CompareFunction {
+    public boolean compare(Object obj1, Object obj2) {
+	return (((CssProperty) obj1).getOrderSpecified() >
+		((CssProperty) obj2).getOrderSpecified());
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/css/CssParser.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,137 @@
+//
+// $Id: CssParser.java,v 1.6 2005-09-14 15:14:17 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 org.w3c.css.css;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+
+import org.w3c.css.util.ApplContext;
+
+/**
+ * This class describes how to implements your cascading
+ * style sheet parser.
+ *
+ * You must implements this interfaces if you want to have
+ * a backward compatibilitie with other CSS parser.
+ * <p>
+ * Typically, it is used like this :
+ * <p>
+ * <code>
+ *  YourParser parser = new YourParser();<br>
+ *  parser.parseURL(yourURLDocument, StyleSheetOrigin.USER);<br>
+ *  StyleSheet style = parser.getStyleSheet();<br>
+ *  // here, i want an HTML document to output<br>
+ *  StyleSheetGenerator.setDocumentBase("html.properties");<br>
+ *  StyleSheetGenerator generator = new StyleSheetGenerator("foo",
+ *                                                          style,
+ *                                                          "foo.css",
+ *                                                          2);<br>
+ *  generator.print(new PrintStream(System.out));<br>
+ * </code>
+ *
+ * @see org.w3c.css.css.StyleSheetParser
+ * @version $Revision: 1.6 $
+ */
+public interface CssParser {
+
+  /**
+   * Reinitialize this parser
+   */
+  public abstract void reInit();
+
+  /**
+   * Get the style sheet after a parse.
+   *
+   * @return The resulted style sheet
+   */
+  public abstract StyleSheet getStyleSheet();
+
+    /**
+     * @param url the URL containing the style sheet
+     * @param title the title of the stylesheet
+     * @param kind may be a stylesheet or an alternate stylesheet
+     * @param media the media to apply this
+     * @param origin the origin of the style sheet
+     * @exception IOException an IO error
+     */
+    public void parseURL(ApplContext ac, URL url, String title, String kind,
+			 String media, int origin);
+
+  /**
+   * Parse a STYLE element.
+   * The real difference between this method and the precedent
+   * is that this method can take a string. The URL is used
+   * to resolve import statement and URL statement in the style
+   * sheet.
+   * <p>
+   * For a backward compatibility, <code>parseStyleElement</code> and
+   * <code>parseStyleAttribute</code> use a string for the input.
+   *
+   * @param input the input string.
+   * @param url  the URL where the input stream comes from.
+   * @param lineno The number line in the source document.
+   *               It is used for error message
+   * @deprecated Replaced by parseStyleElement
+   * @see #parseStyleElement(InputStream, URL, int)
+   */
+  public abstract void parseStyleElement(ApplContext ac, String input,
+					 URL url, int lineno);
+
+  /**
+   * Parse a STYLE element.
+   * The real difference between this method and the precedent
+   * is that this method can take an InputStream. The URL is used
+   * to resolve import statement and URL statement in the style
+   * sheet.
+   *
+   * @param input the input stream.
+   * @param title the title of the style element
+   * @param media the media of the style element
+   * @param url  the URL where the input stream comes from.
+   * @param lineno The number line in the source document. It is used for error message
+   */
+  public abstract void parseStyleElement(ApplContext ac, InputStream input,
+					 String title, String media, URL url,
+					 int lineno);
+
+  /**
+   * Parser a STYLE attribute.
+   * Here, you must generate your own uniq id for the context.
+   * After, you can reference this style attribute by the id.
+   * <p>
+   * <strong>Be careful, the id must be uniq !</strong>
+   * <p>
+   * For a backward compatibility, <code>parseStyleElement</code> and
+   * <code>parseStyleAttribute</code> use a string for the input.
+   *
+   * @param input the input string.
+   * @param id your uniq id to reference this style attribute.
+   * @param url  the URL where the input stream comes from.
+   * @param lineno The number line in the source document. It is used for error message.
+   * @deprecated Replaced by parseStyleAttribute
+   * @see #parseStyleAttribute(InputStream, String, URL, int)
+   */
+  public abstract void parseStyleAttribute(ApplContext ac, String input, String id, URL url, int lineno);
+
+  /**
+   * Parser a STYLE attribute.
+   * Here, you must generate your own uniq id for the context.
+   * After, you can reference this style attribute by the id.
+   * <p>
+   * <strong>Be careful, the id must be uniq !</strong>
+   *
+   * @param input the input stream.
+   * @param id your uniq id to reference this style attribute.
+   * @param url  the URL where the input stream comes from.
+   * @param lineno The number line in the source document. It is used for error message.
+   */
+  public abstract void parseStyleAttribute(ApplContext ac, InputStream input,
+					   String id, URL url, int lineno);
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/css/CssRuleList.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,76 @@
+// $Id: CssRuleList.java,v 1.19 2009-02-25 20:44:49 ylafon Exp $
+// Author: Sijtsche de Jong
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2003.
+// Please first read the full copyright statement in file COPYRIGHT.html
+
+package org.w3c.css.css;
+
+import java.util.Vector;
+
+import org.w3c.css.parser.AtRule;
+import org.w3c.css.util.Messages;
+
+public class CssRuleList {
+
+    AtRule atRule;
+    String atRuleString;
+    Vector rulelist;
+    public String pseudopage;
+    String indent;
+
+    public CssRuleList() {
+	atRule = null;
+	atRuleString = new String();
+	rulelist = new Vector();
+	indent = new String();
+    }
+
+    public void addStyleRule(CssStyleRule stylerule) {
+	rulelist.addElement(stylerule);
+    }
+
+    public Vector getStyleRules() {
+	return rulelist;
+    }
+
+    public void addAtRule(AtRule atRule) {
+	this.atRule = atRule;
+	atRuleString = atRule.toString();
+    }
+
+    public String getAtRule() {
+	return atRuleString;
+    }
+    
+    public String getAtRuleEscaped() {
+	return Messages.escapeString(atRuleString);
+    }
+	
+    public boolean isEmpty() {
+	return rulelist.isEmpty();
+    }
+
+    public String toString() {
+	StringBuilder ret = new StringBuilder();
+	if (null != atRule && atRule.isEmpty()) {
+	    if (!atRuleString.equals("")) {
+		ret.append(atRuleString);
+		ret.append("\n\n");
+	    }
+	} else {
+	    if (!atRuleString.equals("")) {
+		ret.append(atRuleString);
+		ret.append(" {\n\n");
+	    }
+	    for (int i = 0; i < rulelist.size(); i++) {
+		ret.append((CssStyleRule) rulelist.elementAt(i));
+	    }
+
+	    if (!atRuleString.equals("")) {
+		ret.append("}\n");
+	    }
+	}
+	return ret.toString();
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/css/CssStyleRule.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,102 @@
+// $Id: CssStyleRule.java,v 1.18 2009-02-25 20:44:49 ylafon Exp $
+// Author: Sijtsche de Jong
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2003.
+// Please first read the full copyright statement in file COPYRIGHT.html
+
+package org.w3c.css.css;
+
+import java.util.Vector;
+
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.Messages;
+
+public class CssStyleRule {
+
+    public CssStyleRule(String indent, String selectors, 
+			Vector properties, boolean important) 
+    {
+	this.selectors = selectors;
+	this.properties = properties;
+	this.indent = indent;
+    }
+    /**
+     * This function is only used inside the velocity template
+     * @return the list of selectors in a string
+     */
+    public String getSelectors() {
+	return selectors;
+    }
+    
+    public String getSelectorsEscaped() {
+	return Messages.escapeString(selectors);
+    }
+
+    /**
+     * This function is only used inside the velocity template
+     * @return the list of properties in a Vector
+     */
+    public Vector getProperties() {
+	return properties;
+    }
+
+    public String toString() {
+	StringBuilder ret = new StringBuilder();
+	if (selectors != null) {
+	    ret.append(selectors);
+	    ret.append(' ');
+	    ret.append('{');
+	    ret.append('\n');
+	}
+
+	for (int i = 0; i < properties.size(); i++) {
+	    CssProperty property = (CssProperty) properties.elementAt(i);
+	    ret.append(indent);
+	    ret.append("   ");
+	    ret.append(property.getPropertyName());
+	    ret.append(" : ");
+	    ret.append(property.toString());
+	    if (property.getImportant()) {
+		ret.append(" important");
+	    }
+	    ret.append(';');
+	    ret.append('\n');
+	}
+	if (selectors != null) {
+	    ret.append(indent);
+	    ret.append('}');
+	    ret.append('\n');
+	    ret.append('\n');
+	}
+	return ret.toString();
+    }
+
+    public String toStringEscaped() {
+	return Messages.escapeString(toString());
+    }
+
+    /*
+     * public String toHTML() { StringBuffer ret = new StringBuffer("<li><span
+     * class='selector'>"); if (selectors != null) { ret.append(selectors);
+     * ret.append("</span> {<ul class='vRule'>\n"); }
+     * 
+     * for (int i = 0; i < properties.size() ; i++) { CssProperty property =
+     * (CssProperty)properties.elementAt(i); ret.append("<li>");
+     * ret.append(property.getPropertyName()); ret.append(" : <span
+     * class='vPropertyValue'>"); ret.append(property.toString());
+     * ret.append("</span>");
+     * if (property.getImportant()) { ret.append(" !important"); } 
+     * ret.append(";</li>\n"); }
+     * ret.append("</ul>}</li>\n\n"); return ret.toString(); }
+     */
+	
+    /**
+     * This method returns a part of the style sheet to be displayed
+     * Some identation (\t) was necessary to maintain the correct formatting
+     * of the html output.
+     */
+
+    private String indent;
+    private String selectors;
+    private Vector properties;
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/css/DocumentParser.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,145 @@
+//
+// $Id: DocumentParser.java,v 1.3 2008-12-10 15:25:51 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 org.w3c.css.css;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.net.URLConnection;
+
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.HTTPURL;
+import org.w3c.css.util.Util;
+
+import org.w3c.www.mime.MimeType;
+import org.w3c.www.mime.MimeTypeFormatException;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public final class DocumentParser {
+
+    private StyleSheet style;
+    private URL htmlURL;
+    private Exception exception;
+    private ApplContext ac;
+
+    /**
+     * Create a new DocumentParser
+     * 
+     * @exception Exception
+     *                An error
+     */
+    public DocumentParser(ApplContext ac, String urlString) throws Exception {
+	this.htmlURL = HTTPURL.getURL(urlString);
+	this.ac = ac;
+	urlString = htmlURL.toString();
+	String urlLower = urlString.toLowerCase();
+	String media = ac.getMedium();
+	String urlProtocol = htmlURL.getProtocol();
+
+	if (!"http".equals(urlProtocol) && !"https".equals(urlProtocol)) {
+	    if (urlLower.endsWith(".css")) {
+		StyleSheetParser parser = new StyleSheetParser();
+		parser.parseURL(ac, htmlURL, null, null, media, StyleSheetOrigin.AUTHOR);
+		style = parser.getStyleSheet();
+	    } else if (urlLower.endsWith(".html") || urlLower.endsWith(".shtml") || urlLower.endsWith("/")) {
+		TagSoupStyleSheetHandler handler = new TagSoupStyleSheetHandler(htmlURL, ac);
+		handler.parse(htmlURL);
+		style = handler.getStyleSheet();
+		if (style != null) {
+		    style.setType("text/html");
+		}
+	    } else if (urlLower.endsWith(".xhtml") || urlLower.endsWith(".xml")) {
+		// Seems like we need to use tagsout in this case as well
+		XMLStyleSheetHandler handler = new XMLStyleSheetHandler(htmlURL, ac);
+		handler.parse(htmlURL);
+		style = handler.getStyleSheet();
+		if (style != null) {
+		    style.setType("text/xml");
+		}
+	    } else {
+		throw new Exception("Unknown file");
+	    }
+	} else {
+	    URLConnection connection = null;
+
+	    try {
+		boolean isXML = false;
+		String cType;
+
+		// @@ hum, maybe? (plh, yes probably :-) )
+		String credential = ac.getCredential();
+
+		connection = HTTPURL.getConnection(htmlURL, ac);
+		htmlURL = connection.getURL();
+
+		String httpCL = connection.getHeaderField("Content-Location");
+		if (httpCL != null) {
+		    htmlURL = HTTPURL.getURL(htmlURL, httpCL);
+		}
+
+		cType = connection.getContentType();
+		if (cType == null) {
+		    cType = "unknown/unknown";
+		}
+		MimeType contentType = null;
+		try {
+		    contentType = new MimeType(cType);
+		} catch (MimeTypeFormatException ex) {
+		}
+
+		if (Util.onDebug) {
+		    System.err.println("[DEBUG] content type is [" + contentType + ']');
+		}
+
+		if (contentType.match(MimeType.TEXT_HTML) == MimeType.MATCH_SPECIFIC_SUBTYPE) {
+		    TagSoupStyleSheetHandler handler;
+		    handler = new TagSoupStyleSheetHandler(htmlURL, ac);
+		    handler.parse(urlString, connection);
+		    style = handler.getStyleSheet();
+
+		    if (style != null) {
+			style.setType("text/html");
+		    }
+		} else if (contentType.match(MimeType.TEXT_CSS) == MimeType.MATCH_SPECIFIC_SUBTYPE) {
+		    StyleSheetParser parser = new StyleSheetParser();
+		    parser.parseURL(ac, htmlURL, null, null, media, StyleSheetOrigin.AUTHOR);
+		    style = parser.getStyleSheet();
+		} else if ((contentType.match(MimeType.TEXT_XML) == MimeType.MATCH_SPECIFIC_SUBTYPE)
+			   || (contentType.match(MimeType.APPLICATION_XHTML_XML) == MimeType.MATCH_SPECIFIC_SUBTYPE)) {
+		    // TagSoup ?
+		    XMLStyleSheetHandler handler = new XMLStyleSheetHandler(htmlURL, ac);
+		    handler.parse(urlString, connection);
+		    style = handler.getStyleSheet();
+
+		    if (style != null) {
+			style.setType("text/xml");
+		    }
+		} else {
+		    throw new IOException("Unknown mime type : " + contentType);
+		}
+	    } finally {
+		try {
+		    connection.getInputStream().close();
+		} catch (Exception e) {
+		}
+	    }
+	}
+    }
+
+    /**
+     * Returns the recognized style sheet.
+     * 
+     * @return A style sheet.
+     */
+    public StyleSheet getStyleSheet() {
+	return style;
+    }
+
+} // HTMLStyleSheetParser
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/css/Makefile	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,39 @@
+SRCS = CssCascadingOrder.java StyleSheetCom.java \
+CssParser.java StyleSheetGenerator.java \
+StyleSheetParser.java StyleSheet.java\
+HTMLStyleSheetParser.java StyleSheetXMLParser.java \
+
+
+OBJS = $(SRCS:.java=.class)
+
+PACKAGE = org.w3c.css.css
+JAVAC = jc -val
+JAVADOC = javadoc
+JAVADOCFLAGS = -version -d docs -protected
+JAVACFLAGS =
+MAKEDEPEND = jmakedepend
+
+.SUFFIXES: .class .java
+.java.class:; $(JAVAC) $(JAVACFLAGS) $<
+
+all: $(OBJS) html.properties.ja html.properties.zh-cn
+
+javadoc:; $(JAVADOC) $(JAVADOCFLAGS) $(PACKAGE)
+
+clean:; -rm -f $(OBJS) *~ core
+
+depend:; $(MAKEDEPEND) $(SRCS)
+
+# DO NOT DELETE THIS LINE -- make depend depends on it.
+StyleSheetParser.class:: StyleSheetParser.java
+StyleSheetCom.class:: StyleSheetCom.java
+StyleSheetGenerator.class:: StyleSheetGenerator.java
+CssParser.class:: CssParser.java
+CssCascadingOrder.class:: CssCascadingOrder.java
+HTMLStyleSheetParser.class:: HTMLStyleSheetParser.java
+StyleSheet.class:: StyleSheet.java
+
+html.properties.ja: html.properties.ja.EUCJIS
+	native2ascii -encoding EUCJIS html.properties.ja.EUCJIS html.properties.ja
+html.properties.zh-cn: html.properties.zh-cn.GB
+	native2ascii -encoding euc-cn html.properties.zh-cn.GB html.properties.zh-cn
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/css/StyleReport.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,17 @@
+// $Id: StyleReport.java,v 1.4 2007-07-13 13:32:19 julien Exp $
+// Author: Yves Lafon <ylafon@w3.org>
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2003.
+// Please first read the full copyright statement in file COPYRIGHT.html
+
+package org.w3c.css.css;
+
+import java.io.PrintWriter;
+
+public abstract class StyleReport {
+
+    abstract public void print(PrintWriter out);
+    
+    abstract public void desactivateError();
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/css/StyleSheetOrigin.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,31 @@
+//
+// $Id: StyleSheetOrigin.java,v 1.5 2007-11-26 05:07:17 ot 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 org.w3c.css.css;
+
+/**
+ * @version $Revision: 1.5 $
+ * @author  Philippe Le Hegaret
+ */
+public interface StyleSheetOrigin {
+
+    /**
+     * This property comes from the UA's default values.
+     */
+    public static final int BROWSER = 1;
+
+    /**
+     * This property comes from the reader's style sheet.
+     */
+    public static final int READER = 2;
+
+    /**
+     * This property comes from the author's style sheet.
+     */
+    public static final int AUTHOR = 3;
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/css/StyleSheetParser.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,396 @@
+//
+// $Id: StyleSheetParser.java,v 1.14 2009-02-13 21:50:15 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 org.w3c.css.css;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.util.Enumeration;
+import java.util.StringTokenizer;
+import java.util.Vector;
+
+import java.lang.reflect.Constructor;
+
+import org.w3c.css.parser.AtRule;
+import org.w3c.css.parser.AtRuleMedia;
+import org.w3c.css.parser.AtRulePage;
+import org.w3c.css.parser.CssError;
+import org.w3c.css.parser.CssFouffa;
+import org.w3c.css.parser.CssParseException;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssValidatorListener;
+import org.w3c.css.parser.Errors;
+import org.w3c.css.parser.analyzer.TokenMgrError;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.selectors.IdSelector;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.util.Util;
+import org.w3c.css.util.Warning;
+import org.w3c.css.util.Warnings;
+
+/**
+ * @version $Revision: 1.14 $
+ */
+public final class StyleSheetParser
+    implements CssValidatorListener, CssParser {
+
+    private static Constructor co = null;
+
+    static {
+	try {
+	    Class c = java.lang.Exception.class;
+	    Class cp[] = { java.lang.Exception.class };
+	    co = c.getDeclaredConstructor(cp);
+	} catch (NoSuchMethodException ex) {
+	    co = null;
+	}
+    }
+
+    CssFouffa  cssFouffa;
+    StyleSheet style = new StyleSheet();
+
+    public void reInit() {
+    	style = new StyleSheet();
+    }
+
+    public StyleSheet getStyleSheet() {
+	return style;
+    }
+
+    public void setWarningLevel(int warningLevel) {
+    	style.setWarningLevel(warningLevel);
+    }
+    
+    public void notifyErrors(Errors errors) {
+    	style.addErrors(errors);
+    }
+
+    public void notifyWarnings(Warnings warnings) {
+    	style.addWarnings(warnings);
+    }
+
+    /**
+     * Adds a vector of properties to a selector.
+     *
+     * @param selector     the selector
+     * @param declarations Properties to associate with contexts
+     */
+    public void handleRule(ApplContext ac, CssSelectors selector,
+			   Vector properties)
+    {
+	if (selector.getAtRule() instanceof AtRulePage) {
+	    style.remove(selector);
+	}
+	for (Enumeration e2 = properties.elements();e2.hasMoreElements();) {
+	    CssProperty property = (CssProperty) e2.nextElement();
+	    property.setSelectors(selector);
+	    style.addProperty(selector, property);
+	}
+    }
+
+    // part added by Sijtsche de Jong
+
+    public void addCharSet(String charset) {
+	style.addCharSet(charset);
+    }
+
+    public void newAtRule(AtRule atRule) {
+	style.newAtRule(atRule);
+    }
+
+    public void endOfAtRule() {
+	style.endOfAtRule();
+    }
+
+    public void setImportant(boolean important) {
+	style.setImportant(important);
+    }
+
+    public void setSelectorList(Vector selectors) {
+	style.setSelectorList(selectors);
+    }
+
+    public void setProperty(Vector properties) {
+	style.setProperty(properties);
+    }
+
+    public void endOfRule() {
+	style.endOfRule();
+    }
+
+    public void removeThisRule() {
+	style.removeThisRule();
+    }
+
+    public void removeThisAtRule() {
+	style.removeThisAtRule();
+    }
+
+    //end of part added by Sijtsche de Jong
+
+    /**
+     * Handles an at-rule.
+     *
+     * <p>The parameter <code>value</code> can be :
+     * <DL>
+     * <DT>CssString
+     * <DD>The value coming from a string.
+     * <DT>CssURL
+     * <DD>The value coming from an URL.
+     * <DT>Vector
+     * <DD>The value is a vector of declarations (it contains properties).
+     *     This feature is not legal, so be careful.
+     * </DL>
+     *
+     * @param ident The ident for this at-rule (for example: 'font-face')
+     * @param string The string representation if this at-rule
+     */
+    public void handleAtRule(ApplContext ac, String ident, String string) {
+	style.getWarnings().addWarning(new Warning(cssFouffa.getSourceFile(),
+						   cssFouffa.getLine(),
+						   "at-rule",
+						   2,
+						   new String[] { ident, string },
+						   ac));
+	//stylesheet.addAtRule(atRule);
+    }
+
+    /**
+     * @param url the URL containing the style sheet
+     * @param title the title of the stylesheet
+     * @param kind may be a stylesheet or an alternate stylesheet
+     * @param media the media to apply this
+     * @param origin the origin of the style sheet
+     * @exception IOException an IO error
+     */
+    public void parseURL(ApplContext ac, URL url, String title,
+			 String kind, String media,
+			 int origin) {
+    	setWarningLevel(ac.getWarningLevel());
+	if (Util.onDebug) {
+	    System.err.println( "StyleSheet.parseURL(" + url + ", "
+				+ title + ", "
+				+ kind + ", " + media + ", "
+				+ origin + ")" );
+	}
+	if (kind != null) {
+	    kind = kind.trim().toLowerCase();
+	    if (!kind.equals("stylesheet") && !kind.equals("alternate stylesheet")) {
+		return;
+	    }
+	}
+
+	try {
+	    ac.setOrigin(origin);
+//	    if (cssFouffa == null) {
+	    cssFouffa = new CssFouffa(ac, url);
+	    cssFouffa.addListener(this);
+//	    } else {
+//		cssFouffa.ReInit(ac, url);
+//	    }
+
+	    //	    cssFouffa.setResponse(res);
+
+	    // removed plh 2001-03-08
+	    // cssFouffa.setOrigin(origin);
+	    //	    cssFouffa.setDefaultMedium(defaultmedium);
+	    //	    cssFouffa.doConfig();
+	    if (media == null) {
+		if (ac.getMedium() == null) {
+		    media = "all";
+		} else {
+		    media = ac.getMedium();
+		}
+	    }
+	    AtRuleMedia m = new AtRuleMedia();
+	    try {
+	    addMedias(m, media, ac);
+		cssFouffa.setAtRule(m);
+	    } catch (org.w3c.css.util.InvalidParamException e) {
+		Errors er = new Errors();
+		er.addError(new org.w3c.css.parser.CssError(url.toString(),
+							    -1, e));
+		notifyErrors(er);
+		return;
+	    }
+	    cssFouffa.parseStyle();
+	} catch (Exception e) {
+	    Errors er = new Errors();
+	    er.addError(new org.w3c.css.parser.CssError(url.toString(),
+							-1, e));
+	    notifyErrors(er);
+	}
+    }
+    
+    private void addMedias(AtRuleMedia m, String medias, ApplContext ac) throws InvalidParamException {
+    	StringTokenizer tokens = new StringTokenizer(medias, ",");
+		while (tokens.hasMoreTokens()) {
+	        m.addMedia(tokens.nextToken().trim(), ac);
+		}
+    }
+
+    /**
+     * Parse a style element. The Style element always comes from the user
+     *
+     * @param input the inputStream containing the style data
+     * @param url the name of the file the style element was read in.
+     * @exception IOException an IO error
+     */
+    public void parseStyleElement(ApplContext ac, InputStream input,
+				  String title, String media,
+				  URL url, int lineno) {
+    	style.setWarningLevel(ac.getWarningLevel());
+	if (Util.onDebug) {
+	    System.err.println("StyleSheet.parseStyleElement(" + title + ", "
+			       + media + ", " + url
+			       + "," + lineno + ")" );
+	}
+	try {
+
+//	    if (cssFouffa == null) {
+	    String charset = ac.getCharsetForURL(url);
+	    cssFouffa = new CssFouffa(ac, input, charset, url, lineno);
+		cssFouffa.addListener(this);
+//	    } else {
+//		cssFouffa.ReInit(ac, input, url, lineno);
+//	    }
+
+	    //	    cssFouffa.setResponse(res);
+	    //	    cssFouffa.setDefaultMedium(defaultmedium);
+	    //	    cssFouffa.doConfig();
+
+	    if (media == null) {
+		media = "all";
+	    }
+
+	    AtRuleMedia m = new AtRuleMedia();
+	    try {
+	    	addMedias(m, media, ac);
+		cssFouffa.setAtRule(m);
+	    } catch (org.w3c.css.util.InvalidParamException e) {
+		Errors er = new Errors();
+		er.addError(new org.w3c.css.parser.CssError(url.toString(),
+							    -1, e));
+		notifyErrors(er);
+		return;
+	    }
+	    cssFouffa.parseStyle();
+	} catch (IOException e) {
+	    Errors er = new Errors();
+	    er.addError(new org.w3c.css.parser.CssError(url.toString(),
+							-1, e));
+	    notifyErrors(er);
+	} catch(TokenMgrError e) {
+	    Errors er = new Errors();
+	    CssParseException cpe = null;
+	    if (co != null) {
+		try {
+		    Object o[] = new Object[1];
+		    o[0] = e;
+		    Exception new_e = (Exception) co.newInstance(o);
+		    cpe = new CssParseException(new_e);
+		} catch (Exception ex) {
+		    cpe = null;
+		}
+	    }
+	    if (cpe == null) {
+		cpe = new CssParseException(new Exception(e.getMessage()));
+	    }
+	    er.addError(new org.w3c.css.parser.CssError(url.toString(),
+							e.getErrorLine(),
+							cpe));
+	    notifyErrors(er);
+	} catch(RuntimeException e) {
+	    Errors er = new Errors();
+	    er.addError(new org.w3c.css.parser.CssError(url.toString(),
+							cssFouffa.getLine(),
+						    new CssParseException(e)));
+	    notifyErrors(er);
+	}
+    }
+
+    /**
+     * @param input the inputStream containing the style data
+     * @param url   the name of the file the style element was read in.
+     * @exception IOException an IO error
+     * @deprecated Replaced by parseStyleElement
+     * @see #parseStyleElement(InputStream, URL, int)
+     */
+    public void parseStyleElement(ApplContext ac, String input, URL url, int lineno) {
+	parseStyleElement(ac, new ByteArrayInputStream(input.getBytes()),
+			  null, null, url, lineno);
+    }
+
+    /**
+     * Parse some declarations. All declarations always comes from the user
+     *
+     * @param input the inputStream containing the style data
+     * @param id the uniq id
+     * @param filename the name of the file the style element was read in.
+     * @exception IOException an IO error
+     */
+    public void parseStyleAttribute(ApplContext ac, InputStream input, String id,
+				    URL url, int lineno) {
+    	style.setWarningLevel(ac.getWarningLevel());
+	lineno--; // why ?!?!
+	if (Util.onDebug) {
+	    System.err.println("StyleSheet.parseStyleAttribute(" + id + ","
+			       + url + "," + lineno + ")" );
+	}
+
+	try {
+	    //	    if (cssFouffa == null) {
+	    String charset = ac.getCharsetForURL(url);
+	    cssFouffa = new CssFouffa(ac, input, charset, url, lineno);
+	    cssFouffa.addListener(this);
+	    //	    } else
+//		cssFouffa.ReInit(ac, input, url, lineno);
+	    CssSelectors selector = new CssSelectors(ac);
+
+	    try {
+		AtRuleMedia media = new AtRuleMedia();
+		media.addMedia("all", ac);
+		cssFouffa.setAtRule(media);
+	    } catch (InvalidParamException e) {} //ignore
+
+	    try {
+		selector.addId(new IdSelector(id.substring(1)));;
+	    } catch  (InvalidParamException e) {
+		style.removeThisRule();
+		ac.getFrame().addError(new CssError(e));
+	    }
+	    cssFouffa.parseDeclarations(selector);
+	} catch (IOException e) {
+	    Errors er = new Errors();
+	    er.addError(new org.w3c.css.parser.CssError(url.toString(),
+							-1, e));
+	    notifyErrors(er);
+	}
+    }
+
+    /**
+     * @param input the inputStream containing the style data
+     * @param id the uniq id
+     * @param url the name of the file the style element was read in.
+     * @exception IOException an IO error
+     * @deprecated Replaced by parseStyleAttribute
+     * @see #parseStyleAttribute(InputStream, URL, int)
+     */
+    public void parseStyleAttribute(ApplContext ac, String input, String id,
+				    URL url, int lineno) {
+	parseStyleAttribute(ac, new ByteArrayInputStream(input.getBytes()),
+			    id, url, lineno);
+    }
+
+    public void setStyle(Class style) {
+	cssFouffa.setStyle(style);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/css/TagSoupStyleSheetHandler.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,790 @@
+/*
+ * Copyright (c) 2001 World Wide Web Consortium,
+ * (Massachusetts Institute of Technology, Institut National de
+ * Recherche en Informatique et en Automatique, Keio University). All
+ * Rights Reserved. This program is distributed under the W3C's Software
+ * Intellectual Property License. This program is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+ * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ * See W3C License http://www.w3.org/Consortium/Legal/ for more details.
+ *
+ * $Id: TagSoupStyleSheetHandler.java,v 1.6 2009-02-13 21:50:15 ylafon Exp $
+ */
+package org.w3c.css.css;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.StringBufferInputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLConnection;
+import java.util.HashMap;
+
+import org.w3c.css.parser.CssError;
+import org.w3c.css.parser.Errors;
+import org.w3c.css.parser.Errors;
+import org.w3c.css.parser.analyzer.TokenMgrError;
+import org.w3c.css.util.Warning;
+import org.w3c.css.util.Warnings;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.HTTPURL;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.util.Util;
+import org.w3c.css.util.xml.XMLCatalog;
+import org.w3c.www.mime.MimeType;
+import org.w3c.www.mime.MimeTypeFormatException;
+import org.xml.sax.Attributes;
+import org.xml.sax.ContentHandler;
+import org.xml.sax.EntityResolver;
+import org.xml.sax.ErrorHandler;
+import org.xml.sax.InputSource;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
+import org.xml.sax.ext.LexicalHandler;
+
+/**
+ * @version $Revision: 1.6 $
+ * @author  Philippe Le Hegaret
+ */
+public class TagSoupStyleSheetHandler implements ContentHandler,
+				      LexicalHandler, ErrorHandler, EntityResolver {
+
+    static String XHTML_NS = "http://www.w3.org/1999/xhtml";
+
+    private static long autoIdCount;
+
+    String namespaceURI;
+    boolean isRoot = true;
+
+    ApplContext    ac;
+    URL documentURI = null;
+    URL baseURI = null;
+
+    //  StyleSheet styleSheet = new StyleSheet();
+    StyleSheetParser styleSheetParser = new StyleSheetParser();
+
+    boolean inStyle = false;
+    String media  = null;
+    String type  = null;
+    String title = null;
+    String charset = null;
+    StringBuilder text = new StringBuilder(255);
+
+    Locator locator;
+
+    static XMLCatalog catalog = new XMLCatalog();
+
+    /**
+     * Creates a new TagSoupStyleSheetHandler
+     */
+    public TagSoupStyleSheetHandler(URL baseURI, ApplContext ac) {
+	this.documentURI = baseURI;
+	this.baseURI     = baseURI;
+	this.ac = ac;
+    }
+
+    public void setDocumentLocator (Locator locator) {
+	this.locator = locator;
+    }
+
+    public void startDocument ()
+        throws SAXException {
+    }
+
+    public void endDocument()
+        throws SAXException {
+	ac.setInput("text/xml");
+    }
+
+    public void startPrefixMapping (String prefix, String uri)
+        throws SAXException {
+    }
+
+    public void endPrefixMapping (String prefix)
+	throws SAXException {
+    }
+
+    public void characters (char ch[], int start, int length)
+        throws SAXException {
+	if (inStyle) {
+	    text.append(ch, start, length);
+	}
+    }
+
+    public void comment (char ch[], int start, int length)
+        throws SAXException {
+	if (inStyle) {
+            int line = (locator != null ? locator.getLineNumber() : -1);
+            Warning w = new Warning(baseURI.toString(), line,
+				    "style-inside-comment", 0, ac);
+            Warnings warnings = new Warnings(ac.getWarningLevel());
+            warnings.addWarning(w);
+            styleSheetParser.notifyWarnings(warnings);
+	    //text.append(ch, start, length); // ignoring, per http://www.w3.org/Bugs/Public/show_bug.cgi?id=761
+	}
+    }
+
+    public void ignorableWhitespace (char ch[], int start, int length)
+        throws SAXException {
+    }
+
+    public void processingInstruction (String target, String data)
+        throws SAXException {
+	HashMap<String,String> atts = getValues(data);
+
+	if ("xml-stylesheet".equals(target)) {
+	    String rel   = atts.get("alternate");
+	    String type  = atts.get("type");
+	    String href  = atts.get("href");
+
+	    if (Util.onDebug) {
+		System.err.println("<?xml-stylesheet alternate=\"" + rel
+				   + "\" type=\"" + type
+				   + "\"" + "   href=\"" + href + "\"?>");
+	    }
+
+	    if ("yes".equalsIgnoreCase(rel)) {
+		rel = "alternate stylesheet";
+	    } else {
+		rel = "stylesheet";
+	    }
+	    if (href == null) {
+		int line = -1;
+
+		if (locator != null) {
+		    line = locator.getLineNumber();
+		}
+		CssError er =
+		    new CssError(baseURI.toString(), line,
+				 new InvalidParamException("unrecognized.link", ac));
+		Errors ers = new Errors();
+		ers.addError(er);
+		styleSheetParser.notifyErrors(ers);
+	    }
+
+	    if (href.charAt(0) == '#') {
+		// internal style sheet, will be processed by the parser
+		return;
+	    }
+
+	    if (type != null) {
+		MimeType mt = null;
+		try {
+		    new MimeType(type);
+		} catch (Exception ex) { /* at worst, null */ };
+		if (mt != null && (MimeType.TEXT_CSS.match(mt) ==
+				   MimeType.MATCH_SPECIFIC_SUBTYPE)) {
+		    // we're dealing with a stylesheet...
+		    URL url;
+
+		    try {
+			if (baseURI != null) {
+			    url = new URL(baseURI, href);
+			} else {
+			    url = new URL(href);
+			}
+		    } catch (MalformedURLException e) {
+			return; // Ignore errors
+		    }
+
+		    if (Util.onDebug) {
+			System.err.println("[TagSoupStyleSheetHandler::"+
+					   "initialize(): "
+					   + "should parse CSS url: "
+					   + url.toString() + "]");
+		    }
+		    String media = atts.get("media");
+		    if (media == null) {
+			media="all";
+		    }
+		    styleSheetParser.parseURL(ac,
+					      url,
+					      atts.get("title"),
+					      rel,
+					      media,
+					      StyleSheetOrigin.AUTHOR);
+		    if (Util.onDebug) {
+			System.err.println("[parsed!]");
+		    }
+		}
+	    }
+	}
+    }
+
+    public void skippedEntity (String name)
+        throws SAXException {
+    }
+
+    public void startElement(String namespaceURI,
+			     String localName,
+			     String qName,
+			     Attributes atts) throws SAXException {
+	if (isRoot) {
+	    this.namespaceURI = namespaceURI;
+	    isRoot = false;
+	}
+	if (XHTML_NS.equals(namespaceURI)) {
+	    if ("base".equals(localName)) {
+		String href = atts.getValue("href");
+
+		if (Util.onDebug) {
+		    System.err.println("BASE href=\"" + href + "\"");
+		}
+
+		if (href != null) {
+		    //URL url;
+
+		    try {
+			baseURI = new URL(documentURI, href);
+			documentURI = baseURI;
+		    } catch (MalformedURLException e) {
+			return; // Ignore errors
+		    }
+		}
+
+	    } else if ("link".equals(localName)) {
+
+		String rel  = atts.getValue("rel");
+		String type  = atts.getValue("type");
+		String href = atts.getValue("href");
+
+		if (Util.onDebug) {
+		    System.err.println("link rel=\"" + rel
+				       + "\" type=\"" + type
+				       + "\"" + "   href=\"" + href + "\"");
+		}
+		if (type == null) {
+		    return;
+		}
+		MimeType mt = null;
+		try {
+		    mt = new MimeType(type);
+		} catch (MimeTypeFormatException mtfe) {
+		    return;
+		}
+		if (MimeType.TEXT_CSS.match(mt) !=
+		    MimeType.MATCH_SPECIFIC_SUBTYPE) {
+		    return;
+		}
+		if (href == null) {
+		    int line = -1;
+
+		    if (locator != null) {
+			line = locator.getLineNumber();
+		    }
+		    CssError er =
+			new CssError(baseURI.toString(), line,
+				     new InvalidParamException(
+					 "unrecognized.link", ac));
+		    Errors ers = new Errors();
+		    ers.addError(er);
+		    styleSheetParser.notifyErrors(ers);
+		    return;
+		}
+
+		if ((rel != null) &&
+		    rel.toLowerCase().indexOf("stylesheet") != -1) {
+		    // we're dealing with a stylesheet...
+		    // @@TODO alternate stylesheet
+		    URL url;
+
+		    try {
+			if (baseURI != null) {
+			    url = new URL(baseURI, href);
+			} else {
+			    url = new URL(href);
+			}
+		    } catch (MalformedURLException e) {
+			return; // Ignore errors
+		    }
+
+		    if (Util.onDebug) {
+			System.err.println("[TagSoupStyleSheetHandler::initialize(): "
+					   + "should parse CSS url: "
+					   + url.toString() + "]");
+		    }
+		    String media = atts.getValue("media");
+		    if (media == null) {
+			media="all";
+		    }
+		    styleSheetParser.parseURL(ac,
+					      url,
+					      atts.getValue("title"),
+					      rel,
+					      media,
+					      StyleSheetOrigin.AUTHOR);
+		    if (Util.onDebug) {
+			System.err.println("[parsed!]");
+		    }
+		}
+	    } else if ("style".equals(localName)) {
+		media  = atts.getValue("media");
+		type  = atts.getValue("type");
+		title = atts.getValue("title");
+
+		if (media == null) {
+		    media = "all";
+		}
+		if (Util.onDebug) {
+		    System.err.println("style media=\"" + media
+				       + "\" type=\"" + type
+				       + "\"" + "   title=\"" + title + "\"");
+		}
+
+		if (type == null) {
+		    int line = -1;
+
+		    if (locator != null) {
+			line = locator.getLineNumber();
+		    }
+		    CssError er =
+			new CssError(baseURI.toString(), line,
+				     new InvalidParamException(
+					 "unrecognized.link", ac));
+		    Errors ers = new Errors();
+		    ers.addError(er);
+		    styleSheetParser.notifyErrors(ers);
+		} else {
+		    try {
+			MimeType mt = new MimeType(type);
+			if (MimeType.TEXT_CSS.match(mt) ==
+			    MimeType.MATCH_SPECIFIC_SUBTYPE) {
+			    text.setLength(0);
+			    inStyle = true;
+			}
+		    } catch (MimeTypeFormatException ex) {
+			// do nothing
+		    }
+		}
+	    } else if (atts.getValue("style") != null) {
+		String value = atts.getValue("style");
+
+		if (value != null) { // here we have a style attribute
+		    String id = atts.getValue("id");
+		    handleStyleAttribute(value, id);
+		}
+	    }
+	} else {
+	    // the style attribute, recommended by UI Tech TF
+	    String value = atts.getValue(XHTML_NS, "style");
+
+	    if (value != null) { // here we have a style attribute
+		String id = atts.getValue(XHTML_NS, "id");
+		handleStyleAttribute(value, id);
+	    }
+	}
+    }
+
+    public void endElement (String namespaceURI, String localName,
+                            String qName)
+        throws SAXException {
+	int line = 0;
+
+	if (locator != null) {
+	    line = locator.getLineNumber();
+	}
+	if (XHTML_NS.equals(namespaceURI)) {
+	    if ("style".equals(localName)) {
+		if (inStyle) {
+		    inStyle = false;
+		    if (text.length() != 0) {
+			if (Util.onDebug) {
+			    System.err.println( "PARSE [" + text.toString() + "]" );
+			}
+			styleSheetParser
+			    .parseStyleElement(ac,
+					       new StringBufferInputStream(text.toString()),
+					       title, media,
+					       documentURI, line);
+		    }
+		}
+
+	    }
+	}
+    }
+
+    public void handleStyleAttribute(String value, String id) {
+	if (id == null) { // but we have no id: create one.
+	    // a normal id should NOT contain a "#" character.
+	    StringBuilder sb = new StringBuilder("#autoXML");
+	    sb.append(autoIdCount);
+	    // FIXME why two times?
+	    sb.append(autoIdCount++);
+	    id = sb.toString();
+	}
+	int line = 0;
+	if (locator != null) {
+	    line = locator.getLineNumber();
+	}
+	// parse the style attribute.
+	try {
+	    styleSheetParser
+		.parseStyleAttribute(ac,
+				     new ByteArrayInputStream(value.getBytes()),
+				     id, documentURI, line);
+	} catch (TokenMgrError ex) {
+	    CssError err = new CssError(baseURI.toString(), line,
+					ex);
+	    Errors errs = new Errors();
+	    errs.addError(err);
+	    styleSheetParser.notifyErrors(errs);
+	}
+    }
+
+    public StyleSheet getStyleSheet() {
+	return styleSheetParser.getStyleSheet();
+    }
+
+    public void startDTD (String name, String publicId,
+			  String systemId)
+        throws SAXException {
+    }
+
+    public void endDTD ()
+        throws SAXException {
+    }
+
+    public void startEntity (String name)
+        throws SAXException {
+    }
+
+    public void endEntity (String name)
+        throws SAXException {
+    }
+
+    public void startCDATA ()
+        throws SAXException {
+    }
+
+    public void endCDATA ()
+        throws SAXException {
+    }
+
+    public void error(SAXParseException exception) throws SAXException {
+    }
+
+    public void fatalError(SAXParseException exception) throws SAXException {
+	throw exception;
+    }
+
+    public void warning(SAXParseException exception) throws SAXException {
+    }
+
+    public InputSource resolveEntity(String publicId, String systemId)
+	throws SAXException, IOException {
+	String uri = null;
+
+	if (publicId != null) {
+	    if ("-//W3C//DTD XHTML 1.0 Transitional//EN".equals(publicId)) {
+		if (!"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd".equals(systemId)) {
+		    if (ac != null && ac.getFrame() != null) {
+			ac.getFrame().addWarning("xhtml.system_identifier.invalid");
+		    }
+		}
+	    } else if ("-//W3C//DTD XHTML 1.0 Strict//EN".equals(publicId)) {
+		if (!"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd".equals(systemId)) {
+		    if (ac != null && ac.getFrame() != null) {
+			ac.getFrame().addWarning("xhtml.system_identifier.invalid");
+		    }
+		}
+	    } else if ("-//W3C//DTD XHTML 1.0 Frameset//EN".equals(publicId)) {
+		if (!"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd".equals(systemId)) {
+		    if (ac != null && ac.getFrame() != null) {
+			ac.getFrame().addWarning("xhtml.system_identifier.invalid");
+		    }
+		}
+	    }
+	    uri = catalog.getProperty(publicId);
+	}
+	if (uri == null && systemId != null) {
+	    uri = catalog.getProperty(systemId);
+	}
+	if (uri != null) {
+	    return new InputSource(uri);
+	} else {
+	    return new InputSource(new URL(baseURI, systemId).toString());
+	}
+    }
+    
+    public void parse(InputStream in, String fileName) throws IOException, SAXException {
+    	InputSource source = new InputSource(in);
+    	org.xml.sax.XMLReader xmlParser = new org.ccil.cowan.tagsoup.Parser();
+    	try {
+    	    xmlParser.setProperty("http://xml.org/sax/properties/lexical-handler",
+    				  this);
+    	    xmlParser.setFeature("http://xml.org/sax/features/namespace-prefixes", true);
+    	    xmlParser.setFeature("http://xml.org/sax/features/validation", false);
+    	} catch (Exception ex) {
+    	    ex.printStackTrace();
+    	}
+    	xmlParser.setContentHandler(this);
+    	baseURI = new URL(fileName);
+    	documentURI = new URL(fileName);
+    	source.setSystemId(fileName);
+    	try {
+	    xmlParser.parse(source);
+    	} finally {
+	    in.close();
+    	}
+    }
+
+    void parse(URL url) throws Exception {
+	InputSource source = new InputSource();
+	URLConnection connection;
+	InputStream in;
+	org.xml.sax.XMLReader xmlParser = new org.ccil.cowan.tagsoup.Parser();
+	try {
+	    xmlParser.setProperty("http://xml.org/sax/properties/lexical-handler",
+				  this);
+	    xmlParser.setFeature("http://xml.org/sax/features/namespace-prefixes", true);
+	    xmlParser.setFeature("http://xml.org/sax/features/validation", false);
+	    /*
+	      xmlParser.setFeature("http://xml.org/sax/features/external-parameter-entities",
+	      false);
+	      xmlParser.setFeature("http://xml.org/sax/features/external-general-entities",
+	      false);
+	    */
+	} catch (Exception ex) {
+	    ex.printStackTrace();
+	}
+	xmlParser.setContentHandler(this);
+
+	connection = HTTPURL.getConnection(url, ac);
+	in = HTTPURL.getInputStream(ac, connection);
+	String streamEncoding = HTTPURL.getCharacterEncoding(ac, connection);
+
+	String httpCL = connection.getHeaderField("Content-Location");
+	if (httpCL != null) {
+	    baseURI = HTTPURL.getURL(baseURI, httpCL);
+	    documentURI = baseURI;
+	    if (streamEncoding != null) {
+		ac.setCharsetForURL(baseURI, streamEncoding);
+	    }
+	}
+	if (streamEncoding != null) {
+	    source.setEncoding(streamEncoding);
+	} 
+	//else {
+	//    String ctype = connection.getContentType();
+	//   if (ctype != null) {
+	//	try {
+	//	    MimeType repmime = new MimeType(ctype);
+	//	    if (repmime.hasParameter("charset"))
+	//		source.setEncoding(repmime.getParameterValue("charset"));
+	//	} catch (Exception ex) {}
+	//   }
+	//}
+	source.setByteStream(in);
+	try {
+	    xmlParser.parse(url.toString());
+	} finally {
+	    in.close();
+	}
+    }
+
+    void parse(String urlString, URLConnection connection) throws Exception {
+	org.xml.sax.XMLReader xmlParser = new org.ccil.cowan.tagsoup.Parser();
+	try {
+	    xmlParser.setProperty("http://xml.org/sax/properties/lexical-handler",
+				  this);
+	    xmlParser.setFeature("http://xml.org/sax/features/namespace-prefixes", true);
+
+	    xmlParser.setFeature("http://xml.org/sax/features/validation", false);
+	    xmlParser.setErrorHandler(this);
+	    xmlParser.setEntityResolver(this);
+	} catch (Exception ex) {
+	    ex.printStackTrace();
+	}
+	xmlParser.setContentHandler(this);
+	InputStream cis = HTTPURL.getInputStream(ac, connection);
+	InputSource source = new InputSource(cis);
+	String streamEncoding = HTTPURL.getCharacterEncoding(ac, connection);
+	String httpCL = connection.getHeaderField("Content-Location");
+	if (httpCL != null) {
+	    baseURI = HTTPURL.getURL(baseURI, httpCL);
+	    documentURI = baseURI;
+	    if (streamEncoding != null) {
+		ac.setCharsetForURL(baseURI, streamEncoding);
+	    }
+	}
+	if (streamEncoding != null) {
+	    source.setEncoding(streamEncoding);
+	} //else {
+	  //  String ctype = connection.getContentType();
+	//   if (ctype != null) {
+	//	try {
+	//	    MimeType repmime = new MimeType(ctype);
+	//	    if (repmime.hasParameter("charset")) {
+	//		source.setEncoding(repmime.getParameterValue("charset"));
+	//	    } else {
+	//		// if text/html and no given charset, let's assume
+	//		// iso-8859-1. Ideally, the parser would change the
+	//		// encoding if it find a mismatch, not sure, but well...
+	//		if (repmime.match(MimeType.TEXT_HTML) ==
+	//		    MimeType.MATCH_SPECIFIC_SUBTYPE) {
+	//		    source.setEncoding("iso-8859-1");
+	//		}
+	//	    }
+	//	} catch (Exception ex) {}
+	//   }
+	//}
+	source.setSystemId(urlString);
+	try {
+	    xmlParser.parse(source);
+	} finally {
+	    cis.close();
+	}
+    }
+
+    HashMap<String,String> getValues(String data) {
+	int length = data.length();
+	int current = 0;
+	char c;
+	StringBuilder name = new StringBuilder(10);
+	StringBuilder value = new StringBuilder(128);
+	StringBuilder entity_name = new StringBuilder(16);
+	int state = 0;
+	HashMap<String,String> table = new HashMap<String,String>();
+
+	while (current < length) {
+	    c = data.charAt(current);
+
+	    switch (state) {
+	    case 0:
+		switch (c) {
+		case ' ': case '\t': case '\n': // \r are normalized per XML spec
+		    // nothing
+		    break;
+		case '"': case '\'':
+		    return table;
+		case 'h': case 't': case 'm': case 'c': case 'a':
+		case 'r':
+		    name.setLength(0); // reset the name
+		    value.setLength(0); // reset the value
+		    name.append(c); // start to build the name
+		    state = 1;
+		    break;
+		default:
+		    // anything else is invalid
+		    return table;
+		}
+		break;
+	    case 1: // in the "attribute" name inside the PI
+		if ((c >= 'a') && (c <= 'z')) {
+		    name.append(c);
+		} else if ((c == ' ') || (c == '\t') || (c == '\n')) {
+		    state = 2;
+		} else if (c == '=') {
+		    state = 3;
+		} else {
+		    // anything else is invalid
+		    state = 0;
+		}
+		break;
+	    case 2: // waiting for =
+		switch (c) {
+		case ' ': case '\t': case '\n':
+		    // nothing
+		    break;
+		case '=':
+		    state = 3;
+		default:
+		    // anything else is invalid
+		    return table;
+		}
+		break;
+	    case 3: // waiting for ' or "
+		switch (c) {
+		case ' ': case '\t': case '\n':
+		    // nothing
+		    break;
+		case '"':
+		    state = 4;
+		    break;
+		case '\'':
+		    state = 5;
+		    break;
+		default:
+		    // anything else is invalid
+		    return table;
+		}
+		break;
+	    case 4: case 5: // in the "attribute" value inside the PI
+		switch (c) {
+		case '&':
+		    // predefined entities amp, lt, gt, quot, apos
+		    entity_name.setLength(0);
+		    state += 10;
+		    break;
+		case '<':
+		    return table;
+		case '"':
+		    if (state == 4) {
+			state = 6;
+		    } else {
+			value.append(c);
+		    }
+		    break;
+		case '\'':
+		    if (state == 5) {
+			state = 6;
+		    } else {
+			value.append(c);
+		    }
+		    break;
+		default:
+		    value.append(c);
+		}
+		break;
+	    case 6: // waiting a white space
+		table.put(name.toString(), value.toString());
+		name.setLength(0); // reset the name
+		value.setLength(0); // reset the value
+		switch (c) {
+		case ' ': case '\n': case '\t':
+		    state = 0;
+		    break;
+		default:
+		    return table;
+		}
+		break;
+	    case 14: case 15: // in the entity
+		switch (c) {
+		case 'a': case 'm': case 'p':
+		case 'l': case 't': case 'g':
+		case 'q': case 'u': case 'o':
+		case 's':
+		    entity_name.append(c);
+		    break;
+		case ';':
+		    String entity = entity_name.toString();
+		    if ("amp".equals(entity)) {
+			value.append('&');
+		    } else if ("lt".equals(entity)) {
+			value.append('<');
+		    } else if ("gt".equals(entity)) {
+			value.append('>');
+		    } else if ("quote".equals(entity)) {
+			value.append('"');
+		    } else if ("apos".equals(entity)) {
+			value.append('\'');
+		    } else {
+			return table;
+		    }
+		    state -= 10;
+		    break;
+		default:
+		    return table;
+		}
+	    }
+	    current ++;
+	}
+	if (name.length() != 0 && value.length() != 0) {
+	    table.put(name.toString(), value.toString());
+	}
+	return table;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/css/XMLStyleSheetHandler.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,763 @@
+/*
+ * Copyright (c) 2001 World Wide Web Consortium,
+ * (Massachusetts Institute of Technology, Institut National de
+ * Recherche en Informatique et en Automatique, Keio University). All
+ * Rights Reserved. This program is distributed under the W3C's Software
+ * Intellectual Property License. This program is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+ * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ * See W3C License http://www.w3.org/Consortium/Legal/ for more details.
+ *
+ * $Id: XMLStyleSheetHandler.java,v 1.30 2009-02-13 21:50:15 ylafon Exp $
+ */
+package org.w3c.css.css;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.StringBufferInputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLConnection;
+import java.util.HashMap;
+
+import org.w3c.css.parser.CssError;
+import org.w3c.css.parser.Errors;
+import org.w3c.css.util.Warning;
+import org.w3c.css.util.Warnings;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.HTTPURL;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.util.Util;
+import org.w3c.css.util.xml.XMLCatalog;
+import org.w3c.www.mime.MimeType;
+import org.w3c.www.mime.MimeTypeFormatException;
+import org.xml.sax.Attributes;
+import org.xml.sax.ContentHandler;
+import org.xml.sax.EntityResolver;
+import org.xml.sax.ErrorHandler;
+import org.xml.sax.InputSource;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
+import org.xml.sax.ext.LexicalHandler;
+
+/**
+ * @version $Revision: 1.30 $
+ * @author Philippe Le Hegaret
+ */
+public class XMLStyleSheetHandler implements ContentHandler, LexicalHandler,
+				  ErrorHandler, EntityResolver {
+
+    static String XHTML_NS = "http://www.w3.org/1999/xhtml";
+
+    private static long autoIdCount;
+
+    String namespaceURI;
+
+    boolean isRoot = true;
+
+    ApplContext ac;
+
+    URL documentURI = null;
+
+    URL baseURI = null;
+
+    // StyleSheet styleSheet = new StyleSheet();
+    StyleSheetParser styleSheetParser = new StyleSheetParser();
+
+    boolean inStyle = false;
+
+    String media = null;
+
+    String type = null;
+
+    String title = null;
+
+    StringBuilder text = new StringBuilder(255);
+
+    Locator locator;
+
+    static XMLCatalog catalog = new XMLCatalog();
+
+    /**
+     * Creates a new XMLStyleSheetHandler
+     */
+    public XMLStyleSheetHandler(URL baseURI, ApplContext ac) {
+	this.documentURI = baseURI;
+	this.baseURI = baseURI;
+	this.ac = ac;
+    }
+
+    public void setDocumentLocator(Locator locator) {
+	this.locator = locator;
+    }
+
+    public void startDocument() throws SAXException {
+    }
+
+    public void endDocument() throws SAXException {
+	ac.setInput("text/xml");
+    }
+
+    public void startPrefixMapping(String prefix, String uri)
+	throws SAXException {
+    }
+
+    public void endPrefixMapping(String prefix) throws SAXException {
+    }
+
+    public void characters(char ch[], int start, int length)
+	throws SAXException {
+	if (inStyle) {
+	    text.append(ch, start, length);
+	}
+    }
+
+    public void comment(char ch[], int start, int length) throws SAXException {
+	if (inStyle) {
+	    int line = (locator != null ? locator.getLineNumber() : -1);
+	    Warning w = new Warning(baseURI.toString(), line,
+				    "style-inside-comment", 0, ac);
+	    Warnings warnings = new Warnings(ac.getWarningLevel());
+	    warnings.addWarning(w);
+	    styleSheetParser.notifyWarnings(warnings);
+	    // text.append(ch, start, length); // ignoring, per
+	    // http://www.w3.org/Bugs/Public/show_bug.cgi?id=761
+	}
+    }
+
+    public void ignorableWhitespace(char ch[], int start, int length)
+	throws SAXException {
+    }
+
+    public void processingInstruction(String target, String data)
+	throws SAXException {
+	HashMap<String,String> atts = getValues(data);
+
+	if ("xml-stylesheet".equals(target)) {
+	    String rel  = atts.get("alternate");
+	    String type = atts.get("type");
+	    String href = atts.get("href");
+
+	    if (Util.onDebug) {
+		System.err.println("<?xml-stylesheet alternate=\"" + rel
+				   + "\" type=\"" + type + "\"" + "   href=\"" + href
+				   + "\"?>");
+	    }
+
+	    if ("yes".equalsIgnoreCase(rel)) {
+		rel = "alternate stylesheet";
+	    } else {
+		rel = "stylesheet";
+	    }
+	    if (href == null) {
+		int line = -1;
+
+		if (locator != null) {
+		    line = locator.getLineNumber();
+		}
+		CssError er = new CssError(baseURI.toString(), line,
+					   new InvalidParamException("unrecognized.link", ac));
+		Errors ers = new Errors();
+		ers.addError(er);
+		styleSheetParser.notifyErrors(ers);
+	    }
+
+	    if (href.charAt(0) == '#') {
+		// internal style sheet, will be processed by the parser
+		return;
+	    }
+
+	    if (type != null) {
+		MimeType mt = null;
+		try {
+		    new MimeType(type);
+		} catch (Exception ex) { /* at worst, null */
+		}
+		;
+		if (mt != null
+		    && (MimeType.TEXT_CSS.match(mt) == MimeType.MATCH_SPECIFIC_SUBTYPE)) {
+		    // we're dealing with a stylesheet...
+		    URL url;
+
+		    try {
+			if (baseURI != null) {
+			    url = new URL(baseURI, href);
+			} else {
+			    url = new URL(href);
+			}
+		    } catch (MalformedURLException e) {
+			return; // Ignore errors
+		    }
+
+		    if (Util.onDebug) {
+			System.err.println("[XMLStyleSheetHandler::"
+					   + "initialize(): " + "should parse CSS url: "
+					   + url.toString() + "]");
+		    }
+		    String media = atts.get("media");
+		    if (media == null) {
+			media = "all";
+		    }
+		    styleSheetParser.parseURL(ac, url, atts.get("title"), rel, media,
+					      StyleSheetOrigin.AUTHOR);
+		    if (Util.onDebug) {
+			System.err.println("[parsed!]");
+		    }
+		}
+	    }
+	}
+    }
+
+    public void skippedEntity(String name) throws SAXException {
+    }
+
+    public void startElement(String namespaceURI, String localName,
+			     String qName, Attributes atts) throws SAXException {
+	if (isRoot) {
+	    this.namespaceURI = namespaceURI;
+	    isRoot = false;
+	}
+	if (XHTML_NS.equals(namespaceURI)) {
+	    if ("base".equals(localName)) {
+		String href = atts.getValue("href");
+
+		if (Util.onDebug) {
+		    System.err.println("BASE href=\"" + href + "\"");
+		}
+
+		if (href != null) {
+		    // URL url;
+
+		    try {
+			baseURI = new URL(documentURI, href);
+			documentURI = baseURI;
+		    } catch (MalformedURLException e) {
+			return; // Ignore errors
+		    }
+		}
+
+	    } else if ("link".equals(localName)) {
+
+		String rel = atts.getValue("rel");
+		String type = atts.getValue("type");
+		String href = atts.getValue("href");
+
+		if (Util.onDebug) {
+		    System.err.println("link rel=\"" + rel + "\" type=\""
+				       + type + "\"" + "   href=\"" + href + "\"");
+		}
+		if (type == null) {
+		    return;
+		}
+		MimeType mt = null;
+		try {
+		    mt = new MimeType(type);
+		} catch (MimeTypeFormatException mtfe) {
+		    return;
+		}
+		if (MimeType.TEXT_CSS.match(mt) != MimeType.MATCH_SPECIFIC_SUBTYPE) {
+		    return;
+		}
+		if (href == null) {
+		    int line = -1;
+
+		    if (locator != null) {
+			line = locator.getLineNumber();
+		    }
+		    CssError er = new CssError(baseURI.toString(), line,
+					       new InvalidParamException("unrecognized.link", ac));
+		    Errors ers = new Errors();
+		    ers.addError(er);
+		    styleSheetParser.notifyErrors(ers);
+		    return;
+		}
+
+		if ((rel != null)
+		    && rel.toLowerCase().indexOf("stylesheet") != -1) {
+		    // we're dealing with a stylesheet...
+		    // @@TODO alternate stylesheet
+		    URL url;
+
+		    try {
+			if (baseURI != null) {
+			    url = new URL(baseURI, href);
+			} else {
+			    url = new URL(href);
+			}
+		    } catch (MalformedURLException e) {
+			return; // Ignore errors
+		    }
+
+		    if (Util.onDebug) {
+			System.err
+			    .println("[XMLStyleSheetHandler::initialize(): "
+				     + "should parse CSS url: "
+				     + url.toString() + "]");
+		    }
+		    String media = atts.getValue("media");
+		    if (media == null) {
+			media = "all";
+		    }
+		    styleSheetParser.parseURL(ac, url, atts.getValue("title"),
+					      rel, media, StyleSheetOrigin.AUTHOR);
+		    if (Util.onDebug) {
+			System.err.println("[parsed!]");
+		    }
+		}
+	    } else if ("style".equals(localName)) {
+		media = atts.getValue("media");
+		type = atts.getValue("type");
+		title = atts.getValue("title");
+
+		if (media == null) {
+		    media = "all";
+		}
+		if (Util.onDebug) {
+		    System.err.println("style media=\"" + media + "\" type=\""
+				       + type + "\"" + "   title=\"" + title + "\"");
+		}
+
+		if (type == null) {
+		    int line = -1;
+
+		    if (locator != null) {
+			line = locator.getLineNumber();
+		    }
+		    CssError er = new CssError(baseURI.toString(), line,
+					       new InvalidParamException("unrecognized.link", ac));
+		    Errors ers = new Errors();
+		    ers.addError(er);
+		    styleSheetParser.notifyErrors(ers);
+		} else {
+		    try {
+			MimeType mt = new MimeType(type);
+			if (MimeType.TEXT_CSS.match(mt) == MimeType.MATCH_SPECIFIC_SUBTYPE) {
+			    text.setLength(0);
+			    inStyle = true;
+			}
+		    } catch (MimeTypeFormatException ex) {
+			// do nothing
+		    }
+		}
+	    } else if (atts.getValue("style") != null) {
+		String value = atts.getValue("style");
+
+		if (value != null) { // here we have a style attribute
+		    String id = atts.getValue("id");
+		    handleStyleAttribute(value, id);
+		}
+	    }
+	} else {
+	    // the style attribute, recommended by UI Tech TF
+	    String value = atts.getValue(XHTML_NS, "style");
+
+	    if (value != null) { // here we have a style attribute
+		String id = atts.getValue(XHTML_NS, "id");
+		handleStyleAttribute(value, id);
+	    }
+	}
+    }
+
+    public void endElement(String namespaceURI, String localName, String qName)
+	throws SAXException {
+	int line = 0;
+
+	if (locator != null) {
+	    line = locator.getLineNumber();
+	}
+	if (XHTML_NS.equals(namespaceURI)) {
+	    if ("style".equals(localName)) {
+		if (inStyle) {
+		    inStyle = false;
+		    if (text.length() != 0) {
+			if (Util.onDebug) {
+			    System.err.println("PARSE [" + text.toString()
+					       + "]");
+			}
+			styleSheetParser.parseStyleElement(ac,
+							   new StringBufferInputStream(text.toString()),
+							   title, media, documentURI, line);
+		    }
+		}
+	    }
+	}
+    }
+
+    public void handleStyleAttribute(String value, String id) {
+	if (id == null) { // but we have no id: create one.
+	    // a normal id should NOT contain a "#" character.
+	    StringBuilder sb = new StringBuilder("#autoXML");
+	    // FIXME why two times, then increment?
+	    sb.append(autoIdCount).append(autoIdCount++);
+	    id = sb.toString();
+	}
+	int line = 0;
+	if (locator != null) {
+	    line = locator.getLineNumber();
+	}
+	// parse the style attribute.
+	styleSheetParser.parseStyleAttribute(ac, new ByteArrayInputStream(value
+									  .getBytes()), id, documentURI, line);
+    }
+
+    public StyleSheet getStyleSheet() {
+	return styleSheetParser.getStyleSheet();
+    }
+
+    public void startDTD(String name, String publicId, String systemId)
+	throws SAXException {
+    }
+
+    public void endDTD() throws SAXException {
+    }
+
+    public void startEntity(String name) throws SAXException {
+    }
+
+    public void endEntity(String name) throws SAXException {
+    }
+
+    public void startCDATA() throws SAXException {
+    }
+
+    public void endCDATA() throws SAXException {
+    }
+
+    public void error(SAXParseException exception) throws SAXException {
+    }
+
+    public void fatalError(SAXParseException exception) throws SAXException {
+	throw exception;
+    }
+
+    public void warning(SAXParseException exception) throws SAXException {
+    }
+
+    public InputSource resolveEntity(String publicId, String systemId)
+	throws SAXException, IOException {
+	String uri = null;
+
+	if (publicId != null) {
+	    if ("-//W3C//DTD XHTML 1.0 Transitional//EN".equals(publicId)) {
+		if (!"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
+		    .equals(systemId)) {
+		    if (ac != null && ac.getFrame() != null) {
+			ac.getFrame().addWarning(
+			    "xhtml.system_identifier.invalid");
+		    }
+		}
+	    } else if ("-//W3C//DTD XHTML 1.0 Strict//EN".equals(publicId)) {
+		if (!"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
+		    .equals(systemId)) {
+		    if (ac != null && ac.getFrame() != null) {
+			ac.getFrame().addWarning(
+			    "xhtml.system_identifier.invalid");
+		    }
+		}
+	    } else if ("-//W3C//DTD XHTML 1.0 Frameset//EN".equals(publicId)) {
+		if (!"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"
+		    .equals(systemId)) {
+		    if (ac != null && ac.getFrame() != null) {
+			ac.getFrame().addWarning(
+			    "xhtml.system_identifier.invalid");
+		    }
+		}
+	    }
+	    uri = catalog.getProperty(publicId);
+	}
+	if (uri == null && systemId != null) {
+	    uri = catalog.getProperty(systemId);
+	}
+	if (uri != null) {
+	    return new InputSource(uri);
+	} else {
+	    return new InputSource(new URL(baseURI, systemId).toString());
+	}
+    }
+
+    void parse(URL url) throws Exception {
+	InputSource source = new InputSource();
+	URLConnection connection;
+	InputStream in;
+	org.xml.sax.XMLReader xmlParser = new org.apache.xerces.parsers.SAXParser();
+	try {
+	    xmlParser.setProperty(
+		"http://xml.org/sax/properties/lexical-handler", this);
+	    xmlParser.setFeature(
+		"http://xml.org/sax/features/namespace-prefixes", true);
+	    xmlParser.setFeature("http://xml.org/sax/features/validation",
+				 false);
+	    /*
+	     * xmlParser.setFeature("http://xml.org/sax/features/external-parameter-entities",
+	     * false);
+	     * xmlParser.setFeature("http://xml.org/sax/features/external-general-entities",
+	     * false);
+	     */
+	} catch (Exception ex) {
+	    ex.printStackTrace();
+	}
+	xmlParser.setContentHandler(this);
+	    
+	connection = HTTPURL.getConnection(url, ac);
+	in = HTTPURL.getInputStream(ac, connection);
+	String streamEncoding = HTTPURL.getCharacterEncoding(ac, connection);
+
+	String httpCL = connection.getHeaderField("Content-Location");
+	if (httpCL != null) {
+	    baseURI = HTTPURL.getURL(baseURI, httpCL);
+	    documentURI = baseURI;
+	    if (streamEncoding != null) {
+		ac.setCharsetForURL(baseURI, streamEncoding);
+	    }
+	}
+	if (streamEncoding != null) {
+	    source.setEncoding(streamEncoding);
+	} 
+	// else {
+	//    String ctype = connection.getContentType();
+	//   if (ctype != null) {
+	//	try {
+	//	    MimeType repmime = new MimeType(ctype);
+	//	    if (repmime.hasParameter("charset"))
+	//		source.setEncoding(repmime.getParameterValue("charset"));
+	//	} catch (Exception ex) {
+	//    }
+	//    }
+	//}
+	source.setByteStream(in);
+	try {
+	    xmlParser.parse(url.toString());
+	} finally {
+	    in.close();
+	}
+    }
+    
+    void parse(String urlString, URLConnection connection) throws Exception {
+	org.xml.sax.XMLReader xmlParser = new org.apache.xerces.parsers.SAXParser();
+	try {
+	    xmlParser.setProperty(
+		"http://xml.org/sax/properties/lexical-handler", this);
+	    xmlParser.setFeature(
+		"http://xml.org/sax/features/namespace-prefixes", true);
+	    
+	    xmlParser.setFeature("http://xml.org/sax/features/validation",
+				 false);
+	    xmlParser.setErrorHandler(this);
+	    xmlParser.setEntityResolver(this);
+	} catch (Exception ex) {
+	    ex.printStackTrace();
+	}
+	xmlParser.setContentHandler(this);
+	InputStream cis = HTTPURL.getInputStream(ac, connection);
+	InputSource source = new InputSource(cis);
+	String streamEncoding = HTTPURL.getCharacterEncoding(ac, connection);
+	String httpCL = connection.getHeaderField("Content-Location");
+	if (httpCL != null) {
+	    baseURI = HTTPURL.getURL(baseURI, httpCL);
+	    documentURI = baseURI;
+	    if (streamEncoding != null) {
+		ac.setCharsetForURL(baseURI, streamEncoding);
+	    }
+	}
+	if (streamEncoding != null) {
+	    source.setEncoding(streamEncoding);
+	} //else {
+	//    String ctype = connection.getContentType();
+	//   if (ctype != null) {
+	//	try {
+	//	    MimeType repmime = new MimeType(ctype);
+	//	    if (repmime.hasParameter("charset")) {
+	//		source.setEncoding(repmime.getParameterValue("charset"));
+	//	    } else {
+	//		// if text/html and no given charset, let's assume
+	//		// iso-8859-1. Ideally, the parser would change the
+	//		// encoding if it find a mismatch, not sure, but well...
+	//		if (repmime.match(MimeType.TEXT_HTML) == MimeType.MATCH_SPECIFIC_SUBTYPE) {
+	//		    source.setEncoding("iso-8859-1");
+	//		}
+	//	    }
+	//	} catch (Exception ex) {
+	//	}
+	//   }
+	//}
+	source.setSystemId(urlString);
+	try {
+	    xmlParser.parse(source);
+	} finally {
+	    cis.close();
+	}
+    }
+
+    HashMap<String,String> getValues(String data) {
+	int length = data.length();
+	int current = 0;
+	char c;
+	StringBuilder name = new StringBuilder(10);
+	StringBuilder value = new StringBuilder(128);
+	StringBuilder entity_name = new StringBuilder(16);
+	int state = 0;
+	HashMap<String,String> table = new HashMap<String,String>();
+
+	while (current < length) {
+	    c = data.charAt(current);
+
+	    switch (state) {
+	    case 0:
+		switch (c) {
+		case ' ':
+		case '\t':
+		case '\n': // \r are normalized per XML spec
+		    // nothing
+		    break;
+		case '"':
+		case '\'':
+		    return table;
+		case 'h':
+		case 't':
+		case 'm':
+		case 'c':
+		case 'a':
+		case 'r':
+		    name.setLength(0); // reset the name
+		    value.setLength(0); // reset the value
+		    name.append(c); // start to build the name
+		    state = 1;
+		    break;
+		default:
+		    // anything else is invalid
+		    return table;
+		}
+		break;
+	    case 1: // in the "attribute" name inside the PI
+		if ((c >= 'a') && (c <= 'z')) {
+		    name.append(c);
+		} else if ((c == ' ') || (c == '\t') || (c == '\n')) {
+		    state = 2;
+		} else if (c == '=') {
+		    state = 3;
+		} else {
+		    // anything else is invalid
+		    state = 0;
+		}
+		break;
+	    case 2: // waiting for =
+		switch (c) {
+		case ' ':
+		case '\t':
+		case '\n':
+		    // nothing
+		    break;
+		case '=':
+		    state = 3;
+		default:
+		    // anything else is invalid
+		    return table;
+		}
+		break;
+	    case 3: // waiting for ' or "
+		switch (c) {
+		case ' ':
+		case '\t':
+		case '\n':
+		    // nothing
+		    break;
+		case '"':
+		    state = 4;
+		    break;
+		case '\'':
+		    state = 5;
+		    break;
+		default:
+		    // anything else is invalid
+		    return table;
+		}
+		break;
+	    case 4:
+	    case 5: // in the "attribute" value inside the PI
+		switch (c) {
+		case '&':
+		    // predefined entities amp, lt, gt, quot, apos
+		    entity_name.setLength(0);
+		    state += 10;
+		    break;
+		case '<':
+		    return table;
+		case '"':
+		    if (state == 4) {
+			state = 6;
+		    } else {
+			value.append(c);
+		    }
+		    break;
+		case '\'':
+		    if (state == 5) {
+			state = 6;
+		    } else {
+			value.append(c);
+		    }
+		    break;
+		default:
+		    value.append(c);
+		}
+		break;
+	    case 6: // waiting a white space
+		table.put(name.toString(), value.toString());
+		name.setLength(0); // reset the name
+		value.setLength(0); // reset the value
+		switch (c) {
+		case ' ':
+		case '\n':
+		case '\t':
+		    state = 0;
+		    break;
+		default:
+		    return table;
+		}
+		break;
+	    case 14:
+	    case 15: // in the entity
+		switch (c) {
+		case 'a':
+		case 'm':
+		case 'p':
+		case 'l':
+		case 't':
+		case 'g':
+		case 'q':
+		case 'u':
+		case 'o':
+		case 's':
+		    entity_name.append(c);
+		    break;
+		case ';':
+		    String entity = entity_name.toString();
+		    if ("amp".equals(entity)) {
+			value.append('&');
+		    } else if ("lt".equals(entity)) {
+			value.append('<');
+		    } else if ("gt".equals(entity)) {
+			value.append('>');
+		    } else if ("quote".equals(entity)) {
+			value.append('"');
+		    } else if ("apos".equals(entity)) {
+			value.append('\'');
+		    } else {
+			return table;
+		    }
+		    state -= 10;
+		    break;
+		default:
+		    return table;
+		}
+	    }
+	    current++;
+	}
+	if (name.length() != 0 && value.length() != 0) {
+	    table.put(name.toString(), value.toString());
+	}
+	return table;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/css/format.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,9 @@
+# Available output format for the StyleSheetGeneratorHTML & StyleSheetGenerator(text)
+
+xhtml: xhtml.properties
+xml: xml.properties
+text: text.properties
+soap12: soap12.properties
+json: json.properties
+ucn: ucn.properties
+gnu: gnu.properties
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/css/gnu.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,13 @@
+#foreach ( $error_content in $errors_content )
+#set ( $err = $error_content.get("Error") )
+#set ( $error_msg = $error_content.get("ErrorMsg") )
+#set ( $context_name = $error_content.get("CtxName") )
+#set ( $context_msg = $error_content.get("CtxMsg") )
+#set ( $class_name = $error_content.get("ClassName") )
+$err.SourceFile:$err.Line:$context_msg:$error_msg
+#end
+#foreach ( $warning in $warnings_list )
+#if ( $warning.Level <= $warning_level )
+$warning.SourceFile:$warning.Line: #if ( $warning.Context ) $warning.Context - #end :$warning.WarningMessage
+#end
+#end
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/css/json.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,13 @@
+{
+  "cssvalidation" : {
+     "uri"       : "$file_title",
+     "checkedby" : "http://www.w3.org/2005/07/css-validator",
+     "csslevel"  : "$cssversion",
+     "date"      : "$currentdate",
+     "validity"  : $is_valid,
+     "result"    : {
+		"errorcount"   : $errors_count,
+		"warningcount" : $warnings_count
+                   }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/css/soap12.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,117 @@
+<?xml version='1.0' encoding="$charset"?>
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
+    <env:Body>
+        <m:cssvalidationresponse
+            env:encodingStyle="http://www.w3.org/2003/05/soap-encoding"
+            xmlns:m="http://www.w3.org/2005/07/css-validator">
+            <m:uri>$file_title</m:uri>
+            <m:checkedby>http://jigsaw.w3.org/css-validator/</m:checkedby>
+            <m:csslevel>$cssversion</m:csslevel>
+            <m:date>$currentdate</m:date>
+            <m:validity>$is_valid</m:validity>
+            <m:result>
+                <m:errors xml:lang="$lang">
+                    <m:errorcount>$errors_count</m:errorcount>
+#set ( $sf = "" )
+#if ( $errors_count > 0 )
+    #foreach ( $error_content in $errors_content )
+        #set ( $err = $error_content.get("Error") )
+        #set ( $error_msg = $error_content.get("ErrorMsg") )
+        #set ( $class_name = $error_content.get("ClassName") )
+        #set ( $context_msg = $error_content.get("CtxMsg") )
+        #if ( $error_content.get("link_value_parse_error") )
+            #set ( $before_link = $error_content.get("link_before_parse_error") )
+            #set ( $link_value = $error_content.get("link_value_parse_error") )
+        #else
+            #set ( $link_value = false )
+        #end
+        #if ( $error_content.get("span_value_parse_error") )
+            #set ( $span_value = $error_content.get("span_value_parse_error") )
+        #else
+            #set ( $span_value = false )
+        #end
+        #if ( $sf != $err.SourceFile )
+            #if ( $open )
+                    
+                    </m:errorlist>
+            #end
+            #set ( $sf = $err.SourceFileEscaped )
+            
+                <m:errorlist>
+                    <m:uri>$sf</m:uri>
+            #set ( $open = true )
+        #end
+        
+                        <m:error>
+                            <m:line>$err.Line</m:line>
+                            <m:errortype>$class_name</m:errortype>
+                            #if ( $context_msg )<m:context> $context_msg </m:context>#end
+        #if ( $span_value )
+            #set ( $span_class = $error_content.get("span_class_parse_error") )
+
+                            <m:errorsubtype>
+                                $span_class
+                            </m:errorsubtype>
+                            <m:skippedstring>
+                                $span_value
+                            </m:skippedstring>
+        #end
+
+                            <m:message>
+        #if ( $link_value )
+            #set ( $link_name = $error_content.get("link_name_parse_error") )
+
+                                $before_link :  $link_name ($link_value)
+        #end
+
+                                $error_msg
+                            </m:message>
+                        </m:error>
+    #end
+    #if ( $open )
+    
+                    </m:errorlist>
+    #end
+#end
+    
+                </m:errors>
+                <m:warnings xml:lang="$lang">
+                    <m:warningcount>$warnings_count</m:warningcount>
+#if ( $warnings_count > 0 )
+    #set ( $sf = "" )
+    #set ( $open = false )
+    #foreach ( $warning in $warnings_list )
+        #if ( $sf != $warning.SourceFile )
+            #if ( $open )
+                    
+                    </m:warninglist>
+            #end
+            #set ( $sf = $warning.SourceFileEscaped )
+            
+                    <m:warninglist>
+                        <m:uri>$sf</m:uri>
+            #set ( $open = true )
+        #end
+        #if ( $warning.Level <= $warning_level )
+        
+                        <m:warning>
+                            <m:line>$warning.Line</m:line>
+                            <m:level>$warning.Level</m:level>
+                            <m:message>$warning.WarningMessageEscaped</m:message>
+#if ( $warning.Context )
+                            <m:context>$warning.Context.Escaped</m:context>
+#end
+                        </m:warning>
+        #end
+    #end
+    #if ( $open )
+    
+                    </m:warninglist>
+    #end
+#end
+                </m:warnings>
+            </m:result>
+        </m:cssvalidationresponse>
+    </env:Body>
+</env:Envelope>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/css/text.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,135 @@
+$W3C_validator_results $file_title
+
+#if ( !$no_errors_report )
+    #if ($errors_count == 0)
+$congrats
+
+$doc_validates_before_link $css $doc_validates_after_link
+        #if ( !$file_title.trim().startsWith("file://localhost") )
+
+$no_errors_interoperable_msg
+
+<p>
+    <a href="http://jigsaw.w3.org/css-validator/">
+        <img style="border:0;width:88px;height:31px"
+            src="http://jigsaw.w3.org/css-validator/images/vcss"
+            alt="$valid_CSS" />
+    </a>
+</p>
+($no_errors_close_tags_msg)
+$no_errors_dl_local_msg
+$no_errors_create_link_msg
+    http://jigsaw.w3.org/css-validator/validator$link
+or  http://jigsaw.w3.org/css-validator/check/referer ($no_errors_forHTML_only_msg)
+($no_errors_bookmark_msg)
+        #end
+    #else
+        #if ( $hook_html_validator )
+
+$hook_html_validator
+        #end
+        #set ( $sf = "" )
+        #set ( $open = false )
+
+$errors_sorry_msg ($errors_count)
+        #if ( $request )
+
+$request
+        #end
+
+#foreach ( $error_content in $errors_content )
+#set ( $err = $error_content.get("Error") )
+#set ( $error_msg = $error_content.get("ErrorMsg") )
+#set ( $context_name = $error_content.get("CtxName") )
+#set ( $context_msg = $error_content.get("CtxMsg") )
+#set ( $class_name = $error_content.get("ClassName") )
+#if ( $error_content.get("link_value_parse_error") )
+    #set ( $before_link = $error_content.get("link_before_parse_error") )
+    #set ( $link_value = $error_content.get("link_value_parse_error") )
+#else
+    #set ( $link_value = false )
+#end
+#if ( !$link_value && $error_content.get("span_value_parse_error") )
+    #set ( $span_value = $error_content.get("span_value_parse_error") )
+#else
+    #set ( $span_value = false )
+#end
+#if  ( $sf != $err.SourceFile )
+    #set ( $sf = $err.SourceFile )
+
+URI : $sf
+
+#set ( $open = true )
+#end
+Line : $err.Line $context_msg
+#if ( $link_value )
+#set ( $link_name = $error_content.get("link_name_parse_error") )
+       ($before_link : $link_name ($link_value))
+#end
+       $error_msg
+#if ( $span_value )
+#set ( $span_class = $error_content.get("span_class_parse_error") )
+       $span_value
+#end
+#end
+
+#end
+#end
+#if ($warnings_count > 0)
+
+$warnings ($warnings_count)
+#set ( $sf = "" )
+#set ( $open = false )
+#foreach ( $warning in $warnings_list )
+#if ( $sf != $warning.SourceFile )
+#set ( $sf = $warning.SourceFile )
+
+URI : $sf
+
+#set ( $open = true )
+#end
+#if ( $warning.Level <= $warning_level )
+Line : $warning.Line - #if ( $warning.Context ) $warning.Context - #end $warning.WarningMessage
+#end
+#end
+
+#end
+
+#if ( $rules_count > 0 )
+
+$valid_CSS_info
+    #if ($style_charset)
+
+@charset "$style_charset";
+    #end
+
+    #foreach ( $rules in $at_rules_list )
+#if ( $rules.AtRule != "" )
+
+$rules.AtRule
+#if ( !$rules.Empty )
+{
+            #end
+        #end
+        #foreach ( $rule in $rules.StyleRules )
+    #if ( $rule.Selectors )
+    $rule.Selectors
+    {
+    #end
+#foreach ( $property in $rule.Properties )
+        $property.PropertyName : $property;
+#end
+    #if ( $rule.Selectors )
+    }
+    #end
+        #end
+        #if ( $rules.AtRule != "" )
+#if ( !$rules.Empty )
+
+}
+            #end
+        #end
+    #end
+#else
+$CSS_not_found
+#end
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/css/ucn.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,154 @@
+<?xml version='1.0' encoding="$charset"?>
+<observationresponse xmlns="http://www.w3.org/unicorn/observationresponse"
+      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.w3.org/unicorn/observationresponse file:observer-response.xsd">
+    <uri>$file_title</uri>
+    <checkedby>http://jigsaw.w3.org/css-validator/</checkedby>
+    <version>$cssversion</version>
+    <date>$currentdate</date>
+    <passed>$is_valid</passed>
+    <result>
+        <errors xml:lang="$lang">
+            <errorcount>$errors_count</errorcount>
+#if ( $errors_count > 0 )
+    #set ( $sf = "" )
+    #set ( $open = false )
+    #foreach ( $error_content in $errors_content )
+       #set ( $err = $error_content.get("Error") )
+       #if ( $sf != $err.SourceFile ) 
+            #if ( $open )
+            </errorlist>
+            #end
+            #set ( $sf = $err.SourceFileEscaped )
+            <errorlist>
+            #set ( $open = true )
+            #if ( $fake_input )
+                <uri>$file_title</uri>
+            #else            
+                <uri>$sf</uri>
+            #end
+        #end
+
+        #set ( $error_msg = $error_content.get("ErrorMsg") )
+        #set ( $context_name = $error_content.get("CtxName") )
+        #set ( $context_msg = $error_content.get("CtxMsg") )
+        #set ( $class_name = $error_content.get("ClassName") )
+        #if ( $error_content.get("link_value_parse_error") )
+            #set ( $before_link = $error_content.get("link_before_parse_error") )
+            #set ( $link_value = $error_content.get("link_value_parse_error") )
+        #else
+            #set ( $link_value = false )
+        #end
+        #if ( $error_content.get("span_value_parse_error") )
+            #set ( $span_value = $error_content.get("span_value_parse_error") )
+        #else
+            #set ( $span_value = false )
+        #end
+
+                <error>
+                    <line>$err.Line</line>
+                    #if ( $context_msg ) <context name="$context_name">$context_msg</context> #end
+                    <errortype>$class_name</errortype>
+                    <message>
+        #if ( $link_value )
+            #set ( $link_name = $error_content.get("link_name_parse_error") )
+                        $before_link :  $link_name ($link_value)
+        #end
+                        $error_msg
+        #if ( $span_value )
+            #set ( $span_class = $error_content.get("span_class_parse_error") )
+                        $span_value
+        #end
+
+                    </message>
+                </error>
+    #end
+    #if ( $open )
+            </errorlist>
+    #end
+#end
+
+        </errors>
+
+
+        <warnings xml:lang="$lang">
+            <warningcount>$warnings_count</warningcount>
+#if ( $warnings_count > 0 )
+    #set ( $sf = "" )
+    #set ( $open = false )
+    #foreach ( $warning in $warnings_list )
+        #if ( $sf != $warning.SourceFile )    
+            #if ( $open )
+            </warninglist>
+            #end
+            #set ( $sf = $warning.SourceFileEscaped )
+            <warninglist>
+            #set ( $open = true )
+		        #if ( $fake_input ) 
+                 <uri>$file_title</uri>
+          	#else
+                 <uri>$sf</uri>
+            #end
+
+        #end
+        #if ( $warning.Level <= $warning_level )
+                <warning>
+                    #if ( $warning.Level )
+                    <level>$warning.Level</level>
+                    #end
+                    <line>$warning.Line</line>
+                    #if ( $warning.Context ) <context>$warning.Context.Escaped</context> #end
+                    <message>$warning.WarningMessageEscaped</message>
+                </warning>
+        #end
+    #end
+    #if ( $open )
+            </warninglist>
+    #end
+#end
+    
+        </warnings>
+
+
+#if ( $errors_count == 0 )
+        <informations xml:lang="$lang">
+          <infocount>1</infocount>
+          <infolist>
+            <uri>$file_title</uri>
+            <info>
+              <longmessage>$doc_validates_before_link <a href="$css_link">$css</a> $doc_validates_after_link</longmessage>
+              <longmessage>
+                $no_errors_interoperable_msg
+              </longmessage>
+              <longmessage>
+                <img class="inline-badge" style="border:0;width:88px;height:31px" src="http://jigsaw.w3.org/css-validator/images/vcss" alt="$valid_CSS" />
+                <code class='example badgeSnippet'>&lt;p&gt;
+    &lt;a href="http://jigsaw.w3.org/css-validator/check/referer"&gt;
+        &lt;img style="border:0;width:88px;height:31px"
+            src="http://jigsaw.w3.org/css-validator/images/vcss"
+            alt="$valid_CSS" /&gt;
+    &lt;/a&gt;
+&lt;/p&gt;</code>
+              </longmessage>
+              <longmessage>
+                <img class="inline-badge" style="border:0;width:88px;height:31px" src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="$valid_CSS" />
+                <code class='example badgeSnippet'>&lt;p&gt;
+    &lt;a href="http://jigsaw.w3.org/css-validator/check/referer"&gt;
+        &lt;img style="border:0;width:88px;height:31px"
+            src="http://jigsaw.w3.org/css-validator/images/vcss-blue"
+            alt="$valid_CSS" /&gt;
+    &lt;/a&gt;
+&lt;/p&gt;</code>
+              </longmessage>
+              <longmessage>
+                ($no_errors_close_tags_msg)
+              </longmessage>
+              <longmessage>
+                $no_errors_dl_local_msg
+              </longmessage>
+            </info>
+          </infolist>
+        </informations>
+#end
+    </result>
+</observationresponse>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/css/urls.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,120 @@
+@url-base_css1		:	http://www.w3.org/TR/REC-CSS1/
+@url-base_css2		:	http://www.w3.org/TR/REC-CSS2/
+@url-base_css21		:	http://www.w3.org/TR/CSS21/
+@url-base_css3		:	http://www.w3.org/Style/CSS/current-work.html
+azimuth			:	aural.html#propdef-azimuth
+background		:	colors.html#propdef-background
+background-attachment	:	colors.html#propdef-background-attachment
+background-color	:	colors.html#propdef-background-color
+background-image	:	colors.html#propdef-background-image
+background-position	:	colors.html#propdef-background-position
+background-repeat	:	colors.html#propdef-background-repeat
+border			:	box.html#propdef-border
+border-bottom		:	box.html#propdef-border-bottom
+border-bottom-color	:	box.html#propdef-border-bottom-color
+border-bottom-style	:	box.html#propdef-border-bottom-style
+border-bottom-width	:	box.html#propdef-border-bottom-width
+border-color		:	box.html#propdef-border-color
+border-left		:	box.html#propdef-border-left
+border-left-color	:	box.html#propdef-border-left-color
+border-left-style	:	box.html#propdef-border-left-style
+border-left-width	:	box.html#propdef-border-left-width
+border-right		:	box.html#propdef-border-right
+border-right-color	:	box.html#propdef-border-right-color
+border-right-style	:	box.html#propdef-border-right-style
+border-right-width	:	box.html#propdef-border-right-width
+border-spacing		:	tables.html#propdef-border-spacing
+border-style		:	box.html#propdef-border-style
+border-top		:	box.html#propdef-border-top
+border-top-color	:	box.html#propdef-border-top-color
+border-top-style	:	box.html#propdef-border-top-style
+border-top-width	:	box.html#propdef-border-top-width
+border-width		:	box.html#propdef-border-width
+bottom			:	visuren.html#propdef-bottom
+caption-side		:	tables.html#propdef-caption-side
+clear			:	visuren.html#propdef-clear
+clip			:	visufx.html#propdef-clip
+color			:	colors.html#propdef-color
+column-span		:	tables.html#propdef-column-span
+content			:	generate.html#propdef-content
+counter-increment	:	generate.html#propdef-counter-increment
+counter-reset		:	generate.html#propdef-counter-reset
+cue			:	aural.html#propdef-cue
+cue-after		:	aural.html#propdef-cue-after
+cue-before		:	aural.html#propdef-cue-before
+cursor			:	ui.html#propdef-cursor
+direction		:	visuren.html#propdef-direction
+display			:	visuren.html#propdef-display
+elevation		:	aural.html#propdef-elevation
+float			:	visuren.html#propdef-float
+font			:	fonts.html#propdef-font
+font-family		:	fonts.html#propdef-font-family
+font-size		:	fonts.html#propdef-font-size
+font-size-adjust	:	fonts.html#propdef-font-size-adjust
+font-style		:	fonts.html#propdef-font-style
+font-variant		:	fonts.html#propdef-font-variant
+font-weight		:	fonts.html#propdef-font-weight
+height			:	visudet.html#propdef-height
+left			:	visuren.html#propdef-left
+letter-spacing		:	text.html#propdef-letter-spacing
+line-height		:	visudet.html#propdef-line-height
+list-style		:	generate.html#propdef-list-style
+list-style-image	:	generate.html#propdef-list-style-image
+list-style-position	:	generate.html#propdef-list-style-position
+list-style-type		:	generate.html#propdef-list-style-type
+margin			:	box.html#propdef-margin
+margin-bottom		:	box.html#propdef-margin-bottom
+margin-left		:	box.html#propdef-margin-left
+margin-right		:	box.html#propdef-margin-right
+margin-top		:	box.html#propdef-margin-top
+marks			:	page.html#propdef-marks
+max-height		:	visudet.html#propdef-max-height
+max-width		:	visudet.html#propdef-max-width
+min-height		:	visudet.html#propdef-min-height
+min-width		:	visudet.html#propdef-min-width
+orphans			:	page.html#propdef-orphans
+overflow		:	visufx.html#propdef-overflow
+padding			:	box.html#propdef-padding
+padding-bottom		:	box.html#propdef-padding-bottom
+padding-left		:	box.html#propdef-padding-left
+padding-right		:	box.html#propdef-padding-right
+padding-top		:	box.html#propdef-padding-top
+page-break-after	:	page.html#propdef-page-break-after
+page-break-before	:	page.html#propdef-page-break-before
+pause			:	aural.html#propdef-pause
+pause-after		:	aural.html#propdef-pause-after
+pause-before		:	aural.html#propdef-pause-before
+pitch			:	aural.html#propdef-pitch
+pitch-range		:	aural.html#propdef-pitch-range
+play-during		:	aural.html#propdef-play-during
+position		:	visuren.html#propdef-position
+quotes			:	generate.html#propdef-quotes
+richness		:	aural.html#propdef-richness
+right			:	visuren.html#propdef-right
+row-span		:	tables.html#propdef-row-span
+size			:	page.html#propdef-size
+speak			:	aural.html#propdef-speak
+speak-date		:	aural.html#propdef-speak-date
+speak-header		:	tables.html#propdef-speak-header
+speak-numeral		:	aural.html#propdef-speak-numeral
+speak-punctuation	:	aural.html#propdef-speak-punctuation
+speak-time		:	aural.html#propdef-speak-time
+speech-rate		:	aural.html#propdef-speech-rate
+stress			:	aural.html#propdef-stress
+table-layout		:	tables.html#propdef-table-layout
+text-align		:	text.html#propdef-text-align
+text-decoration		:	text.html#propdef-text-decoration
+text-indent		:	text.html#propdef-text-indent
+text-shadow		:	text.html#propdef-text-shadow
+text-transform		:	text.html#propdef-text-transform
+top			:	visuren.html#propdef-top
+unicode-bidi		:	visuren.html#propdef-unicode-bidi
+vertical-align		:	visudet.html#propdef-vertical-align
+visibility		:	visufx.html#propdef-visibility
+voice-family		:	aural.html#propdef-voice-family
+volume			:	aural.html#propdef-volume
+white-space		:	text.html#propdef-white-space
+widows			:	page.html#propdef-widows
+width			:	visudet.html#propdef-width
+word-spacing		:	text.html#propdef-word-spacing
+z-index			:	visuren.html#propdef-z-index
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/css/xhtml.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,363 @@
+<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'
+                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html lang='$content-language' xml:lang='$content-language' xmlns='http://www.w3.org/1999/xhtml' dir="$direction">
+    <head>
+      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+      <meta http-equiv="Content-Script-Type" content="text/javascript" />
+      <meta http-equiv="Content-Style-Type" content="text/css" />
+        <meta name="ROBOTS" content="NOINDEX, NOFOLLOW" />
+#if ( !$css ) #set ( $css = $cssversion ) #end
+        <title>$W3C_validator_results $file_title ($css)</title>
+        <link href="http://jigsaw.w3.org/css-validator/" rel="validator" />
+        <link type="text/css" rel='stylesheet' href='style/base.css' />
+        <link type="text/css" rel='stylesheet' href='style/results.css' />
+    </head>
+    <body>
+      <div id="banner">
+       <h1 id="title"><a href="http://www.w3.org/"><img alt="W3C" width="110" height="61" 
+           		 				id="logo" src="./images/w3c.png" /></a>
+       <a href="./"><span>$W3C_CSS_validation_service</span></a></h1>
+
+       <p id="tagline">
+         $W3C_validator_results $file_title ($css)
+       </p>
+      </div>
+
+#if ( $errors_count > 0 || $warnings_count > 0 || $rules_count > 0 )
+        <ul class="navbar" id="jumpbar">
+            <li><strong>$jump_to:</strong></li>
+    #if ( $errors_count > 0 )
+
+            <li><a href="#errors">$errors ($errors_count)</a></li>
+    #end
+    #if ( $warnings_count > 0 )
+
+            <li><a href="#warnings">$warnings ($warnings_count)</a></li>
+    #end
+    #if ( $rules_count > 0 )
+
+            <li><a href="#css">$validated_CSS</a></li>
+    #end
+
+        </ul>
+#end
+<div id="results_container">
+#if ($file_title.trim().startsWith("http://"))
+   <h2>$W3C_validator_results <a href="$file_title">$file_title</a> ($css)</h2>
+#else
+   <h2>$W3C_validator_results $file_title ($css)</h2>
+#end
+#if ( !$no_errors_report )
+    #if ($errors_count == 0)
+        <!-- NO ERRORS -->
+        <div id='congrats'>
+            <h3>$congrats</h3>
+            <p>
+                $doc_validates_before_link <a href="$css_link">$css</a> $doc_validates_after_link 
+            </p>
+            <p>
+                $no_errors_interoperable_msg
+            </p>
+            <img class="inline-badge" style="border:0;width:88px;height:31px" src="http://jigsaw.w3.org/css-validator/images/vcss" alt="$valid_CSS" />   
+            <pre class='example badgeSnippet'>
+&lt;p&gt;
+    &lt;a href="http://jigsaw.w3.org/css-validator/check/referer"&gt;
+        &lt;img style="border:0;width:88px;height:31px"
+            src="http://jigsaw.w3.org/css-validator/images/vcss"
+            alt="$valid_CSS" /&gt;
+    &lt;/a&gt;
+&lt;/p&gt;
+            </pre>
+        <img class="inline-badge" style="border:0;width:88px;height:31px" src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="$valid_CSS" />
+        <pre class='example badgeSnippet'>
+&lt;p&gt;
+&lt;a href="http://jigsaw.w3.org/css-validator/check/referer"&gt;
+    &lt;img style="border:0;width:88px;height:31px"
+        src="http://jigsaw.w3.org/css-validator/images/vcss-blue"
+        alt="$valid_CSS" /&gt;
+&lt;/a&gt;
+&lt;/p&gt;
+        </pre>
+            <p>($no_errors_close_tags_msg)</p>
+            
+            <div class="intro" id="don_program"></div>  
+            <script type="text/javascript" src="http://www.w3.org/QA/Tools/don_prog.js"></script>
+            
+            
+            <p>
+                $no_errors_dl_local_msg
+            </p>
+            #if ( !$file_title.trim().startsWith("file://localhost") )
+            <p>
+                $no_errors_create_link_msg
+            </p>
+<pre>http://jigsaw.w3.org/css-validator/validator$link
+or
+http://jigsaw.w3.org/css-validator/check/referer ($no_errors_forHTML_only_msg)
+</pre>
+            <p>($no_errors_bookmark_msg)</p>
+        #end
+
+        </div>
+        <p class="backtop"><a href="#banner">&uarr; $top</a></p>
+    #else
+
+        <!-- DEALING WITH ERRORS -->
+        #if ( $hook_html_validator )
+
+        $hook_html_validator
+        #end
+        #set ( $sf = "" )
+        #set ( $open = false )
+
+        <div id="errors">
+            <h3>$errors_sorry_msg ($errors_count)</h3>
+        #if ( $request )
+
+            <h4>$request</h4>
+        #end
+            <div class='error-section-all'>
+        #foreach ( $error_content in $errors_content )
+            #set ( $err = $error_content.get("Error") )
+            #set ( $error_msg = $error_content.get("ErrorMsg") )
+            #set ( $context_name = $error_content.get("CtxName") )
+            #set ( $context_msg = $error_content.get("CtxMsg") )
+            #set ( $class_name = $error_content.get("ClassName") )
+            #if ( $error_content.get("link_value_parse_error") )
+                #set ( $before_link = $error_content.get("link_before_parse_error") )
+                #set ( $link_value = $error_content.get("link_value_parse_error") )
+            #else
+                #set ( $link_value = false )
+            #end
+            #if ( $error_content.get("span_value_parse_error") )
+                #set ( $span_value = $error_content.get("span_value_parse_error") )
+            #else
+                #set ( $span_value = false )
+            #end
+            #if  ( $sf != $err.SourceFile )
+                #if ( $open )
+
+                    </table>
+                    <!--end of individual error section-->
+                    </div>
+                #end
+                #set ( $sf = $err.SourceFileEscaped )
+            
+                <div class='error-section'>
+		#if ( $fake_input ) 
+                    <h4>URI : $file_title</h4>
+		#else
+                    <h4>URI : <a href="$sf">$sf</a></h4>
+		#end
+                    <table>
+                #set ( $open = true )
+            #end
+
+                        <tr class='error'>
+                            <td class='linenumber' title='Line $err.Line'>$err.Line</td>
+                            <td class='$context_name'>#if ( $context_msg ) $context_msg #end</td>
+                            <td class='$class_name'>
+            #if ( $link_value )
+                #set ( $link_name = $error_content.get("link_name_parse_error") )
+
+                                $before_link : <a href="$link_value">$link_name</a>
+            #end
+
+                                $error_msg
+            #if ( $span_value )
+                #set ( $span_class = $error_content.get("span_class_parse_error") )
+
+                                <span class="$span_class">
+                                    $span_value
+                                </span>
+            #end
+
+                            </td>
+                        </tr>
+        #end
+        #if ( $open )
+
+                    </table>
+                </div>
+        #end
+
+            </div>
+        </div>
+        <p class="backtop"><a href="#banner">&uarr; $top</a></p>
+    #end
+#end
+#if ($errors_count > 0)
+<div class="intro" id="don_program"></div>  
+<script type="text/javascript" src="http://www.w3.org/QA/Tools/don_prog.js"></script>
+#end
+
+#if ($warnings_count > 0)
+        <!-- DEALING WITH WARNINGS -->
+        <div id="warnings">
+            <h3>$warnings ($warnings_count)</h3>
+            <div class='warning-section-all'>
+    #set ( $sf = "" )
+    #set ( $open = false )
+    #foreach ( $warning in $warnings_list )
+        #if ( $sf != $warning.SourceFile )
+            #if ( $open )
+
+                    </table>
+                    <!--end of individual warning section-->
+                    </div>
+            #end
+            #set ( $sf = $warning.SourceFileEscaped )
+            
+                <div class='warning-section'>
+		#if ( $fake_input ) 
+                    <h4>URI : $file_title</h4>
+		#else
+                    <h4>URI : <a href="$sf">$sf</a></h4>
+		#end
+                    <table>
+            #set ( $open = true )
+        #end
+        #if ( $warning.Level <= $warning_level )
+
+                        <tr class='warning'>
+                            <td class='linenumber' title='Line $warning.Line'>$warning.Line</td>
+                            <td class='codeContext'>#if ( $warning.Context ) $warning.Context.Escaped #end</td>
+                            <td class='level$warning.Level' title='warning level $warning.Level'>$warning.WarningMessageEscaped</td>
+                        </tr>
+        #end
+    #end
+    #if ( $open )
+
+                    </table>
+                </div>
+    #end
+
+            </div>
+        </div>
+        <p class="backtop"><a href="#banner">&uarr; $top</a></p>
+#end
+
+#if ( $rules_count > 0 )
+        <div id="css">
+            <h3>$valid_CSS_info</h3>
+            <div class='vAtRule'>
+    #if ($style_charset)
+
+                <div class='vCharset'>@charset "$style_charset";</div>
+    #end
+
+    #foreach ( $rules in $at_rules_list )
+        #if ( $rules.AtRule != "" )
+
+	    #if ( $rules.Empty )
+                <div class='vEmptyAtRule'>$rules.AtRuleEscaped
+	    #else   
+                <div class='atRule'>
+                    <span class='atSelector'>
+                        $rules.AtRuleEscaped
+                    </span>
+                    {
+            #end
+        #end
+
+                    <div>
+        #foreach ( $rule in $rules.StyleRules )
+
+                        <div class='selector'>
+                            #if ( $rule.Selectors )
+                            <span class='selectorValue'>
+                                $rule.SelectorsEscaped
+                            </span>
+                            {
+                            #end
+                            <div class='RuleList'>
+            #foreach ( $property in $rule.Properties )
+
+                                <div class='Rule'>
+                                    <span class='Property'>$property.PropertyNameEscaped</span> :
+                                    <span class='PropertyValue'>$property.Escaped</span>#if ( $property.Important ) !important #end;
+                                </div>
+            #end
+
+                            </div>
+                            #if ( $rule.Selectors )
+                            }
+                            #end
+                        </div>
+        #end
+
+                    </div>
+        #if ( $rules.AtRule != "" )
+            #if ( !$rules.Empty )
+
+                    }
+            #end
+
+                </div>
+        #end
+    #end
+
+            </div>
+        </div>
+        <p class="backtop"><a href="#banner">&uarr; $top</a></p>
+#else
+            <div id="css"><h2>$CSS_not_found</h2></div>
+#end
+</div><!-- results_container -->
+        <ul class="navbar" id="menu">
+            <li><strong><a href="./" title="$home_title">$home</a></strong> <span class="hideme">|</span></li>
+            <li><a href="about.html" title="$about_title">$about</a> <span class="hideme">|</span></li>
+            <li><a href="documentation.html" title="$doc_title">$doc</a> <span class="hideme">|</span></li>
+            <li><a href="DOWNLOAD.html" title="$dl_title">$dl</a> <span class="hideme">|</span></li>
+            <li><a href="Email.html" title="$feedback_title">$feedback</a> <span class="hideme">|</span></li>
+            <li><a href="thanks.html" title="$credits_title">$credits</a></li>
+        </ul>
+
+#if ($file_title.trim().startsWith("http://") || $file_title.trim().equals("file://localhost/TextArea"))
+        <ul id="lang_choice">
+    #foreach ( $language in $languages )
+        #set ( $name = $language.get("name") )
+        #if ( $language.get("real") )
+            #set ( $real =  $language.get("real") )
+        #else
+            #set ( $real = $language.get("name") )
+        #end
+
+            <li><a href="$link&amp;lang=$name"
+                lang="$name"
+                xml:lang="$name"
+                hreflang="$name"
+                rel="alternate">$real</a>
+            </li>
+    #end
+
+        </ul>
+#end
+<div id="footer">
+        <p id="activity_logos">
+            <a href="http://www.w3.org/QA/" title="$W3C_quality_msg"><img src="http://www.w3.org/QA/2002/12/qa-small.png" alt="QA" /></a><a href="http://www.w3.org/Style/CSS/learning" title="$learn_more_msg"><img src="images/woolly-icon" alt="CSS" /></a>
+        </p>
+        <p id="support_logo">
+        <a href="http://www.w3.org/QA/Tools/Donate">
+        <img src="http://www.w3.org/QA/Tools/I_heart_validator" alt="I heart Validator logo" title=" Validators Donation Program" />
+        </a>
+        </p>
+        <p class="copyright">
+            <a rel="Copyright" href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright">Copyright</a>
+            &copy; 1994-2009
+            <a href="http://www.w3.org/"><acronym title="World Wide Web Consortium">W3C</acronym></a>&reg;
+            (<a href="http://www.csail.mit.edu/"><acronym title="Massachusetts Institute of Technology">MIT</acronym></a>,
+            <a href="http://www.ercim.org/"><acronym title="European Research Consortium for Informatics and Mathematics">ERCIM</acronym></a>,
+            <a href="http://www.keio.ac.jp/">Keio</a>),
+            All Rights Reserved.
+            W3C <a href="http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>,
+            <a href="http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a>,
+            <a rel="Copyright" href="http://www.w3.org/Consortium/Legal/copyright-documents">document use</a>
+            and <a rel="Copyright" href="http://www.w3.org/Consortium/Legal/copyright-software">software licensing</a>
+            rules apply. Your interactions with this site are in accordance
+            with our <a href="http://www.w3.org/Consortium/Legal/privacy-statement#Public">public</a> and
+            <a href="http://www.w3.org/Consortium/Legal/privacy-statement#Members">Member</a> privacy statements.
+        </p>
+</div>
+    </body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/css/xml.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="$charset"?>
+<!DOCTYPE xml-css>
+<xml-css>
+<!-- file : $file_title -->
+<!-- 
+It is an XML test and may be updated, replaced or obsoleted by other
+documents at any time.
+It is inappropriate to use W3C Working Drafts as reference material or to
+cite them as other than "work in progress".
+-->
+
+#if ( $rules_count > 0 )
+    #if ($style_charset)
+
+    <vCharset>@charset</vCharset>
+    #end
+
+    #foreach ( $rules in $at_rules_list )
+        #if ( $rules.AtRule != "" )
+
+    <atRule>
+        <atSelector>$rules.AtRule</atSelector>
+        #elseif ( !$rules.Empty )
+
+    <noAtRule>
+        #end
+        #foreach ( $rule in $rules.StyleRules )
+
+        <selector>
+            <selectorValue>$rule.Selectors</selectorValue>
+            <RuleList>
+            #foreach ( $property in $rule.Properties )
+
+                <rule>
+                    <selector type="$element"
+                              id="$id"
+                              class="$class"
+                              pseudo-class="$pseudo-class"
+                              pseudo-element="$pseudo-element" />
+            		<declaration property="$property.PropertyName"
+                                 value="$property"
+			                     #if ( $property.Important ) true #end />
+                </rule>
+            #end
+
+            </RuleList>
+        </selector>
+        #end
+        #if ( $rules.AtRule != "" )
+
+    </atRule>
+        #elseif ( !$rules.Empty )
+
+    </noAtRule>
+        #end
+    #end
+#else
+    $CSS_not_found
+#end
+</xml-css>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/parser/AtRule.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,37 @@
+//
+// $Id: AtRule.java,v 1.5 2009-02-13 14:03:36 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
+/*
+ * AtRule.java
+ * $Id: AtRule.java,v 1.5 2009-02-13 14:03:36 ylafon Exp $
+ */
+package org.w3c.css.parser;
+
+/**
+ * @version $Revision: 1.5 $
+ * @author  Philippe Le Hegaret
+ */
+public abstract class AtRule {
+
+    /**
+     * Returns the at rule keyword
+     */
+    public abstract String keyword();
+
+    /**
+     * The second must be exactly the same of this one
+     */
+    public abstract boolean canApply(AtRule atRule);
+
+    /**
+     * The second must only match this one
+     */
+    public abstract boolean canMatched(AtRule atRule);
+
+    public boolean isEmpty() {
+	return false;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/parser/AtRuleFontFace.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,70 @@
+//
+// $Id: AtRuleFontFace.java,v 1.4 2007-11-26 05:07:17 ot 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
+/*
+ * AtRuleFontFace.java
+ * $Id: AtRuleFontFace.java,v 1.4 2007-11-26 05:07:17 ot Exp $
+ */
+package org.w3c.css.parser;
+
+/**
+ * This class manages all media defines by CSS2
+ *
+ * @version $Revision: 1.4 $
+ * @author  Philippe Le Hegaret
+ */
+public class AtRuleFontFace extends AtRule {
+    static int internal = 0;
+    int hash;
+
+    /**
+     * Create a new AtRuleFontFace
+     */
+    public AtRuleFontFace() {
+       hash = ++internal;
+    }
+
+
+    /**
+     * Returns the at rule keyword
+     */
+    public String keyword() {
+	return "font-face";
+    }
+
+    /**
+     * The second must be exactly the same of this one
+     */
+    public boolean canApply(AtRule atRule) {
+	return (atRule instanceof AtRuleFontFace);
+    }
+
+    /**
+     * Return true if other is an instance of AtRUleFontFace
+     */
+    public boolean equals(Object other) {
+	return (other instanceof AtRuleFontFace);
+    }
+
+    /**
+     * The second must only match this one
+     */
+    public boolean canMatched(AtRule atRule) {
+	return (atRule instanceof AtRuleFontFace);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return "@" + keyword();
+    }
+
+    public int hashCode() {
+	return hash;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/parser/AtRuleImport.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,81 @@
+//
+// $Id: AtRuleImport.java,v 1.1 2009-02-13 14:03:36 ylafon Exp $
+//
+// (c) COPYRIGHT MIT, Keio University and ERCIM, 2009.
+// Please first read the full copyright statement in file COPYRIGHT.html
+/*
+ * AtRuleMedia.java
+ * $Id: AtRuleImport.java,v 1.1 2009-02-13 14:03:36 ylafon Exp $
+ */
+package org.w3c.css.parser;
+
+import java.net.URL;
+
+/**
+ * This class manages all imports
+ *
+ * @version $Revision: 1.1 $
+ * @author  Philippe Le Hegaret
+ */
+public class AtRuleImport extends AtRule {
+
+    boolean     is_url   = false;
+    String      linkname = null;
+    AtRuleMedia media    = null;
+
+    public String keyword() {
+	return "import";
+    }
+
+    public boolean isEmpty() {
+	return true;
+    }
+
+    /**
+     * The second must be exactly the same of this one
+     */
+    public boolean canApply(AtRule atRule) {
+	return false;
+    }
+
+    /**
+     * The second must only match this one
+     */
+    public boolean canMatched(AtRule atRule) {
+	return false;
+    }
+
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	StringBuilder ret  = new StringBuilder();
+
+	ret.append('@');
+	ret.append(keyword());
+	ret.append(' ');
+	if (is_url) {
+	    ret.append("url(\'");
+	    ret.append(linkname);
+	    ret.append("\')");
+	} else {
+	    ret.append('\"');
+	    ret.append(linkname);
+	    ret.append('\"');
+	} 
+	if (media != null && !media.isEmpty()) {
+	    ret.append(' ');
+	    ret.append(media.getValueString());
+	}
+	ret.append(';');
+	return ret.toString();
+    }
+
+    public AtRuleImport(String linkname, boolean is_url, AtRuleMedia media) {
+	this.media    = media;
+	this.linkname = linkname;
+	this.is_url   = is_url; 
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/parser/AtRuleMedia.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,198 @@
+//
+// $Id: AtRuleMedia.java,v 1.13 2009-02-12 21:26:34 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
+/*
+ * AtRuleMedia.java
+ * $Id: AtRuleMedia.java,v 1.13 2009-02-12 21:26:34 ylafon Exp $
+ */
+package org.w3c.css.parser;
+
+import java.util.Enumeration;
+import java.util.Vector;
+
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+
+/**
+ * This class manages all media defines by CSS2
+ *
+ * @version $Revision: 1.13 $
+ * @author  Philippe Le Hegaret
+ */
+public class AtRuleMedia extends AtRule {
+
+    static final String[] mediaCSS3 = {
+	"all", "aural", "braille", "embossed", "handheld", "print",
+	"projection", "screen", "tty", "tv", "presentation", "atsc-tv"
+    };
+
+    String restrictor = new String();
+    String[] media = new String[mediaCSS3.length];
+    // media list coming from the stylesheet (ie. with case)
+    String[] originalMedia = new String[mediaCSS3.length];
+    Vector<String> mediafeatures = new Vector<String>();
+
+    boolean empty = true;
+
+    /**
+     * Adds a medium.
+     *
+     * @exception InvalidParamException the medium doesn't exist
+     */
+    public AtRuleMedia addMedia(String medium,
+				ApplContext ac) throws InvalidParamException {
+
+	//This medium didn't exist for CSS2
+	// if ((!cssversion.equals("css3")) && medium.equals("presentation")) {
+	// throw new InvalidParamException("media", medium, ac);
+	//}
+
+	for (int i = 0; i < mediaCSS3.length; i++) {
+	    if (medium.toLowerCase().equals(mediaCSS3[i])) {
+		media[i] = mediaCSS3[i];
+                originalMedia[i] = medium;
+		empty = false;
+		return this;
+	    }
+	}
+
+	throw new InvalidParamException("media", medium, ac);
+    }
+
+    public void addMediaRestrictor(String restrictor, ApplContext ac) {
+	if (restrictor.toUpperCase().equals("ONLY") ||
+	    restrictor.toUpperCase().equals("NOT")) {
+	    this.restrictor = restrictor;
+	}
+    }
+
+    public void addMediaFeature(CssProperty prop) {
+	if (prop != null) {
+	    StringBuilder expression = new StringBuilder(prop.getPropertyName());
+	    String propval = prop.toString();
+	    if (propval != null) {
+		expression.append(" : ").append(propval);
+	    }
+	    mediafeatures.addElement(expression.toString());
+	}
+    }
+
+    /**
+     * Returns the at rule keyword
+     */
+    public String keyword() {
+	return "media";
+    }
+
+    public boolean isEmpty() {
+	return empty;
+    }
+
+    /**
+     * The second must be exactly the same of this one
+     */
+    public boolean canApply(AtRule atRule) {
+	if (atRule instanceof AtRuleMedia) {
+	    AtRuleMedia second = (AtRuleMedia) atRule;
+
+	    for (int i = 0; i < media.length; i++) {
+		// strings are exactly the same so I don't have to use equals
+		if (media[i] != second.media[i]) {
+		    return false;
+		}
+	    }
+	    return true;
+	} else {
+	    return false;
+	}
+    }
+
+    /**
+     * The second must only match this one
+     */
+    public boolean canMatched(AtRule atRule) {
+	if (atRule instanceof AtRuleMedia) {
+	    AtRuleMedia second = (AtRuleMedia) atRule;
+
+	    for (int i = 0; i < media.length; i++) {
+		// strings are exactly the same so I don't have to use equals
+		if (media[i] == second.media[i]) {
+		    return true;
+		}
+	    }
+	    return false;
+	} else {
+	    return false;
+	}
+    }
+
+    public Enumeration elements() {
+	return new MediaEnumeration(this);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	StringBuilder ret  = new StringBuilder();
+
+	ret.append('@');
+	ret.append(keyword());
+	ret.append(' ');
+	if (!restrictor.equals("")) {
+	    ret.append(restrictor);
+	    ret.append(' ');
+	}
+	boolean f = true;
+	for (int i = 0; i < media.length; i++) {
+	    if (originalMedia[i] != null) {
+		if (!f) {
+		    ret.append(',');
+		    ret.append(' ');
+		} else {
+		    f = false;
+		}
+		ret.append(originalMedia[i]);
+	    }
+	}
+
+	for (int i = 0; i < mediafeatures.size(); i++) {
+	    ret.append(" and (");
+	    ret.append(mediafeatures.elementAt(i));
+	    ret.append(')');
+	}
+	return ret.toString();
+    }
+
+    public String getValueString() {
+	StringBuilder ret  = new StringBuilder();
+	if (!restrictor.equals("")) {
+	    ret.append(restrictor);
+	    ret.append(' ');
+	}
+	boolean f = true;
+	for (int i = 0; i < media.length; i++) {
+	    if (originalMedia[i] != null) {
+		if (!f) {
+		    ret.append(',');
+		    ret.append(' ');
+		} else {
+		    f = false;
+		}
+		ret.append(originalMedia[i]);
+	    }
+	}
+
+	for (int i = 0; i < mediafeatures.size(); i++) {
+	    ret.append(" and (");
+	    ret.append(mediafeatures.elementAt(i));
+	    ret.append(')');
+	}
+	return ret.toString();
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/parser/AtRuleMediaCSS1.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,99 @@
+//
+// $Id: AtRuleMediaCSS1.java,v 1.5 2007-11-26 05:07:17 ot 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
+/*
+ * AtRuleMedia.java
+ * $Id: AtRuleMediaCSS1.java,v 1.5 2007-11-26 05:07:17 ot Exp $
+ */
+package org.w3c.css.parser;
+
+import java.util.Enumeration;
+
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+
+/**
+ * This class manages all media defines by CSS2
+ *
+ * @version $Revision: 1.5 $
+ * @author  Philippe Le Hegaret
+ */
+public class AtRuleMediaCSS1 extends AtRuleMedia {
+
+    static final String[] mediaCSS1 = {
+	"all"
+    };
+
+    String[] media = new String[mediaCSS1.length];
+
+    boolean empty = true;
+
+    /**
+     * Creates a new AtRuleMediaCSS1
+     */
+    public AtRuleMediaCSS1() {
+        media[0] = mediaCSS1[0];
+    }
+
+
+    /**
+     * Adds a medium.
+     *
+     * @exception InvalidParamException the medium doesn't exist
+     */
+    public AtRuleMedia addMedia(String medium,
+				ApplContext ac) throws InvalidParamException {
+
+	// do nothing
+	return this;
+    }
+
+    /**
+     * Returns the at rule keyword
+     */
+    public String keyword() {
+	return "media";
+    }
+
+    public boolean isEmpty() {
+	return false;
+    }
+
+    /**
+     * The second must be exactly the same of this one
+     */
+    public boolean canApply(AtRule atRule) {
+	if (atRule instanceof AtRuleMedia) {
+	    return true;
+	} else {
+	    return false;
+	}
+    }
+
+    /**
+     * The second must only match this one
+     */
+    public boolean canMatched(AtRule atRule) {
+	if (atRule instanceof AtRuleMedia) {
+	    return true;
+	} else {
+	    return false;
+	}
+    }
+
+    public Enumeration elements() {
+	return new MediaEnumeration(this);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return "@" + keyword() + " all ";
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/parser/AtRuleMediaCSS2.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,127 @@
+//
+// $Id: AtRuleMediaCSS2.java,v 1.5 2007-11-26 05:07:17 ot 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
+/*
+ * AtRuleMedia.java
+ * $Id: AtRuleMediaCSS2.java,v 1.5 2007-11-26 05:07:17 ot Exp $
+ */
+package org.w3c.css.parser;
+
+import java.util.Enumeration;
+
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+
+/**
+ * This class manages all media defines by CSS2
+ *
+ * @version $Revision: 1.5 $
+ * @author  Philippe Le Hegaret
+ */
+public class AtRuleMediaCSS2 extends AtRuleMedia {
+
+    static final String[] mediaCSS2 = {
+	"all", "aural", "braille", "embossed", "handheld", "print", "projection",
+	"screen", "tty", "tv", "presentation"
+    };
+
+    String[] media = new String[mediaCSS2.length];
+
+    boolean empty = true;
+
+    /**
+     * Adds a medium.
+     *
+     * @exception InvalidParamException the medium doesn't exist
+     */
+    public AtRuleMedia addMedia(String medium,
+				ApplContext ac) throws InvalidParamException {
+
+	//This medium didn't exist for CSS2
+	//	if ((!cssversion.equals("css3")) && medium.equals("presentation")) {
+	// throw new InvalidParamException("media", medium, ac);
+	//}
+
+	for (int i = 0; i < mediaCSS2.length; i++) {
+	    if (medium.equals(mediaCSS2[i])) {
+		media[i] = mediaCSS2[i];
+		empty = false;
+		return this;
+	    }
+	}
+
+	throw new InvalidParamException("media", medium, ac);
+    }
+
+    /**
+     * Returns the at rule keyword
+     */
+    public String keyword() {
+	return "media";
+    }
+
+    public boolean isEmpty() {
+	return empty;
+    }
+
+    /**
+     * The second must be exactly the same of this one
+     */
+    public boolean canApply(AtRule atRule) {
+	if (atRule instanceof AtRuleMedia) {
+	    AtRuleMedia second = (AtRuleMedia) atRule;
+
+	    for (int i = 0; i < media.length; i++) {
+		// strings are exactly the same so I don't have to use equals
+		if (media[i] != second.media[i]) {
+		    return false;
+		}
+	    }
+	    return true;
+	} else {
+	    return false;
+	}
+    }
+
+    /**
+     * The second must only match this one
+     */
+    public boolean canMatched(AtRule atRule) {
+	if (atRule instanceof AtRuleMedia) {
+	    AtRuleMedia second = (AtRuleMedia) atRule;
+
+	    for (int i = 0; i < media.length; i++) {
+		// strings are exactly the same so I don't have to use equals
+		if (media[i] == second.media[i]) {
+		    return true;
+		}
+	    }
+	    return false;
+	} else {
+	    return false;
+	}
+    }
+
+    public Enumeration elements() {
+	return new MediaEnumeration(this);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	String ret = "";
+	for (int i = 0; i < media.length; i++) {
+	    if (media[i] != null) {
+		ret += ", " + media[i];
+	    }
+	}
+	return "@" + keyword() + " " + ret.substring(2);
+    }
+
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/parser/AtRuleNamespace.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,75 @@
+//
+// $Id: AtRuleNamespace.java,v 1.1 2009-02-13 14:03:36 ylafon Exp $
+//
+// (c) COPYRIGHT MIT, Keio University and ERCIM, 2009.
+// Please first read the full copyright statement in file COPYRIGHT.html
+/*
+ * AtRuleMedia.java
+ * $Id: AtRuleNamespace.java,v 1.1 2009-02-13 14:03:36 ylafon Exp $
+ */
+package org.w3c.css.parser;
+
+/**
+ * This class manages all imports
+ *
+ * @version $Revision: 1.1 $
+ * @author  Philippe Le Hegaret
+ */
+public class AtRuleNamespace extends AtRule {
+
+    boolean     is_default   = false;
+    boolean     is_url       = false;
+    String      prefix       = null;
+    String      nsname       = null;
+
+    public String keyword() {
+	return "namespace";
+    }
+
+    public boolean isEmpty() {
+	return true;
+    }
+
+    /**
+     * The second must be exactly the same of this one
+     */
+    public boolean canApply(AtRule atRule) {
+	return false;
+    }
+
+    /**
+     * The second must only match this one
+     */
+    public boolean canMatched(AtRule atRule) {
+	return false;
+    }
+
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	StringBuilder ret  = new StringBuilder();
+
+	ret.append('@');
+	ret.append(keyword());
+	ret.append(' ');
+	if (!is_default) {
+	    ret.append(prefix);
+	    ret.append(' ');
+	}
+	ret.append((is_url) ? "url(\"" : '\"');
+	ret.append(nsname);
+	ret.append((is_url) ? "\")" : '\"');
+	ret.append(';');
+	return ret.toString();
+    }
+
+    public AtRuleNamespace(String prefix, String nsname, boolean is_url) {
+	this.prefix = prefix;
+	is_default = (prefix == null);
+	this.nsname = nsname;
+	this.is_url   = is_url; 
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/parser/AtRulePage.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,164 @@
+//
+// $Id: AtRulePage.java,v 1.4 2005-09-14 15:14:18 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
+/*
+ * AtRulePage.java
+ * $Id: AtRulePage.java,v 1.4 2005-09-14 15:14:18 ylafon Exp $
+ */
+package org.w3c.css.parser;
+
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+
+
+/**
+ * This class manages all media defines by CSS2
+ *
+ * @version $Revision: 1.4 $
+ * @author  Philippe Le H�garet
+ */
+public class AtRulePage extends AtRule {
+
+    static final String[] pseudo = {
+	":left", ":right", ":first"
+    };
+
+    String name;
+
+    String ident;
+
+    /**
+     * Returns the at rule keyword
+     */
+    public String keyword() {
+	return "page";
+    }
+
+    /**
+     * Sets the name of the page
+     * name will be a pseudo name :first, :left, :right
+     * or a random name without semi-colon at the beginning
+     */
+    public AtRulePage setName(String name, ApplContext ac)
+	     throws InvalidParamException {
+	if (name.charAt(0) == ':') {
+	    for (int i = 0; i < pseudo.length; i++) {
+		if (name.equals(pseudo[i])) {
+		    this.name = pseudo[i];
+		    return this;
+		}
+	    }
+	    throw new InvalidParamException("page", name, ac);
+	} else {
+	    this.name = name;
+	}
+
+	return this;
+    }
+
+    public AtRulePage setIdent(String ident) {
+	this.ident = ident;
+	return this;
+    }
+
+    public String getIdent() {
+	return ident;
+    }
+
+    /**
+     * Return true if atRule is exactly the same as current
+     */
+    public boolean equals(Object atRule) {
+	if (atRule instanceof AtRulePage) {
+	    AtRulePage other = (AtRulePage) atRule;
+	    boolean res = true;
+	    if ((name != null) && (other.name != null)) {
+		res = res &&  name.equals(other.name);
+	    } else {
+		if ((name != null) || (other.name != null)) {
+		    return false;
+		}
+	    }
+	    if ((ident != null) && (other.ident != null)) {
+		res = res &&  ident.equals(((AtRulePage) atRule).ident);
+	    } else {
+		if ((ident != null) || (other.ident != null)) {
+		    return false;
+		}
+	    }
+	    return res;
+	} else {
+	    return false;
+	}
+    }
+
+    /**
+     * The second must be exactly the same of this one
+     */
+    public boolean canApply(AtRule atRule) {
+	if (atRule instanceof AtRulePage) {
+	    AtRulePage other = (AtRulePage) atRule;
+	    boolean res = true;
+	    if ((name != null) && (other.name != null)) {
+		res = res &&  name.equals(other.name);
+	    } else {
+		if ((name != null) || (other.name != null)) {
+		    return false;
+		}
+	    }
+	    if ((ident != null) && (other.ident != null)) {
+		res = res &&  ident.equals(((AtRulePage) atRule).ident);
+	    } else {
+		if ((ident != null) || (other.ident != null)) {
+		    return false;
+		}
+	    }
+	    return res;
+	} else {
+	    return false;
+	}
+    }
+
+    /**
+     * The second must only match this one
+     */
+    public boolean canMatched(AtRule atRule) {
+	if (atRule instanceof AtRulePage) {
+	    boolean res = true;
+	    if (name != null) {
+		res = res &&  name.equals(((AtRulePage) atRule).name);
+	    }
+	    if (ident != null) {
+		res = res &&  ident.equals(((AtRulePage) atRule).ident);
+	    }
+	    return res;
+	} else {
+	    return false;
+	}
+    }
+
+
+    public String getName() {
+	return name;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	String ret = "@" + keyword() ;
+	if (ident!=null) {
+	    ret += " " + ident;
+	    if (name!=null) {
+		ret += name;
+	    }
+	} else if (name != null) {
+	    ret += " " + name;
+	}
+	return ret;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/parser/AtRulePhoneticAlphabet.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,80 @@
+//
+// $Id: AtRulePhoneticAlphabet.java,v 1.2 2007-11-26 05:07:17 ot 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
+/*
+ * AtRulePhoneticAlphabet.java
+ * $Id: AtRulePhoneticAlphabet.java,v 1.2 2007-11-26 05:07:17 ot Exp $
+ */
+package org.w3c.css.parser;
+
+import org.w3c.css.util.ApplContext;
+
+/**
+ *
+ * @version $Revision: 1.2 $
+ * @author  Philippe Le Hegaret
+ */
+public class AtRulePhoneticAlphabet extends AtRule {
+    static int internal = 0;
+    int hash;
+    String alphabet = "ipa";
+
+    /**
+     * Create a new AtRulePhoneticAlphabet
+     */
+    public AtRulePhoneticAlphabet() {
+       hash = ++internal;
+    }
+
+
+    /**
+     * Returns the at rule keyword
+     */
+    public String keyword() {
+		return "phonetic-alphabet";
+    }
+
+    public void addAlphabet(String alphabet, ApplContext ac) {
+		this.alphabet = alphabet;
+	}
+
+    /**
+     * The second must be exactly the same of this one
+     */
+    public boolean canApply(AtRule atRule) {
+		return (atRule instanceof AtRulePhoneticAlphabet);
+    }
+
+    /**
+     * Return true if other is an instance of AtRUlePhoneticAlphabet
+     */
+    public boolean equals(Object other) {
+		return (other instanceof AtRulePhoneticAlphabet);
+    }
+
+    /**
+     * The second must only match this one
+     */
+    public boolean canMatched(AtRule atRule) {
+		return (atRule instanceof AtRulePhoneticAlphabet);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+		return "@" + keyword() + " " + alphabet;
+    }
+
+    public int hashCode() {
+		return hash;
+    }
+
+	public boolean isEmpty() {
+		return true;
+	}
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/parser/AtRulePreference.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,63 @@
+//
+// $Id: AtRulePreference.java,v 1.4 2005-09-14 15:14:18 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.parser;
+
+
+public class AtRulePreference extends AtRule {
+
+    static int internal = 0;
+    int hash;
+
+    /**
+     * Create a new AtRulePreference
+     */
+    public AtRulePreference() {
+	hash = ++internal;
+    }
+
+    /**
+     * Returns the at rule keyword
+     */
+    public String keyword() {
+	return "preference";
+    }
+
+    /**
+     * The second must be exactly the same as this one
+     */
+    public boolean canApply(AtRule atRule) {
+	return (atRule instanceof AtRuleFontFace);
+    }
+
+    /**
+     * Return true if other is an instance of AtRulePreference
+     */
+    public boolean equals(Object other) {
+	return (other instanceof AtRulePreference);
+    }
+
+    /**
+     * The second must only match this one
+     */
+    public boolean canMatched(AtRule atRule) {
+	return (atRule instanceof AtRulePreference);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+     public String toString() {
+	 return "@" + keyword();
+     }
+
+    public int hashCode() {
+	return hash;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/parser/CssError.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,90 @@
+//
+// $Id: CssError.java,v 1.6 2009-02-25 20:44:49 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 org.w3c.css.parser;
+
+import org.w3c.css.util.Messages;
+
+/**
+ * This class represents an unknown error during the parse.
+ *
+ * @version $Revision: 1.6 $
+ */
+public class CssError {
+
+    /**
+     * The source file
+     */
+    String sourceFile;
+
+    /**
+     * The line number in the file
+     */
+    int line;
+
+    /**
+     * The unknown error
+     */
+    Throwable error;
+
+    /**
+     * Create a new CssError
+     */
+    public CssError() {
+    }
+
+    /**
+     * Create a new CssError
+     *
+     * @param sourceFile The source file
+     * @param line       The error line number
+     * @param error      The exception
+     */
+    public CssError(String sourceFile, int line, Throwable error) {
+	this.sourceFile = sourceFile;
+	this.line = line;
+	this.error = error;
+    }
+
+    /**
+     * Create a new CssError
+     *
+     * @param error      The exception
+     */
+    public CssError(Throwable error) {
+	this.error = error;
+    }
+
+    /**
+     * Get the source file
+     */
+    public String getSourceFile() {
+	return sourceFile;
+    }
+
+    /**
+     * Get the source file
+     */
+    public String getSourceFileEscaped() {
+	return Messages.escapeString(sourceFile);
+    }
+
+    
+    /**
+     * get the line number
+     */
+    public int getLine() {
+	return line;
+    }
+
+    /**
+     * get the unknown error
+     */
+    public Throwable getException() {
+	return error;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/parser/CssErrorToken.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,89 @@
+//
+// $Id: CssErrorToken.java,v 1.4 2005-09-14 15:14:18 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 org.w3c.css.parser;
+
+import java.util.Vector;
+
+/**
+ * @version $Revision: 1.4 $
+ */
+public class CssErrorToken extends CssError {
+
+  /**
+   * The list of context when the error appears
+   */
+  Vector context;
+
+  /**
+   * the property name
+   */
+  String property;
+
+  /**
+   * the string description of the error
+   */
+  String errorString;
+
+  /**
+   * the expected text
+   */
+  String[] expectedTokens;
+
+  /**
+   * the skipped text
+   */
+  String skippedString;
+
+  /**
+   * Create a new CssErrorToken.
+   *
+   * @param lin      The line number
+   * @param error    The string description of the error
+   * @param expected The expected text
+   */
+  CssErrorToken(int lin, String error, String[] expected) {
+    line = lin;
+    errorString = error;
+    expectedTokens = expected;
+  }
+
+  /**
+   * Get contexts
+   */
+  public Vector getContexts() {
+    return context;
+  }
+
+  /**
+   * Get the name of the property.
+   */
+  public String getPropertyName() {
+    return property;
+  }
+
+  /**
+   * Get the string description of the error.
+   */
+  public String getErrorDescription() {
+    return errorString;
+  }
+
+  /**
+   * Get the expected text.
+   */
+  public String[] getExpected() {
+    return expectedTokens;
+  }
+
+  /**
+   * Get the skipped text.
+   */
+  public String getSkippedString() {
+    return skippedString;
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/parser/CssFouffa.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,973 @@
+//
+// $Id: CssFouffa.java,v 1.52 2009-02-16 17:53:39 ylafon Exp $
+// From Philippe Le Hegaret (Philippe.Le_Hegaret@sophia.inria.fr)
+//
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2003.
+// Please first read the full copyright statement in file COPYRIGHT.html
+/*
+  This class is the front end of the CSS parser
+*/
+
+package org.w3c.css.parser;
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.net.URLConnection;
+import java.util.Enumeration;
+import java.util.Vector;
+
+import java.nio.charset.Charset;
+
+import org.w3c.css.css.StyleSheetOrigin;
+import org.w3c.css.parser.analyzer.CssParser;
+import org.w3c.css.parser.analyzer.CssParserTokenManager;
+import org.w3c.css.parser.analyzer.ParseException;
+import org.w3c.css.parser.analyzer.TokenMgrError;
+import org.w3c.css.properties.PropertiesLoader;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.HTTPURL;
+import org.w3c.css.util.InvalidParamException;
+// import org.w3c.css.util.Utf8Properties;
+import org.w3c.css.util.Util;
+import org.w3c.css.values.CssExpression;
+
+/**
+ * This class is a front end of the CSS1 parser.
+ * 
+ * <p>
+ * Example:<br>
+ * <code>
+ * CssFouffa parser =
+ *   new CssFouffa(new URL("http://www.w3.org/drafts.css"));<BR>
+ * CssValidatorListener myListener = new MyParserListener();<BR>
+ * <BR>
+ * parser.addListener(myListener);<BR>
+ * parser.parseStyle();<BR>
+ * </code>
+ * 
+ * @version $Revision: 1.52 $
+ */
+public final class CssFouffa extends CssParser {
+
+    // all properties
+    CssPropertyFactory properties = null;
+
+    // static CssPropertyFactory __s_nullprop = null;
+    //
+    // static CssPropertyFactory __s_css1prop = null;
+    //
+    // static CssPropertyFactory __s_asc_tvprop = null;
+    //
+    // static CssPropertyFactory __s_css2prop = null;
+    //
+    // static CssPropertyFactory __s_css2mobileprop = null;
+    //
+    // static CssPropertyFactory __s_css2tvprop = null;
+    //
+    // static CssPropertyFactory __s_css3prop = null;
+    //
+    // static CssPropertyFactory __s_svgprop = null;
+    //
+    // static CssPropertyFactory __s_svgtinyprop = null;
+    //
+    // static CssPropertyFactory __s_svgbasicprop = null;
+    //
+    // static private Utf8Properties config = null;
+
+    // all listeners
+    Vector<CssValidatorListener> listeners;
+
+    // all errors
+    Errors errors;
+
+    // origin of the style sheet
+    int origin;
+
+    Vector<String> visited = null;
+
+    /**
+     * Create a new CssFouffa with a data input and a begin line number.
+     * 
+     * @param input
+     *            data input
+     * @param file
+     *            The source file (use for errors, warnings and import)
+     * @param beginLine
+     *            The begin line number in the file. (used for HTML for example)
+     * @exception IOException
+     *                if an I/O error occurs.
+     */
+    public CssFouffa(ApplContext ac, InputStream input, String charset, 
+		     URL file, int beginLine) 
+	throws IOException
+    {
+	super(new InputStreamReader(input, (charset == null) ? 
+				    "iso-8859-1" : charset));
+	if (ac.getOrigin() == -1) {
+	    setOrigin(StyleSheetOrigin.AUTHOR); // default is user
+	} else {
+	    setOrigin(ac.getOrigin()); // default is user
+	}
+	ac.setFrame(new Frame(this, file.toString(), beginLine, 
+			      ac.getWarningLevel()));
+	setApplContext(ac);
+	// @@this is a default media ...
+	/*
+	 * AtRuleMedia media = new AtRuleMedia();
+	 * 
+	 * if (ac.getMedium() == null) { try { media.addMedia("all", ac); }
+	 * catch (InvalidParamException e) {} //ignore } else { try {
+	 * media.addMedia(ac.getMedium(), ac); } catch (Exception e) {
+	 * System.err.println(e.getMessage()); try { media.addMedia("all", ac); }
+	 * catch (InvalidParamException ex) {} //ignore } } setAtRule(media);
+	 */
+	setURL(file);
+	if (Util.onDebug) {
+	    System.err.println("[DEBUG] CSS version " + ac.getCssVersion() + 
+			       " medium " + ac.getMedium() + " at-rule "
+			       + getAtRule() + " profile " + ac.getProfile());
+	}
+
+	String profile = ac.getProfile();
+	if (profile == null || profile.equals("") || profile.equals("none")) {
+	    profile = ac.getCssVersion();
+	}
+
+	// loadConfig(ac.getCssVersion(), ac.getProfile());
+	// load the CssStyle
+	String classStyle = PropertiesLoader.config.getProperty(profile);
+	if (classStyle == null) {
+	    classStyle = PropertiesLoader.config.getProperty("css2");
+	}
+
+	Class style;
+	try {
+	    style = Class.forName(classStyle);
+	    ac.setCssSelectorsStyle(style);
+	} catch (ClassNotFoundException e) {
+	    System.err.println("org.w3c.css.parser.CssFouffa: couldn't" + 
+			       " load the style");
+	    e.printStackTrace();
+	}
+
+	properties = new CssPropertyFactory(profile);
+	listeners = new Vector<CssValidatorListener>();
+    }
+
+    /**
+     * Create a new CssFouffa with a data input.
+     * 
+     * @param input
+     *            data input
+     * @param file
+     *            The source file (use for errors, warnings and import)
+     * @exception IOException
+     *                if an I/O error occurs.
+     */
+    public CssFouffa(ApplContext ac, InputStream input, URL file) 
+	throws IOException 
+    {
+	this(ac, input, (ac.getCharsetForURL(file) != null) ?
+	     ac.getCharsetForURL(file):"iso-8859-1", file, 0);
+    }
+
+    /**
+     * Create a new CssFouffa.
+     * 
+     * @param file
+     *            The source file (use for data input, errors, warnings and
+     *            import)
+     * @exception IOException
+     *                if an I/O error occurs.
+     */
+    public CssFouffa(ApplContext ac, URL file) throws IOException {
+	this(ac, HTTPURL.getConnection(file, ac));
+
+    }
+
+    /**
+     * Create a new CssFouffa. internal, to get the URLCOnnection and fill the
+     * URL with the relevant one
+     */
+
+    private CssFouffa(ApplContext ac, URLConnection uco) throws IOException {
+	this(ac, HTTPURL.getInputStream(ac, uco), 
+	     HTTPURL.getCharacterEncoding(ac,uco), uco.getURL(), 0);
+	String httpCL = uco.getHeaderField("Content-Location");
+	if (httpCL != null) {
+	    setURL(HTTPURL.getURL(getURL(), httpCL));
+	}
+    }
+
+    /**
+     * Create a new CssFouffa. Used by handleImport.
+     * 
+     * @param file
+     *            The source file (use for data input, errors, warnings and
+     *            import)
+     * @param listeners
+     *            Works with this listeners
+     * @exception IOException
+     *                if an I/O error occurs.
+     */
+    private CssFouffa(ApplContext ac, InputStream in, URL url, 
+		      Vector<CssValidatorListener> listeners, 
+		      Vector<String> urlvisited,
+		      CssPropertyFactory cssfactory, boolean mode) 
+	throws IOException 
+    {
+	this(ac, in, ac.getCharsetForURL(url), url, 0);
+	this.visited = urlvisited;
+	setURL(url);
+	ac.setFrame(new Frame(this, url.toString(), ac.getWarningLevel()));
+	setApplContext(ac);
+	this.listeners = listeners;
+	this.properties = cssfactory;
+	this.mode = mode;
+    }
+
+    private void ReInit(ApplContext ac, InputStream input, 
+			URL file, Frame frame) {
+	// reinitialize the parser with a new data input
+	// and a new frame for errors and warnings
+	super.ReInitWithAc(input, ac, ac.getCharsetForURL(file));
+	// @@this is a default media ...
+	// AtRuleMedia media;
+	// if ("css1".equals(ac.getCssVersion())) {
+	// media = new AtRuleMediaCSS1();
+	// } else if ("css2".equals(ac.getCssVersion())) {
+	// media = new AtRuleMediaCSS2();
+	// } else {
+	// media = new AtRuleMediaCSS2();
+	// }
+	/*
+	 * if (ac.getMedium() == null) { try { media.addMedia("all", ac); }
+	 * catch (InvalidParamException e) {} //ignore } else { try {
+	 * media.addMedia(ac.getMedium(), ac); } catch (Exception e) {
+	 * System.err.println(e.getMessage()); try { media.addMedia("all", ac); }
+	 * catch (InvalidParamException ex) {} //ignore } } setAtRule(media);
+	 */
+	setURL(file);
+	if (Util.onDebug) {
+	    System.err.println("[DEBUG] CSS version " + ac.getCssVersion() + " medium " + ac.getMedium() + " profile "
+			       + ac.getProfile());
+	}
+
+	String profile = ac.getProfile();
+	if (profile == null || profile.equals("") || profile.equals("none")) {
+	    profile = ac.getCssVersion();
+	}
+
+	// load the CssStyle
+	String classStyle = PropertiesLoader.config.getProperty(profile);
+	if (classStyle == null) {
+	    classStyle = PropertiesLoader.config.getProperty("css2");
+	}
+
+	Class style;
+	try {
+	    style = Class.forName(classStyle);
+	    ac.setCssSelectorsStyle(style);
+	} catch (ClassNotFoundException e) {
+	    System.err.println("org.w3c.css.parser.CssFouffa: couldn't" + " load the style");
+	    e.printStackTrace();
+	}
+
+	properties = new CssPropertyFactory(profile);
+	// loadConfig(ac.getCssVersion(), ac.getProfile());
+    }
+
+    /**
+     * Reinitializes a new CssFouffa with a data input and a begin line number.
+     * 
+     * @param input
+     *            data input
+     * @param file
+     *            The source file (use for errors, warnings and import)
+     * @param beginLine
+     *            The begin line number in the file. (used for HTML for example)
+     * @exception IOException
+     *                if an I/O error occurs.
+     */
+    public void ReInit(ApplContext ac, InputStream input, URL file, 
+		       int beginLine) 
+	throws IOException 
+    {
+	Frame f = new Frame(this, file.toString(), beginLine, 
+			    ac.getWarningLevel());
+	ac.setFrame(f);
+	ReInit(ac, input, file, f);
+    }
+
+    /**
+     * Reinitializes a new CssFouffa with a data input.
+     * 
+     * @param input
+     *            data input
+     * @param file
+     *            The source file (use for errors, warnings and import)
+     * @exception IOException
+     *                if an I/O error occurs.
+     */
+    public void ReInit(ApplContext ac, InputStream input, URL file) 
+	throws IOException 
+    {
+	Frame f = new Frame(this, file.toString(), ac.getWarningLevel());
+	ac.setFrame(f);
+	ReInit(ac, input, file, f);
+    }
+
+    /**
+     * Reinitializes a new CssFouffa.
+     * 
+     * @param file
+     *            The source file (use for data input, errors, warnings and
+     *            import)
+     * @exception IOException
+     *                if an I/O error occurs.
+     */
+    public void ReInit(ApplContext ac, URL file) throws IOException {
+	InputStream is;
+	URL url;
+	Frame f;
+	
+	f = new Frame(this, file.toString(), ac.getWarningLevel());
+	ac.setFrame(f);
+	if (ac.isInputFake()) {
+	    is = ac.getFakeInputStream(file);
+	    url = file;
+	} else {
+	    URLConnection urlC = HTTPURL.getConnection(file, ac);
+	    is  = HTTPURL.getInputStream(ac, urlC);
+	    url = urlC.getURL();
+	}
+	ReInit(ac, is, url, f);
+    }
+
+    /**
+     * Set the attribute origin
+     * 
+     * @param origin
+     *            the new value for the attribute
+     */
+    private final void setOrigin(int origin) {
+	this.origin = origin;
+    }
+
+    /**
+     * Returns the attribute origin
+     * 
+     * @return the value of the attribute
+     */
+    public final int getOrigin() {
+	return origin;
+    }
+
+    /**
+     * Adds a listener to the parser.
+     * 
+     * @param listener
+     *            The listener
+     * @see org.w3c.css.parser.CssValidatorListener
+     */
+    public final void addListener(CssValidatorListener listener) {
+	listeners.addElement(listener);
+    }
+
+    /**
+     * Removes a listener from the parser
+     * 
+     * @param listener
+     *            The listener
+     * @see org.w3c.css.parser.CssValidatorListener
+     */
+    public final void removeListener(CssValidatorListener listener) {
+	listeners.removeElement(listener);
+    }
+
+    /**
+     * Parse the style sheet. This is the main function of this parser.
+     * 
+     * <p>
+     * Example:<br>
+     * <code>
+     * CssFouffa parser = new CssFouffa(new
+     *                                URL("http://www.w3.org/drafts.css"));<BR>
+     * CssValidatorListener myListener = new MyParserListener();<BR>
+     * <BR>
+     * parser.addListener(myListener);<BR>
+     * parser.parseStyle();<BR>
+     * </code>
+     * 
+     * @see org.w3c.css.parser.CssFouffa#addListener
+     */
+    public void parseStyle() {
+	try {
+	    parserUnit();
+	} catch (TokenMgrError e) {
+	    throw e;
+	} catch (Throwable e) {
+	    if (Util.onDebug) {
+		e.printStackTrace();
+	    }
+	    RuntimeException ne = new RuntimeException(e.getMessage());
+	    ne.fillInStackTrace();
+	    throw (ne);
+	}
+
+	// That's all folks, notify all errors and warnings
+	for (Enumeration<CssValidatorListener> e = listeners.elements(); 
+	     e.hasMoreElements();) {
+	    CssValidatorListener listener;
+	    listener = e.nextElement();
+	    listener.notifyErrors(ac.getFrame().getErrors());
+	    listener.notifyWarnings(ac.getFrame().getWarnings());
+	}
+    }
+
+    /**
+     * Call the namespace declaration statement
+     * @param url, the style sheet where this declaration statement appears.
+     * @param prefix, the namespace prefix
+     * @param nsname, the file/url name in the declaration statement
+     * @param is_url, if the nsname is a file or an url
+     */
+    public void handleNamespaceDeclaration(URL url, String prefix,
+					   String nsname, 
+					   boolean is_url) {
+	AtRuleNamespace nsrule = new AtRuleNamespace(prefix, nsname, is_url);
+	newAtRule(nsrule);
+	endOfAtRule(); 
+	// add the NS in the global context definition
+	ac.setNamespace(url, prefix, nsname);
+    }
+    /**
+     * Call by the import statement.
+     * 
+     * @param url
+     *            The style sheet where this import statement appears.
+     * @param file
+     *            the file name in the import statement
+     */
+    public void handleImport(URL url, String file, boolean is_url,
+			     AtRuleMedia media) {
+	// CssError cssError = null;
+	AtRuleImport importrule = new AtRuleImport(file, is_url, media);
+	newAtRule(importrule);
+	endOfAtRule();
+
+	//if it's not permitted to import... (direct input)
+	if (url.getProtocol().equals("file")) {
+	    ac.getFrame().addWarning("unsupported-import");
+	    return;
+	}
+
+	try {
+	    URL importedURL = HTTPURL.getURL(url, file);
+	    String surl = importedURL.toString();
+
+	    if (visited == null) {
+		visited = new Vector<String>(2);
+	    } else {
+		// check that we didn't already got this URL, or that the
+		// number of imports is not exploding
+		if (visited.contains(surl)) {
+		    CssError cerr = new CssError(new Exception("Import loop" +
+							       " detected in "+
+							       surl));
+		    ac.getFrame().addError(cerr);
+		    return;
+		} else if (visited.size() > 42) {
+		    CssError cerr = new CssError(new Exception("Maximum number"+
+							       " of imports " +
+							       "reached"));
+		    ac.getFrame().addError(cerr);
+		    return;
+		}
+	    }
+	    Vector<String> newVisited = new Vector<String>(visited);
+	    newVisited.addElement(surl);
+
+	    if (Util.importSecurity) {
+		throw new FileNotFoundException("[SECURITY] You can't " +
+						"import URL sorry.");
+	    }
+
+	    URLConnection importURL = HTTPURL.getConnection(importedURL, ac);
+	    String charset = HTTPURL.getCharacterEncoding(ac, importURL);
+
+	    if (importURL instanceof HttpURLConnection) {
+		HttpURLConnection httpURL = (HttpURLConnection) importURL;
+		String httpCL = httpURL.getHeaderField("Content-Location");
+		if (httpCL != null) {
+		    importedURL = HTTPURL.getURL(importedURL, httpCL);
+		}
+		String mtype = httpURL.getContentType();
+		if (mtype == null) {
+		    throw new FileNotFoundException(importURL.getURL() + 
+						    "No Media Type defined");
+		} else {
+		    if (mtype.toLowerCase().indexOf("text/html") != -1) {
+			throw new FileNotFoundException(importURL.getURL() + 
+							": You can't import" + 
+							" an HTML document");
+		    }
+		}
+	    }
+	    Frame f = ac.getFrame();
+	    try {
+		CssFouffa cssFouffa = new CssFouffa(ac, 
+					  HTTPURL.getInputStream(ac, importURL),
+					  importedURL, listeners, newVisited,
+					  properties, mode);
+		cssFouffa.setOrigin(getOrigin());
+		if (!media.isEmpty()) {
+		    cssFouffa.setAtRule(media);
+		} else {
+		    cssFouffa.setAtRule(getAtRule());
+		}
+		cssFouffa.parseStyle();
+	    } finally {
+		ac.setFrame(f);
+	    }
+	} catch (Exception e) {
+	    if (!Util.noErrorTrace) {
+		ac.getFrame().addError(new CssError(e));
+	    }
+	}
+    }
+
+    /**
+     * Call by the at-rule statement.
+     * 
+     * @param ident
+     *            The ident for this at-rule (for example: 'font-face')
+     * @param string
+     *            The string representation of this at-rule
+     */
+    public void handleAtRule(String ident, String string) {
+	if (mode) {
+	    Enumeration<CssValidatorListener> e = listeners.elements();
+	    while (e.hasMoreElements()) {
+		CssValidatorListener listener = e.nextElement();
+		listener.handleAtRule(ac, ident, string);
+	    }
+	} else {
+	    if (!Util.noErrorTrace) {
+		// only @import <string>; or @import <url>; are valids in CSS1
+		ParseException error = new ParseException("at-rules are not implemented in CSS1");
+		ac.getFrame().addError(new CssError(error));
+	    }
+	}
+    }
+
+    /**
+     * Assign an expression to a property. This function create a new property
+     * with <code>property</code> and assign to it the expression with the
+     * importance.
+     * 
+     * @param property
+     *            the name of the property
+     * @param expression
+     *            The expression representation of expression
+     * @param important
+     *            true if expression id important
+     * @param InvalidParamException
+     *            An error appears during the property creation.
+     * @return a CssProperty
+     */
+    public CssProperty handleDeclaration(String property, CssExpression expression, boolean important)
+	throws InvalidParamException {
+	CssProperty prop;
+	if (Util.onDebug) {
+	    System.err.println("Creating " + property + ": " + expression);
+	}
+
+	try {
+	    if (getMediaDeclaration().equals("on") && (getAtRule() instanceof AtRuleMedia)) {
+		prop = properties.createMediaFeature(ac, getAtRule(), property, expression);
+	    } else {
+		prop = properties.createProperty(ac, getAtRule(), property, expression);
+	    }
+
+	} catch (InvalidParamException e) {
+	    throw e;
+	} catch (Exception e) {
+	    if (Util.onDebug) {
+		e.printStackTrace();
+	    }
+	    throw new InvalidParamException(e.toString(), ac);
+	}
+
+	// set the importance
+	if (important) {
+	    prop.setImportant();
+	}
+	prop.setOrigin(origin);
+	// set informations for errors and warnings
+	prop.setInfo(ac.getFrame().getLine(), ac.getFrame().getSourceFile());
+
+	// ok, return the new property
+	return prop;
+
+    }
+
+    /**
+     * Parse only a list of declarations. This is useful to parse the
+     * <code>STYLE</code> attribute in a HTML document.
+     * 
+     * <p>
+     * Example:<br>
+     * <code>
+     * CssFouffa parser =
+     *    new CssFouffa(new URL("http://www.w3.org/drafts.css"));<BR>
+     * CssValidatorListener myListener = new MyParserListener();<BR>
+     * CssSelector selector = new CssSelector();
+     * selector.setElement("H1");
+     * <BR>
+     * parser.addListener(myListener);<BR>
+     * parser.parseDeclarations(selector);<BR>
+     * </code>
+     * 
+     * @param context
+     *            The current context
+     * @see org.w3c.css.parser.CssFouffa#addListener
+     * @see org.w3c.css.parser.CssSelectors#setElement
+     */
+    public void parseDeclarations(CssSelectors context) {
+	// here we have an example for reusing the parser.
+	try {
+	    Vector properties = declarations();
+
+	    if (properties != null && properties.size() != 0) {
+		handleRule(context, properties);
+	    }
+	} catch (ParseException e) {
+	    if (!Util.noErrorTrace) {
+		CssParseException ex = new CssParseException(e);
+		ex.skippedString = "";
+		ex.property = currentProperty;
+		ex.contexts = currentContext;
+		CssError error = new CssError(getSourceFile(), getLine(), ex);
+		ac.getFrame().addError(error);
+	    }
+	}
+
+	if (!Util.noErrorTrace) {
+	    for (Enumeration<CssValidatorListener> e = listeners.elements(); e.hasMoreElements();) {
+		CssValidatorListener listener = e.nextElement();
+		listener.notifyErrors(ac.getFrame().getErrors());
+		listener.notifyWarnings(ac.getFrame().getWarnings());
+	    }
+	}
+    }
+
+    /**
+     * used for the output of the stylesheet
+     * 
+     * @param atRule
+     *            the
+     * @rule that just has been found by the parser in the stylesheet, it is
+     *       added to the storage for the output
+     */
+    public void newAtRule(AtRule atRule) {
+	for (Enumeration<CssValidatorListener> e = listeners.elements(); 
+	     e.hasMoreElements();) {
+	    e.nextElement().newAtRule(atRule);
+	}
+    }
+
+    /**
+     * used for the output of the stylesheet
+     * 
+     * @param charset
+     *            the
+     * @charset rule that has been found by the parser
+     */
+    public void addCharSet(String charset) {
+	for (Enumeration<CssValidatorListener> e = listeners.elements(); 
+	     e.hasMoreElements();) {
+	    e.nextElement().addCharSet(charset);
+	}
+	Charset c = null;
+	try {
+	    c = Charset.forName(charset);
+	} catch (Exception ex) {
+	    return;
+	}
+	Charset originalCharset = ac.getCharsetObjForURL(getURL());
+	if (originalCharset == null) {
+	    ac.setCharsetForURL(getURL(), c);
+	    try {
+		ReInit(ac, getURL());
+	    } catch (IOException ioex) {}
+	} else if (c.compareTo(originalCharset) != 0) {
+	    Exception ex = new Exception("Conflicting charset definition "+
+					 "between network and @charset "+
+					 originalCharset+" and "+charset);
+	    CssError cerr = new CssError(ex);
+	    ac.getFrame().addError(cerr);
+	}
+    }
+
+    /**
+     * used for the output of the stylesheet the
+     * 
+     * @rule that had been found before is closed here after the content that's
+     *       in it.
+     */
+    public void endOfAtRule() {
+	for (Enumeration<CssValidatorListener> e = listeners.elements(); 
+	     e.hasMoreElements();) {
+	    e.nextElement().endOfAtRule();
+	}
+    }
+
+    /**
+     * used for the output of the stylesheet
+     * 
+     * @param important
+     *            true if the rule was declared important in the stylesheet
+     */
+    public void setImportant(boolean important) {
+	for (Enumeration<CssValidatorListener> e = listeners.elements(); 
+	     e.hasMoreElements();) {
+	    e.nextElement().setImportant(important);
+	}
+    }
+
+    /**
+     * used for the output of the stylesheet
+     * 
+     * @param selectors
+     *            a list of one or more selectors to be added to the output
+     *            stylesheet
+     */
+    public void setSelectorList(Vector selectors) {
+	for (Enumeration<CssValidatorListener> e = listeners.elements(); e.hasMoreElements();) {
+	    e.nextElement().setSelectorList(selectors);
+	}
+    }
+
+    /**
+     * used for the output of the stylesheet
+     * 
+     * @param properties
+     *            A list of properties that are following eachother in the
+     *            stylesheet (for example: all properties in an
+     * @rule)
+     */
+    public void addProperty(Vector properties) {
+	for (Enumeration<CssValidatorListener> e = listeners.elements(); e.hasMoreElements();) {
+	    e.nextElement().setProperty(properties);
+	}
+    }
+
+    /**
+     * used for the output of the stylesheet used to close a rule when it has
+     * been read by the parser
+     */
+    public void endOfRule() {
+	for (Enumeration<CssValidatorListener> e = listeners.elements(); e.hasMoreElements();) {
+	    e.nextElement().endOfRule();
+	}
+    }
+
+    /**
+     * used for the output of the stylesheet if an error is found this function
+     * is used to remove the whole stylerule from the memorystructure so that it
+     * won't appear on the screen
+     */
+    public void removeThisRule() {
+	for (Enumeration<CssValidatorListener> e = listeners.elements(); e.hasMoreElements();) {
+	    e.nextElement().removeThisRule();
+	}
+    }
+
+    /**
+     * used for the output of the stylesheet if an error is found this function
+     * is used to remove the whole
+     * 
+     * @rule from the memorystructure so that it won't appear on the screen
+     */
+    public void removeThisAtRule() {
+	for (Enumeration<CssValidatorListener> e = listeners.elements(); e.hasMoreElements();) {
+	    e.nextElement().removeThisAtRule();
+	}
+    }
+
+    /**
+     * Adds a vector of properties to a selector.
+     * 
+     * @param selector
+     *            the selector
+     * @param declarations
+     *            Properties to associate with contexts
+     */
+    public void handleRule(CssSelectors selector, Vector declarations) {
+	for (Enumeration<CssValidatorListener> e = listeners.elements(); e.hasMoreElements();) {
+	    e.nextElement().handleRule(ac, selector, declarations);
+	}
+    }
+
+    /**
+     * Return the class name for a property
+     * 
+     * @param property
+     *            the property name ('font-size' for example)
+     * @return the class name ('org.w3c.css.properties.CssFontSize' for example)
+     */
+    public String getProperty(String property) {
+	return properties.getProperty(property);
+    }
+
+    /**
+     * Set the style
+     */
+    public void setStyle(Class style) {
+	ac.setCssSelectorsStyle(style);
+    }
+
+    /**
+     * Load the parser properties configuration.
+     * 
+     * <p>
+     * By default, the parser is configure for cascading style sheet 1.
+     * 
+     * <OL>
+     * You have three parser properties :
+     * <LI> style: the class name of your CssStyle.
+     * <LI> properties: the file name where the parser can find all CSS
+     * properties names.
+     * <LI> extended-parser: <code>true</code> if you want to parse cascading
+     * style sheet 2 or 3.
+     * <OL>
+     */
+    /*
+     * public void loadConfig(String version, String profile) { try {
+     * 
+     * URL allprops = CssFouffa.class.getResource("allcss.properties"); URL url =
+     * null;
+     * 
+     * if (version == null) { // load the CssStyle String classStyle =
+     * config.getProperty("style2"); Class style = Class.forName(classStyle);
+     * ac.setCssSelectorsStyle(style);
+     * 
+     * properties = __s_nullprop.getClone();
+     *  // aural mode String mode0 = config.getProperty("extended-parser"); if
+     * (mode0 != null) { mode = mode0.equals("true"); } } else if
+     * (version.equals("css1")) { // load the CssStyle String classStyle =
+     * config.getProperty("style1"); Class style = Class.forName(classStyle);
+     * ac.setCssSelectorsStyle(style);
+     * 
+     * if (__s_css1prop == null) { // css1 url =
+     * style.getResource(config.getProperty("properties1")); __s_css1prop = new
+     * CssPropertyFactory(url, allprops); } // load properties properties =
+     * __s_css1prop.getClone();
+     *  // aural mode String mode0 = config.getProperty("extended-parser"); if
+     * (mode0 != null) { mode = mode0.equals("true"); } } else if
+     * ("atsc-tv".equals(profile)) { String classStyle =
+     * config.getProperty("styleatsc"); Class style = Class.forName(classStyle);
+     * ac.setCssSelectorsStyle(style); if (__s_asc_tvprop == null) { url =
+     * style.getResource(config.getProperty("atsc-tv")); __s_asc_tvprop = new
+     * CssPropertyFactory(url, allprops); } properties =
+     * __s_asc_tvprop.getClone(); } else if (version.equals("css2")) { // load
+     * the CssStyle String classStyle = config.getProperty("style2"); Class
+     * style = Class.forName(classStyle); ac.setCssSelectorsStyle(style);
+     *  // load properties if (profile == null || "".equals(profile)) {
+     * properties = __s_css2prop.getClone(); } else if
+     * (profile.equals("mobile")) { if (__s_css2mobileprop == null) { url =
+     * style.getResource(config.getProperty("mobile")); __s_css2mobileprop = new
+     * CssPropertyFactory(url, allprops); } properties =
+     * __s_css2mobileprop.getClone(); } else if (profile.equals("tv")) { if
+     * (__s_css2tvprop == null) { // css2-tv url =
+     * style.getResource(config.getProperty("tv")); __s_css2tvprop = new
+     * CssPropertyFactory(url, allprops); } properties =
+     * __s_css2tvprop.getClone(); }
+     *  // aural mode String mode0 = config.getProperty("extended-parser"); if
+     * (mode0 != null) { mode = mode0.equals("true"); } } else if
+     * (version.equals("css3")) { // load the CssStyle String classStyle =
+     * config.getProperty("style3"); Class style = Class.forName(classStyle);
+     * ac.setCssSelectorsStyle(style);
+     *  // load properties if (__s_css3prop == null) { url =
+     * style.getResource(config.getProperty("properties3")); __s_css3prop = new
+     * CssPropertyFactory(url, allprops); } properties =
+     * __s_css3prop.getClone();
+     *  // aural mode String mode0 = config.getProperty("extended-parser"); if
+     * (mode0 != null) { mode = mode0.equals("true"); } } else if
+     * (version.equals("svg")) { // load the CssStyle String classStyle =
+     * config.getProperty("svgstyle"); Class style = Class.forName(classStyle);
+     * ac.setCssSelectorsStyle(style);
+     * 
+     * if (__s_svgprop == null) { url =
+     * style.getResource(config.getProperty("svg")); __s_svgprop = new
+     * CssPropertyFactory(url, allprops); } properties = __s_svgprop.getClone();
+     *  // aural mode String mode0 = config.getProperty("extended-parser"); if
+     * (mode0 != null) { mode = mode0.equals("true"); } } else if
+     * (version.equals("svgtiny")) { // load the CssStyle String classStyle =
+     * config.getProperty("svgtinystyle"); Class style =
+     * Class.forName(classStyle); ac.setCssSelectorsStyle(style);
+     * 
+     * if (__s_svgtinyprop == null) { url =
+     * style.getResource(config.getProperty("svgtiny")); __s_svgtinyprop = new
+     * CssPropertyFactory(url, allprops); } properties =
+     * __s_svgtinyprop.getClone();
+     *  // aural mode String mode0 = config.getProperty("extended-parser"); if
+     * (mode0 != null) { mode = mode0.equals("true"); } } else if
+     * (version.equals("svgbasic")) { // load the CssStyle String classStyle =
+     * config.getProperty("svgbasicstyle"); Class style =
+     * Class.forName(classStyle); ac.setCssSelectorsStyle(style);
+     * 
+     * if (__s_svgbasicprop == null) { url =
+     * style.getResource(config.getProperty("svgbasic")); __s_svgbasicprop = new
+     * CssPropertyFactory(url, allprops); } properties =
+     * __s_svgbasicprop.getClone();
+     *  // aural mode String mode0 = config.getProperty("extended-parser"); if
+     * (mode0 != null) { mode = mode0.equals("true"); } }
+     *  } catch (Exception e) {
+     * System.err.println("org.w3c.css.parser.CssFouffa: couldn't" + " load the
+     * style"); e.printStackTrace(); } }
+     */
+
+    /* config by default! */
+    /*
+     * static { try { config = new Utf8Properties(); URL url =
+     * CssFouffa.class.getResource("Config.properties"); java.io.InputStream f =
+     * url.openStream(); config.load(f); f.close(); // null URL allprops =
+     * CssFouffa.class.getResource("allcss.properties"); String classStyle =
+     * config.getProperty("style2"); Class style = Class.forName(classStyle);
+     * url = style.getResource(config.getProperty("properties2")); __s_nullprop =
+     * new CssPropertyFactory(url, allprops);
+     *  // css2 // classStyle = config.getProperty("style2"); // style =
+     * Class.forName(classStyle); // url =
+     * style.getResource(config.getProperty("properties2")); // __s_css2prop =
+     * new CssPropertyFactory(url, allprops); __s_css2prop = __s_nullprop;
+     *  } catch (Exception e) {
+     * System.err.println("org.w3c.css.parser.CssFouffa: couldn't" + " load the
+     * config"); e.printStackTrace(); } }
+     */
+
+    public CssFouffa(java.io.InputStream stream) {
+	super(stream);
+	properties = new CssPropertyFactory("css2");
+	// loadConfig("css2", null);
+    }
+
+    public CssFouffa(java.io.Reader stream) {
+	super(stream);
+	properties = new CssPropertyFactory("css2");
+	// loadConfig("css2", null);
+    }
+
+    public CssFouffa(CssParserTokenManager tm) {
+	super(tm);
+	properties = new CssPropertyFactory("css2");
+	// loadConfig("css2", null);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/parser/CssParseException.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,150 @@
+//
+// $Id: CssParseException.java,v 1.5 2005-09-14 15:14:18 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 org.w3c.css.parser;
+
+import java.util.Vector;
+
+import org.w3c.css.parser.analyzer.ParseException;
+import org.w3c.css.values.CssExpression;
+
+/**
+ * @version $Revision: 1.5 $
+ */
+public class CssParseException extends ParseException {
+
+    /**
+     * The list of context when the error appears
+     */
+    Vector contexts;
+
+    /**
+     * the property name
+     */
+    String property;
+
+    /**
+     * the skipped text
+     */
+    String skippedString;
+
+    /**
+     * An expression
+     */
+    CssExpression exp;
+
+    /**
+     * The real exception
+     */
+    Exception parseException;
+
+    private boolean error;
+
+    /**
+     * Create a new CssParseException
+     */
+    public CssParseException(Exception exc) {
+	parseException = exc;
+	if (parseException instanceof ParseException) {
+	    ParseException e = (ParseException) exc;
+	    error = (e.currentToken != null
+		     && e.expectedTokenSequences != null
+		     && e.tokenImage != null);
+	}
+    }
+
+    public Exception getException() {
+	return parseException;
+    }
+
+    public boolean isParseException() {
+	return (parseException instanceof ParseException);
+    }
+
+    /**
+     * Get the exception message
+     */
+    public String getMessage() {
+	if (!error) {
+	    return parseException.getMessage();
+	} else {
+	    return null;
+	}
+    }
+
+    /**
+     * Set the attribute contexts
+     *
+     * @param contexts the new value for the attribute
+     */
+    public void setContexts(Vector contexts) {
+        this.contexts = contexts;
+    }
+
+    /**
+     * Returns the attribute contexts
+     *
+     * @return the value of the attribute
+     */
+    public Vector getContexts() {
+        return contexts;
+    }
+
+    /**
+     * Set the attribute property
+     *
+     * @param property the new value for the attribute
+     */
+    public void setProperty(String property) {
+        this.property = property;
+    }
+
+    /**
+     * Returns the attribute property
+     *
+     * @return the value of the attribute
+     */
+    public String getProperty() {
+        return property;
+    }
+
+    /**
+     * Set the attribute skippedString
+     *
+     * @param skippedString the new value for the attribute
+     */
+    public void setSkippedString(String skippedString) {
+        this.skippedString = skippedString;
+    }
+
+    /**
+     * Returns the attribute skippedString
+     *
+     * @return the value of the attribute
+     */
+    public String getSkippedString() {
+        return skippedString;
+    }
+
+    /**
+     * Set the attribute exp
+     *
+     * @param exp the new value for the attribute
+     */
+    public void setExp(CssExpression exp) {
+        this.exp = exp;
+    }
+
+    /**
+     * Returns the attribute exp
+     *
+     * @return the value of the attribute
+     */
+    public CssExpression getExp() {
+        return exp;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/parser/CssPrinterStyle.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,28 @@
+//
+// $Id: CssPrinterStyle.java,v 1.4 2005-09-08 12:23:33 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 org.w3c.css.parser;
+
+import org.w3c.css.properties.css1.CssProperty;
+
+/**
+ * This class is invoke by all propperties when a print is required.
+ *
+ * @version $Revision: 1.4 $
+ * @see org.w3c.css.parser.CssStyle#print
+ */
+public interface CssPrinterStyle {
+
+  /**
+   * Print this property.
+   *
+   * @param property The property to print.
+   * @see org.w3c.css.properties.css1.CssProperty#toString
+   * @see org.w3c.css.properties.css1.CssProperty#getPropertyName
+   */
+  public void print(CssProperty property);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/parser/CssPropertyFactory.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,266 @@
+//
+// $Id: CssPropertyFactory.java,v 1.23 2008-12-10 15:22:58 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 org.w3c.css.parser;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
+import java.util.StringTokenizer;
+import java.util.Vector;
+
+import org.w3c.css.properties.PropertiesLoader;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.util.Utf8Properties;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssIdent;
+
+/**
+ * @version $Revision: 1.23 $
+ * @author Philippe Le Hegaret
+ */
+public class CssPropertyFactory implements Cloneable {
+
+    // all recognized properties are here.
+    private Utf8Properties properties;
+	
+    //all used profiles are here (in the priority order)
+    private static String[] SORTEDPROFILES = PropertiesLoader.getProfiles();
+
+    // private Utf8Properties allprops;
+
+    // does not seem to be used
+    // private String usermedium;
+
+    public CssPropertyFactory getClone() {
+	try {
+	    return (CssPropertyFactory) clone();
+	} catch (CloneNotSupportedException ex) {
+	    ex.printStackTrace();
+	    return null;
+	}
+    }
+
+    /**
+     * Create a new CssPropertyFactory
+     */
+    /*
+     * public CssPropertyFactory(URL url, URL allprop_url) { properties = new
+     * Utf8Properties(); InputStream f = null; try { f = url.openStream();
+     * properties.load(f); } catch (IOException e) { e.printStackTrace(); }
+     * finally { try { if (f != null) f.close(); } catch (Exception e) {
+     * e.printStackTrace(); } // ignore }
+     *  // list of all properties allprops = new Utf8Properties(); InputStream
+     * f_all = null; try { f_all = allprop_url.openStream();
+     * allprops.load(f_all); } catch (IOException e) { e.printStackTrace(); }
+     * finally { try { if (f_all != null) f_all.close(); } catch (Exception e) {
+     * e.printStackTrace(); } // ignore } }
+     */
+
+    public CssPropertyFactory(String profile) {
+	properties = PropertiesLoader.getProfile(profile);
+	// It's not good to have null properties :-/
+	if (properties == null) {
+	    throw new NullPointerException();
+	}
+    }
+
+    public String getProperty(String name) {
+	return properties.getProperty(name);
+    }
+
+    private Vector<String> getVector(String media) {
+	Vector<String> list = new Vector<String>(4);
+	String medium = new String();
+	StringTokenizer tok = new StringTokenizer(media, ",");
+
+	while (tok.hasMoreTokens()) {
+	    medium = tok.nextToken();
+	    medium = medium.trim();
+	    list.addElement(medium);
+	}
+
+	return list;
+    }
+
+    // public void setUserMedium(String usermedium) {
+    // this.usermedium = usermedium;
+    // }
+
+    // bug: FIXME
+    // @media screen and (min-width: 400px) and (max-width: 700px), print {
+    // a {
+    // border: 0;
+    // }
+    // }
+    public synchronized CssProperty createMediaFeature(ApplContext ac, AtRule atRule, String property,
+						       CssExpression expression) throws Exception {
+	// String result = "ok";
+	String media = atRule.toString();
+	int pos = -1;
+	int pos2 = media.toUpperCase().indexOf("AND");
+
+	if (pos2 == -1) {
+	    pos2 = media.length();
+	}
+
+	if (media.toUpperCase().indexOf("NOT") != -1) {
+	    pos = media.toUpperCase().indexOf("NOT");
+	    media = media.substring(pos + 4, pos2);
+	} else if (media.toUpperCase().indexOf("ONLY") != -1) {
+	    pos = media.toUpperCase().indexOf("ONLY");
+	    media = media.substring(pos + 4, pos2);
+	} else {
+	    pos = media.indexOf(" ");
+	    media = media.substring(pos + 1, pos2);
+	}
+
+	media = media.trim();
+
+	String classname = properties.getProperty("mediafeature" + "." + property);
+
+	if (classname == null) {
+	    if (atRule instanceof AtRuleMedia && (!media.equals("all"))) {
+		// I don't know this property
+		throw new InvalidParamException("noexistence-media", property, media, ac);
+		// ac.getFrame().addWarning("noexistence-media", property);
+		// classname = allprops.getProperty(property);
+	    } else {
+		// I don't know this property
+		throw new InvalidParamException("noexistence", property, media, ac);
+	    }
+	}
+
+	try {
+	    // create an instance of your property class
+	    Class expressionclass = new CssExpression().getClass();
+	    if (expression != null) {
+		expressionclass = expression.getClass();
+	    }
+	    // Maybe it will be necessary to add the check parameter as for
+	    // create property, so... FIXME
+	    Class[] parametersType = { ac.getClass(), expressionclass };
+	    Constructor constructor = Class.forName(classname).getConstructor(parametersType);
+	    Object[] parameters = { ac, expression };
+	    // invoke the constructor
+	    return (CssProperty) constructor.newInstance(parameters);
+	} catch (InvocationTargetException e) {
+	    // catch InvalidParamException
+	    InvocationTargetException iv = e;
+	    Exception ex = (Exception) iv.getTargetException();
+	    throw ex;
+	}
+
+    }
+
+    public synchronized CssProperty createProperty(ApplContext ac, AtRule atRule, String property,
+						   CssExpression expression) throws Exception {
+	String classname = null;
+	String media = atRule.toString();
+	int pos = -1;
+	String upperMedia = media.toUpperCase();
+	int pos2 = upperMedia.indexOf("AND ");
+
+	if (pos2 == -1) {
+	    pos2 = media.length();
+	}
+
+	if ((pos = upperMedia.indexOf("NOT")) != -1) {
+	    media = media.substring(pos + 4, pos2);
+	} else if ((pos = upperMedia.indexOf("ONLY")) != -1) {
+	    media = media.substring(pos + 4, pos2);
+	} else {
+	    pos = media.indexOf(' ');
+	    media = media.substring(pos + 1, pos2);
+	}
+
+	media = media.trim();
+
+	classname = setClassName(atRule, media, ac, property);
+		
+	// the property does not exist in this profile
+	// this is an error... or a warning if it exists in another profile
+	if (classname == null) {
+	    ArrayList<String> pfsOk = new ArrayList<String>();
+			
+	    for (int i=0; i<SORTEDPROFILES.length; ++i) {
+		String p = String.valueOf(SORTEDPROFILES[i]);
+		if (!p.equals(ac.getCssVersion()) && PropertiesLoader.getProfile(p).containsKey(property)) {
+		    pfsOk.add(p);
+		}
+	    }
+			
+	    if (pfsOk.size() > 0) {
+		/*
+		// This should be uncommented when no-profile in enabled
+		if (ac.getProfile().equals("none")) {
+		// the last one should be the best one to use
+		String	pf = (String) pfsOk.get(pfsOk.size()-1),
+		old_pf = ac.getCssVersion();
+		ac.setCssVersion(pf);
+		ac.getFrame().addWarning("noexistence", new String[] { property, ac.getMsg().getString(old_pf), pfsOk.toString() });
+		classname = setClassName(atRule, media, ac, property);
+		ac.setCssVersion(old_pf);
+		}
+		else
+		*/
+		throw new InvalidParamException("noexistence", new String[] { property, ac.getMsg().getString(ac.getCssVersion()), pfsOk.toString() }, ac);
+	    } else {
+		throw new InvalidParamException("noexistence-at-all", property, ac);
+	    }
+	}
+
+	CssIdent initial = new CssIdent("initial");
+
+	try {
+	    if (expression.getValue().equals(initial) && ac.getCssVersion().equals("css3")) {
+		// create an instance of your property class
+		Class[] parametersType = {};
+		Constructor constructor = Class.forName(classname).getConstructor(parametersType);
+		Object[] parameters = {};
+		// invoke the constructor
+		return (CssProperty) constructor.newInstance(parameters);
+	    } else {
+		// create an instance of your property class
+		Class[] parametersType = { ac.getClass(), expression.getClass(), boolean.class };
+		Constructor constructor = Class.forName(classname).getConstructor(parametersType);
+		Object[] parameters = { ac, expression, new Boolean(true) };
+		// invoke the constructor
+		return (CssProperty) constructor.newInstance(parameters);
+			
+	    }
+	} catch (InvocationTargetException e) {
+	    // catch InvalidParamException
+	    InvocationTargetException iv = e;
+	    Exception ex = (Exception) iv.getTargetException();
+	    throw ex;
+	}
+    }
+
+    private String setClassName(AtRule atRule, String media, ApplContext ac, String property) {
+	String className;
+	Vector<String> list = new Vector<String>(getVector(media));
+	if (atRule instanceof AtRuleMedia) {
+	    className = PropertiesLoader.getProfile(ac.getCssVersion()).getProperty(property);
+	    // a list of media has been specified
+	    if (className != null && !media.equals("all")) {
+		String propMedia = PropertiesLoader.mediaProperties.getProperty(property);
+		for (int i = 0; i < list.size(); i++) {
+		    String medium = list.elementAt(i);
+		    if (propMedia.indexOf(medium.toLowerCase()) == -1 && !propMedia.equals("all")) {
+			ac.getFrame().addWarning("noexistence-media", new String[] { property, medium + " (" + propMedia + ")" });
+		    }
+		}
+	    }
+	} else {
+	    className = PropertiesLoader.getProfile(ac.getCssVersion()).getProperty("@" + atRule.keyword() + "." + property);
+	}
+	return className;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/parser/CssSelectors.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,628 @@
+//
+// $Id: CssSelectors.java,v 1.28 2009-02-25 20:44:49 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 org.w3c.css.parser;
+
+import java.util.ArrayList;
+import java.util.Enumeration;
+
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.selectors.AdjacentSiblingSelector;
+import org.w3c.css.selectors.AttributeSelector;
+import org.w3c.css.selectors.ChildSelector;
+import org.w3c.css.selectors.DescendantSelector;
+import org.w3c.css.selectors.GeneralSiblingSelector;
+import org.w3c.css.selectors.PseudoClassSelector;
+import org.w3c.css.selectors.PseudoElementSelector;
+import org.w3c.css.selectors.PseudoFactory;
+import org.w3c.css.selectors.Selector;
+import org.w3c.css.selectors.SelectorsList;
+import org.w3c.css.selectors.TypeSelector;
+import org.w3c.css.selectors.attributes.AttributeExact;
+import org.w3c.css.selectors.pseudofunctions.PseudoFunctionContains;
+import org.w3c.css.selectors.pseudofunctions.PseudoFunctionLang;
+import org.w3c.css.selectors.pseudofunctions.PseudoFunctionNot;
+import org.w3c.css.selectors.pseudofunctions.PseudoFunctionNthChild;
+import org.w3c.css.selectors.pseudofunctions.PseudoFunctionNthLastChild;
+import org.w3c.css.selectors.pseudofunctions.PseudoFunctionNthLastOfType;
+import org.w3c.css.selectors.pseudofunctions.PseudoFunctionNthOfType;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.util.Messages;
+import org.w3c.css.util.Util;
+import org.w3c.css.util.Warnings;
+
+/**
+ * This class manages all contextual selector.
+ *
+ * <p>
+ * Note:<BR>
+ * Invoke a <code>set</code> function to change the selector clears all
+ * properties !
+ *
+ * @version $Revision: 1.28 $
+ */
+public final class CssSelectors extends SelectorsList 
+    implements CssSelectorsConstant {
+
+    ApplContext ac;
+
+    /**
+     * At rule statement
+     */
+    AtRule atRule;
+
+    /**
+     * The element.
+     */
+    String element;
+
+    char connector = DESCENDANT;
+
+    /**
+     * The next context.
+     */
+    protected CssSelectors next;
+
+    // true if the element is a block-level element
+    private  boolean isBlock;
+
+    CssStyle properties;
+
+    // all hashCode (for performance)
+    private int hashElement;
+
+    //private int hashGeneral;
+
+    // The CssStyle to use
+    private static Class style;
+
+    // see isEmpty and addProperty
+    private boolean Init;
+
+    private String cachedRepresentation = null;
+    private boolean isFinal = false;
+
+    /**
+     * Create a new CssSelectors with no previous selector.
+     */
+    public CssSelectors(ApplContext ac) {
+	super(ac);
+	style = ac.getCssSelectorsStyle();
+	try {
+	    properties = (CssStyle) style.newInstance();
+	} catch (Exception e) {
+	    e.printStackTrace();
+	}
+	this.ac = ac;
+    }
+
+    private CssSelectors(Class style) {
+	super();
+	CssSelectors.style = style;
+	try {
+	    properties = (CssStyle) style.newInstance();
+	} catch (Exception e) {
+	    e.printStackTrace();
+	}
+	this.ac = null;
+    }
+
+    /**
+     * Create a new CssSelectors with a previous selector.
+     *
+     * @param next
+     *            the next selector
+     */
+    public CssSelectors(CssSelectors next) {
+	this(CssSelectors.style);
+	this.next = next;
+    }
+
+    /**
+     * Create a new CssSelectors with a previous selector.
+     *
+     * @param next
+     *            the next selector
+     */
+    public CssSelectors(ApplContext ac, CssSelectors next) {
+	this(ac);
+	this.next = next;
+    }
+
+    /**
+     * Set the style for all contexts. Don't forget to invoke this method if you
+     * want a style !
+     *
+     * @param style0
+     *            the style
+     */
+    public void setStyle(Class style0) {
+	Util.verbose("Style is : " + style0);
+	style = style0;
+    }
+
+    /**
+     * Set the attribute atRule
+     *
+     * @param atRule
+     *            the new value for the attribute
+     */
+    public void setAtRule(AtRule atRule) {
+	this.atRule = atRule;
+    }
+
+    /**
+     * Returns the attribute atRule
+     *
+     * @return the value of the attribute
+     */
+    public final AtRule getAtRule() {
+	return atRule;
+    }
+
+    /**
+     * Get the element.
+     */
+    public final String getElement() {
+	return element;
+    }
+
+    /**
+     * Returns <code>true</code> if the element is a block level element (HTML
+     * only)
+     */
+    public final boolean isBlockLevelElement() {
+	return isBlock;
+    }
+
+    public void addPseudoClass(String pseudo) throws InvalidParamException {
+ 	if(pseudo == null) {
+	    return;
+	}
+
+	String profile = ac.getProfile();
+	if(profile == null || profile.equals("") || profile.equals("none")) {
+	    profile = ac.getCssVersion();
+	}   
+	// is it a pseudo-class?
+	String[] ps = PseudoFactory.getPseudoClass(profile);
+	if(ps != null) {
+	    for(int i = 0; i < ps.length; i++) {
+		if(pseudo.equals(ps[i])) {
+		    addPseudoClass(new PseudoClassSelector(pseudo));
+		    return;
+		}
+	    }
+	}
+	// it's not a pseudo-class, maybe one pseudo element exception
+	ps = PseudoFactory.getPseudoElementExceptions(profile);
+	if(ps != null) {
+	    for(int i = 0; i < ps.length; i++) {
+		if(pseudo.equals(ps[i])) {
+		    addPseudoClass(new PseudoClassSelector(pseudo));
+		    return;
+		}
+	    }
+	}	
+        throw new InvalidParamException("pseudo", ":" + pseudo, ac);
+    }
+    
+    public void addPseudoElement(String pseudo) throws InvalidParamException {
+ 	if(pseudo == null) {
+	    return;
+	}
+
+	String profile = ac.getProfile();
+	if(profile == null || profile.equals("") || profile.equals("none")) {
+	    profile = ac.getCssVersion();
+	}   
+
+	// is it a pseudo-element?
+	String[] ps = PseudoFactory.getPseudoElement(profile);
+	if(ps != null) {
+	    for(int i = 0; i < ps.length; i++) {
+		if(pseudo.equals(ps[i])) {
+		    addPseudoElement(new PseudoElementSelector(pseudo));
+		    return;
+		}
+	    }
+	}
+        
+        // the ident isn't a valid pseudo-something
+        throw new InvalidParamException("pseudo", "::" + pseudo, ac);
+    }
+
+    public void setPseudoFun(String pseudo, String param)
+    throws InvalidParamException {
+	String profile = ac.getProfile();
+	if(profile == null || profile.equals("") || profile.equals("none")) {
+	    profile = ac.getCssVersion();
+	}
+	String[] ps = PseudoFactory.getPseudoFunction(profile);
+	if(ps != null) {
+	    for(int i = 0; i < ps.length; i++) {
+		if(pseudo.equals(ps[i])) {
+		    addPseudoFunction(
+				  PseudoFactory.newPseudoFunction(pseudo, 
+								  param, 
+								  ac));
+		    return;
+		}
+	    }
+	    throw new InvalidParamException("pseudo", ":" + pseudo, ac);
+	}
+    }
+
+    public void addType(TypeSelector type) throws InvalidParamException {
+	super.addType(type);
+	element = type.getName();
+	hashElement = element.hashCode();
+    }
+
+    public void addDescendant(DescendantSelector descendant)
+    throws InvalidParamException {
+	super.addDescendant(descendant);
+	connector = DESCENDANT;
+    }
+
+    public void addChild(ChildSelector child) throws InvalidParamException {
+	super.addChild(child);
+	connector = CHILD;
+    }
+
+    public void addAdjacentSibling(AdjacentSiblingSelector adjacent)
+    throws InvalidParamException {
+	super.addAdjacentSibling(adjacent);
+	connector = ADJACENT_SIBLING;
+    }
+
+    public void addGeneralSibling(GeneralSiblingSelector sibling)
+    throws InvalidParamException {
+	super.addGeneralSibling(sibling);
+	connector = GENERAL_SIBLING;
+    }
+
+
+    public void addAttribute(AttributeSelector attribute)
+    throws InvalidParamException {
+	int _s = size();
+	for(int i = 0; i < _s; i++) {
+	    Selector s = (Selector) getSelector(i);
+	    // add warnings if some selectors are incompatible
+	    // e.g. [lang=en][lang=fr]
+	    if(s instanceof AttributeSelector) {
+		((AttributeSelector) s).applyAttribute(ac, attribute);
+	    }
+	}
+	super.addAttribute(attribute);
+    }
+
+    /**
+     * Adds a property to this selector.
+     *
+     * @param property
+     *            The property.
+     * @param warnings
+     *            For warning report.
+     */
+    public void addProperty(CssProperty property, Warnings warnings) {
+	Init = true;
+	if (properties != null) {
+	    properties.setProperty(ac, property, warnings);
+	} else {
+	    System.err.println("[ERROR] Invalid state in "
+		    + "org.w3c.css.parser.CssSelectors#addProperty");
+	    System.err.println("[ERROR] Please report BUG");
+	}
+    }
+
+    public CssStyle getStyle() {
+	return properties;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	// I'm in reverse order, so compute the next before the current
+	if (isToStringCached()) {
+	    return cachedRepresentation;
+	}
+	StringBuilder sbrep = new StringBuilder();
+	if (next != null) {
+	    sbrep.append(next.toString());
+	}
+	sbrep.append(super.toString());
+	cachedRepresentation = sbrep.toString();
+	return cachedRepresentation;
+    }
+    /**
+     * return XML escaped string
+     */
+    public String getEscaped() {
+	return Messages.escapeString(toString());
+    }
+
+    public boolean isToStringCached() {
+	if (cachedRepresentation == null) {
+	    return false;
+	}
+	if (isFinal) {
+	    return true;
+	}
+	if (next != null) {
+	    return super.isToStringCached() && next.isToStringCached();
+	}
+	return super.isToStringCached();
+    }
+
+    /*
+      we are doing this in two steps, as it is possible to have some
+       calls to toString() and do modifications, then at some point
+       everything is frozen (like when StyleSheet.findConflict is called)
+       marking as final (ie: no more modifications) triggers more 
+       optimizations. Things could be better optimized if we were sure
+       that no calls to toString were done before everything is frozen
+    */
+      
+    /*
+     * Mark as final, ie: no more modification to the structure.
+     */
+    public void markAsFinal() {
+	// if something has been changed, reset to force recomputing
+	if (!isFinal) {
+	    if (!isToStringCached()) {
+		cachedRepresentation = null;
+		if (next != null) {
+		    next.markAsFinal();
+		}
+	    }
+	    isFinal = true;
+	}
+    }
+
+    /**
+     * Get a hashCode.
+     */
+    /*public int hashCode() {
+	if (hashGeneral == 0) {
+	    if (atRule instanceof AtRuleFontFace) {
+		hashGeneral = atRule.hashCode();
+	    } else {
+		String s = toString();
+		hashGeneral = s.hashCode();
+		for (int i = 0; i < s.length(); i++) {
+		    hashGeneral += (int) s.charAt(i);
+		}
+	    }
+	}
+	return hashGeneral;
+    }*/
+
+    /**
+     * Returns <code>true</code> if the selector is equals to an another.
+     *
+     * @param selector
+     *            The selector to compare
+     */
+    public boolean equals(Object selector) {
+	if ((selector == null) || !(selector instanceof CssSelectors)) {
+	    return false;
+	}
+	CssSelectors s = (CssSelectors) selector;
+
+	if ((atRule instanceof AtRulePage)
+		|| (atRule instanceof AtRuleFontFace)) {
+	    return atRule.equals(s.atRule);
+	}
+	if (hashCode() == s.hashCode()) {
+	    if (atRule == null) {
+		return (s.getAtRule() == null);
+	    } else {
+		return atRule.canApply(s.getAtRule());
+	    }
+	} else {
+	    return false;
+	}
+    }
+
+    /**
+     * Set the previous selector.
+     *
+     * @param next
+     *            the previous selector.
+     */
+    public void setNext(CssSelectors next) {
+	this.next = next;
+	Invalidate();
+    }
+
+    /**
+     * Get the previous selector.
+     */
+    public CssSelectors getNext() {
+	return next;
+    }
+
+    /**
+     * Returns <code>true</code> if there is no property in this document.
+     */
+    public boolean isEmpty() {
+	return !Init;
+    }
+
+    public void addAttribute(String attName, String value)
+    throws InvalidParamException {
+	if (ac.getProfile() != null && !"".equals(ac.getProfile())) {
+	    if (ac.getProfile().equals("mobile")) {
+		throw new InvalidParamException("notformobile", "attributes",
+			ac);
+	    }
+	} else {
+	    addAttribute(new AttributeExact(attName, value));
+	    Invalidate();
+	}
+    }
+
+    void Invalidate() {
+	// invalidate all pre-computation in this selectors
+	setSpecificity(0);
+	//hashGeneral = 0;
+
+	if (Init) {
+	    // yes I invalidate all properties too !
+	    try {
+		properties = (CssStyle) style.newInstance();
+	    } catch (Exception e) {
+		e.printStackTrace();
+	    }
+	}
+    }
+
+    final boolean canApply(ArrayList<Selector> attrs, ArrayList<Selector> attrs2) {
+	if(attrs.size() > 0) {
+	    for(int i = 0; i < attrs.size(); i++) {
+		Selector selector = attrs.get(i);
+
+		Selector other = null;
+		int j = 0;
+		for(; j < attrs2.size(); j++) {
+		    other = attrs2.get(j);
+		    if(!other.equals(selector)) {
+			other = null;
+		    }
+		    else {
+			break;
+		    }
+		}
+		if (other != null) {
+		    if (!selector.canApply(other)) {
+			return false;
+		    }
+		} else {
+		    return false;
+		}
+	    }
+	    return true;
+	}
+	return true;
+
+    }
+
+    /**
+     * Returns <code>true</code> if the selector can matched this selector.
+     *
+     * <p>
+     * Examples:<br>
+     * <OL>
+     * <LI><code>H1.canApply(HTML BODY H1)</code> returns <code>true</code>
+     * <LI><code>H1.canApply(HTML BODY H1 EM)</code> returns
+     * <code>false</code>
+     * <LI><code>(H1 EM).canApply(HTML BODY H2 EM)</code> returns
+     *     <code>false</code>
+     * <LI><code>(HTML EM).canApply(HTML BODY H2 EM)</code> returns
+     *     <code>true</code>
+     * </OL>
+     *
+     * <p>
+     * Note:<BR>
+     * In principle, if you work with a HTML document, your selector should
+     * start with HTML BODY. Because you are always in this context when you
+     * parse the text in a HTML document.
+     *
+     * @param selector
+     *            the selector to match
+     * @see            org.w3c.css.css.CssCascadingOrder#order
+     */
+    public boolean canApply(CssSelectors selector) {
+	if ((atRule instanceof AtRulePage)
+		|| (atRule instanceof AtRuleFontFace)) {
+	    return atRule.canApply(selector.atRule);
+	}
+	// current work - don't touch
+	Util.verbose(getSpecificity() + " canApply this " + this
+		+ " selector: " + selector);
+	Util.verbose("connector " + connector);
+	Util.verbose(getSelectors().toString());
+	Util.verbose(selector.getSelectors().toString());
+
+	if ((hashElement != selector.hashElement) && hashElement != 0) {
+	    // here we are in this case :
+	    // H1 and HTML BODY H1 EM
+	    // don't do anything !
+	    // the cascading order algorithm resolves this case like this :
+	    //
+	    // if (for all contexts) !canApply(selector)
+	    //       go and see canApply(selector.getNext())
+	    //
+	    // for further informations,
+	    //                     see org.w3c.css.css.CssCascadingOrder#order
+	    Util.verbose("canApply RETURNS FALSE");
+	    return false;
+	} else {
+	    if (next == null || selector.next == null) {
+		boolean result = canApply(getSelectors(), selector.getSelectors());
+		Util.verbose("canApply RETURNS " + result);
+		return result;
+	    } else {
+		return next.canMatch(selector.next);
+	    }
+	}
+    }
+
+    /**
+     * Returns true if the selector can matched another selector. called by
+     * canApply
+     *
+     * @param selector
+     *            The selector to compare
+     */
+    private boolean canMatch(CssSelectors selector) {
+	boolean result = canApply(getSelectors(), selector.getSelectors());
+	// current work
+	Util.verbose("canMatched this " + this + " selector: " + selector);
+	Util.verbose("connector " + connector);
+	Util.verbose(getSelectors().toString());
+	Util.verbose(selector.getSelectors().toString());
+	Util.verbose("canMatched for attributes :" + result);
+
+	if ((hashElement != selector.hashElement) && hashElement != 0) {
+	    if ((connector == DESCENDANT) && (selector.next != null)) {
+		// here we are in this case :
+		// H1 and HTML BODY H1 EM
+		// H1 can't matched EM but EM have next
+		return canMatch(selector.next);
+	    } else {
+		// here we are in this case :
+		// H1 and HTML
+		// H1 can't matched HTML and HTML don't have next
+		Util.verbose("canMatched RETURN FALSE");
+		return false;
+	    }
+	}
+
+	if (next == null || selector.next == null) {
+	    // here we are in this case :
+	    // H1 and BODY HTML H1
+	    // or :
+	    // HTML BODY and BODY (this case won't appear in principle)
+	    Util.verbose("canMatched RETURN " + result);
+	    return canApply(getSelectors(), selector.getSelectors());
+	} else {
+	    // here we are in this case :
+	    // BODY H1 and HTML BODY H1
+	    return next.canMatch(selector.next);
+	}
+    }
+    
+    public void findConflicts(ApplContext ac, Warnings warnings,
+			      CssSelectors[] allSelectors) {
+	CssStyle style = getStyle();
+	style.findConflicts(ac, warnings, this, allSelectors);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/parser/CssSelectorsConstant.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,44 @@
+//
+// $Id: CssSelectorsConstant.java,v 1.10 2009-02-12 10:32:51 ylafon Exp $
+// From Philippe Le Hegaret (Philippe.Le_Hegaret@sophia.inria.fr)
+// Updated September 20th 2000 Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT MIT and INRIA, 1997.
+// Please first read the full copyright statement in file COPYRIGHT.html
+
+package org.w3c.css.parser;
+
+/**
+ * @version $Revision: 1.10 $
+ */
+public interface CssSelectorsConstant {
+
+    /** [lang="fr"] */
+    public static final int ATTRIBUTE_EXACT = ' ';
+    /** [lang~="fr"] */
+    public static final int ATTRIBUTE_ONE_OF = '~';
+    /** class selector == like [lang~="fr"] */
+    public static final int ATTRIBUTE_CLASS_SEL = '.';
+    /** [lang|="fr"] */
+    public static final int ATTRIBUTE_BEGIN = '|';
+    /** [lang] */
+    public static final int ATTRIBUTE_ANY = -1;
+    /** [foo^="bar"] */
+    public static final int ATTRIBUTE_START = '^';
+    /** [foo$="bar"] */
+    public static final int ATTRIBUTE_SUFFIX = '$';
+    /** [foo*="bar"] */
+    public static final int ATTRIBUTE_SUBSTR = '*';
+
+    /** Maximun of ATTRIBUTE_ONE_OF */
+    public static final int ATTRIBUTE_LENGTH = 10;
+
+    /** descendant connector  */
+    public static final char DESCENDANT = ' ';
+    /** child connector */
+    public static final char CHILD = '>';
+    /** adjacent sibling connector */
+    public static final char ADJACENT_SIBLING = '+';
+    /** general sibling connector */
+    public static final char GENERAL_SIBLING = '~';
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/parser/CssStyle.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,104 @@
+//
+// $Id: CssStyle.java,v 1.9 2008-03-28 16:36:46 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 org.w3c.css.parser;
+
+import java.util.Enumeration;
+
+import org.w3c.css.css.StyleSheet;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.Warning;
+import org.w3c.css.util.Warnings;
+
+/**
+ * This class represents a class for one context
+ *
+ * @version $Revision: 1.9 $
+ */
+public class CssStyle {
+
+  /**
+   * For warnings report.
+   */
+  protected Warnings warnings;
+
+  /**
+   * The entire style sheet.
+   */
+  protected StyleSheet style;
+
+  /**
+   * The context of this style.
+   */
+  protected CssSelectors selector;
+
+  /**
+   * Set the context of this style.
+   *
+   * @param selectors The context.
+   */
+  public final void setSelector(CssSelectors selectors) {
+      this.selector = selectors;
+  }
+//public String toString() {
+//    String res = "";
+//    res += selector;
+//    res+=style;
+//    return res;
+//}
+  /**
+   * Set the style sheet of this style.
+   *
+   * @param style The style sheet.
+   */
+  public final void setStyleSheet(StyleSheet style) {
+    this.style = style;
+  }
+
+  /**
+   * Add a warning definition to this style.
+   *
+   * @param property The property.
+   */
+  public final void addRedefinitionWarning(ApplContext ac,
+					   CssProperty property) {
+    warnings.addWarning(new Warning(property, "redefinition", 2, ac));
+  }
+
+  /**
+   * Add a property to this style
+   *
+   * @param property the property to add
+   * @param warnings where to add warnings if required
+   */
+  public final void setProperty(ApplContext ac, CssProperty property, Warnings warnings) {
+    this.warnings = warnings;
+    property.addToStyle(ac, this);
+  }
+
+  /**
+   * Print this style.
+   * Overrides this method to create your own style.
+   *
+   * @param printer The printer interface.
+   */
+  public void print(CssPrinterStyle printer) {
+    // nothing to do
+  }
+
+  /**
+   * Find conflicts in this Style
+   *
+   * @param warnings For warnings reports.
+   * @param allSelectors All contexts is the entire style sheet.
+   */
+    public void findConflicts(ApplContext ac, Warnings warnings,
+			      CssSelectors selector, CssSelectors[] allSelectors) {
+    // nothing to do
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/parser/CssValidatorListener.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,86 @@
+//
+// $Id: CssValidatorListener.java,v 1.6 2005-09-14 15:14:18 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 org.w3c.css.parser;
+
+import java.util.Vector;
+
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.Warnings;
+
+/**
+ * Implements this interface if you want to use the CSS1 parser.
+ *
+ * @version $Revision: 1.6 $
+ */
+public interface CssValidatorListener {
+
+  /**
+   * Adds a vector of properties to a selector.
+   *
+   * @param selector     the selector
+   * @param declarations Properties to associate with contexts
+   */
+  public void handleRule(ApplContext ac, CssSelectors selector,
+			 Vector declarations);
+
+  /**
+   * Handles an at-rule.
+   *
+   * <p>The parameter <code>value</code> can be :
+   * <DL>
+   * <DT>CssString
+   * <DD>The value coming from a string.
+   * <DT>CssURL
+   * <DD>The value coming from an URL.
+   * <DT>Vector
+   * <DD>The value is a vector of declarations (it contains Couple).
+   * </DL>
+   *
+   * @param ident The ident for this at-rule (for example: 'font-face')
+   * @param value The string representation of this at-rule
+   * @see         org.w3c.css.parser.analyzer.Couple
+   */
+  public void handleAtRule(ApplContext ac, String ident, String string);
+
+  /**
+   * Notify all errors
+   *
+   * @param errors All errors in the style sheet
+   * @see CssError
+   * @see CssErrorDeclaration
+   * @see CssErrorToken
+   */
+  public void notifyErrors(Errors errors);
+
+  /**
+   * Notify all warnings
+   *
+   * @param warnings All warnings in the style sheet
+   * @see org.w3c.css.util.Warning
+   */
+  public void notifyWarnings(Warnings warnings);
+
+    public void addCharSet(String charset);
+
+    public void newAtRule(AtRule atRule);
+
+    public void endOfAtRule();
+
+    public void setImportant(boolean important);
+
+    public void setSelectorList(Vector selectors);
+
+    public void setProperty(Vector properties);
+
+    public void endOfRule();
+
+    public void removeThisRule();
+
+    public void removeThisAtRule();
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/parser/Elements.dtd4	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,91 @@
+A: false
+ABBR: false
+ACRONYM:false
+ADDRESS: true
+APPLET:false
+AREA:false
+B: false
+BASE: false
+BASEFONT:false
+BDO: false
+BIG: false
+BLOCKQUOTE: true
+BODY:true
+BR: false
+BUTTON: false
+CAPTION: false
+CENTER: true
+CITE: false
+CODE: false
+COL: false
+COLGROUP: false
+DD: false
+DEL: false
+DFN: false
+DIR: true
+DIV: true
+DL: true
+DT: false
+EM: false
+FIELDSET: true
+FONT: false
+FORM: true
+FRAME: false
+FRAMESET: false
+H1: true
+H2: true
+H3: true
+H4: true
+H5: true
+H6: true
+HEAD: false
+HR: true
+HTML: true
+I: false
+IFRAME: false
+IMG: false
+INPUT: false
+INS: false
+ISINDEX: true
+KBD: false
+LABEL: false
+LEGEND: false
+LI: true
+LINK: false
+MAP: false
+MENU: true
+META: false
+NOFRAMES: true
+NOSCRIPT: true
+OBJECT: false
+OL: true
+OPTION: false
+P: true
+PARAM: false
+PRE: true
+Q: false
+S: false
+SAMP: false
+SCRIPT: false
+SELECT: false
+SMALL: false
+SPAN: false
+STRIKE: false
+STRONG: false
+STYLE: false
+SUB: false
+SUP: false
+TABLE: true
+TBODY: false
+TD: false
+TEXTAREA: false
+TFOOT: false
+TH: false
+THEAD: false
+TITLE: false
+TR: false
+TT: false
+U: false
+UL: true
+VAR: false
+SCRIPT: false
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/parser/Errors.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,86 @@
+//
+// $Id: Errors.java,v 1.5 2005-09-14 15:14:18 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 org.w3c.css.parser;
+
+import java.util.Vector;
+
+/**
+ * Controls all errors in the validator
+ * @version $Revision: 1.5 $
+ * @see Vector.java
+ */
+public final class Errors {
+
+  private CssError[] errorData = new CssError[10];
+  private int      errorCount;
+
+  private final static int capacityIncrement = 10;
+
+  /**
+   * Add an error.
+   *
+   * @param error The new error.
+   */
+  public final void addError(CssError error) {
+    int oldCapacity = errorData.length;
+    if (errorCount + 1 > oldCapacity) {
+      CssError oldData[] = errorData;
+      errorData = new CssError[oldCapacity + capacityIncrement];
+      System.arraycopy(oldData, 0, errorData, 0, errorCount);
+    }
+    errorData[errorCount++] = error;
+  }
+
+  /**
+   * Add errors.
+   *
+   * @param errors All errors
+   */
+  public final void addErrors(Errors errors) {
+    int oldCapacity = errorData.length;
+    if (errorCount + errors.errorCount + 1 > oldCapacity) {
+      CssError oldData[] = errorData;
+      errorData =
+	new CssError[oldCapacity + errors.errorCount + capacityIncrement];
+      System.arraycopy(oldData, 0, errorData, 0, errorCount);
+    }
+    System.arraycopy(errors.errorData, 0, errorData,
+		     errorCount, errors.errorCount);
+    errorCount += errors.errorCount;
+  }
+
+  /**
+   * Get the number of errors.
+   */
+  public final int getErrorCount() {
+    return errorCount;
+  }
+
+  /**
+   * Get an array with all errors.
+   */
+  public final CssError[] getErrors() {
+    int oldCapacity = errorData.length;
+    if (errorCount < oldCapacity) {
+      CssError oldData[] = errorData;
+      errorData = new CssError[errorCount];
+      System.arraycopy(oldData, 0, errorData, 0, errorCount);
+    }
+    return errorData;
+  }
+
+  /**
+   * Get an error with an index.
+   *
+   * @param index the error index.
+   */
+  public final CssError getErrorAt(int index) {
+    return errorData[index];
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/parser/Frame.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,150 @@
+//
+// $Id: Frame.java,v 1.11 2009-02-14 09:05:03 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 org.w3c.css.parser;
+
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.Warning;
+import org.w3c.css.util.Warnings;
+
+/**
+ * @version $Revision: 1.11 $
+ */
+public class Frame {
+
+    public  ApplContext ac;
+    private Errors errors;
+    private Warnings warnings;
+    private CssFouffa cssFouffa;
+
+    private String sourceFile;
+    private int line;
+
+    /**
+     * Create a new Frame.
+     *
+     * @param cssFouffa  The current parser.
+     * @param sourceFile The name of the source file.
+     */
+    public Frame(CssFouffa cssFouffa, String sourceFile, int warningLevel) {
+    	this.sourceFile = sourceFile;
+    	this.cssFouffa = cssFouffa;
+    	errors = new Errors();
+    	warnings = new Warnings(warningLevel);
+    }
+
+    /**
+     * Create a new Frame with a line number.
+     *
+     * @param cssFouffa  The current parser.
+     * @param sourceFile The name of the source file.
+     * @param beginLine  The begin line
+     */
+    public Frame(CssFouffa cssFouffa, String sourceFile, int beginLine,
+		 int warningLevel)
+    {
+    	this(cssFouffa, sourceFile, warningLevel);
+    	line = beginLine;
+    }
+
+    /**
+     * Adds an error to this frame.
+     *
+     * @param error The new error.
+     */
+    public void addError(CssError error) {
+	error.sourceFile = getSourceFile();
+	error.line = getLine();
+	errors.addError(error);
+    }
+
+    /**
+     * Returns all errors.
+     */
+    public Errors getErrors() {
+	return errors;
+    }
+
+    /**
+     * Adds a warning to this frame.
+     *
+     * @param warningMessage the warning message
+     *                       (see org.w3c.css.util.Messages.properties).
+     * @see                  org.w3c.css.util.Warning
+     */
+    public void addWarning(String warningMessage) {
+	warnings.addWarning(new Warning(getSourceFile(), getLine(),
+					warningMessage, 0, ac));
+    }
+
+    /**
+     * Adds a warning to this frame with a message.
+     *
+     * @param warningMessage the warning message
+     *                       (see org.w3c.css.util.Messages.properties).
+     * @param message        An add-on message.
+     * @see                  org.w3c.css.util.Warning
+     */
+    public void addWarning(String warningMessage, String message) {
+	warnings.addWarning(new Warning(getSourceFile(), getLine(),
+					warningMessage, 0, 
+					new String[] { message }, ac));
+    }
+
+    /**
+     * Adds a warning to this frame with a message.
+     *
+     * @param warningMessage the warning message
+     *                       (see org.w3c.css.util.Messages.properties).
+     * @param messages       Some add-on messages.
+     * @see                  org.w3c.css.util.Warning
+     */
+    public void addWarning(String warningMessage, String[] messages) {
+	warnings.addWarning(new Warning(getSourceFile(), getLine(),
+					warningMessage, 0, messages, ac));
+    }
+
+    /**
+     * Get all warnings.
+     */
+    public Warnings getWarnings() {
+	return warnings;
+    }
+
+    /**
+     * Get the name of the source file.
+     */
+    public String getSourceFile() {
+	return sourceFile;
+    }
+
+    /**
+     * Get the begin line.
+     */
+    public int getBeginLine() {
+	return line;
+    }
+
+    /**
+     * Get the current line.
+     */
+    public int getLine() {
+	//return line; //+ cssFouffa.token.beginLine;
+	return line + cssFouffa.token.beginLine;
+    }
+
+    /**
+     * Merge two frames.
+     *
+     * @param frame The other frame for merging.
+     */
+    public void join(Frame frame) {
+	errors.addErrors(frame.errors);
+	warnings.addWarnings(frame.warnings);
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/parser/Makefile	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,35 @@
+SRCS = CssFouffa.java Errors.java\
+CssError.java CssValidatorListener.java Frame.java\
+CssErrorDeclaration.java \
+CssErrorToken.java CssSelectors.java\
+CssStyle.java CssPrinterStyle.java CssParseException.java
+
+OBJS = $(SRCS:.java=.class)
+
+PACKAGE = org.w3c.css.parser
+JAVAC = jc -val
+JAVADOC = javadoc
+JAVADOCFLAGS = -version -d docs -protected
+JAVACFLAGS = 
+MAKEDEPEND = jmakedepend
+
+.SUFFIXES: .class .java
+.java.class:; $(JAVAC) $(JAVACFLAGS) $<
+
+all: $(OBJS)
+
+javadoc:; $(JAVADOC) $(JAVADOCFLAGS) $(PACKAGE)
+
+clean:; -rm -f $(OBJS) *~ core
+
+depend:; $(MAKEDEPEND) $(SRCS)
+# DO NOT DELETE THIS LINE -- make depend depends on it.
+CssErrorToken.class:: CssErrorToken.java
+Frame.class:: Frame.java
+CssError.class:: CssError.java
+CssValidatorListener.class:: CssValidatorListener.java
+Errors.class:: Errors.java
+CssFouffa.class:: CssFouffa.java
+CssStyle.class:: CssStyle.java
+CssParseException.class:: CssParseException.java
+CssPrinterStyle.class:: CssPrinterStyle.java
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/parser/MediaEnumeration.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2001 World Wide Web Consortium,
+ * (Massachusetts Institute of Technology, Institut National de
+ * Recherche en Informatique et en Automatique, Keio University). All
+ * Rights Reserved. This program is distributed under the W3C's Software
+ * Intellectual Property License. This program is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+ * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ * See W3C License http://www.w3.org/Consortium/Legal/ for more details.
+ *
+ * $Id: MediaEnumeration.java,v 1.3 2005-09-14 15:14:18 ylafon Exp $
+ */
+package org.w3c.css.parser;
+
+import java.util.Enumeration;
+
+public class MediaEnumeration implements Enumeration {
+
+    String [] media;
+    int current = 0;
+
+    MediaEnumeration(AtRuleMedia media) {
+	this.media = media.media;
+	while ((current < this.media.length)
+	       && (this.media[current] != null)) {
+	    current++;
+	}
+    }
+
+    public boolean hasMoreElements() {
+	while (current < media.length) {
+	    if (media[current] != null) {
+		return true;
+	    }
+	    current++;
+	}
+
+	return false;
+    }
+
+    public Object nextElement() {
+	return media[current];
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/parser/analyzer/CommentSkipperInputStream.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2001 World Wide Web Consortium,
+ * (Massachusetts Institute of Technology, Institut National de
+ * Recherche en Informatique et en Automatique, Keio University). All
+ * Rights Reserved. This program is distributed under the W3C's Software
+ * Intellectual Property License. This program is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+ * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ * See W3C License http://www.w3.org/Consortium/Legal/ for more details.
+ *
+ * $Id: CommentSkipperInputStream.java,v 1.4 2005-09-14 15:14:18 ylafon Exp $
+ */
+package org.w3c.css.parser.analyzer;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+
+/**
+ * @version $Revision: 1.4 $
+ * @author  Philippe Le Hegaret
+ */
+public class CommentSkipperInputStream extends InputStream {
+
+    int previous;
+    InputStream in;
+    /**
+     * Creates a new CommentSkipperInputStream
+     */
+    public CommentSkipperInputStream(InputStream input) {
+	in = input;
+    }
+
+
+    public int read() throws IOException {
+	int c;
+	if (previous != 0) {
+	    c = previous;
+	    previous = 0;
+	    return c;
+	}
+
+	c = in.read();
+
+	if (c != '/') {
+	    return c;
+	}
+	previous = in.read();
+
+	if (previous != '*') {
+	    return c;
+	}
+	previous = 0;
+	do {
+	    do {
+		c = in.read();
+	    } while ((c != -1) && (c != '*'));
+	    c = in.read();
+	} while ((c != -1) && (c != '/'));
+	if (c == '/') {
+	    return read();
+	} else {
+	    return -1;
+	}
+    }
+
+    public void close() throws IOException {
+	in.close();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/parser/analyzer/Couple.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,69 @@
+//
+// $Id: Couple.java,v 1.4 2005-09-14 15:14:18 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 org.w3c.css.parser.analyzer;
+
+import org.w3c.css.values.CssExpression;
+
+/**
+ * This class represents a couple : an at-rule property and an at-rule
+ * expression.
+ *
+ * @version $Revision: 1.4 $
+ */
+public class Couple {
+
+  /**
+   * The at-rule property.
+   */
+  protected String property;
+
+  /**
+   * The at-rule expression.
+   */
+  protected CssExpression expression;
+
+  /**
+   * Is this at-rule is important
+   */
+  protected boolean important;
+
+  /**
+   * Create a new Couple
+   *
+   * @param property The at-rule property.
+   * @param expression The at-rule expression.
+   * @param important Is this at-rule is important
+   */
+  public Couple(String property, CssExpression expression, boolean important) {
+    this.property = property;
+    this.expression = expression;
+    this.important = important;
+  }
+
+  /**
+   * Get the at-rule property
+   */
+  public final String getProperty() {
+    return property;
+  }
+
+  /**
+   * get the at-rule expression
+   */
+  public final CssExpression getExpression() {
+    return expression;
+  }
+
+  /**
+   * Is this at-rule is important
+   */
+  public final boolean getImportant() {
+    return important;
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/parser/analyzer/CssParser.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,4007 @@
+/* Generated By:JavaCC: Do not edit this line. CssParser.java */
+package org.w3c.css.parser.analyzer;
+
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.UnsupportedEncodingException;
+import java.util.Vector;
+import java.util.Enumeration;
+import java.net.URL;
+
+import org.w3c.css.values.CssValue;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssString;
+import org.w3c.css.values.CssURL;
+import org.w3c.css.values.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssColor;
+import org.w3c.css.values.CssIdent;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssFrequency;
+import org.w3c.css.values.CssTime;
+import org.w3c.css.values.CssDate;
+import org.w3c.css.values.CssAngle;
+import org.w3c.css.values.CssFunction;
+import org.w3c.css.values.CssUnicodeRange;
+import org.w3c.css.values.CssResolution;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.parser.Frame;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.parser.CssError;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssParseException;
+import org.w3c.css.parser.AtRule;
+import org.w3c.css.parser.AtRuleMedia;
+import org.w3c.css.parser.AtRuleFontFace;
+import org.w3c.css.parser.AtRulePage;
+import org.w3c.css.parser.AtRulePreference;
+import org.w3c.css.parser.AtRulePhoneticAlphabet;
+import org.w3c.css.properties.svg.AtRuleColorProfile;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.util.Util;
+import org.w3c.css.util.Messages;
+
+import org.w3c.css.selectors.AdjacentSiblingSelector;
+import org.w3c.css.selectors.AttributeSelector;
+import org.w3c.css.selectors.ChildSelector;
+import org.w3c.css.selectors.ClassSelector;
+import org.w3c.css.selectors.DescendantSelector;
+import org.w3c.css.selectors.GeneralSiblingSelector;
+import org.w3c.css.selectors.IdSelector;
+import org.w3c.css.selectors.TypeSelector;
+import org.w3c.css.selectors.UniversalSelector;
+import org.w3c.css.selectors.attributes.AttributeAny;
+import org.w3c.css.selectors.attributes.AttributeBegin;
+import org.w3c.css.selectors.attributes.AttributeExact;
+import org.w3c.css.selectors.attributes.AttributeOneOf;
+import org.w3c.css.selectors.attributes.AttributeStart;
+import org.w3c.css.selectors.attributes.AttributeSubstr;
+import org.w3c.css.selectors.attributes.AttributeSuffix;
+
+/**
+ * A CSS3 parser  
+ *
+ * @author Philippe Le Hegaret and Sijtsche Smeman
+ * @version $Revision: 1.68 $
+ */
+public abstract class CssParser implements CssParserConstants {
+
+    private static char hexdigits[] = { '0', '1', '2', '3',
+                                        '4', '5', '6', '7',
+                                        '8', '9', 'a', 'b',
+                                        'c', 'd', 'e', 'f' };
+    // the current atRule
+    protected AtRule atRule;
+    protected String mediaDeclaration = "off";
+
+    /**
+     * The URL of the document
+     */
+    protected URL url;
+
+    protected ApplContext ac;
+
+    protected boolean incompatible_error;
+
+    /**
+     * The current context recognized by the parser (for errors).
+     */
+    protected Vector currentContext;
+
+    /**
+     * The current property recognized by the parser (for errors).
+     */
+    protected String currentProperty;
+
+    /**
+     * <code>true</code> if the parser should recognized Aural properties, 
+     * <code>false</code> otherwise.
+     */
+    protected boolean mode;
+
+    /**
+     * <code>true</code> if the parser had recognize a rule,
+     * <code>false</code> otherwise.
+     */
+    protected boolean markRule;
+
+    private boolean reinited = false;
+    private boolean charsetdeclared = false;
+
+    static StringBuilder SPACE = new StringBuilder(" ");
+
+    // to be able to remove a ruleset if the selector is not valid
+    protected boolean validSelector = true;
+
+    /**
+     * The ac for handling errors and warnings.
+     * 
+     * @param ac the new ac for the parser.
+     */
+    public final void setApplContext(ApplContext ac) {
+        this.ac = ac;
+    }
+
+    /**
+     * Set the attribute atRule
+     *
+     * @param atRule the new value for the attribute
+     */
+    public void setAtRule(AtRule atRule) {
+        this.atRule = atRule;
+    }
+
+    /**
+     * Set the attribute mediaDeclaration
+     *
+     * @param mediaDeclaration indicator if in a media expression list or not
+     */
+    public void setMediaDeclaration(String mediadeclaration) {
+        this.mediaDeclaration = mediadeclaration;
+    }
+
+    /**
+     * Returns the attribute mediaDeclaration
+     *
+     * @return the value of the attribute
+     */
+    public String getMediaDeclaration() {
+        return mediaDeclaration;
+    }
+
+    /**
+     * Returns the attribute atRule
+     *
+     * @return the value of the attribute
+     */
+    public AtRule getAtRule() {
+        return atRule;
+    }
+
+    /**
+     * Reinitialized the parser.
+     *
+     * @param stream the stream data to parse.
+     * @param ac  the new ac to use for parsing.
+     */
+    public void ReInitWithAc(InputStream stream, ApplContext ac,
+                             String charset)
+    {
+        InputStream is = /*new  CommentSkipperInputStream(stream);*/stream;
+        if (charset == null) {
+            charset = "iso-8859-1";
+        }
+        InputStreamReader isr = null;
+        try {
+            isr = new InputStreamReader(is, charset);
+        } catch (UnsupportedEncodingException uex) {
+            isr = new InputStreamReader(is);
+        }
+        // reinit, it can not happen...
+        // ...in theory ;)
+        ReInit(isr);
+        markRule = false;
+        reinited = true;
+        setApplContext(ac);
+    }
+
+    /* utilities for a parser */
+
+    /**
+     * Call by the import statement.
+     *
+     * @param url  The style sheet where this import statement appears.
+     * @param file the file name in the import
+     */
+    public abstract void handleImport(URL url, String file,
+                                      boolean is_url, AtRuleMedia media);
+
+    /**
+     * Call by the namespace declaration statement.
+     *
+     * @param url  The style sheet where this namespace statement appears.
+     * @param file the file/url name in the namespace declaration
+     */
+    public abstract void handleNamespaceDeclaration(URL url, String prefix,
+                                                    String file,
+                                                    boolean is_url);
+
+    /**
+     * Call by the at-rule statement.
+     *
+     * @param ident  The ident for this at-rule (for example: 'font-face')
+     * @param string The string associate to this at-rule
+     * @see          org.w3c.css.parser.Analyzer.Couple
+     */
+    public abstract void handleAtRule(String ident, String string);
+
+    /* added by Sijtsche Smeman */
+    public abstract void addCharSet(String charset);
+    public abstract void newAtRule(AtRule atRule);
+    public abstract void endOfAtRule();
+    public abstract void setImportant(boolean important);
+    public abstract void setSelectorList(Vector selectors);
+    public abstract void addProperty(Vector properties);
+    public abstract void endOfRule();
+    public abstract void removeThisRule();
+    public abstract void removeThisAtRule();
+
+    /**
+     * Assign an expression to a property.  This function create a new property
+     * with <code>property</code> and assign to it the expression with the
+     * importance. Don't forget to set informations too.
+     * <p>
+     * A subclass must provide an implementation of this method. 
+     *
+     * @param  property  the name of the property
+     * @param  values    the expression representation of values
+     * @param  important <code>true</code> if values are important
+     *
+     * @return           <code>null</code>or a property
+     * 
+     * @see              org.w3c.css.css.CssProperty
+     */
+    public abstract CssProperty handleDeclaration(String property,
+                                                  CssExpression values,
+                                                  boolean important)
+        throws InvalidParamException;
+
+    /**
+     * Adds a vector of properties to a selector.
+     * <p>
+     * A subclass must provide an implementation of this method. 
+     *
+     * @param selector     the selector
+     * @param declarations Properties to associate with contexts
+     */
+    public abstract void handleRule(CssSelectors selector,
+                                    Vector declarations);
+
+    /*Added by Sijtsche Smeman */
+
+    /**
+     * Returns the source file of the style sheet
+     */
+    public final String getSourceFile() {
+        return getURL().toString();
+    }
+
+    /**
+     * Returns the current line in the style sheet
+     */
+    public final int getLine() {
+        //return token.beginLine;
+        return 0;
+    }
+
+    /**
+     * Set the URL of the style sheet.
+     *
+     * @param URL The URL for the style sheet
+     */
+    public final void setURL(URL url) {
+        this.url = url;
+    }
+
+    public final URL getURL() {
+        return url;
+    }
+
+    /**
+     * Return the next selector from the inputstream
+     */
+    public CssSelectors parseSelector() throws ParseException {
+        return externalSelector();
+    }
+
+    /*
+     * Add a value to an expression
+     */
+    private void setValue(CssValue v, CssExpression expr,
+                          char operator, Token n, int token)
+        throws ParseException {
+        if (n != null) {
+            if (ac.getCssVersion().equals("css1") &&
+                (n.image).equals("inherit")) {
+                incompatible_error = true;
+            }
+            String val = (operator == ' ') ? n.image : operator+n.image;
+
+            if (n.kind == CssParserConstants.IDENT) {
+                v.set(convertIdent(val), ac);
+            } else if (n.kind == CssParserConstants.STRING) {
+                v.set(val, ac);
+            } else {
+                v.set(val, ac);
+            }
+        }
+        expr.addValue(v);
+    }
+
+    /*
+     * Error control
+     */
+    private void addError(Exception e, String skippedText) {
+        if (Util.onDebug) {
+            System.err.println(e.getMessage());
+            e.printStackTrace();
+        }
+        CssParseException ex = new CssParseException(e);
+        ex.setSkippedString(skippedText);
+        ex.setProperty(currentProperty);
+        ex.setContexts(currentContext);
+        CssError error = new CssError(getSourceFile(), getLine(), ex);
+        ac.getFrame().addError(error);
+    }
+
+    /*
+     * Error control 2
+     */
+    private void addError(Exception e, CssExpression exp) {
+        if (Util.onDebug) {
+            System.err.println(e.getMessage());
+            e.printStackTrace();
+        }
+
+        //	if ((exp != null) && (exp.getCount() != 0)) {
+        CssParseException ex = new CssParseException(e);
+        ex.setExp(exp);
+        ex.setProperty(currentProperty);
+        ex.setContexts(currentContext);
+        CssError error = new CssError(getSourceFile(), getLine(), ex);
+        ac.getFrame().addError(error);
+        //	}
+    }
+
+//<DEFAULT, IN_COMMENT>
+//TOKEN :
+//{ /* avoid token manager error */
+//   < UNKNOWN : ~[] >
+//}
+
+/*
+ * The grammar of CSS2
+ */
+
+/**
+ * The main entry for the parser.
+ *
+ * @exception ParseException exception during the parse
+ */
+  final public void parserUnit() throws ParseException {
+    Token n = null;
+    try {
+      label_1:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case HTMLSTARTTAG:
+        case HTMLENDTAG:
+          ;
+          break;
+        default:
+          jj_la1[0] = jj_gen;
+          break label_1;
+        }
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case HTMLSTARTTAG:
+          n = jj_consume_token(HTMLSTARTTAG);
+          break;
+        case HTMLENDTAG:
+          n = jj_consume_token(HTMLENDTAG);
+          break;
+        default:
+          jj_la1[1] = jj_gen;
+          jj_consume_token(-1);
+          throw new ParseException();
+        }
+            addError (
+new ParseException(ac.getMsg().getString("generator.dontmixhtml")), n.image);
+      }
+      label_2:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case CHARSET_SYM:
+          ;
+          break;
+        default:
+          jj_la1[2] = jj_gen;
+          break label_2;
+        }
+        charset();
+      }
+      label_3:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+        case CDO:
+        case CDC:
+          ;
+          break;
+        default:
+          jj_la1[3] = jj_gen;
+          break label_3;
+        }
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          jj_consume_token(S);
+          break;
+        case CDO:
+          jj_consume_token(CDO);
+          break;
+        case CDC:
+          jj_consume_token(CDC);
+          break;
+        default:
+          jj_la1[4] = jj_gen;
+          jj_consume_token(-1);
+          throw new ParseException();
+        }
+      }
+      label_4:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case IMPORT_SYM:
+          ;
+          break;
+        default:
+          jj_la1[5] = jj_gen;
+          break label_4;
+        }
+        importDeclaration();
+        ignoreStatement();
+      }
+      label_5:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case NAMESPACE_SYM:
+          ;
+          break;
+        default:
+          jj_la1[6] = jj_gen;
+          break label_5;
+        }
+        namespaceDeclaration();
+        ignoreStatement();
+      }
+      afterImportDeclaration();
+      jj_consume_token(0);
+    } catch (TokenMgrError err) {
+   addError (new ParseException(ac.getMsg().getString("generator.unrecognize")),
+             err.getMessage());
+    }
+  }
+
+  final public void charset() throws ParseException {
+    Token n = null;
+    Token charsetToken = null;
+    Token space1Token = null;
+    Token space2Token = null;
+    Token semicolonToken = null;
+    int nb_S = 0;
+    try {
+      charsetToken = jj_consume_token(CHARSET_SYM);
+      label_6:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[7] = jj_gen;
+          break label_6;
+        }
+        space1Token = jj_consume_token(S);
+                                                       nb_S++;
+      }
+      n = jj_consume_token(STRING);
+      label_7:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[8] = jj_gen;
+          break label_7;
+        }
+        space2Token = jj_consume_token(S);
+      }
+      semicolonToken = jj_consume_token(SEMICOLON);
+                if (charsetdeclared && !reinited) {
+                    {if (true) throw new ParseException(
+                                     ac.getMsg().getString("parser.charset"));}
+                }
+                // the @charset must be at the beginning of the document
+                if(charsetToken.beginLine != 1 ||
+                   charsetToken.beginColumn != 1) {
+                    {if (true) throw new ParseException(
+                                  ac.getMsg().getString("parser.charset"));}
+                }
+                if ("css1".equals(ac.getCssVersion())) {
+                    {if (true) throw new ParseException(ac.getMsg().getString(
+                                                         "parser.charsetcss1"));}
+                }
+                // stricter rule for CSS21 and soon for CSS3
+                if ("css21".equals(ac.getCssVersion())) {
+                    // single space before
+                    // case sensitive
+                    // no space before ;
+                    // no comments
+                    // string must start with "
+                    if ( (nb_S != 1) ||
+                         (!"@charset".equals(charsetToken.image)) ||
+                         (!" ".equals(space1Token.image)) ||
+                         (space2Token != null &&
+                          !"".equals(space2Token.image)) ||
+                         (space1Token.specialToken != null) ||
+                         (n.specialToken != null) ||
+                         (semicolonToken.specialToken != null) ||
+                         (n.image.charAt(0) != '\"')
+                        ) {
+                        {if (true) throw new ParseException(ac.getMsg().getString(
+                                                     "parser.charsetspecial"));}
+                    }
+                }
+                if (!charsetdeclared) {
+                    addCharSet(n.image.substring(1, n.image.length()-1));
+                    charsetdeclared = true;
+                } else {
+                    reinited = false;
+                }
+    } catch (Exception e) {
+        String skip = charsetToken +
+            ((space1Token == null) ? "" : space1Token.image) +
+            n +
+            ((space2Token == null) ? "" : space2Token.image) +
+            ";";
+        addError(e, skip);
+    }
+  }
+
+  final public void afterImportDeclaration() throws ParseException {
+ String ret;
+    label_8:
+    while (true) {
+      ;
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case IDENT:
+      case HASHIDENT:
+      case HASH:
+      case LBRACKET:
+      case ANY:
+      case COLON:
+      case LENGTH:
+      case EMS:
+      case EXS:
+      case ANGLE:
+      case TIME:
+      case FREQ:
+      case RESOLUTION:
+      case DIMEN:
+      case PSEUDOELEMENT_SYM:
+      case CLASS:
+      case FUNCTIONNOT:
+      case 98:
+        ruleSet();
+        break;
+      case MEDIA_SYM:
+        media();
+        break;
+      case PAGE_SYM:
+        page();
+        break;
+      case FONT_FACE_SYM:
+        fontFace();
+        break;
+      case PREF_SYM:
+        preference();
+        break;
+      case COLOR_PROFILE:
+        colorprofile();
+        break;
+      case PHONETIC_ALPHABET_SYM:
+        phoneticAlphabet();
+        break;
+      default:
+        jj_la1[9] = jj_gen;
+        ret = skipStatement();
+          if ((ret == null) || (ret.length() == 0)) {
+                {if (true) return;}
+            }
+          // quite ugly but necessary to avoid probably a lot of changes in the
+          // grammar, still having a beautiful error message
+            else if (ret.startsWith("@charset")) {
+                ParseException e =
+                new ParseException(ac.getMsg().getString("parser.charset"));
+                addError(e, ret);
+            } else if (ret.startsWith("@import")) {
+                ParseException e =
+                new ParseException(ac.getMsg().getString("parser.import_not_allowed"));
+                addError(e, ret);
+            } else {
+                ParseException e =
+             new ParseException(ac.getMsg().getString("generator.unrecognize"));
+                addError(e, ret);
+            }
+      }
+      ignoreStatement();
+    }
+  }
+
+  final public void ignoreStatement() throws ParseException {
+    label_9:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case CDO:
+      case CDC:
+      case ATKEYWORD:
+        ;
+        break;
+      default:
+        jj_la1[10] = jj_gen;
+        break label_9;
+      }
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case CDO:
+        jj_consume_token(CDO);
+        break;
+      case CDC:
+        jj_consume_token(CDC);
+        break;
+      case ATKEYWORD:
+        atRuleDeclaration();
+        break;
+      default:
+        jj_la1[11] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+      label_10:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[12] = jj_gen;
+          break label_10;
+        }
+        jj_consume_token(S);
+      }
+    }
+  }
+
+  final public void namespaceDeclaration() throws ParseException {
+    Token n=null;
+    Token v=null;
+    boolean is_url; /* for formatting */
+    String nsname;
+    String prefix = null;
+    CssValue val;
+    jj_consume_token(NAMESPACE_SYM);
+    label_11:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[13] = jj_gen;
+        break label_11;
+      }
+      jj_consume_token(S);
+    }
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case IDENT:
+      n = jj_consume_token(IDENT);
+          prefix = convertIdent(n.image);
+      label_12:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[14] = jj_gen;
+          break label_12;
+        }
+        jj_consume_token(S);
+      }
+      break;
+    default:
+      jj_la1[15] = jj_gen;
+      ;
+    }
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case STRING:
+      v = jj_consume_token(STRING);
+              is_url = false;
+              nsname = v.image.substring(1, v.image.length()-1);
+      break;
+    case URL:
+      v = jj_consume_token(URL);
+              is_url = true;
+              val = new CssURL();
+              ((CssURL) val).set(v.image, ac, url);
+              nsname = (String) val.get();
+              if ((nsname.charAt(0) == '"')
+                  || (nsname.charAt(0) == '\'')) {
+                  nsname = nsname.substring(1, nsname.length()-1);
+              }
+      break;
+    default:
+      jj_la1[16] = jj_gen;
+      jj_consume_token(-1);
+      throw new ParseException();
+    }
+    label_13:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[17] = jj_gen;
+        break label_13;
+      }
+      jj_consume_token(S);
+    }
+    jj_consume_token(SEMICOLON);
+    label_14:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[18] = jj_gen;
+        break label_14;
+      }
+      jj_consume_token(S);
+    }
+        if (!ac.getCssVersion().equals("css3")) {
+            addError(new InvalidParamException("at-rule", "@namespace", ac),
+                     (n==null)?"default":n.toString());
+        } else {
+            if (v != null) {
+                handleNamespaceDeclaration(getURL(), prefix, nsname, is_url);
+            }
+        }
+  }
+
+/**
+ * The import statement
+ *
+ * @exception ParseException exception during the parse
+ */
+  final public void importDeclaration() throws ParseException {
+ Token n;
+    AtRuleMedia media = new AtRuleMedia();
+    CssValue val;
+    String importFile;
+    boolean is_url = false;
+    try {
+      jj_consume_token(IMPORT_SYM);
+      label_15:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[19] = jj_gen;
+          break label_15;
+        }
+        jj_consume_token(S);
+      }
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case STRING:
+        n = jj_consume_token(STRING);
+                importFile = n.image.substring(1, n.image.length() -1);
+                is_url = false;
+        break;
+      case URL:
+        n = jj_consume_token(URL);
+                val = new CssURL();
+                ((CssURL) val).set(n.image, ac, url);
+                importFile = (String) val.get();
+                if ((importFile.charAt(0) == '"')
+                    || (importFile.charAt(0) == '\'')) {
+                    importFile = importFile.substring(1, importFile.length()-1);
+                }
+                is_url = true;
+        break;
+      default:
+        jj_la1[20] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+      label_16:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[21] = jj_gen;
+          break label_16;
+        }
+        jj_consume_token(S);
+      }
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case IDENT:
+        medium(media);
+        label_17:
+        while (true) {
+          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+          case COMMA:
+            ;
+            break;
+          default:
+            jj_la1[22] = jj_gen;
+            break label_17;
+          }
+          jj_consume_token(COMMA);
+          label_18:
+          while (true) {
+            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+            case S:
+              ;
+              break;
+            default:
+              jj_la1[23] = jj_gen;
+              break label_18;
+            }
+            jj_consume_token(S);
+          }
+          medium(media);
+        }
+        break;
+      default:
+        jj_la1[24] = jj_gen;
+        ;
+      }
+      jj_consume_token(SEMICOLON);
+      label_19:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[25] = jj_gen;
+          break label_19;
+        }
+        jj_consume_token(S);
+      }
+                handleImport(getURL(), importFile, is_url, media);
+    } catch (ParseException e) {
+        addError(e, skipStatement());
+    }
+  }
+
+/**
+ * @exception ParseException exception during the parse
+ */
+  final public void media() throws ParseException {
+    AtRule old = getAtRule();
+    AtRuleMedia newRule = new AtRuleMedia();
+    setAtRule(newRule);
+    Token n;
+    CssProperty p = null;
+    try {
+      jj_consume_token(MEDIA_SYM);
+      label_20:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[26] = jj_gen;
+          break label_20;
+        }
+        jj_consume_token(S);
+      }
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case MEDIARESTRICTOR:
+        n = jj_consume_token(MEDIARESTRICTOR);
+                                   newRule.addMediaRestrictor(convertIdent(n.image), ac);
+        label_21:
+        while (true) {
+          jj_consume_token(S);
+          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+          case S:
+            ;
+            break;
+          default:
+            jj_la1[27] = jj_gen;
+            break label_21;
+          }
+        }
+        break;
+      default:
+        jj_la1[28] = jj_gen;
+        ;
+      }
+      medium(newRule);
+      label_22:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case COMMA:
+          ;
+          break;
+        default:
+          jj_la1[29] = jj_gen;
+          break label_22;
+        }
+        jj_consume_token(COMMA);
+        label_23:
+        while (true) {
+          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+          case S:
+            ;
+            break;
+          default:
+            jj_la1[30] = jj_gen;
+            break label_23;
+          }
+          jj_consume_token(S);
+        }
+        medium(newRule);
+      }
+      label_24:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case AND:
+          ;
+          break;
+        default:
+          jj_la1[31] = jj_gen;
+          break label_24;
+        }
+        jj_consume_token(AND);
+        label_25:
+        while (true) {
+          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+          case S:
+            ;
+            break;
+          default:
+            jj_la1[32] = jj_gen;
+            break label_25;
+          }
+          jj_consume_token(S);
+        }
+        jj_consume_token(RPARAN);
+        label_26:
+        while (true) {
+          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+          case S:
+            ;
+            break;
+          default:
+            jj_la1[33] = jj_gen;
+            break label_26;
+          }
+          jj_consume_token(S);
+        }
+        p = mediadeclaration();
+                                                                     newRule.addMediaFeature(p);
+        jj_consume_token(LPARAN);
+        label_27:
+        while (true) {
+          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+          case S:
+            ;
+            break;
+          default:
+            jj_la1[34] = jj_gen;
+            break label_27;
+          }
+          jj_consume_token(S);
+        }
+      }
+                String media = getAtRule().toString();
+                if (ac.getMedium() != null &&
+                    !(media.equals(ac.getMedium())) &&
+                    !(ac.getMedium().equals("all"))) {
+
+                    ac.getFrame().addWarning("noothermedium",
+                                             getAtRule().toString());
+                }
+                if (ac.getCssVersion().equals("css1")) {
+                    skipStatement();
+                    addError(new InvalidParamException("noatruleyet", "", ac),
+                             getAtRule().toString());
+                }
+                if (!ac.getCssVersion().equals("css1")) {
+                    newAtRule(getAtRule());
+                }
+      jj_consume_token(LBRACE);
+      label_28:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[35] = jj_gen;
+          break label_28;
+        }
+        jj_consume_token(S);
+      }
+      label_29:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case IDENT:
+        case HASHIDENT:
+        case HASH:
+        case LBRACKET:
+        case ANY:
+        case COLON:
+        case LENGTH:
+        case EMS:
+        case EXS:
+        case ANGLE:
+        case TIME:
+        case FREQ:
+        case RESOLUTION:
+        case DIMEN:
+        case PSEUDOELEMENT_SYM:
+        case CLASS:
+        case FUNCTIONNOT:
+        case 98:
+          ;
+          break;
+        default:
+          jj_la1[36] = jj_gen;
+          break label_29;
+        }
+        ruleSet();
+      }
+      jj_consume_token(RBRACE);
+      label_30:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[37] = jj_gen;
+          break label_30;
+        }
+        jj_consume_token(S);
+      }
+                 if (!ac.getCssVersion().equals("css1")) {
+                     endOfAtRule();
+                 }
+    } catch (ParseException e) {
+        if (!ac.getCssVersion().equals("css1")) {
+            addError(e, skipStatement());
+        }
+    } finally {
+        setAtRule(old);
+    }
+  }
+
+/**
+ * @exception ParseException exception during the parse
+ */
+  final public void medium(AtRuleMedia media) throws ParseException {
+ Token n;
+    n = jj_consume_token(IDENT);
+    label_31:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[38] = jj_gen;
+        break label_31;
+      }
+      jj_consume_token(S);
+    }
+        try {
+            media.addMedia(convertIdent(n.image), ac);
+        } catch (InvalidParamException e) {
+            CssError error = new CssError(getSourceFile(), getLine(), e);
+            ac.getFrame().addError(error);
+        }
+  }
+
+/**
+ * @exception ParseException exception during the parse
+ */
+  final public void page() throws ParseException {
+    Vector       v                              ;
+    Token        n        = null                ;
+    Vector       collectv = new Vector()        ;
+    CssSelectors s        = new CssSelectors(ac);
+    AtRule       old      = getAtRule()         ;
+    AtRulePage   newRule  = new AtRulePage()    ;
+    setAtRule(newRule);
+    s.setAtRule(getAtRule());
+    try {
+      jj_consume_token(PAGE_SYM);
+      label_32:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[39] = jj_gen;
+          break label_32;
+        }
+        jj_consume_token(S);
+      }
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case IDENT:
+        n = jj_consume_token(IDENT);
+                          newRule.setIdent(convertIdent(n.image));
+        label_33:
+        while (true) {
+          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+          case S:
+            ;
+            break;
+          default:
+            jj_la1[40] = jj_gen;
+            break label_33;
+          }
+          jj_consume_token(S);
+        }
+        break;
+      default:
+        jj_la1[41] = jj_gen;
+        ;
+      }
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case COLON:
+        pseudo_page(newRule);
+        break;
+      default:
+        jj_la1[42] = jj_gen;
+        ;
+      }
+      jj_consume_token(LBRACE);
+      label_34:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[43] = jj_gen;
+          break label_34;
+        }
+        jj_consume_token(S);
+      }
+      v = pageContent();
+                    collectv = v;
+      jj_consume_token(RBRACE);
+      label_35:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[44] = jj_gen;
+          break label_35;
+        }
+        jj_consume_token(S);
+      }
+                if (!ac.getCssVersion().equals("css1")) {
+                    newAtRule(getAtRule());
+                }
+
+                if (!ac.getCssVersion().equals("css1")) {
+                    addProperty(collectv);
+                    endOfRule();
+                    endOfAtRule();
+                }
+                if (v == null) {
+                    ac.getFrame().addWarning("no-declaration");
+                } else {
+                    handleRule(s, collectv);
+                }
+    } catch (InvalidParamException ie) {
+        if (!ac.getCssVersion().equals("css1")) {
+            skipStatement();
+            removeThisAtRule();
+            ac.getFrame().addError(new CssError(ie));
+        }
+    } catch (ParseException e) {
+        if (!ac.getCssVersion().equals("css1")) {
+            removeThisAtRule();
+            addError(e, skipStatement());
+        }
+    } finally {
+        setAtRule(old);
+    }
+  }
+
+  final public Vector pageContent() throws ParseException {
+  CssProperty prop;
+    Vector v = new Vector();
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case ATTOP:
+    case ATRIGHT:
+    case ATBOTTOM:
+    case ATLEFT:
+      // <CSS3> ?? FIXME
+          v = prefAtRule();
+                     {if (true) return v;}
+      break;
+    default:
+      jj_la1[45] = jj_gen;
+      v = declarations();
+                       {if (true) return v;}
+    }
+    throw new Error("Missing return statement in function");
+  }
+
+  final public Vector prefAtRule() throws ParseException {
+  Token n;
+    Vector v;
+    try {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case ATTOP:
+        n = jj_consume_token(ATTOP);
+        break;
+      case ATBOTTOM:
+        n = jj_consume_token(ATBOTTOM);
+        break;
+      case ATLEFT:
+        n = jj_consume_token(ATLEFT);
+        break;
+      case ATRIGHT:
+        n = jj_consume_token(ATRIGHT);
+        break;
+      default:
+        jj_la1[46] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+      label_36:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[47] = jj_gen;
+          break label_36;
+        }
+        jj_consume_token(S);
+      }
+      jj_consume_token(LBRACE);
+      label_37:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[48] = jj_gen;
+          break label_37;
+        }
+        jj_consume_token(S);
+      }
+      v = declarations();
+      jj_consume_token(RBRACE);
+      label_38:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[49] = jj_gen;
+          break label_38;
+        }
+        jj_consume_token(S);
+      }
+                {if (true) return v;}
+    } catch (ParseException e) {
+        addError(e, skipStatement());
+    }
+    throw new Error("Missing return statement in function");
+  }
+
+  final public void pseudo_page(AtRulePage page) throws ParseException {
+  Token n;
+    jj_consume_token(COLON);
+    n = jj_consume_token(IDENT);
+    label_39:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[50] = jj_gen;
+        break label_39;
+      }
+      jj_consume_token(S);
+    }
+        try {
+            page.setName(":" + convertIdent(n.image), ac);
+        } catch (InvalidParamException e) {
+            {if (true) throw new InvalidParamException("pseudo", n.image, ac );}
+            /*CssError error = new CssError(getSourceFile(), getLine(), e);
+	      ac.getFrame().addError(error);	*/
+        }
+  }
+
+  final public void fontFace() throws ParseException {
+    Vector v;
+    AtRule old = getAtRule();
+    setAtRule(new AtRuleFontFace());
+    CssSelectors s = new CssSelectors(ac);
+    s.setAtRule(getAtRule());
+    try {
+      jj_consume_token(FONT_FACE_SYM);
+      label_40:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[51] = jj_gen;
+          break label_40;
+        }
+        jj_consume_token(S);
+      }
+                if (ac.getCssVersion().equals("css1")) {
+                    skipStatement();
+                    addError(new InvalidParamException("noatruleyet", "", ac),
+                             getAtRule().toString());
+                }
+                if (!ac.getCssVersion().equals("css1")) {
+                    newAtRule(getAtRule());
+                }
+      jj_consume_token(LBRACE);
+      label_41:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[52] = jj_gen;
+          break label_41;
+        }
+        jj_consume_token(S);
+      }
+      v = declarations();
+      jj_consume_token(RBRACE);
+      label_42:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[53] = jj_gen;
+          break label_42;
+        }
+        jj_consume_token(S);
+      }
+                 if (!ac.getCssVersion().equals("css1")) {
+                     addProperty(v);
+                     endOfRule();
+                     endOfAtRule();
+                 }
+                 if (v == null) {
+                     ac.getFrame().addWarning("no-declaration");
+                 } else {
+                     handleRule(s, v);
+                 }
+    } catch (ParseException e) {
+        if (!ac.getCssVersion().equals("css1")) {
+            addError(e, skipStatement());
+        }
+    } finally {
+        setAtRule(old);
+    }
+  }
+
+  final public void colorprofile() throws ParseException {
+    Vector v;
+    AtRule old = getAtRule();
+    setAtRule(new AtRuleColorProfile());
+    CssSelectors s = new CssSelectors(ac);
+    s.setAtRule(getAtRule());
+    try {
+      jj_consume_token(COLOR_PROFILE);
+      label_43:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[54] = jj_gen;
+          break label_43;
+        }
+        jj_consume_token(S);
+      }
+                if (!ac.getCssVersion().equals("svg")) {
+                    skipStatement();
+                    addError(new InvalidParamException("onlysvg", "", ac),
+                             getAtRule().toString());
+                }
+                if (ac.getCssVersion().equals("svg")) {
+                    newAtRule(getAtRule());
+                }
+      jj_consume_token(LBRACE);
+      label_44:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[55] = jj_gen;
+          break label_44;
+        }
+        jj_consume_token(S);
+      }
+      v = declarations();
+      jj_consume_token(RBRACE);
+      label_45:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[56] = jj_gen;
+          break label_45;
+        }
+        jj_consume_token(S);
+      }
+                 if (ac.getCssVersion().equals("svg")) {
+                     addProperty(v);
+                     endOfRule();
+                     endOfAtRule();
+                 }
+
+                 if (v == null) {
+                     //ac.getFrame().addWarning("medialist");
+                 } else {
+                     handleRule(s, v);
+                 }
+    } catch (ParseException e) {
+        if (ac.getCssVersion().equals("svg")) {
+            addError(e, skipStatement());
+        }
+    } finally {
+        setAtRule(old);
+    }
+  }
+
+  final public void preference() throws ParseException {
+    Vector v;
+    AtRule old = getAtRule();
+    setAtRule(new AtRulePreference());
+    CssSelectors s = new CssSelectors(ac);
+    s.setAtRule(getAtRule());
+    try {
+      jj_consume_token(PREF_SYM);
+      label_46:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[57] = jj_gen;
+          break label_46;
+        }
+        jj_consume_token(S);
+      }
+                if (ac.getCssVersion().equals("css1")) {
+                    skipStatement();
+                    addError(new InvalidParamException("noatruleyet", "", ac),
+                             getAtRule().toString());
+                }
+                if (!ac.getCssVersion().equals("css1")) {
+                    newAtRule(getAtRule());
+                }
+      jj_consume_token(LBRACE);
+      label_47:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[58] = jj_gen;
+          break label_47;
+        }
+        jj_consume_token(S);
+      }
+      v = declarations();
+      jj_consume_token(RBRACE);
+      label_48:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[59] = jj_gen;
+          break label_48;
+        }
+        jj_consume_token(S);
+      }
+                 if (!ac.getCssVersion().equals("css1")) {
+                     addProperty(v);
+                     endOfRule();
+                     endOfAtRule();
+                 }
+
+                 if (v == null) {
+                     ac.getFrame().addWarning("medialist");
+                 } else {
+                     handleRule(s, v);
+                 }
+    } catch (ParseException e) {
+        if (!ac.getCssVersion().equals("css1")) {
+            addError(e, skipStatement());
+        }
+    } finally {
+        setAtRule(old);
+    }
+  }
+
+  final public void phoneticAlphabet() throws ParseException {
+    Vector v;
+    AtRule old = getAtRule();
+    AtRulePhoneticAlphabet alphabetrule = new AtRulePhoneticAlphabet();
+    setAtRule(alphabetrule);
+    Token n;
+    try {
+      jj_consume_token(PHONETIC_ALPHABET_SYM);
+      label_49:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[60] = jj_gen;
+          break label_49;
+        }
+        jj_consume_token(S);
+      }
+      n = jj_consume_token(STRING);
+      label_50:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[61] = jj_gen;
+          break label_50;
+        }
+        jj_consume_token(S);
+      }
+      jj_consume_token(SEMICOLON);
+                if (!ac.getCssVersion().equals("css3")) {
+                    skipStatement();
+                    addError(new InvalidParamException("noatruleyet", "", ac),
+                             getAtRule().toString());
+                }
+
+                alphabetrule.addAlphabet(convertIdent(n.image), ac);
+
+                if (!ac.getCssVersion().equals("css1") && !ac.getCssVersion().equals("css2")) {
+                    newAtRule(getAtRule());
+                }
+    } catch (ParseException e) {
+        if (!ac.getCssVersion().equals("css1")) {
+            addError(e, skipStatement());
+        }
+    } finally {
+        setAtRule(old);
+    }
+  }
+
+/**
+ * @exception ParseException exception during the parse
+ */
+  final public void atRuleDeclaration() throws ParseException {
+ Token n;
+    n = jj_consume_token(ATKEYWORD);
+            //ac.getFrame().addWarning("at-rule", token.toString());
+            ac.getFrame().addError(
+                          new CssError(new InvalidParamException("at-rule",
+                                                                 token, ac)));
+            skipStatement();
+  }
+
+/**
+ * @exception ParseException exception during the parse
+ */
+  final public void operator(CssExpression expr) throws ParseException {
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case COMMA:
+    case DIV:
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case DIV:
+        jj_consume_token(DIV);
+              if (expr.getCount() > 0) expr.setOperator('/');
+        break;
+      case COMMA:
+        jj_consume_token(COMMA);
+                if (expr.getCount() > 0) expr.setOperator(',');
+        break;
+      default:
+        jj_la1[62] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+      label_51:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[63] = jj_gen;
+          break label_51;
+        }
+        jj_consume_token(S);
+      }
+      break;
+    default:
+      jj_la1[64] = jj_gen;
+      ;
+    }
+  }
+
+/**
+ * @exception ParseException exception during the parse
+ */
+  final public char combinator() throws ParseException {
+    char connector = ' ';
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case PLUS:
+    case GREATER:
+    case TILDE:
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case PLUS:
+        jj_consume_token(PLUS);
+                   connector = '+' ;
+        break;
+      case GREATER:
+        jj_consume_token(GREATER);
+                      connector = '>' ;
+        break;
+      case TILDE:
+        jj_consume_token(TILDE);
+                    connector = '~' ;
+        break;
+      default:
+        jj_la1[65] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+      label_52:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[66] = jj_gen;
+          break label_52;
+        }
+        jj_consume_token(S);
+      }
+      break;
+    case S:
+      label_53:
+      while (true) {
+        jj_consume_token(S);
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[67] = jj_gen;
+          break label_53;
+        }
+      }
+                 connector = ' ' ;
+      break;
+    default:
+      jj_la1[68] = jj_gen;
+      jj_consume_token(-1);
+      throw new ParseException();
+    }
+        {if (true) return connector;}
+    throw new Error("Missing return statement in function");
+  }
+
+/**
+ * @exception ParseException exception during the parse
+ */
+  final public char unaryOperator() throws ParseException {
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case MINUS:
+      jj_consume_token(MINUS);
+          {if (true) return '-';}
+      break;
+    case PLUS:
+      jj_consume_token(PLUS);
+               {if (true) return '+';}
+      break;
+    default:
+      jj_la1[69] = jj_gen;
+      jj_consume_token(-1);
+      throw new ParseException();
+    }
+    throw new Error("Missing return statement in function");
+  }
+
+/**
+ * @exception ParseException exception during the parse
+ */
+  final public String property() throws ParseException {
+ Token n;
+    n = jj_consume_token(IDENT);
+    label_54:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[70] = jj_gen;
+        break label_54;
+      }
+      jj_consume_token(S);
+    }
+                         currentProperty = convertIdent(n.image);
+                         {if (true) return currentProperty;}
+    throw new Error("Missing return statement in function");
+  }
+
+/**
+ * @exception ParseException exception during the parse
+ */
+  final public void ruleSet() throws ParseException {
+  CssSelectors contextual;
+    Vector<CssSelectors> context_set = new Vector<CssSelectors>();
+    Vector<CssProperty> value_set = null;
+    currentContext = context_set;
+    try {
+      contextual = selector();
+                if (contextual != null) {
+                    context_set.addElement(contextual);
+                }
+      label_55:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case COMMA:
+          ;
+          break;
+        default:
+          jj_la1[71] = jj_gen;
+          break label_55;
+        }
+        jj_consume_token(COMMA);
+        label_56:
+        while (true) {
+          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+          case S:
+            ;
+            break;
+          default:
+            jj_la1[72] = jj_gen;
+            break label_56;
+          }
+          jj_consume_token(S);
+        }
+        contextual = selector();
+                if (contextual != null) {
+                    context_set.addElement(contextual);
+                }
+      }
+      jj_consume_token(LBRACE);
+            validSelector = (context_set.size() > 0);
+      label_57:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[73] = jj_gen;
+          break label_57;
+        }
+        jj_consume_token(S);
+      }
+      value_set = declarations();
+      jj_consume_token(RBRACE);
+      label_58:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[74] = jj_gen;
+          break label_58;
+        }
+        jj_consume_token(S);
+      }
+                markRule = true;
+
+                /*      if (value_set == null) {
+			ac.getFrame().addWarning("no-declaration");
+			} else {*/
+                if (value_set != null) {
+                    boolean first = true;
+                    CssSelectors sel = null;
+                    Enumeration<CssSelectors> e = context_set.elements();
+                    while (e.hasMoreElements()) {
+                        sel = e.nextElement();
+                        if (first) {
+                            handleRule(sel, value_set);
+                            first = false;
+                        } else {
+                            // we need to duplicate properties in that case
+                            // as property holds reference to the selectors and it interact
+                            // badly with conflict detection
+                            int vsize = value_set.size();
+                            Vector<CssProperty> v = new Vector<CssProperty>(vsize);
+                            for (int i=0; i<vsize; i++) {
+                                v.addElement(value_set.elementAt(i).duplicate());
+                            }
+                            handleRule(sel, v);
+                        }
+                    }
+                    setSelectorList(context_set);
+                    endOfRule();
+                }
+                currentContext = null;
+    } catch (ParseException e) {
+        if (ac.getProfile() != null) {
+            if (!ac.getProfile().equals("mobile") && !context_set.isEmpty()) {
+                addError(e, skipStatement());
+            }
+        }
+    } catch (TokenMgrError e) {
+        addError(new ParseException(e.getMessage()), skipStatement());
+    }
+  }
+
+  final public Vector<CssProperty> declarations() throws ParseException {
+    if(!validSelector) {
+        validSelector = true;
+        skip_to_matching_brace();
+        return null;
+    }
+
+    CssProperty values;
+    Vector<CssProperty> value_set   = new Vector<CssProperty>();
+    boolean wrong_value = true;
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case IDENT:
+      values = declaration();
+          if (values != null) {
+                value_set.addElement(values);
+                wrong_value = false;
+            } /* else {
+		 wrong_value = true;
+		 } */
+          currentProperty = null;
+      break;
+    default:
+      jj_la1[75] = jj_gen;
+      ;
+    }
+    label_59:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case SEMICOLON:
+        ;
+        break;
+      default:
+        jj_la1[76] = jj_gen;
+        break label_59;
+      }
+      jj_consume_token(SEMICOLON);
+      label_60:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[77] = jj_gen;
+          break label_60;
+        }
+        jj_consume_token(S);
+      }
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case IDENT:
+        values = declaration();
+                if (values != null) {
+                      value_set.addElement(values);
+                      wrong_value = false;
+                  }/* else {
+		      wrong_value = true;
+		      }*/
+                currentProperty = null;
+        break;
+      default:
+        jj_la1[78] = jj_gen;
+        ;
+      }
+    }
+            if (!wrong_value) {
+                addProperty(value_set);
+                {if (true) return value_set;}
+            } else {
+                {if (true) return null;}
+            }
+    throw new Error("Missing return statement in function");
+  }
+
+/**
+ * @exception ParseException exception during the parse
+ */
+  final public CssSelectors selector() throws ParseException {
+    char comb;
+    CssSelectors current;
+    try {
+      current = simple_selector(null);
+      label_61:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+        case PLUS:
+        case GREATER:
+        case TILDE:
+          ;
+          break;
+        default:
+          jj_la1[79] = jj_gen;
+          break label_61;
+        }
+        comb = combinator();
+                if (ac.getProfile() != null) {
+                    if (ac.getProfile().equals("mobile") ||
+                        getAtRule().toString().equals("@media atsc-tv") ||
+                        ac.getCssVersion().equals("css1")) {
+                        if (comb == '+')
+                            {if (true) throw new InvalidParamException("nocomb", "+", ac);}
+                        if (comb == '>')
+                            {if (true) throw new InvalidParamException("nocomb", ">", ac);}
+                    } else if (ac.getProfile().equals("tv")) {
+                        if (comb == '+')
+                            {if (true) throw new InvalidParamException("nocomb", "+", ac);}
+
+                    }
+                }
+                if (!ac.getCssVersion().equals("css3")) {
+                    if (comb == '~') {
+                        {if (true) throw new InvalidParamException("nocomb", "~", ac);}
+                    }
+                }
+                switch(comb) {
+                case '+':
+                current.addAdjacentSibling(new AdjacentSiblingSelector());
+                break;
+                case '>':
+                current.addChild(new ChildSelector());
+                break;
+                case '~':
+                current.addGeneralSibling(new GeneralSiblingSelector());
+                break;
+                default:
+                current.addDescendant(new DescendantSelector());
+                }
+                //current.setConnector(comb); 
+
+        current = simple_selector(current);
+      }
+              {if (true) return current;}
+    } catch (InvalidParamException ie) {
+        //	skipStatement();
+        //	removeThisRule();
+        ac.getFrame().addError(new CssError(ie));
+        Token t = getToken(1);
+        StringBuilder s = new StringBuilder();
+        s.append(getToken(0).image);
+        // eat until , { or EOF
+        while ((t.kind != COMMA) && (t.kind != LBRACE) && (t.kind != EOF)) {
+            s.append(t.image);
+            getNextToken();
+            t = getToken(1);
+        }
+        {if (true) return null;}
+    } catch (ParseException e) {
+        //	validSelector = false;
+        Token t = getToken(1);
+        StringBuilder s = new StringBuilder("[");
+        s.append(getToken(0).image);
+        // eat until , { or EOF
+        while ((t.kind != COMMA) && (t.kind != LBRACE) && (t.kind != EOF)) {
+            s.append(t.image);
+            getNextToken();
+            t = getToken(1);
+        }
+        s.append(']');
+        //	if (validSelector) {
+        addError(e, s.toString());
+            //	} else {
+            //  addError(e,"");
+            //	}
+        validSelector = true;
+        {if (true) return null;}
+    }
+    throw new Error("Missing return statement in function");
+  }
+
+/**
+ * I made this rule to parse a selector from a document. Combinator are avoid.
+ * @exception ParseException exception during the parse
+ */
+  final public CssSelectors externalSelector() throws ParseException {
+    CssSelectors current;
+    current = simple_selector(null);
+    label_62:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[80] = jj_gen;
+        break label_62;
+      }
+      label_63:
+      while (true) {
+        jj_consume_token(S);
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[81] = jj_gen;
+          break label_63;
+        }
+      }
+      current = simple_selector(current);
+    }
+          {if (true) return current;}
+    throw new Error("Missing return statement in function");
+  }
+
+/**
+ * @exception ParseException exception during the parse
+ */
+  final public CssSelectors simple_selector(CssSelectors next) throws ParseException {
+  CssSelectors selector = new CssSelectors(ac, next);
+    selector.setAtRule(getAtRule());
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case IDENT:
+    case ANY:
+    case 98:
+      element_name(selector);
+      label_64:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case HASHIDENT:
+        case HASH:
+        case LBRACKET:
+        case COLON:
+        case LENGTH:
+        case EMS:
+        case EXS:
+        case ANGLE:
+        case TIME:
+        case FREQ:
+        case RESOLUTION:
+        case DIMEN:
+        case PSEUDOELEMENT_SYM:
+        case CLASS:
+        case FUNCTIONNOT:
+          ;
+          break;
+        default:
+          jj_la1[82] = jj_gen;
+          break label_64;
+        }
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case HASHIDENT:
+        case HASH:
+          hash(selector);
+          break;
+        case LENGTH:
+        case EMS:
+        case EXS:
+        case ANGLE:
+        case TIME:
+        case FREQ:
+        case RESOLUTION:
+        case DIMEN:
+        case CLASS:
+          _class(selector);
+          break;
+        case LBRACKET:
+          attrib(selector);
+          break;
+        case COLON:
+        case PSEUDOELEMENT_SYM:
+          pseudo(selector);
+          break;
+        case FUNCTIONNOT:
+          negation(selector);
+          break;
+        default:
+          jj_la1[83] = jj_gen;
+          jj_consume_token(-1);
+          throw new ParseException();
+        }
+      }
+            {if (true) return selector;}
+      break;
+    case HASHIDENT:
+    case HASH:
+    case LBRACKET:
+    case COLON:
+    case LENGTH:
+    case EMS:
+    case EXS:
+    case ANGLE:
+    case TIME:
+    case FREQ:
+    case RESOLUTION:
+    case DIMEN:
+    case PSEUDOELEMENT_SYM:
+    case CLASS:
+    case FUNCTIONNOT:
+      label_65:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case HASHIDENT:
+        case HASH:
+          hash(selector);
+          break;
+        case LENGTH:
+        case EMS:
+        case EXS:
+        case ANGLE:
+        case TIME:
+        case FREQ:
+        case RESOLUTION:
+        case DIMEN:
+        case CLASS:
+          _class(selector);
+          break;
+        case LBRACKET:
+          attrib(selector);
+          break;
+        case COLON:
+        case PSEUDOELEMENT_SYM:
+          pseudo(selector);
+          break;
+        case FUNCTIONNOT:
+          negation(selector);
+          break;
+        default:
+          jj_la1[84] = jj_gen;
+          jj_consume_token(-1);
+          throw new ParseException();
+        }
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case HASHIDENT:
+        case HASH:
+        case LBRACKET:
+        case COLON:
+        case LENGTH:
+        case EMS:
+        case EXS:
+        case ANGLE:
+        case TIME:
+        case FREQ:
+        case RESOLUTION:
+        case DIMEN:
+        case PSEUDOELEMENT_SYM:
+        case CLASS:
+        case FUNCTIONNOT:
+          ;
+          break;
+        default:
+          jj_la1[85] = jj_gen;
+          break label_65;
+        }
+      }
+            {if (true) return selector;}
+      break;
+    default:
+      jj_la1[86] = jj_gen;
+      jj_consume_token(-1);
+      throw new ParseException();
+    }
+    throw new Error("Missing return statement in function");
+  }
+
+/**
+ * @exception ParseException exception during the parse
+ */
+  final public void _class(CssSelectors s) throws ParseException {
+ Token n;
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case CLASS:
+      /*  "." n=<IDENT> { */
+          n = jj_consume_token(CLASS);
+        try {
+            s.addClass(new ClassSelector(convertClassIdent(n.image.substring(1))));
+            //        s.addAttribute("class", convertIdent(n.image.substring(1)),
+            //           CssSelectors.ATTRIBUTE_CLASS_SEL);
+        } catch (InvalidParamException e) {
+            //	    removeThisRule();
+             ac.getFrame().addError(new CssError(e));
+            {if (true) throw new ParseException(e.getMessage());}
+        }
+      break;
+    case LENGTH:
+    case EMS:
+    case EXS:
+    case ANGLE:
+    case TIME:
+    case FREQ:
+    case RESOLUTION:
+    case DIMEN:
+      n = deprecated_class();
+        if (n.image.charAt(0) == '.') {
+            n.image = n.image.substring(1);
+
+            // the class with the first digit escaped
+            String cl = "."+hexEscapeFirst(n.image);
+
+            String profile = ac.getProfile();
+            if(profile == null || profile.equals("") || profile.equals("none")) {
+                profile = ac.getCssVersion();
+            }
+
+            if(!profile.equals("css1")) {
+                StringBuilder sb = new StringBuilder();
+                Vector<String> param_err = new Vector<String>(2);
+                param_err.add(n.image);
+                param_err.add(cl);
+                sb.append(ac.getMsg().getString("parser.old_class", param_err));
+                {if (true) throw new ParseException(sb.toString());}
+                //		s.addClass(new ClassSelector(n.image));                            
+                // removeThisRule();              
+            }
+            else {
+                CssLength length = new CssLength();
+                boolean isLength = false;
+                try {
+                    length.set(n.image, ac);
+                    isLength = true;
+                }
+                catch(Exception e) {
+                    isLength = false;
+                }
+                if(isLength) {
+                    StringBuilder sb = new StringBuilder();
+                    sb.append(ac.getMsg().getString("parser.class_dim"));
+                    sb.append(n.image);
+                    {if (true) throw new ParseException(sb.toString());}
+                    //		    s.addClass(new ClassSelector(n.image));                            
+                    // removeThisRule();
+                }
+                else {
+                    try {
+                        // for css > 1, we add the rule to have a context, 
+                        // and we then remove it
+                        s.addClass(new ClassSelector(n.image));
+                        ac.getFrame().addWarning("old_class");
+                    } catch (InvalidParamException e) {
+                        {if (true) throw new ParseException(e.getMessage());}
+                        //ac.getFrame().addError(new CssError(e));
+                        //removeThisRule();
+                    }
+                }
+            }
+        } else {
+            {if (true) throw new ParseException("Unrecognized ");}
+        }
+      break;
+    default:
+      jj_la1[87] = jj_gen;
+      jj_consume_token(-1);
+      throw new ParseException();
+    }
+  }
+
+  final public Token deprecated_class() throws ParseException {
+    Token n;
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case LENGTH:
+      n = jj_consume_token(LENGTH);
+      break;
+    case EMS:
+      n = jj_consume_token(EMS);
+      break;
+    case EXS:
+      n = jj_consume_token(EXS);
+      break;
+    case ANGLE:
+      n = jj_consume_token(ANGLE);
+      break;
+    case TIME:
+      n = jj_consume_token(TIME);
+      break;
+    case FREQ:
+      n = jj_consume_token(FREQ);
+      break;
+    case RESOLUTION:
+      n = jj_consume_token(RESOLUTION);
+      break;
+    case DIMEN:
+      n = jj_consume_token(DIMEN);
+      break;
+    default:
+      jj_la1[88] = jj_gen;
+      jj_consume_token(-1);
+      throw new ParseException();
+    }
+        {if (true) return n;}
+    throw new Error("Missing return statement in function");
+  }
+
+/**
+ * @exception ParseException exception during the parse
+ */
+  final public void element_name(CssSelectors s) throws ParseException {
+    Token n=null;
+    Token p=null;
+    String prefix = null;
+    if (jj_2_1(2)) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case IDENT:
+      case ANY:
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case IDENT:
+          n = jj_consume_token(IDENT);
+          break;
+        case ANY:
+          n = jj_consume_token(ANY);
+          break;
+        default:
+          jj_la1[89] = jj_gen;
+          jj_consume_token(-1);
+          throw new ParseException();
+        }
+        break;
+      default:
+        jj_la1[90] = jj_gen;
+        ;
+      }
+      p = jj_consume_token(98);
+    } else {
+      ;
+    }
+        // FIXME namespace, check versions of CSS in a better way.
+        if (p != null) {
+            if (!ac.getCssVersion().equals("css3")) {
+                StringBuilder sb = new StringBuilder("namespace \"");
+                if (n != null) sb.append(n.toString());
+                sb.append("\"");
+                ac.getFrame().addError(new CssError(new
+                                          InvalidParamException("notversion",
+                                                                "namespace",
+                                                            ac.getCssVersion(),
+                                                                ac)));
+                removeThisRule();
+            } else if (n!=null) {
+                prefix = convertIdent(n.image);
+                if (!ac.isNamespaceDefined(getURL(), prefix)) {
+                    // ns is not defined
+                    addError(new ParseException("Undefined namespace"),
+                             ": The namespace \""+prefix
+                             +"\" is not defined. "
+                             + prefix );
+                    removeThisRule();
+                }
+            } else {
+                prefix = "";
+            }
+        }
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case IDENT:
+      n = jj_consume_token(IDENT);
+                  //              s.setElement(convertIdent(n.image), ac);
+        s.addType(new TypeSelector(prefix, convertIdent(n.image)));
+      break;
+    case ANY:
+      jj_consume_token(ANY);
+        if (!ac.getCssVersion().equals("css1")) {
+            //          s.setElement(null);
+            s.addUniversal(new UniversalSelector(prefix));
+        } else {
+            ac.getFrame().addError(new CssError(new InvalidParamException("notversion",
+                                                                          "*", ac.getCssVersion(), ac)));
+        }
+      break;
+    default:
+      jj_la1[91] = jj_gen;
+      jj_consume_token(-1);
+      throw new ParseException();
+    }
+  }
+
+/**
+ * @exception ParseException exception during the parse
+ */
+  final public void attrib(CssSelectors s) throws ParseException {
+    Token att = null;
+    Token val = null;
+    int selectorType = CssSelectors.ATTRIBUTE_ANY;
+    jj_consume_token(LBRACKET);
+    label_66:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[92] = jj_gen;
+        break label_66;
+      }
+      jj_consume_token(S);
+    }
+    att = jj_consume_token(IDENT);
+    label_67:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[93] = jj_gen;
+        break label_67;
+      }
+      jj_consume_token(S);
+    }
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case INCLUDES:
+    case DASHMATCH:
+    case PREFIXMATCH:
+    case SUFFIXMATCH:
+    case SUBSTRINGMATCH:
+    case EQ:
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case EQ:
+        jj_consume_token(EQ);
+                  selectorType = CssSelectors.ATTRIBUTE_EXACT;
+        break;
+      case INCLUDES:
+        jj_consume_token(INCLUDES);
+                       selectorType = CssSelectors.ATTRIBUTE_ONE_OF;
+        break;
+      case DASHMATCH:
+        jj_consume_token(DASHMATCH);
+                        selectorType = CssSelectors.ATTRIBUTE_BEGIN;
+        break;
+      case PREFIXMATCH:
+        jj_consume_token(PREFIXMATCH);
+                          selectorType = CssSelectors.ATTRIBUTE_START;
+        break;
+      case SUFFIXMATCH:
+        jj_consume_token(SUFFIXMATCH);
+                          selectorType = CssSelectors.ATTRIBUTE_SUFFIX;
+        break;
+      case SUBSTRINGMATCH:
+        jj_consume_token(SUBSTRINGMATCH);
+                             selectorType = CssSelectors.ATTRIBUTE_SUBSTR;
+        break;
+      default:
+        jj_la1[94] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+      label_68:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[95] = jj_gen;
+          break label_68;
+        }
+        jj_consume_token(S);
+      }
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case IDENT:
+        val = jj_consume_token(IDENT);
+               val.image = convertIdent(val.image);
+        break;
+      case STRING:
+        val = jj_consume_token(STRING);
+                 val.image = convertStringIndex(val.image, 1, val.image.length() -1, false);
+        break;
+      default:
+        jj_la1[96] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+      label_69:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[97] = jj_gen;
+          break label_69;
+        }
+        jj_consume_token(S);
+      }
+      break;
+    default:
+      jj_la1[98] = jj_gen;
+      ;
+    }
+    jj_consume_token(RBRACKET);
+          if ("css1".equals(ac.getCssVersion())) {
+              StringBuilder reason;
+              CssParseException cp;
+              ParseException p;
+              reason = new StringBuilder(" [");
+              if (att != null) {
+                  reason.append(convertIdent(att.image));
+              }
+              if (val != null ) {
+                  reason.append('=').append(val.image);
+              }
+              reason.append(']');
+              p = new ParseException(ac.getMsg().getString("parser.attrcss1")+
+                                     reason.toString());
+              cp = new CssParseException(p);
+              ac.getFrame().addError(new CssError(cp));
+              removeThisRule();
+          }
+          if (selectorType == CssSelectors.ATTRIBUTE_ANY) {
+              try {
+                  s.addAttribute(new AttributeAny(att.image.toLowerCase()));
+//                s.addAttribute(att.image.toLowerCase(), null, selectorType);
+              } catch (InvalidParamException e) {
+                  removeThisRule();
+                  ac.getFrame().addError(new CssError(e));
+              }
+          } else {
+              AttributeSelector attribute;
+              switch(selectorType) {
+              case CssSelectors.ATTRIBUTE_BEGIN:
+                  attribute = new AttributeBegin(att.image.toLowerCase(),
+                          val.image);
+                  break;
+              case CssSelectors.ATTRIBUTE_EXACT:
+                  attribute = new AttributeExact(att.image.toLowerCase(),
+                          val.image);
+                  break;
+              case CssSelectors.ATTRIBUTE_ONE_OF:
+                  attribute = new AttributeOneOf(att.image.toLowerCase(),
+                          val.image);
+                  break;
+              case CssSelectors.ATTRIBUTE_START:
+                  attribute = new AttributeStart(att.image.toLowerCase(),
+                          val.image);
+                  break;
+              case CssSelectors.ATTRIBUTE_SUBSTR:
+                  attribute = new AttributeSubstr(att.image.toLowerCase(),
+                          val.image);
+                  break;
+              case CssSelectors.ATTRIBUTE_SUFFIX:
+                  attribute = new AttributeSuffix(att.image.toLowerCase(),
+                          val.image);
+                  break;
+              default:
+                  attribute = new AttributeExact(att.image.toLowerCase(),
+                          val.image);
+                  break;
+              }
+              try {
+                  s.addAttribute(attribute);
+//	      	  s.addAttribute(att.image.toLowerCase(), val.image, 
+//			     selectorType);
+              } catch (InvalidParamException e) {
+                  removeThisRule();
+                  ac.getFrame().addError(new CssError(e));
+              }
+          }
+  }
+
+  final public void negation(CssSelectors s) throws ParseException {
+    Token n;
+    CssSelectors ns = new CssSelectors(ac, null);
+    jj_consume_token(FUNCTIONNOT);
+    label_70:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[99] = jj_gen;
+        break label_70;
+      }
+      jj_consume_token(S);
+    }
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case IDENT:
+    case ANY:
+    case 98:
+      element_name(ns);
+      break;
+    case HASHIDENT:
+    case HASH:
+      hash(ns);
+      break;
+    case LENGTH:
+    case EMS:
+    case EXS:
+    case ANGLE:
+    case TIME:
+    case FREQ:
+    case RESOLUTION:
+    case DIMEN:
+    case CLASS:
+      _class(ns);
+      break;
+    case LBRACKET:
+      attrib(ns);
+      break;
+    case COLON:
+    case PSEUDOELEMENT_SYM:
+      pseudo(ns);
+      break;
+    default:
+      jj_la1[100] = jj_gen;
+      jj_consume_token(-1);
+      throw new ParseException();
+    }
+    label_71:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[101] = jj_gen;
+        break label_71;
+      }
+      jj_consume_token(S);
+    }
+    jj_consume_token(LPARAN);
+            s.setPseudoFun("not", ns.toString());
+  }
+
+/**
+ * @exception ParseException exception during the parse
+ */
+  final public void pseudo(CssSelectors s) throws ParseException {
+ Token n;
+Token language = null;
+CssExpression param = null;
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case PSEUDOELEMENT_SYM:
+      jj_consume_token(PSEUDOELEMENT_SYM);
+      n = jj_consume_token(IDENT);
+            try {
+                if (ac.getCssVersion().equals("css3")) {
+                    s.addPseudoElement(convertIdent(n.image).toLowerCase());
+                } else {
+                    {if (true) throw new InvalidParamException("pseudo-element",
+                                                    "::" + convertIdent(n.image).toLowerCase() ,
+                                                    ac.getCssVersion() ,ac);}
+                }
+            } catch(InvalidParamException e) {
+                //	removeThisRule();
+                //		ac.getFrame().addError(new CssError(e));
+                validSelector = false;
+                {if (true) throw new ParseException(e.getMessage());}
+            }
+      break;
+    case COLON:
+      jj_consume_token(COLON);
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case IDENT:
+        n = jj_consume_token(IDENT);
+                try {
+                    s.addPseudoClass(convertIdent(n.image).toLowerCase());
+                } catch(InvalidParamException e) {
+                    removeThisRule();
+                    ac.getFrame().addError(new CssError(e));
+                }
+        break;
+      case FUNCTIONLANG:
+      case FUNCTION:
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case FUNCTIONLANG:
+          n = jj_consume_token(FUNCTIONLANG);
+          label_72:
+          while (true) {
+            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+            case S:
+              ;
+              break;
+            default:
+              jj_la1[102] = jj_gen;
+              break label_72;
+            }
+            jj_consume_token(S);
+          }
+          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+          case NUMBER:
+            language = jj_consume_token(NUMBER);
+            break;
+          case IDENT:
+            language = jj_consume_token(IDENT);
+            break;
+          case STRING:
+            language = jj_consume_token(STRING);
+            break;
+          default:
+            jj_la1[103] = jj_gen;
+            jj_consume_token(-1);
+            throw new ParseException();
+          }
+          label_73:
+          while (true) {
+            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+            case S:
+              ;
+              break;
+            default:
+              jj_la1[104] = jj_gen;
+              break label_73;
+            }
+            jj_consume_token(S);
+          }
+                try {
+                    s.setPseudoFun(convertStringIndex(n.image, 0,
+                                                      n.image.length() -1, false).toLowerCase(),
+                                   convertIdent(language.image));
+                } catch(InvalidParamException e) {
+                        removeThisRule();
+                        ac.getFrame().addError(new CssError(e));
+                }
+          break;
+        case FUNCTION:
+          n = jj_consume_token(FUNCTION);
+          label_74:
+          while (true) {
+            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+            case S:
+              ;
+              break;
+            default:
+              jj_la1[105] = jj_gen;
+              break label_74;
+            }
+            jj_consume_token(S);
+          }
+          param = expression();
+                try {
+                    s.setPseudoFun(convertStringIndex(n.image, 0,
+                                                      n.image.length() -1,
+                                                      false).toLowerCase(),
+                                   param.toString());
+                } catch(InvalidParamException e) {
+                    removeThisRule();
+                    ac.getFrame().addError(new CssError(e));
+                }
+          break;
+        default:
+          jj_la1[106] = jj_gen;
+          jj_consume_token(-1);
+          throw new ParseException();
+        }
+        jj_consume_token(LPARAN);
+        break;
+      default:
+        jj_la1[107] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+      break;
+    default:
+      jj_la1[108] = jj_gen;
+      jj_consume_token(-1);
+      throw new ParseException();
+    }
+  }
+
+/**
+ * @exception ParseException exception during the parse
+ */
+  final public void hash(CssSelectors s) throws ParseException {
+ Token n;
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case HASHIDENT:
+      n = jj_consume_token(HASHIDENT);
+      n.image = n.image.substring(1);
+      if(Character.isDigit(n.image.charAt(0))) {
+          String profile = ac.getProfile();
+          if(profile == null || profile.equals("") || profile.equals("none")) {
+              profile = ac.getCssVersion();
+          }
+
+          if(!profile.equals("css1")) {
+              // the id with the first digit escaped
+              String cl = "\\" + Integer.toString(n.image.charAt(0), 16);
+              cl += n.image.substring(1);
+
+              addError(new ParseException(ac.getMsg().getString(
+                "parser.old_id")),
+                "To make \"." + n.image + "\" a valid id, CSS2" +
+                " requires the first digit to be escaped " +
+                "(\"#" + cl + "\")");
+              // for css > 1, we add the rule to have a context, 
+              // and we then remove it
+              s.addId(new IdSelector(n.image));
+              removeThisRule();
+          }
+          else {
+              CssLength length = new CssLength();
+              boolean isLength = false;
+              try {
+                  length.set(n.image, ac);
+                  isLength = true;
+              }
+              catch(Exception e) {
+                  isLength = false;
+              }
+              if(isLength) {
+                  addError(new ParseException(ac.getMsg().getString(
+                  "parser.id_dim")), n.image);
+                  // we add the rule to have a context, and then we remove it
+                  s.addId(new IdSelector(n.image));
+                  removeThisRule();
+              }
+              else {
+                  try {
+                      s.addId(new IdSelector(n.image));
+                      ac.getFrame().addWarning("old_id");
+                  } catch (InvalidParamException e) {
+                      ac.getFrame().addError(new CssError(e));
+                      removeThisRule();
+                  }
+              }
+          }
+      }
+      else {
+          try {
+              s.addId(new IdSelector(n.image));
+          } catch (InvalidParamException e) {
+              ac.getFrame().addError(new CssError(e));
+              removeThisRule();
+          }
+      }
+      break;
+    case HASH:
+      n = jj_consume_token(HASH);
+      {if (true) throw new ParseException(ac.getMsg().getString("parser.invalid_id_selector"));}
+      break;
+    default:
+      jj_la1[109] = jj_gen;
+      jj_consume_token(-1);
+      throw new ParseException();
+    }
+  }
+
+/**
+ * @exception ParseException exception during the parse
+ */
+  final public CssProperty mediadeclaration() throws ParseException {
+  String string_property;
+  CssExpression values = null;
+  boolean important = false;
+  setMediaDeclaration("on");
+    try {
+      string_property = property();
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case COLON:
+        jj_consume_token(COLON);
+        label_75:
+        while (true) {
+          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+          case S:
+            ;
+            break;
+          default:
+            jj_la1[110] = jj_gen;
+            break label_75;
+          }
+          jj_consume_token(S);
+        }
+        values = expr();
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case IMPORTANT_SYM:
+          important = prio();
+          break;
+        default:
+          jj_la1[111] = jj_gen;
+          ;
+        }
+        break;
+      default:
+        jj_la1[112] = jj_gen;
+        ;
+      }
+        try {
+
+            setImportant(important);
+
+            if (incompatible_error) {
+                {if (true) throw new InvalidParamException("notforcss1", "inherit", ac);}
+            }
+
+            CssProperty p = handleDeclaration(string_property.toLowerCase(),
+                                                  values, important);
+            {if (true) return p;}
+
+        } catch (InvalidParamException e) {
+                incompatible_error = false;
+                if (null != values) {
+                        values.starts();
+                }
+                addError(e, (CssExpression) values);
+        }
+        {if (true) return null;}
+    } catch (NumberFormatException e) {
+     skipAfterExpression(e);
+     {if (true) return null;}
+    } catch (ParseException e) {
+     skipAfterExpression(e);
+     {if (true) return null;}
+    } finally {
+     setMediaDeclaration("off");
+    }
+    throw new Error("Missing return statement in function");
+  }
+
+/**
+ * @exception ParseException exception during the parse
+ */
+  final public CssProperty declaration() throws ParseException {
+  String string_property;
+  CssExpression values;
+  boolean important = false;
+    try {
+      string_property = property();
+      jj_consume_token(COLON);
+      label_76:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[113] = jj_gen;
+          break label_76;
+        }
+        jj_consume_token(S);
+      }
+      values = expr();
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case IMPORTANT_SYM:
+        important = prio();
+        break;
+      default:
+        jj_la1[114] = jj_gen;
+        ;
+      }
+        try {
+
+            setImportant(important);
+
+            if (incompatible_error) {
+                {if (true) throw new InvalidParamException("notforcss1", "inherit", ac);}
+            }
+
+            if (values.getCount() != 0) {
+                CssProperty p = handleDeclaration(string_property.toLowerCase(),
+                                                  values, important);
+                // Did the property recognize all values in the expression ?
+
+                if (!values.end() && ac.getMedium() == null) {
+                        addError(new InvalidParamException("unrecognize", "", ac),
+                             values);
+                } else {
+                    // ok, return the new property
+                    {if (true) return p;}
+                }
+            }
+        } catch (InvalidParamException e) {
+                incompatible_error = false;
+                values.starts();
+                addError(e, (CssExpression) values);
+        }
+        {if (true) return null;}
+    } catch (NumberFormatException e) {
+     skipAfterExpression(e);
+     {if (true) return null;}
+    } catch (ParseException e) {
+     skipAfterExpression(e);
+     {if (true) return null;}
+    } catch (NullPointerException e) {
+        // NullPointerException happen if in handling a property
+        // something bad happen (like setting values on sub properties
+        // that had not been initialized (for an unknown reason yet).
+     skipAfterExpression(e);
+     {if (true) return null;}
+    }
+    throw new Error("Missing return statement in function");
+  }
+
+/**
+ * @exception ParseException exception during the parse
+ */
+  final public boolean prio() throws ParseException {
+    jj_consume_token(IMPORTANT_SYM);
+    label_77:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[115] = jj_gen;
+        break label_77;
+      }
+      jj_consume_token(S);
+    }
+                             {if (true) return true;}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public CssExpression expression() throws ParseException {
+    CssExpression exp = new CssExpression();
+    char operator = ' ';
+    Token n = null;
+    label_78:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case PLUS:
+        jj_consume_token(PLUS);
+                 operator = '+' ;
+        break;
+      case MINUS:
+        jj_consume_token(MINUS);
+                    operator = '-';
+        break;
+      case NUMBER:
+        n = jj_consume_token(NUMBER);
+                       setValue(new CssNumber(), exp, operator, n, NUMBER);
+        break;
+      case DIMEN:
+        n = jj_consume_token(DIMEN);
+                      setValue(new CssIdent(), exp, operator, n, IDENT);
+        break;
+      case STRING:
+        n = jj_consume_token(STRING);
+                       setValue(new CssString(), exp, operator, n, STRING);
+        break;
+      case IDENT:
+        n = jj_consume_token(IDENT);
+                      setValue(new CssIdent(), exp, operator, n, IDENT);
+        break;
+      default:
+        jj_la1[116] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+      label_79:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[117] = jj_gen;
+          break label_79;
+        }
+        jj_consume_token(S);
+      }
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case PLUS:
+      case STRING:
+      case IDENT:
+      case MINUS:
+      case DIMEN:
+      case NUMBER:
+        ;
+        break;
+      default:
+        jj_la1[118] = jj_gen;
+        break label_78;
+      }
+    }
+     {if (true) return exp;}
+    throw new Error("Missing return statement in function");
+  }
+
+/**
+ * @exception ParseException exception during the parse
+ */
+  final public CssExpression expr() throws ParseException {
+  CssExpression values = new CssExpression();
+    term(values);
+    label_80:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case PLUS:
+      case COMMA:
+      case STRING:
+      case IDENT:
+      case HASHIDENT:
+      case HASH:
+      case MINUS:
+      case DIV:
+      case URL:
+      case LENGTH:
+      case EMS:
+      case EXS:
+      case ANGLE:
+      case TIME:
+      case FREQ:
+      case RESOLUTION:
+      case DATE:
+      case DIMEN:
+      case PERCENTAGE:
+      case NUMBER:
+      case UNICODERANGE:
+      case FUNCTION:
+        ;
+        break;
+      default:
+        jj_la1[119] = jj_gen;
+        break label_80;
+      }
+      operator(values);
+      term(values);
+    }
+    {if (true) return values;}
+    throw new Error("Missing return statement in function");
+  }
+
+/**
+ * @exception ParseException exception during the parse
+ */
+  final public void term(CssExpression exp) throws ParseException {
+  Token n;
+  char operator = ' ';
+  CssValue func;
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case PLUS:
+    case MINUS:
+    case LENGTH:
+    case EMS:
+    case EXS:
+    case ANGLE:
+    case TIME:
+    case FREQ:
+    case RESOLUTION:
+    case DATE:
+    case DIMEN:
+    case PERCENTAGE:
+    case NUMBER:
+    case FUNCTION:
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case PLUS:
+      case MINUS:
+        operator = unaryOperator();
+        break;
+      default:
+        jj_la1[120] = jj_gen;
+        ;
+      }
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case NUMBER:
+        n = jj_consume_token(NUMBER);
+                   setValue(new CssNumber(), exp, operator, n, NUMBER);
+        break;
+      case PERCENTAGE:
+        n = jj_consume_token(PERCENTAGE);
+                       setValue(new CssPercentage(), exp, operator, n,
+                                PERCENTAGE);
+        break;
+      case LENGTH:
+        n = jj_consume_token(LENGTH);
+                   setValue(new CssLength(), exp, operator, n, LENGTH);
+        break;
+      case EMS:
+        n = jj_consume_token(EMS);
+                setValue(new CssLength(), exp, operator, n, EMS);
+        break;
+      case EXS:
+        n = jj_consume_token(EXS);
+                setValue(new CssLength(), exp, operator, n, EXS);
+        break;
+      case ANGLE:
+        n = jj_consume_token(ANGLE);
+                  setValue(new CssAngle(), exp, operator, n, ANGLE);
+        break;
+      case TIME:
+        n = jj_consume_token(TIME);
+                 setValue(new CssTime(), exp, operator, n, TIME);
+        break;
+      case FREQ:
+        n = jj_consume_token(FREQ);
+                 setValue(new CssFrequency(), exp, operator, n, FREQ);
+        break;
+      case RESOLUTION:
+        n = jj_consume_token(RESOLUTION);
+                       setValue(new CssResolution(), exp, operator, n, RESOLUTION);
+        break;
+      case DATE:
+        n = jj_consume_token(DATE);
+                 setValue(new CssDate(), exp, operator, n, DATE);
+        break;
+      case DIMEN:
+        n = jj_consume_token(DIMEN);
+          addError(new ParseException(ac.getMsg().getString("parser.unknown-dimension")), n.image);
+        break;
+      case FUNCTION:
+        func = function();
+                        setValue(func, exp, operator, null, FUNCTION);
+        break;
+      default:
+        jj_la1[121] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+      label_81:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[122] = jj_gen;
+          break label_81;
+        }
+        jj_consume_token(S);
+      }
+      break;
+    case STRING:
+    case IDENT:
+    case HASHIDENT:
+    case HASH:
+    case URL:
+    case UNICODERANGE:
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case STRING:
+        n = jj_consume_token(STRING);
+                    setValue(new CssString(), exp, operator, n, STRING);
+        break;
+      case IDENT:
+        n = jj_consume_token(IDENT);
+        /*
+	 * Common error :
+	 * H1 {
+	 *   color : black
+	 *   background : white
+	 * }
+	 */
+        Token t = getToken(1);
+        Token semicolon = new Token();
+        semicolon.kind = SEMICOLON;
+        semicolon.image = ";";
+        if (t.kind == COLON) {
+            /* @@SEEME. (generate a warning?) */
+            /* @@SEEME if expression is a single ident, 
+	       generate an error ? */
+            addError(new ParseException(ac.getMsg().getString("parser.semi-colon")),
+                     (CssExpression) null);
+            rejectToken(semicolon);
+        } else {
+            setValue(new CssIdent(), exp, operator, n, IDENT);
+        }
+        break;
+      case HASHIDENT:
+      case HASH:
+        hexcolor(exp);
+        break;
+      case URL:
+        n = jj_consume_token(URL);
+        CssURL _u = new CssURL();
+        _u.set(n.image, ac, url);
+        exp.addValue(_u);
+        break;
+      case UNICODERANGE:
+        n = jj_consume_token(UNICODERANGE);
+                         setValue(new CssUnicodeRange(), exp, operator, n,
+                                UNICODERANGE);
+        break;
+      default:
+        jj_la1[123] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+      label_82:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case S:
+          ;
+          break;
+        default:
+          jj_la1[124] = jj_gen;
+          break label_82;
+        }
+        jj_consume_token(S);
+      }
+      break;
+    default:
+      jj_la1[125] = jj_gen;
+      jj_consume_token(-1);
+      throw new ParseException();
+    }
+  }
+
+/**
+ * @exception ParseException exception during the parse
+ */
+  final public CssValue function() throws ParseException {
+ Token n;
+ CssExpression exp;
+ org.w3c.css.values.CssColor color = new org.w3c.css.values.CssColor();
+ org.w3c.css.values.ATSCColor colorATSC = new org.w3c.css.values.ATSCColor();
+    n = jj_consume_token(FUNCTION);
+    label_83:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case S:
+        ;
+        break;
+      default:
+        jj_la1[126] = jj_gen;
+        break label_83;
+      }
+      jj_consume_token(S);
+    }
+    exp = expr();
+    jj_consume_token(LPARAN);
+        String funcname = n.image.toLowerCase();
+        if (funcname.equals("rgb(")) {
+            if (!getAtRule().toString().equals("@media atsc-tv")) {
+               color.setRGBColor(exp, ac);
+               {if (true) return color;}
+            } else {
+               colorATSC.setRGBColor(exp, ac);
+               {if (true) return colorATSC;}
+            }
+        } else if (n.image.toLowerCase().equals("atsc-rgba(")) {
+            if (getAtRule().toString().equals("@media atsc-tv")) {
+                colorATSC.setATSCrgba(exp, ac);
+                {if (true) return colorATSC;}
+            } else {
+                addError(new InvalidParamException("onlyATSC", "", ac),
+                                                 getAtRule().toString());
+                {if (true) return null;}
+            }
+        } else {
+            CssFunction f = new CssFunction();
+            f.set(n.image.substring(0, n.image.length() - 1),
+                  exp);
+            {if (true) return f;}
+        }
+    throw new Error("Missing return statement in function");
+  }
+
+/**
+ * @exception ParseException exception during the parse
+ */
+  final public void hexcolor(CssExpression exp) throws ParseException {
+ Token n;
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case HASHIDENT:
+      n = jj_consume_token(HASHIDENT);
+      break;
+    case HASH:
+      n = jj_consume_token(HASH);
+      break;
+    default:
+      jj_la1[127] = jj_gen;
+      jj_consume_token(-1);
+      throw new ParseException();
+    }
+     n.image = Util.strip(n.image);
+     setValue(new org.w3c.css.values.CssColor(), exp, ' ', n, HASH);
+  }
+
+  String skipStatement() throws ParseException {
+    StringBuilder s = new StringBuilder();
+    Token tok = getToken(0);
+    boolean first = true;
+
+    if (tok.image != null) {
+        s.append(tok.image);
+    }
+    /* FIXME here, two option, we skip during an error, or outside
+       an error, currently both can fail with a TokenMgrError, should
+       we catch all, or only when filling message for errors? 
+       
+       -> taking the "always skip" approach.
+    */
+    while (true) {
+        try {
+            tok = getToken(1);
+            if (tok.kind == EOF) {
+                if (first) {
+                    return null;
+                } else {
+                    break;
+                }
+            }
+            s.append(tok.image);
+            if (tok.kind == LBRACE) {
+                getNextToken();
+                s.append(skip_to_matching_brace());
+                getNextToken();
+                tok = getToken(1);
+                break;
+            } else if ((tok.kind == RBRACE) || (tok.kind == SEMICOLON)) {
+                getNextToken();
+                tok = getToken(1);
+                break;
+            }
+            getNextToken();
+        } catch (TokenMgrError tokenerror) {
+            // read one char at a time, and loop
+            try {
+                s.append(jj_input_stream.readChar());
+                continue;
+            } catch (java.io.IOException ioex) {
+                return s.toString().trim();
+            }
+        }
+        first = false;
+    }
+
+    // skip white space
+    while (tok.kind == S) {
+        getNextToken();
+        tok = getToken(1);
+    }
+    String statement = s.toString().trim();
+    return statement;
+  }
+
+  String skip_to_matching_brace() throws ParseException {
+    StringBuilder s = new StringBuilder();
+    Token tok;
+    int nesting = 1;
+    /* FIXME
+       same as above */
+    while (true) {
+        tok = getToken(1);
+        if (tok.kind == EOF) {
+            break;
+        }
+        s.append(tok.image);
+        if (tok.kind == LBRACE) {
+            nesting++;
+        } else if (tok.kind == RBRACE) {
+            nesting--;
+            if (nesting == 0) {
+                break;
+            }
+        }
+        getNextToken();
+    }
+    return s.toString();
+  }
+
+  void rejectToken(Token t) throws ParseException {
+    Token fakeToken = new Token();
+    t.next = token;
+    fakeToken.next = t;
+    token = fakeToken;
+  }
+
+  void skipAfterExpression(Exception e) throws ParseException {
+    StringBuilder s = new StringBuilder();
+    s.append(getToken(0).image);
+    while (true) {
+        try {
+            Token t = getToken(1);
+            if (t.kind == LBRACE) {
+                s.append(t.image);
+                getNextToken();
+                s.append(skip_to_matching_brace());
+                getNextToken();
+                t = getToken(1);
+                continue;
+            }
+            if ((t.kind == SEMICOLON) || (t.kind == RBRACE)
+                                      || (t.kind == EOF)) {
+                break;
+            }
+            s.append(t.image);
+            getNextToken();
+            t = getToken(1);
+        } catch (TokenMgrError tmerr) {
+            try {
+                s.append(jj_input_stream.readChar());
+                continue;
+            } catch (java.io.IOException ioex) {
+                ioex.printStackTrace();
+                break;
+            }
+        }
+    }
+    String statement = s.toString().trim();
+    addError(e, s.toString());
+  }
+
+  String convertStringIndex(String s, int start, int len, boolean escapeFirst) throws ParseException {
+    int index = start;
+    int t;
+    int maxCount = 0;
+    if ((start == 0) && (len == s.length()) && (s.indexOf('\\') == -1)) {
+        return s;
+    }
+    StringBuilder buf = new StringBuilder(len);
+
+    while (index < len) {
+        char c = s.charAt(index);
+        if (c == '\\') {
+            if (++index < len) {
+                c = s.charAt(index);
+                switch (c) {
+                case '0': case '1': case '2': case '3': case '4':
+                case '5': case '6': case '7': case '8': case '9':
+                case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
+                case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
+                    int numValue = Character.digit(c, 16);
+                    int count = 1;
+                    if (maxCount == 0) {
+                        maxCount = (ac.getCssVersion().equals("css1") ?
+                                    4 : 6);
+                    }
+                    while (index + 1 < len) {
+                        c = s.charAt(index+1);
+                        t = Character.digit(c, 16);
+                        if (t != -1 && count++ < maxCount) {
+                            numValue = (numValue<<4) | t;
+                            index++;
+                        } else {
+                            if (c == ' ' || c == '\t' ||
+                                c == '\n' || c == '\f' ) {
+                                // skip the latest white space
+                                index++;
+                            } else if ( c == '\r' ) {
+                                index++;
+                                // special case for \r\n
+                                if (index+1 < len) {
+                                    if (s.charAt(index + 1) == '\n') {
+                                        index++;
+                                    }
+                                }
+                            }
+                            break;
+                        }
+                    }
+                    if (!escapeFirst && numValue < 255 && numValue>31) {
+                        if (! ( (numValue>96 && numValue<123) // [a-z]
+                                || (numValue>64 && numValue<91) // [A-Z]
+                                || (numValue>47 && numValue<58) // [0-9]
+                                || (numValue == 95) // _
+                                || (numValue == 45) // -
+                                )
+                            ) {
+                            buf.append('\\');
+                        }
+                        buf.append((char) numValue);
+                        break;
+                    }
+                    char b[] = new char[maxCount];
+                    t = maxCount;
+                    while (t > 0) {
+                        b[--t] = hexdigits[numValue & 0xF];
+                        numValue >>>= 4;
+                    }
+                    buf.append('\\').append(b);
+                    break;
+                case '\n':
+                case '\f':
+                    break;
+                case '\r':
+                    if (index + 1 < len) {
+                        if (s.charAt(index + 1) == '\n') {
+                            index ++;
+                        }
+                    }
+                    break;
+                case '-' : case '_' : case 'g' : case 'G' :
+                case 'h' : case 'H' : case 'i' : case 'I' :
+                case 'j' : case 'J' : case 'k' : case 'K' :
+                case 'l' : case 'L' : case 'm' : case 'M' :
+                case 'n' : case 'N' : case 'o' : case 'O' :
+                case 'p' : case 'P' : case 'q' : case 'Q' :
+                case 'r' : case 'R' : case 's' : case 'S' :
+                case 't' : case 'T' : case 'u' : case 'U' :
+                case 'v' : case 'V' : case 'w' : case 'W' :
+                case 'x' : case 'X' : case 'y' : case 'Y' :
+                case 'z' : case 'Z' :
+                    buf.append(c);
+                    break;
+                default:
+                    buf.append('\\').append(c);
+                }
+            } else {
+                throw new ParseException("invalid string");
+            }
+        } else {
+            buf.append(c);
+        }
+        escapeFirst = false;
+        index++;
+    }
+    return buf.toString();
+  }
+
+  String convertIdent(String s) throws ParseException {
+    return convertStringIndex(s, 0, s.length(), false);
+  }
+
+  String convertClassIdent(String s) throws ParseException {
+    return convertStringIndex(s, 0, s.length(), true);
+  }
+
+  String convertString(String s) throws ParseException {
+    return convertStringIndex(s, 0, s.length(), false);
+  }
+
+  String hexEscapeFirst(String s) throws ParseException {
+    StringBuilder sb = new StringBuilder();
+    sb.append('\\').append(Integer.toString(s.charAt(0), 16));
+    char c = s.charAt(1);
+    if (((c >= '0') && (c <= '9')) ||
+        ((c >= 'A') && (c <= 'F')) ||
+        ((c >= 'a') && (c <= 'f'))) {
+        sb.append(' ');
+    }
+    sb.append(s.substring(1));
+    return sb.toString();
+  }
+
+  final private boolean jj_2_1(int xla) {
+    jj_la = xla; jj_lastpos = jj_scanpos = token;
+    try { return !jj_3_1(); }
+    catch(LookaheadSuccess ls) { return true; }
+    finally { jj_save(0, xla); }
+  }
+
+  final private boolean jj_3_1() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_84()) jj_scanpos = xsp;
+    if (jj_scan_token(98)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_84() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_scan_token(34)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(47)) return true;
+    }
+    return false;
+  }
+
+  public CssParserTokenManager token_source;
+  SimpleCharStream jj_input_stream;
+  public Token token, jj_nt;
+  private int jj_ntk;
+  private Token jj_scanpos, jj_lastpos;
+  private int jj_la;
+  public boolean lookingAhead = false;
+  private boolean jj_semLA;
+  private int jj_gen;
+  final private int[] jj_la1 = new int[128];
+  static private int[] jj_la1_0;
+  static private int[] jj_la1_1;
+  static private int[] jj_la1_2;
+  static private int[] jj_la1_3;
+  static {
+      jj_la1_0();
+      jj_la1_1();
+      jj_la1_2();
+      jj_la1_3();
+   }
+   private static void jj_la1_0() {
+      jj_la1_0 = new int[] {0x0,0x0,0x0,0xe00000,0xe00000,0x0,0x0,0x200000,0x200000,0x0,0xc00000,0xc00000,0x200000,0x200000,0x200000,0x0,0x0,0x200000,0x200000,0x200000,0x0,0x200000,0x20000000,0x200000,0x0,0x200000,0x200000,0x200000,0x0,0x20000000,0x200000,0x80000000,0x200000,0x200000,0x200000,0x200000,0x0,0x200000,0x200000,0x200000,0x200000,0x0,0x0,0x200000,0x200000,0x0,0x0,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x200000,0x20000000,0x200000,0x20000000,0x58000000,0x200000,0x200000,0x58200000,0x8000000,0x200000,0x20000000,0x200000,0x200000,0x200000,0x0,0x0,0x200000,0x0,0x58200000,0x200000,0x200000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x200000,0x200000,0x3000000,0x200000,0x0,0x200000,0x3000000,0x200000,0x0,0x200000,0x200000,0x0,0x200000,0x200000,0x0,0x0,0x0,0x0,0x200000,0x0,0x0,0x200000,0x0,0x200000,0x8000000,0x200000,0x8000000,0x28000000,0x8000000,0x0,0x200000,0x0,0x200000,0x8000000,0x200000,0x0,};
+   }
+   private static void jj_la1_1() {
+      jj_la1_1 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x5fc8a01c,0x0,0x0,0x0,0x0,0x0,0x4,0x200001,0x0,0x0,0x0,0x200001,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x100000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x5fc8a01c,0x0,0x0,0x0,0x0,0x4,0x80000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1000,0x0,0x1000,0x0,0x0,0x0,0x0,0x400,0x0,0x0,0x0,0x0,0x0,0x4,0x800,0x0,0x4,0x0,0x0,0x0,0x5fc82018,0x5fc82018,0x5fc82018,0x5fc82018,0x5fc8a01c,0x5fc00000,0x5fc00000,0x8004,0x8004,0x8004,0x0,0x0,0x3c0,0x0,0x5,0x0,0x3c0,0x0,0x5fc8a01c,0x0,0x0,0x5,0x0,0x0,0x0,0x4,0x80000,0x18,0x0,0x0,0x80000,0x0,0x0,0x0,0x40000405,0x0,0x40000405,0xffe0141d,0x400,0xffc00000,0x0,0x20001d,0x0,0xffe0041d,0x0,0x18,};
+   }
+   private static void jj_la1_2() {
+      jj_la1_2 = new int[] {0x0,0x0,0x8,0x0,0x0,0x10,0x20,0x0,0x0,0x500107c4,0x20000,0x20000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x50000004,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7800,0x7800,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x50000004,0x50000004,0x50000004,0x50000004,0x50000004,0x10000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10000004,0x0,0x0,0x1,0x0,0x0,0xa0000000,0xa0000000,0x4,0x0,0x0,0x2,0x0,0x0,0x2,0x0,0x1,0x0,0x1,0x88000001,0x0,0x80000001,0x0,0x8000000,0x0,0x88000001,0x0,0x0,};
+   }
+   private static void jj_la1_3() {
+      jj_la1_3 = new int[] {0x3,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
+   }
+  final private JJCalls[] jj_2_rtns = new JJCalls[1];
+  private boolean jj_rescan = false;
+  private int jj_gc = 0;
+
+  public CssParser(java.io.InputStream stream) {
+     this(stream, null);
+  }
+  public CssParser(java.io.InputStream stream, String encoding) {
+    try { jj_input_stream = new SimpleCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
+    token_source = new CssParserTokenManager(jj_input_stream);
+    token = new Token();
+    jj_ntk = -1;
+    jj_gen = 0;
+    for (int i = 0; i < 128; i++) jj_la1[i] = -1;
+    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
+  }
+
+  public void ReInit(java.io.InputStream stream) {
+     ReInit(stream, null);
+  }
+  public void ReInit(java.io.InputStream stream, String encoding) {
+    try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
+    token_source.ReInit(jj_input_stream);
+    token = new Token();
+    jj_ntk = -1;
+    jj_gen = 0;
+    for (int i = 0; i < 128; i++) jj_la1[i] = -1;
+    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
+  }
+
+  public CssParser(java.io.Reader stream) {
+    jj_input_stream = new SimpleCharStream(stream, 1, 1);
+    token_source = new CssParserTokenManager(jj_input_stream);
+    token = new Token();
+    jj_ntk = -1;
+    jj_gen = 0;
+    for (int i = 0; i < 128; i++) jj_la1[i] = -1;
+    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
+  }
+
+  public void ReInit(java.io.Reader stream) {
+    jj_input_stream.ReInit(stream, 1, 1);
+    token_source.ReInit(jj_input_stream);
+    token = new Token();
+    jj_ntk = -1;
+    jj_gen = 0;
+    for (int i = 0; i < 128; i++) jj_la1[i] = -1;
+    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
+  }
+
+  public CssParser(CssParserTokenManager tm) {
+    token_source = tm;
+    token = new Token();
+    jj_ntk = -1;
+    jj_gen = 0;
+    for (int i = 0; i < 128; i++) jj_la1[i] = -1;
+    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
+  }
+
+  public void ReInit(CssParserTokenManager tm) {
+    token_source = tm;
+    token = new Token();
+    jj_ntk = -1;
+    jj_gen = 0;
+    for (int i = 0; i < 128; i++) jj_la1[i] = -1;
+    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
+  }
+
+  final private Token jj_consume_token(int kind) throws ParseException {
+    Token oldToken;
+    if ((oldToken = token).next != null) token = token.next;
+    else token = token.next = token_source.getNextToken();
+    jj_ntk = -1;
+    if (token.kind == kind) {
+      jj_gen++;
+      if (++jj_gc > 100) {
+        jj_gc = 0;
+        for (int i = 0; i < jj_2_rtns.length; i++) {
+          JJCalls c = jj_2_rtns[i];
+          while (c != null) {
+            if (c.gen < jj_gen) c.first = null;
+            c = c.next;
+          }
+        }
+      }
+      return token;
+    }
+    token = oldToken;
+    jj_kind = kind;
+    throw generateParseException();
+  }
+
+  static private final class LookaheadSuccess extends java.lang.Error { }
+  final private LookaheadSuccess jj_ls = new LookaheadSuccess();
+  final private boolean jj_scan_token(int kind) {
+    if (jj_scanpos == jj_lastpos) {
+      jj_la--;
+      if (jj_scanpos.next == null) {
+        jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
+      } else {
+        jj_lastpos = jj_scanpos = jj_scanpos.next;
+      }
+    } else {
+      jj_scanpos = jj_scanpos.next;
+    }
+    if (jj_rescan) {
+      int i = 0; Token tok = token;
+      while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }
+      if (tok != null) jj_add_error_token(kind, i);
+    }
+    if (jj_scanpos.kind != kind) return true;
+    if (jj_la == 0 && jj_scanpos == jj_lastpos) throw jj_ls;
+    return false;
+  }
+
+  final public Token getNextToken() {
+    if (token.next != null) token = token.next;
+    else token = token.next = token_source.getNextToken();
+    jj_ntk = -1;
+    jj_gen++;
+    return token;
+  }
+
+  final public Token getToken(int index) {
+    Token t = lookingAhead ? jj_scanpos : token;
+    for (int i = 0; i < index; i++) {
+      if (t.next != null) t = t.next;
+      else t = t.next = token_source.getNextToken();
+    }
+    return t;
+  }
+
+  final private int jj_ntk() {
+    if ((jj_nt=token.next) == null)
+      return (jj_ntk = (token.next=token_source.getNextToken()).kind);
+    else
+      return (jj_ntk = jj_nt.kind);
+  }
+
+  private java.util.Vector jj_expentries = new java.util.Vector();
+  private int[] jj_expentry;
+  private int jj_kind = -1;
+  private int[] jj_lasttokens = new int[100];
+  private int jj_endpos;
+
+  private void jj_add_error_token(int kind, int pos) {
+    if (pos >= 100) return;
+    if (pos == jj_endpos + 1) {
+      jj_lasttokens[jj_endpos++] = kind;
+    } else if (jj_endpos != 0) {
+      jj_expentry = new int[jj_endpos];
+      for (int i = 0; i < jj_endpos; i++) {
+        jj_expentry[i] = jj_lasttokens[i];
+      }
+      boolean exists = false;
+      for (java.util.Enumeration e = jj_expentries.elements(); e.hasMoreElements();) {
+        int[] oldentry = (int[])(e.nextElement());
+        if (oldentry.length == jj_expentry.length) {
+          exists = true;
+          for (int i = 0; i < jj_expentry.length; i++) {
+            if (oldentry[i] != jj_expentry[i]) {
+              exists = false;
+              break;
+            }
+          }
+          if (exists) break;
+        }
+      }
+      if (!exists) jj_expentries.addElement(jj_expentry);
+      if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind;
+    }
+  }
+
+  public ParseException generateParseException() {
+    jj_expentries.removeAllElements();
+    boolean[] la1tokens = new boolean[99];
+    for (int i = 0; i < 99; i++) {
+      la1tokens[i] = false;
+    }
+    if (jj_kind >= 0) {
+      la1tokens[jj_kind] = true;
+      jj_kind = -1;
+    }
+    for (int i = 0; i < 128; i++) {
+      if (jj_la1[i] == jj_gen) {
+        for (int j = 0; j < 32; j++) {
+          if ((jj_la1_0[i] & (1<<j)) != 0) {
+            la1tokens[j] = true;
+          }
+          if ((jj_la1_1[i] & (1<<j)) != 0) {
+            la1tokens[32+j] = true;
+          }
+          if ((jj_la1_2[i] & (1<<j)) != 0) {
+            la1tokens[64+j] = true;
+          }
+          if ((jj_la1_3[i] & (1<<j)) != 0) {
+            la1tokens[96+j] = true;
+          }
+        }
+      }
+    }
+    for (int i = 0; i < 99; i++) {
+      if (la1tokens[i]) {
+        jj_expentry = new int[1];
+        jj_expentry[0] = i;
+        jj_expentries.addElement(jj_expentry);
+      }
+    }
+    jj_endpos = 0;
+    jj_rescan_token();
+    jj_add_error_token(0, 0);
+    int[][] exptokseq = new int[jj_expentries.size()][];
+    for (int i = 0; i < jj_expentries.size(); i++) {
+      exptokseq[i] = (int[])jj_expentries.elementAt(i);
+    }
+    return new ParseException(token, exptokseq, tokenImage);
+  }
+
+  final public void enable_tracing() {
+  }
+
+  final public void disable_tracing() {
+  }
+
+  final private void jj_rescan_token() {
+    jj_rescan = true;
+    for (int i = 0; i < 1; i++) {
+    try {
+      JJCalls p = jj_2_rtns[i];
+      do {
+        if (p.gen > jj_gen) {
+          jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
+          switch (i) {
+            case 0: jj_3_1(); break;
+          }
+        }
+        p = p.next;
+      } while (p != null);
+      } catch(LookaheadSuccess ls) { }
+    }
+    jj_rescan = false;
+  }
+
+  final private void jj_save(int index, int xla) {
+    JJCalls p = jj_2_rtns[index];
+    while (p.gen > jj_gen) {
+      if (p.next == null) { p = p.next = new JJCalls(); break; }
+      p = p.next;
+    }
+    p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla;
+  }
+
+  static final class JJCalls {
+    int gen;
+    Token first;
+    int arg;
+    JJCalls next;
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/parser/analyzer/CssParser.jj	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,2425 @@
+/* -*-java-extended-*-
+ *
+ * (c) COPYRIGHT MIT and INRIA, 1997.
+ * Please first read the full copyright statement in file COPYRIGHT.html
+ *
+ * $Id: CssParser.jj,v 1.69 2009-10-11 09:19:37 ylafon Exp $
+ *
+ */
+
+options {
+    IGNORE_CASE  = true;
+    STATIC = false;
+    UNICODE_INPUT = true;
+    /*
+          DEBUG_TOKEN_MANAGER = true; 
+	  DEBUG_PARSER = true;      
+    */
+}
+
+PARSER_BEGIN(CssParser)
+
+package org.w3c.css.parser.analyzer;
+
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.UnsupportedEncodingException;
+import java.util.Vector;
+import java.util.Enumeration;
+import java.net.URL;
+
+import org.w3c.css.values.CssValue;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssString;
+import org.w3c.css.values.CssURL;
+import org.w3c.css.values.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssColor;
+import org.w3c.css.values.CssIdent;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssFrequency;
+import org.w3c.css.values.CssTime;
+import org.w3c.css.values.CssDate;
+import org.w3c.css.values.CssAngle;
+import org.w3c.css.values.CssFunction;
+import org.w3c.css.values.CssUnicodeRange;
+import org.w3c.css.values.CssResolution;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.parser.Frame;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.parser.CssError;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssParseException;
+import org.w3c.css.parser.AtRule;
+import org.w3c.css.parser.AtRuleMedia;
+import org.w3c.css.parser.AtRuleFontFace;
+import org.w3c.css.parser.AtRulePage;
+import org.w3c.css.parser.AtRulePreference;
+import org.w3c.css.parser.AtRulePhoneticAlphabet;
+import org.w3c.css.properties.svg.AtRuleColorProfile;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.util.Util;
+import org.w3c.css.util.Messages;
+import org.w3c.css.css.StyleSheetCom;
+
+import org.w3c.css.selectors.AdjacentSiblingSelector;
+import org.w3c.css.selectors.AttributeSelector;
+import org.w3c.css.selectors.ChildSelector;
+import org.w3c.css.selectors.ClassSelector;
+import org.w3c.css.selectors.DescendantSelector;
+import org.w3c.css.selectors.GeneralSiblingSelector;
+import org.w3c.css.selectors.IdSelector;
+import org.w3c.css.selectors.TypeSelector;
+import org.w3c.css.selectors.UniversalSelector;
+import org.w3c.css.selectors.attributes.AttributeAny;
+import org.w3c.css.selectors.attributes.AttributeBegin;
+import org.w3c.css.selectors.attributes.AttributeExact;
+import org.w3c.css.selectors.attributes.AttributeOneOf;
+import org.w3c.css.selectors.attributes.AttributeStart;
+import org.w3c.css.selectors.attributes.AttributeSubstr;
+import org.w3c.css.selectors.attributes.AttributeSuffix;
+
+/**
+ * A CSS3 parser  
+ *
+ * @author Philippe Le Hegaret and Sijtsche Smeman
+ * @version $Revision: 1.69 $
+ */
+public abstract class CssParser {
+
+    private static char hexdigits[] = { '0', '1', '2', '3',
+					'4', '5', '6', '7', 
+					'8', '9', 'a', 'b', 
+					'c', 'd', 'e', 'f' };
+    // the current atRule
+    protected AtRule atRule;
+    protected String mediaDeclaration = "off";
+
+    /**
+     * The URL of the document
+     */  
+    protected URL url;
+    
+    protected ApplContext ac;
+
+    protected boolean incompatible_error;
+    
+    /**
+     * The current context recognized by the parser (for errors).
+     */  
+    protected Vector currentContext;
+    
+    /**
+     * The current property recognized by the parser (for errors).
+     */  
+    protected String currentProperty;
+    
+    /**
+     * <code>true</code> if the parser should recognized Aural properties, 
+     * <code>false</code> otherwise.
+     */  
+    protected boolean mode;
+
+    /**
+     * <code>true</code> if the parser had recognize a rule,
+     * <code>false</code> otherwise.
+     */  
+    protected boolean markRule;
+
+    private boolean reinited = false;
+    private boolean charsetdeclared = false;
+
+    static StringBuilder SPACE = new StringBuilder(" ");
+
+    // to be able to remove a ruleset if the selector is not valid
+    protected boolean validSelector = true;
+
+    /**
+     * The ac for handling errors and warnings.
+     * 
+     * @param ac the new ac for the parser.
+     */  
+    public final void setApplContext(ApplContext ac) {
+	this.ac = ac;
+    }
+
+    /**
+     * Set the attribute atRule
+     *
+     * @param atRule the new value for the attribute
+     */
+    public void setAtRule(AtRule atRule) {
+        this.atRule = atRule;
+    }
+
+    /**
+     * Set the attribute mediaDeclaration
+     *
+     * @param mediaDeclaration indicator if in a media expression list or not
+     */
+    public void setMediaDeclaration(String mediadeclaration) {
+        this.mediaDeclaration = mediadeclaration;
+    }
+
+    /**
+     * Returns the attribute mediaDeclaration
+     *
+     * @return the value of the attribute
+     */
+    public String getMediaDeclaration() {
+    	return mediaDeclaration;
+    }
+
+    /**
+     * Returns the attribute atRule
+     *
+     * @return the value of the attribute
+     */
+    public AtRule getAtRule() {
+        return atRule;
+    }
+
+    /**
+     * Reinitialized the parser.
+     *
+     * @param stream the stream data to parse.
+     * @param ac  the new ac to use for parsing.
+     */
+    public void ReInitWithAc(InputStream stream, ApplContext ac, 
+			     String charset)
+    {
+	InputStream is = /*new  CommentSkipperInputStream(stream);*/stream;
+	if (charset == null) {
+	    charset = "iso-8859-1";
+	}
+	InputStreamReader isr = null;
+	try {
+	    isr = new InputStreamReader(is, charset);
+	} catch (UnsupportedEncodingException uex) {
+	    isr = new InputStreamReader(is);
+	}
+	// reinit, it can not happen...
+	// ...in theory ;)
+    	ReInit(isr);
+	markRule = false;
+	reinited = true;
+	setApplContext(ac);
+    }
+  
+    /* utilities for a parser */
+ 
+    /**
+     * Call by the import statement.
+     *
+     * @param url  The style sheet where this import statement appears.
+     * @param file the file name in the import
+     */  
+    public abstract void handleImport(URL url, String file, 
+				      boolean is_url, AtRuleMedia media);
+
+    /**
+     * Call by the namespace declaration statement.
+     *
+     * @param url  The style sheet where this namespace statement appears.
+     * @param file the file/url name in the namespace declaration
+     */  
+    public abstract void handleNamespaceDeclaration(URL url, String prefix,
+						    String file, 
+						    boolean is_url);
+
+    /**
+     * Call by the at-rule statement.
+     *
+     * @param ident  The ident for this at-rule (for example: 'font-face')
+     * @param string The string associate to this at-rule
+     * @see          org.w3c.css.parser.Analyzer.Couple
+     */  
+    public abstract void handleAtRule(String ident, String string);
+
+    /* added by Sijtsche Smeman */
+    public abstract void addCharSet(String charset);
+    public abstract void newAtRule(AtRule atRule);
+    public abstract void endOfAtRule();
+    public abstract void setImportant(boolean important);
+    public abstract void setSelectorList(Vector selectors);
+    public abstract void addProperty(Vector properties);
+    public abstract void endOfRule();	
+    public abstract void removeThisRule();
+    public abstract void removeThisAtRule();
+    
+    /**
+     * Assign an expression to a property.  This function create a new property
+     * with <code>property</code> and assign to it the expression with the
+     * importance. Don't forget to set informations too.
+     * <p>
+     * A subclass must provide an implementation of this method. 
+     *
+     * @param  property  the name of the property
+     * @param  values    the expression representation of values
+     * @param  important <code>true</code> if values are important
+     *
+     * @return           <code>null</code>or a property
+     * 
+     * @see              org.w3c.css.css.CssProperty
+     */
+    public abstract CssProperty handleDeclaration(String property, 
+						  CssExpression values, 
+						  boolean important) 
+	throws InvalidParamException;
+
+    /**
+     * Adds a vector of properties to a selector.
+     * <p>
+     * A subclass must provide an implementation of this method. 
+     *
+     * @param selector     the selector
+     * @param declarations Properties to associate with contexts
+     */  
+    public abstract void handleRule(CssSelectors selector, 
+				    Vector declarations);
+
+    /*Added by Sijtsche Smeman */
+
+    /**
+     * Returns the source file of the style sheet
+     */
+    public final String getSourceFile() {
+	return getURL().toString();
+    }
+
+    /**
+     * Returns the current line in the style sheet
+     */
+    public final int getLine() {
+	//return token.beginLine;
+	return 0;
+    }
+
+    /**
+     * Set the URL of the style sheet.
+     *
+     * @param URL The URL for the style sheet
+     */
+    public final void setURL(URL url) {
+	this.url = url;
+    }
+
+    public final URL getURL() {
+	return url;
+    }
+
+    /**
+     * Return the next selector from the inputstream
+     */    
+    public CssSelectors parseSelector() throws ParseException {
+	return externalSelector();
+    }
+    
+    /*
+     * Add a value to an expression
+     */
+    private void setValue(CssValue v, CssExpression expr, 
+			  char operator, Token n, int token) 
+	throws ParseException {
+	if (n != null) {
+	    if (ac.getCssVersion().equals("css1") && 
+		(n.image).equals("inherit")) {
+		incompatible_error = true;
+	    }	
+	    String val = (operator == ' ') ? n.image : operator+n.image;
+
+	    if (n.kind == CssParserConstants.IDENT) {
+		v.set(convertIdent(val), ac);
+	    } else if (n.kind == CssParserConstants.STRING) {
+		v.set(val, ac); 
+	    } else {
+		v.set(val, ac); 
+	    }
+	}
+	expr.addValue(v);
+    }
+
+    /*
+     * Error control
+     */
+    private void addError(Exception e, String skippedText) {
+	if (Util.onDebug) {
+	    System.err.println(e.getMessage());
+	    e.printStackTrace();
+	}
+	CssParseException ex = new CssParseException(e);
+	ex.setSkippedString(skippedText);
+	ex.setProperty(currentProperty);
+	ex.setContexts(currentContext);
+	CssError error = new CssError(getSourceFile(), getLine(), ex);
+	ac.getFrame().addError(error);
+    }
+    
+    /*
+     * Error control 2
+     */
+    private void addError(Exception e, CssExpression exp) {
+	if (Util.onDebug) {
+	    System.err.println(e.getMessage());
+	    e.printStackTrace();
+	}
+	
+	//	if ((exp != null) && (exp.getCount() != 0)) {
+	CssParseException ex = new CssParseException(e);
+	ex.setExp(exp);
+	ex.setProperty(currentProperty);
+	ex.setContexts(currentContext);
+	CssError error = new CssError(getSourceFile(), getLine(), ex);
+	ac.getFrame().addError(error);
+	//	}
+    }
+}
+
+PARSER_END(CssParser)
+
+/*
+ * The tokenizer 
+ */
+
+<DEFAULT>
+SPECIAL_TOKEN :
+{
+    < COMMENT : "/*" ( ~["*"] )* ( "*" )+ ( ~["/", "*"] ( ~["*"] )* ( "*" )+ )* "/" >
+} 
+
+<DEFAULT>
+    TOKEN [IGNORE_CASE] : /* basic tokens */
+{ 
+    < #H          : ["0"-"9", "a"-"f"] > 
+  | < #NONASCII   : ["\200"-"\377"] >
+  | < #UNICODE    : "\\" <H> ( <H> )? ( <H> )? ( <H> )? ( <H> )? ( <H> )? 
+	            ( "\r\n" | [ " ", "\t" , "\n" , "\r", "\f" ] )? >
+  | < #ESCAPE     : <UNICODE> | ( "\\" ~[ "\r", "\n", "\f", "0"-"9", "a"-"f" ] ) >
+  | < #NMSTART    : [ "a"-"z", "_" ] | <NONASCII> | <ESCAPE> >
+  | < #NMCHAR     : ["a"-"z", "0"-"9", "-", "_"] | <NONASCII> | <ESCAPE> >
+  | < #STRING1    : "\"" ( ~[ "\n", "\r", "\f", "\\", "\"" ] | "\\" <NL> | <ESCAPE> )* "\"" >
+  | < #STRING2	  : "\'" ( ~[ "\n", "\r", "\f", "\\", "\'" ] | "\\" <NL> | <ESCAPE> )* "\'" >
+  | < #INVALID1   : "\"" ( ~[ "\n", "\r", "\f", "\\", "\"" ] | "\\" <NL> | <ESCAPE> )* >
+  | < #INVALID2	  : "\'" ( ~[ "\n", "\r", "\f", "\\", "\'" ] | "\\" <NL> | <ESCAPE> )* >  
+  | < #_IDENT     : ( <MINUS> )? <NMSTART> ( <NMCHAR> )* >
+  | < #NAME       : ( <NMCHAR> )+ >
+  | < #NUM        : ( ["0"-"9"] )+ | ( ["0"-"9"] )* "." ( ["0"-"9"] )+ >
+  | < #_STRING    : <STRING1> | <STRING2> >
+  | < #_INVALID   : <INVALID1> | <INVALID2> >
+  | < #_URL       : ( [ "!", "#", "$", "%", "&", "*"-"[", "]"-"~" ] | <NONASCII> | <ESCAPE> )* >
+  | < #_S         : ( [ " ", "\t" , "\n" , "\r", "\f" ] ) ( <COMMENT> | [ " ", "\t" , "\n" , "\r", "\f" ] )*  >
+  | < #_W         : ( <_S> )? >
+  | < #NL         : ( "\n" | "\r\n" | "\r" | "\f" ) >
+}
+/*
+ * The _S definition is not  ( [ " ", "\t" , "\n" , "\r", "\f" ] ) + as we need to add support
+ * for the unput(' ') (see http://www.w3.org/TR/CSS21/grammar.html#scanner )
+ */
+
+<DEFAULT>
+TOKEN :
+{
+  < S : ( <_S> ) >
+}
+
+<DEFAULT>
+    TOKEN :
+{
+    < CDO : "<!--" >
+  | < CDC : "-->" >
+  | < INCLUDES  : <TILDE> "=" >
+  | < DASHMATCH : "|=" >
+}
+
+<DEFAULT>
+TOKEN :
+{
+  < LBRACE : <_W> "{" >
+  | < PLUS      : <_W>  "+" >
+  | < GREATER   : <_W> ">" >
+  | < COMMA     : <_W> "," >
+  | < TILDE     : <_W> "~" >
+}
+
+<DEFAULT>
+TOKEN [IGNORE_CASE] :
+{
+    < AND : "and" > 
+}  
+
+<DEFAULT>
+TOKEN :
+{
+    <STRING    : <_STRING> >
+  | <INVALID   : <_INVALID> >
+  | <IDENT     : <_IDENT> >
+  | <HASHIDENT : "#" <_IDENT> >
+  | <HASH      : "#" <NAME> >
+}
+
+<DEFAULT>
+TOKEN :
+{
+  < RBRACE : "}">
+  | < PREFIXMATCH : "^=" >
+  | < SUFFIXMATCH : "$=" >
+  | < SUBSTRINGMATCH : "*=" >
+  | < EQ        : "=" >
+  | < MINUS     : "-" >
+  | < SEMICOLON : ";" >
+  | < DIV       : "/" >
+  | < LBRACKET  : "[" >
+  | < RBRACKET  : "]" >
+  | < ANY       : "*" >
+  | < DOT       : "." >
+  | < LPARAN    : ")" >
+  | < RPARAN    : "(">
+}
+
+<DEFAULT>
+    TOKEN :
+{
+    < COLON     : ":" >
+}
+
+<DEFAULT>
+TOKEN [IGNORE_CASE] :
+{
+    < MEDIARESTRICTOR : "only" | "not" >
+}
+
+<DEFAULT>
+TOKEN [IGNORE_CASE] :
+{
+  < URL         : "url(" ( <S> )* ( <STRING> | <_URL>  ) ( <S> )* ")" >
+}
+
+<DEFAULT>
+TOKEN [IGNORE_CASE] :
+{
+  < LENGTH     : <NUM> "pt" 
+                   | <NUM> "mm" 
+	           | <NUM> "cm" 
+	           | <NUM> "pc" 
+	           | <NUM> "in"
+	           | <NUM> "gd" 
+	           | <NUM> "px" >
+  | < EMS        : <NUM> "em" >
+  | < EXS        : <NUM> "ex" >
+  | < ANGLE      : <NUM> ( "deg" | "grad" | "rad" ) >
+  | < TIME       : <NUM> ( "ms" | "s" ) >
+  | < FREQ       : <NUM> "Hz" | <NUM> "kHz" >
+  | < RESOLUTION : <NUM> "dpi" | <NUM> "dpcm" >
+  | < DATE       : <NUM> "/" <NUM> "/" <NUM> >
+  | < DIMEN      : <NUM> <NMSTART> ( <NMCHAR> )* >
+  | < PERCENTAGE : <NUM> "%" >
+  | < NUMBER     : <NUM> >
+}
+
+<DEFAULT>
+TOKEN [IGNORE_CASE] :
+{  
+    < IMPORTANT_SYM : "!" ( <_W> )* "important" >
+}
+
+<DEFAULT>
+TOKEN :
+{
+    <PSEUDOELEMENT_SYM : "::" >
+}
+
+/* RESERVED ATRULE WORDS */
+<DEFAULT>
+TOKEN : 
+{
+   < CHARSET_SYM           : "@charset" >
+}
+
+<DEFAULT>
+TOKEN [IGNORE_CASE] :
+{ 
+    < IMPORT_SYM            : "@import">
+  | < NAMESPACE_SYM         : "@namespace">
+  | < MEDIA_SYM             : "@media" >
+  | < PAGE_SYM              : "@page"  >
+  | < FONT_FACE_SYM         : "@font-face" >
+  | < PREF_SYM              : "@preference" >
+  | < COLOR_PROFILE         : "@color-profile" >
+  | < ATTOP	            : "@top" >
+  | < ATRIGHT               : "@right" >
+  | < ATBOTTOM              : "@bottom" >
+  | < ATLEFT                : "@left" >
+  | < ATCOUNTER             : "@counter" >
+  | < PHONETIC_ALPHABET_SYM : "@phonetic-alphabet" >
+  | < ATKEYWORD             : "@" <IDENT> >
+}
+
+<DEFAULT>
+TOKEN [IGNORE_CASE] :
+{
+    < #RANGE0 : <H> <H> <H> <H> <H> <H> > 
+  | < #RANGE1 : <H> <H> <H> <H> <H> ( "?" )? >
+  | < #RANGE2 : <H> <H> <H> <H> ( "?" )? ( "?" )? >
+  | < #RANGE3 : <H> <H> <H> ( "?" )? ( "?" )? ( "?" )? >
+  | < #RANGE4 : <H> <H> ( "?" )? ( "?" )? ( "?" )? ( "?" )? >
+  | < #RANGE5 : <H> ( "?" )? ( "?" )? ( "?" )? ( "?" )? ( "?" )? >
+  | < #RANGE6 : "?" ( "?" )? ( "?" )? ( "?" )? ( "?" )? ( "?" )? >
+  | < #RANGE  : <RANGE0> | <RANGE1> | <RANGE2> 
+                | <RANGE3> | <RANGE4> | <RANGE5> | <RANGE6> >
+  | < #UNI    : <H> ( <H> )? ( <H> )? ( <H> )? ( <H> )? ( <H> )? >
+  | < UNICODERANGE : "U+" <RANGE> | "U+" <UNI> "-" <UNI> >
+}
+
+<DEFAULT>
+    TOKEN:
+{
+    < CLASS : "." <IDENT> >
+}
+
+/* FIXED, added a spacial case for lang pseudoclass */
+<DEFAULT>
+TOKEN [IGNORE_CASE] :
+{
+    < FUNCTIONLANG : "lang(" >
+}
+
+<DEFAULT>
+TOKEN [IGNORE_CASE] :
+{
+    < FUNCTIONNOT : ":not(" >
+}
+
+
+<DEFAULT>
+    TOKEN :
+{
+    < FUNCTION : <IDENT> "(" >
+}
+
+/* Quick and dirty way to catch HTML tags starting CSS documents 
+  (common mistake) */
+<DEFAULT>
+    TOKEN:
+{
+    <HTMLSTARTTAG : "<" ( <S> )* <IDENT> ( <S> )* 
+	                ( <IDENT> "=" ( <IDENT> | <STRING> ) ( <S> )* )* 
+	            ">" >
+  | <HTMLENDTAG : "</" ( <S> )* <IDENT> ( <S> )* ">" >
+}
+
+//<DEFAULT, IN_COMMENT>
+//TOKEN :
+//{ /* avoid token manager error */
+//   < UNKNOWN : ~[] >
+//}
+
+/*
+ * The grammar of CSS2
+ */
+
+/**
+ * The main entry for the parser.
+ *
+ * @exception ParseException exception during the parse
+ */
+void parserUnit() :
+{
+    Token n = null;
+}
+{
+    try {
+	// used as an error recovery for HTML tags in CSS pages
+        ( ( n=<HTMLSTARTTAG> | n=<HTMLENDTAG> ) {
+	    addError (
+new ParseException(ac.getMsg().getString("generator.dontmixhtml")), n.image); 
+	}
+	    )*
+	  ( charset() )* // * instead of ? to capture the reinit part
+	    ( <S> | <CDO> | <CDC> )*
+	    ( importDeclaration() ( ignoreStatement() ) )*
+	    ( namespaceDeclaration() ( ignoreStatement() ) )*
+	    afterImportDeclaration()
+	    <EOF>
+	 } catch (TokenMgrError err) {
+   addError (new ParseException(ac.getMsg().getString("generator.unrecognize")),
+	     err.getMessage());
+    }
+}
+
+void charset() :
+{
+    Token n = null;
+    Token charsetToken = null;
+    Token space1Token = null;
+    Token space2Token = null;
+    Token semicolonToken = null;
+    int nb_S = 0;
+}
+{  
+    try {
+	charsetToken=<CHARSET_SYM> ( space1Token=<S> { nb_S++;} )* 
+	    n=<STRING> ( space2Token=<S> )* semicolonToken=<SEMICOLON>
+	    {
+		if (charsetdeclared && !reinited) {
+		    throw new ParseException(
+				     ac.getMsg().getString("parser.charset"));
+		}
+		// the @charset must be at the beginning of the document
+		if(charsetToken.beginLine != 1 || 
+		   charsetToken.beginColumn != 1) {
+		    throw new ParseException(
+				  ac.getMsg().getString("parser.charset"));
+		}
+		if ("css1".equals(ac.getCssVersion())) {
+		    throw new ParseException(ac.getMsg().getString(
+							 "parser.charsetcss1"));
+		}
+	        // stricter rule for CSS21 and soon for CSS3
+		if ("css21".equals(ac.getCssVersion())) {
+		    // single space before
+		    // case sensitive
+		    // no space before ;
+		    // no comments
+		    // string must start with "
+		    if ( (nb_S != 1) ||
+			 (!"@charset".equals(charsetToken.image)) ||
+			 (!" ".equals(space1Token.image)) || 
+			 (space2Token != null && 
+			  !"".equals(space2Token.image)) ||
+			 (space1Token.specialToken != null) ||
+			 (n.specialToken != null) ||
+			 (semicolonToken.specialToken != null) ||
+			 (n.image.charAt(0) != '\"')
+			) {
+			throw new ParseException(ac.getMsg().getString(
+						     "parser.charsetspecial"));
+		    }
+		}
+		if (!charsetdeclared) {
+		    addCharSet(n.image.substring(1, n.image.length()-1));
+		    charsetdeclared = true;
+		} else {
+		    reinited = false;
+		}
+	    }
+    } catch (Exception e) {
+	String skip = charsetToken +
+	    ((space1Token == null) ? "" : space1Token.image) +
+	    n +
+	    ((space2Token == null) ? "" : space2Token.image) +
+	    ";";
+        addError(e, skip); 
+    }
+}
+
+void afterImportDeclaration() :
+{String ret; }
+{
+    ( ( ruleSet() | media() | page() | fontFace() | preference() | 
+	colorprofile() | phoneticAlphabet() | ret=skipStatement() 
+	{ if ((ret == null) || (ret.length() == 0)) {
+		return; 
+	    }
+	  // quite ugly but necessary to avoid probably a lot of changes in the
+	  // grammar, still having a beautiful error message
+	    else if (ret.startsWith("@charset")) {
+		ParseException e = 
+		new ParseException(ac.getMsg().getString("parser.charset"));
+		addError(e, ret);
+	    } else if (ret.startsWith("@import")) {
+		ParseException e = 
+		new ParseException(ac.getMsg().getString("parser.import_not_allowed"));
+		addError(e, ret);
+	    } else {
+		ParseException e = 
+	     new ParseException(ac.getMsg().getString("generator.unrecognize"));
+		addError(e, ret);
+	    }
+	}
+	) ignoreStatement() )*
+}
+
+void ignoreStatement() :
+{}
+{
+    ( ( <CDO> | <CDC> | atRuleDeclaration() ) ( <S> )* )*
+}
+
+void namespaceDeclaration() :
+{
+    Token n=null;
+    Token v=null;
+    boolean is_url; /* for formatting */
+    String nsname;
+    String prefix = null;
+    CssValue val;
+}
+{
+    // FIXME add namespaces in context to match when a definition happens
+    ( <NAMESPACE_SYM> 
+      ( <S> )* 
+      ( n=<IDENT> {
+	  prefix = convertIdent(n.image);
+      } 
+	  ( <S> )* )?
+      ( v=<STRING> { 
+	      is_url = false;
+	      nsname = v.image.substring(1, v.image.length()-1);
+	  } 
+	  | v=<URL> {
+	      is_url = true;
+	      val = new CssURL(); 
+	      ((CssURL) val).set(v.image, ac, url);
+	      nsname = (String) val.get();
+	      if ((nsname.charAt(0) == '"')
+		  || (nsname.charAt(0) == '\'')) {
+		  nsname = nsname.substring(1, nsname.length()-1);
+	      }
+	  }
+      ) 
+      ( <S> )*
+      <SEMICOLON> 
+      ( <S> )*
+      ) {
+	if (!ac.getCssVersion().equals("css3")) {
+	    addError(new InvalidParamException("at-rule", "@namespace", ac),
+		     (n==null)?"default":n.toString());
+	} else {
+	    if (v != null) {
+		handleNamespaceDeclaration(getURL(), prefix, nsname, is_url);
+	    }
+	}
+    }
+}
+/**
+ * The import statement
+ *
+ * @exception ParseException exception during the parse
+ */
+void importDeclaration() :
+{Token n;
+    AtRuleMedia media = new AtRuleMedia();
+    CssValue val; 
+    String importFile;
+    boolean is_url = false;
+}
+{
+    try {
+	<IMPORT_SYM> ( <S> )*
+	    ( n=<STRING> {
+		importFile = n.image.substring(1, n.image.length() -1);
+		is_url = false;
+	    } 
+	      | n=<URL> {
+		val = new CssURL(); 
+		((CssURL) val).set(n.image, ac, url);
+		importFile = (String) val.get();
+		if ((importFile.charAt(0) == '"')
+		    || (importFile.charAt(0) == '\'')) {
+		    importFile = importFile.substring(1, importFile.length()-1);
+		}
+		is_url = true;
+	    } 
+	    )
+	    ( <S> )*
+	    ( medium(media) 
+	      ( <COMMA> ( <S> )* medium(media) 
+		)* )? <SEMICOLON> 
+	    ( <S> )*
+	    { 
+		handleImport(getURL(), importFile, is_url, media);
+	    } 
+    } catch (ParseException e) {
+	addError(e, skipStatement()); 
+    }
+}
+
+/**
+ * @exception ParseException exception during the parse
+ */
+void media() :
+{
+    AtRule old = getAtRule();
+    AtRuleMedia newRule = new AtRuleMedia();
+    setAtRule(newRule);
+    Token n;
+    CssProperty p = null;
+}
+{
+    try {
+	<MEDIA_SYM> ( <S> )*
+            // <CSS3>
+	    (n=<MEDIARESTRICTOR> { newRule.addMediaRestrictor(convertIdent(n.image), ac); } ( <S> )+)? 
+	    medium(newRule) 
+            // </CSS3>
+	    ( <COMMA> ( <S> )* medium(newRule) )* 
+            // <CSS3>
+	    (<AND> ( <S> )* <RPARAN> ( <S> )* p=mediadeclaration() { newRule.addMediaFeature(p); } <LPARAN> ( <S> )* )*
+            // </CSS3>
+   
+	    {
+		String media = getAtRule().toString();
+		if (ac.getMedium() != null && 
+		    !(media.equals(ac.getMedium())) &&
+		    !(ac.getMedium().equals("all"))) {
+		 
+		    ac.getFrame().addWarning("noothermedium", 
+					     getAtRule().toString());
+		}
+		if (ac.getCssVersion().equals("css1")) {
+		    skipStatement();
+		    addError(new InvalidParamException("noatruleyet", "", ac),
+			     getAtRule().toString());
+		}
+		if (!ac.getCssVersion().equals("css1")) {
+		    newAtRule(getAtRule());	
+		}
+	    }
+	<LBRACE> ( <S> )* ( ruleSet() )* <RBRACE> ( <S> )*
+	     {
+		 if (!ac.getCssVersion().equals("css1")) {
+		     endOfAtRule();
+		 }
+	     }
+    } catch (ParseException e) {
+	if (!ac.getCssVersion().equals("css1")) {
+	    addError(e, skipStatement()); 
+	}
+    } finally {
+	setAtRule(old);
+    }
+}
+
+/**
+ * @exception ParseException exception during the parse
+ */
+void medium(AtRuleMedia media) : /* tv, projection, screen, ... */
+{Token n;}
+{
+    n=<IDENT> ( <S> )*
+    {
+	try {
+	    media.addMedia(convertIdent(n.image), ac); 
+	} catch (InvalidParamException e) {
+	    CssError error = new CssError(getSourceFile(), getLine(), e);
+	    ac.getFrame().addError(error);	
+	}
+    }
+}
+
+/**
+ * @exception ParseException exception during the parse
+ */
+void page() :
+{
+    Vector       v                              ;
+    Token        n        = null                ;
+    Vector       collectv = new Vector()        ;
+    CssSelectors s        = new CssSelectors(ac);
+    AtRule       old      = getAtRule()         ;
+    AtRulePage   newRule  = new AtRulePage()    ;
+    setAtRule(newRule);
+    s.setAtRule(getAtRule());
+}
+{
+    try {
+	<PAGE_SYM> ( <S> )*
+            // FIXME <CSS3> ?
+            ( n=<IDENT> { newRule.setIdent(convertIdent(n.image)); } 
+	      ( <S> )* )?
+            // </CSS3>
+	    ( pseudo_page(newRule) )? <LBRACE> ( <S> )* ( v=pageContent() 
+		{ 
+		    collectv = v;
+		}
+							  ) <RBRACE> ( <S> )*
+	    {
+		if (!ac.getCssVersion().equals("css1")) {
+		    newAtRule(getAtRule());
+		}
+
+		if (!ac.getCssVersion().equals("css1")) {
+		    addProperty(collectv);
+		    endOfRule();
+		    endOfAtRule();
+		}
+		if (v == null) {
+		    ac.getFrame().addWarning("no-declaration");
+		} else {
+		    handleRule(s, collectv);
+		}
+	    }
+    } catch (InvalidParamException ie) {
+	if (!ac.getCssVersion().equals("css1")) {
+	    skipStatement();
+	    removeThisAtRule();
+	    ac.getFrame().addError(new CssError(ie));
+	}
+    } catch (ParseException e) {
+	if (!ac.getCssVersion().equals("css1")) {
+	    removeThisAtRule();
+	    addError(e, skipStatement()); 
+	}
+    } finally {
+	setAtRule(old);
+    }
+}
+
+Vector pageContent() :
+{ CssProperty prop;
+    Vector v = new Vector();
+}
+{
+    // <CSS3> ?? FIXME
+    v=prefAtRule() { return v;}
+    // </CSS3>
+    |
+    v=declarations() { return v;} /* FIXME moved here as it can match empty string */
+}
+
+Vector prefAtRule() :
+{ Token n; 
+    Vector v;
+}
+{
+    try {
+        (n=<ATTOP> | n=<ATBOTTOM> | n=<ATLEFT> | n=<ATRIGHT> ) ( <S> )*
+	    <LBRACE> ( <S> )* v=declarations() <RBRACE> ( <S> )* 
+	    {
+		return v;
+	    }
+    } catch (ParseException e) {
+	addError(e, skipStatement());
+    }
+}
+
+void pseudo_page(AtRulePage page) :
+{ Token n; }
+{
+    ":" n=<IDENT> ( <S> )*
+    { 
+	try {
+	    page.setName(":" + convertIdent(n.image), ac); 
+	} catch (InvalidParamException e) {
+	    throw new InvalidParamException("pseudo", n.image, ac );
+	    /*CssError error = new CssError(getSourceFile(), getLine(), e);
+	      ac.getFrame().addError(error);	*/
+	}
+    }
+}
+
+void fontFace() :
+{
+    Vector v;
+    AtRule old = getAtRule();
+    setAtRule(new AtRuleFontFace());
+    CssSelectors s = new CssSelectors(ac);
+    s.setAtRule(getAtRule());
+}
+{
+    try {
+	<FONT_FACE_SYM> ( <S> )* 
+	    {
+		if (ac.getCssVersion().equals("css1")) {
+		    skipStatement();
+		    addError(new InvalidParamException("noatruleyet", "", ac),
+			     getAtRule().toString());
+		}
+		if (!ac.getCssVersion().equals("css1")) {
+		    newAtRule(getAtRule());	
+		}
+
+	    }
+	<LBRACE> ( <S> )* v=declarations() <RBRACE> ( <S> )*
+	     {
+		 if (!ac.getCssVersion().equals("css1")) {
+		     addProperty(v);
+		     endOfRule();
+		     endOfAtRule();
+		 }
+		 if (v == null) {
+		     ac.getFrame().addWarning("no-declaration");
+		 } else {
+		     handleRule(s, v);
+		 }
+	     }
+    } catch (ParseException e) {
+	if (!ac.getCssVersion().equals("css1")) {
+	    addError(e, skipStatement()); 
+        }
+    } finally {
+	setAtRule(old);
+    }
+}
+
+void colorprofile() :
+{
+    Vector v;
+    AtRule old = getAtRule();
+    setAtRule(new AtRuleColorProfile());
+    CssSelectors s = new CssSelectors(ac);
+    s.setAtRule(getAtRule());
+}
+{
+    try {
+	<COLOR_PROFILE> ( <S> )*
+	    {
+		if (!ac.getCssVersion().equals("svg")) {
+		    skipStatement();
+		    addError(new InvalidParamException("onlysvg", "", ac),
+			     getAtRule().toString());
+		}
+		if (ac.getCssVersion().equals("svg")) {
+		    newAtRule(getAtRule());	
+		}
+
+	    }
+	<LBRACE> ( <S> )* v=declarations() <RBRACE> ( <S> )*
+	     {
+		 if (ac.getCssVersion().equals("svg")) {
+		     addProperty(v);
+		     endOfRule();
+		     endOfAtRule();
+		 }
+
+		 if (v == null) {
+		     //ac.getFrame().addWarning("medialist");
+		 } else {
+		     handleRule(s, v);  
+		 }
+	     }
+    }
+    catch (ParseException e) {
+	if (ac.getCssVersion().equals("svg")) {
+            addError(e, skipStatement());
+	}
+    } finally {
+	setAtRule(old);
+    }
+}
+
+
+void preference() :
+{
+    Vector v;
+    AtRule old = getAtRule();
+    setAtRule(new AtRulePreference());
+    CssSelectors s = new CssSelectors(ac);
+    s.setAtRule(getAtRule());
+}
+{
+    try {
+	<PREF_SYM> ( <S> )*
+	    {
+		if (ac.getCssVersion().equals("css1")) {
+		    skipStatement();
+		    addError(new InvalidParamException("noatruleyet", "", ac),
+			     getAtRule().toString());
+		}
+		if (!ac.getCssVersion().equals("css1")) {
+		    newAtRule(getAtRule());	
+		}
+
+	    }
+	<LBRACE> ( <S> )* v=declarations() <RBRACE> ( <S> )*
+	     {
+		 if (!ac.getCssVersion().equals("css1")) {
+		     addProperty(v);
+		     endOfRule();
+		     endOfAtRule();
+		 }
+
+		 if (v == null) {
+		     ac.getFrame().addWarning("medialist");
+		 } else {
+		     handleRule(s, v);  
+		 }
+	     }
+    }
+    catch (ParseException e) {
+	if (!ac.getCssVersion().equals("css1")) {
+            addError(e, skipStatement());
+	}
+    } finally {
+	setAtRule(old);
+    }
+}
+
+void phoneticAlphabet() :
+{
+    Vector v;
+    AtRule old = getAtRule();
+    AtRulePhoneticAlphabet alphabetrule = new AtRulePhoneticAlphabet();
+    setAtRule(alphabetrule);
+    Token n;
+}
+{
+    try {
+	<PHONETIC_ALPHABET_SYM> ( <S> )* n=<STRING> ( <S> )* ";"
+	    {
+		if (!ac.getCssVersion().equals("css3")) {
+		    skipStatement();
+		    addError(new InvalidParamException("noatruleyet", "", ac),
+			     getAtRule().toString());
+		}
+
+		alphabetrule.addAlphabet(convertIdent(n.image), ac);
+
+		if (!ac.getCssVersion().equals("css1") && !ac.getCssVersion().equals("css2")) {
+		    newAtRule(getAtRule());	
+		}
+        
+	    }
+    } catch (ParseException e) {
+	if (!ac.getCssVersion().equals("css1")) {
+	    addError(e, skipStatement()); 
+        }
+    } finally {
+	setAtRule(old);
+    }
+}
+
+/**
+ * @exception ParseException exception during the parse
+ */
+void atRuleDeclaration() :
+{Token n;}
+{
+    n=<ATKEYWORD>
+	{
+	    //ac.getFrame().addWarning("at-rule", token.toString());
+	    ac.getFrame().addError(
+		          new CssError(new InvalidParamException("at-rule", 
+								 token, ac)));
+	    skipStatement();
+	}
+}
+
+/**
+ * @exception ParseException exception during the parse
+ */
+void operator(CssExpression expr) :
+{}
+{
+  ( ( <DIV> { if (expr.getCount() > 0) expr.setOperator('/'); }
+    | <COMMA> { if (expr.getCount() > 0) expr.setOperator(','); }
+    ) ( <S> )* )?
+}
+
+/**
+ * @exception ParseException exception during the parse
+ */
+char combinator() :
+{
+    char connector = ' ';
+}
+{
+    ( (   <PLUS> { connector = '+' ; }
+        | <GREATER> { connector = '>' ; }
+        | <TILDE> { connector = '~' ; }
+      ) ( <S> )* 
+    | ( <S> )+ { connector = ' ' ; }
+    )
+    {
+	return connector;
+    }
+}
+
+/**
+ * @exception ParseException exception during the parse
+ */
+char unaryOperator() :
+{}
+{
+    // FIXME <MINUS> | <PLUS> ? warning as <PLUS> is <_W>? "+"
+    "-" { return '-'; }
+    | <PLUS> { return '+'; }
+}
+
+/**
+ * @exception ParseException exception during the parse
+ */
+String property() :
+{Token n; }
+{
+    n=<IDENT> ( <S> )* { currentProperty = convertIdent(n.image); 
+			 return currentProperty; }
+}
+
+/**
+ * @exception ParseException exception during the parse
+ */
+void ruleSet() :
+{ CssSelectors contextual;
+    Vector<CssSelectors> context_set = new Vector<CssSelectors>();
+    Vector<CssProperty> value_set = null;
+    currentContext = context_set;
+}
+{
+    try {
+	contextual=selector()
+	    { 
+		if (contextual != null) {
+		    context_set.addElement(contextual); 
+		}
+	    }
+	
+	( <COMMA> ( <S> )*
+	  contextual=selector()
+	    { 
+		if (contextual != null) {
+		    context_set.addElement(contextual); 
+		}
+	    }  
+	  )*
+	    <LBRACE> {
+	    validSelector = (context_set.size() > 0);
+	}
+	( <S> )*
+	    value_set=declarations()
+	    <RBRACE> ( <S> )*
+	    {
+		markRule = true;
+		
+		/*      if (value_set == null) {
+			ac.getFrame().addWarning("no-declaration");
+			} else {*/
+		if (value_set != null) {
+		    boolean first = true;
+		    CssSelectors sel = null;
+		    Enumeration<CssSelectors> e = context_set.elements();
+		    while (e.hasMoreElements()) {
+			sel = e.nextElement();
+			if (first) {
+			    handleRule(sel, value_set);
+			    first = false;
+			} else {
+			    // we need to duplicate properties in that case
+			    // as property holds reference to the selectors and it interact
+			    // badly with conflict detection
+			    int vsize = value_set.size();
+			    Vector<CssProperty> v = new Vector<CssProperty>(vsize);
+			    for (int i=0; i<vsize; i++) {
+				v.addElement(value_set.elementAt(i).duplicate());
+			    }
+			    handleRule(sel, v);
+			}
+		    }
+		    setSelectorList(context_set);
+		    endOfRule();
+		}
+		currentContext = null;
+	    }
+    } catch (ParseException e) {
+	if (ac.getProfile() != null) {
+	    if (!ac.getProfile().equals("mobile") && !context_set.isEmpty()) {
+		addError(e, skipStatement()); 
+	    }
+	}
+    } catch (TokenMgrError e) {
+	addError(new ParseException(e.getMessage()), skipStatement());
+    }
+}
+
+Vector<CssProperty> declarations() :
+{
+    if(!validSelector) {        
+        validSelector = true;
+        skip_to_matching_brace();
+        return null;
+    }
+
+    CssProperty values;
+    Vector<CssProperty> value_set   = new Vector<CssProperty>();
+    boolean wrong_value = true;
+}
+{    
+    ( values=declaration() 
+	{ if (values != null) {
+		value_set.addElement(values);
+		wrong_value = false;
+	    } /* else {
+		 wrong_value = true;
+		 } */
+	  currentProperty = null;
+	}
+      )? 
+	( ";" ( <S> )*
+	  ( values=declaration() 
+	      { if (values != null) {
+		      value_set.addElement(values);
+		      wrong_value = false;
+		  }/* else {
+		      wrong_value = true;
+		      }*/
+		currentProperty = null;
+	      }
+	      )? )* 
+	{  	
+	    if (!wrong_value) {
+		addProperty(value_set);
+		return value_set; 
+	    } else {
+		return null;
+	    }
+	}
+}
+
+/**
+ * @exception ParseException exception during the parse
+ */
+CssSelectors selector() :
+{   char comb;
+    CssSelectors current; }
+{
+    try {
+	current=simple_selector(null) 
+	    (  
+	      comb=combinator() { 
+		if (ac.getProfile() != null) {
+		    if (ac.getProfile().equals("mobile") || 
+			getAtRule().toString().equals("@media atsc-tv") ||
+			ac.getCssVersion().equals("css1")) {
+			if (comb == '+')
+			    throw new InvalidParamException("nocomb", "+", ac);
+			if (comb == '>')
+			    throw new InvalidParamException("nocomb", ">", ac);
+		    } else if (ac.getProfile().equals("tv")) {
+			if (comb == '+')
+			    throw new InvalidParamException("nocomb", "+", ac);
+		   
+		    }
+		}
+		if (!ac.getCssVersion().equals("css3")) {
+		    if (comb == '~') {
+			throw new InvalidParamException("nocomb", "~", ac);
+		    }
+		}
+		switch(comb) {
+		case '+': 
+		current.addAdjacentSibling(new AdjacentSiblingSelector());
+		break;
+		case '>':
+		current.addChild(new ChildSelector());
+		break;
+		case '~':
+		current.addGeneralSibling(new GeneralSiblingSelector());
+		break;
+		default:
+		current.addDescendant(new DescendantSelector());
+		}                  
+		//current.setConnector(comb); 
+	    }
+	      current=simple_selector(current) 
+	      )* 
+	    { return current; }
+    }
+    catch (InvalidParamException ie) {    
+	//	skipStatement();
+	//	removeThisRule();
+	ac.getFrame().addError(new CssError(ie));
+	Token t = getToken(1);
+	StringBuilder s = new StringBuilder();
+	s.append(getToken(0).image);
+	// eat until , { or EOF
+	while ((t.kind != COMMA) && (t.kind != LBRACE) && (t.kind != EOF)) {
+	    s.append(t.image);
+	    getNextToken();
+	    t = getToken(1);
+	}
+	return null;
+    }
+    catch (ParseException e) {
+	//	validSelector = false;
+	Token t = getToken(1);
+	StringBuilder s = new StringBuilder("[");
+	s.append(getToken(0).image);
+	// eat until , { or EOF
+	while ((t.kind != COMMA) && (t.kind != LBRACE) && (t.kind != EOF)) {
+	    s.append(t.image);
+	    getNextToken();
+	    t = getToken(1);
+	}
+	s.append(']');
+	//	if (validSelector) {
+	addError(e, s.toString());
+	    //	} else {
+	    //  addError(e,"");
+	    //	}
+	validSelector = true;
+	return null;    	
+    }
+}
+
+/**
+ * I made this rule to parse a selector from a document. Combinator are avoid.
+ * @exception ParseException exception during the parse
+ */
+CssSelectors externalSelector() :
+{
+    CssSelectors current; }
+{
+    current=simple_selector(null) 
+	( ( <S> )+
+	  current=simple_selector(current) 
+	  )*
+	{ return current; }
+}
+
+/**
+ * @exception ParseException exception during the parse
+ */
+CssSelectors simple_selector(CssSelectors next) :
+{ CssSelectors selector = new CssSelectors(ac, next);
+    selector.setAtRule(getAtRule());
+    //selector.setUserMedium(getUserMedium());
+}
+{
+
+    element_name(selector) ( hash(selector) | _class(selector)
+			     | attrib(selector) | pseudo(selector) 
+			     | negation(selector) )*
+	{   
+	    return selector;
+	}
+    | ( hash(selector) | _class(selector) | attrib(selector) 
+	| pseudo(selector) | negation(selector) )+ 
+	{
+	    return selector;
+	}
+}
+
+/**
+ * @exception ParseException exception during the parse
+ */
+void _class(CssSelectors s) :
+{Token n; }
+{
+    /*  "." n=<IDENT> { */
+    n=<CLASS> {
+	try {
+	    s.addClass(new ClassSelector(convertClassIdent(n.image.substring(1))));
+	    //        s.addAttribute("class", convertIdent(n.image.substring(1)),
+	    //           CssSelectors.ATTRIBUTE_CLASS_SEL);
+	} catch (InvalidParamException e) {
+	    //	    removeThisRule();
+	     ac.getFrame().addError(new CssError(e));
+	    throw new ParseException(e.getMessage());
+	}
+    } 
+    /* FIXME <DOT> n=deprecated_class() ... ?? (DONE-> to be tested) */ 
+    | ( n=deprecated_class() ) {
+	if (n.image.charAt(0) == '.') {
+	    n.image = n.image.substring(1);
+          
+	    // the class with the first digit escaped
+	    String cl = "."+hexEscapeFirst(n.image);
+
+	    String profile = ac.getProfile();
+	    if(profile == null || profile.equals("") || profile.equals("none")) {
+		profile = ac.getCssVersion(); 
+	    }     
+          
+	    if(!profile.equals("css1")) {
+		StringBuilder sb = new StringBuilder();
+		Vector<String> param_err = new Vector<String>(2);
+		param_err.add(n.image);
+		param_err.add(cl);
+		sb.append(ac.getMsg().getString("parser.old_class", param_err));
+		throw new ParseException(sb.toString());
+		//		s.addClass(new ClassSelector(n.image));                            
+		// removeThisRule();              
+	    }
+	    else {
+		CssLength length = new CssLength();
+		boolean isLength = false;
+		try {              
+		    length.set(n.image, ac);
+		    isLength = true;               
+		}
+		catch(Exception e) {
+		    isLength = false;              
+		}
+		if(isLength) {
+		    StringBuilder sb = new StringBuilder();
+		    sb.append(ac.getMsg().getString("parser.class_dim"));
+		    sb.append(n.image);
+		    throw new ParseException(sb.toString());
+		    //		    s.addClass(new ClassSelector(n.image));                            
+		    // removeThisRule();
+		}        
+		else {
+		    try {
+			// for css > 1, we add the rule to have a context, 
+			// and we then remove it
+			s.addClass(new ClassSelector(n.image));
+			ac.getFrame().addWarning("old_class");              
+		    } catch (InvalidParamException e) {
+			throw new ParseException(e.getMessage());
+			//ac.getFrame().addError(new CssError(e));
+			//removeThisRule();
+		    }
+		}
+	    }
+	} else {
+	    throw new ParseException("Unrecognized ");
+	}
+    }
+}
+
+Token deprecated_class() :
+{
+    Token n;
+}
+{
+    ( n=<LENGTH>
+    | n=<EMS> 
+    | n=<EXS> 
+    | n=<ANGLE>
+    | n=<TIME> 
+    | n=<FREQ> 
+    | n=<RESOLUTION>
+    | n=<DIMEN> )
+    { 
+	return n;
+    }
+}
+
+/**
+ * @exception ParseException exception during the parse
+ */
+void element_name(CssSelectors s) :
+{
+    Token n=null;
+    Token p=null;
+    String prefix = null;
+}
+{
+    ( LOOKAHEAD(2) (n=<IDENT> | n=<ANY>)? p="|" )? {
+	// FIXME namespace, check versions of CSS in a better way.
+	if (p != null) {
+	    if (!ac.getCssVersion().equals("css3")) {
+		StringBuilder sb = new StringBuilder("namespace \"");
+		if (n != null) sb.append(n.toString());
+		sb.append("\"");
+		ac.getFrame().addError(new CssError(new 
+					  InvalidParamException("notversion",
+								"namespace",
+							    ac.getCssVersion(),
+								ac)));
+		removeThisRule();
+	    } else if (n!=null) {
+		prefix = convertIdent(n.image);
+		if (!ac.isNamespaceDefined(getURL(), prefix)) {
+		    // ns is not defined
+		    addError(new ParseException("Undefined namespace"), 
+			     ": The namespace \""+prefix
+			     +"\" is not defined. "
+			     + prefix );
+		    removeThisRule();
+		}
+	    } else {
+		prefix = "";
+	    }
+	}
+    }
+    ( n=<IDENT> { //              s.setElement(convertIdent(n.image), ac);
+	s.addType(new TypeSelector(prefix, convertIdent(n.image)));
+    }
+    | <ANY> { 
+        if (!ac.getCssVersion().equals("css1")) {
+	    //          s.setElement(null);
+            s.addUniversal(new UniversalSelector(prefix));
+        } else {
+	    ac.getFrame().addError(new CssError(new InvalidParamException("notversion",
+									  "*", ac.getCssVersion(), ac)));
+	}
+    }
+	)
+}
+
+/**
+ * @exception ParseException exception during the parse
+ */
+void attrib(CssSelectors s) :
+{
+    Token att = null;
+    Token val = null;
+    int selectorType = CssSelectors.ATTRIBUTE_ANY;
+}
+{
+    <LBRACKET> ( <S> )* att=<IDENT> ( <S> )*
+	( (<EQ> { selectorType = CssSelectors.ATTRIBUTE_EXACT; }
+        | <INCLUDES> { selectorType = CssSelectors.ATTRIBUTE_ONE_OF; }
+	| <DASHMATCH> { selectorType = CssSelectors.ATTRIBUTE_BEGIN; }
+	| <PREFIXMATCH> { selectorType = CssSelectors.ATTRIBUTE_START; }
+	| <SUFFIXMATCH> { selectorType = CssSelectors.ATTRIBUTE_SUFFIX; }
+	| <SUBSTRINGMATCH> { selectorType = CssSelectors.ATTRIBUTE_SUBSTR; }
+	 ) ( <S> )* 
+	 ( val=<IDENT> 
+	     { val.image = convertIdent(val.image); }
+	   | val=<STRING> 
+	       { val.image = convertStringIndex(val.image, 1, val.image.length() -1, false);} 
+	   ) 
+	   ( <S> )* )?
+  <RBRACKET>
+      {
+	  if ("css1".equals(ac.getCssVersion())) {
+	      StringBuilder reason;
+	      CssParseException cp;
+	      ParseException p;
+	      reason = new StringBuilder(" [");
+	      if (att != null) {
+		  reason.append(convertIdent(att.image));
+	      }
+	      if (val != null ) {
+		  reason.append('=').append(val.image);
+	      }
+	      reason.append(']');
+	      p = new ParseException(ac.getMsg().getString("parser.attrcss1")+
+				     reason.toString());
+	      cp = new CssParseException(p);
+	      ac.getFrame().addError(new CssError(cp));
+	      removeThisRule();
+	  }
+	  if (selectorType == CssSelectors.ATTRIBUTE_ANY) {
+	      try {
+		  s.addAttribute(new AttributeAny(att.image.toLowerCase()));
+//                s.addAttribute(att.image.toLowerCase(), null, selectorType);
+              } catch (InvalidParamException e) {
+	          removeThisRule();
+	          ac.getFrame().addError(new CssError(e));
+              }
+	  } else {
+	      AttributeSelector attribute;
+              switch(selectorType) {
+              case CssSelectors.ATTRIBUTE_BEGIN:
+        	  attribute = new AttributeBegin(att.image.toLowerCase(),
+        		  val.image);
+        	  break;
+              case CssSelectors.ATTRIBUTE_EXACT:
+        	  attribute = new AttributeExact(att.image.toLowerCase(),
+        		  val.image);
+        	  break;
+              case CssSelectors.ATTRIBUTE_ONE_OF:
+        	  attribute = new AttributeOneOf(att.image.toLowerCase(),
+        		  val.image);
+        	  break;
+              case CssSelectors.ATTRIBUTE_START:
+        	  attribute = new AttributeStart(att.image.toLowerCase(),
+        		  val.image);
+        	  break;
+              case CssSelectors.ATTRIBUTE_SUBSTR:
+        	  attribute = new AttributeSubstr(att.image.toLowerCase(),
+        		  val.image);
+        	  break;
+              case CssSelectors.ATTRIBUTE_SUFFIX:
+        	  attribute = new AttributeSuffix(att.image.toLowerCase(),
+        		  val.image);
+        	  break;
+              default:
+        	  attribute = new AttributeExact(att.image.toLowerCase(),
+        		  val.image);
+              	  break;
+              }
+	      try {
+		  s.addAttribute(attribute);
+//	      	  s.addAttribute(att.image.toLowerCase(), val.image, 
+//			     selectorType);
+	      } catch (InvalidParamException e) {
+	     	  removeThisRule();
+	          ac.getFrame().addError(new CssError(e));
+      	      } 
+	  }
+      }
+}
+
+void negation(CssSelectors s) :
+{
+    Token n;
+    CssSelectors ns = new CssSelectors(ac, null);
+}
+{ // S* negation_arg S* ')'
+    // type_selector | universal | HASH | class | attrib | pseudo
+
+    <FUNCTIONNOT> ( <S> )*
+	(
+	 element_name(ns) |
+	 hash(ns) | 
+	 _class(ns) |
+	 attrib(ns) | 
+	 pseudo(ns)
+	 )
+	( <S> )* <LPARAN>
+	{ 
+	    s.setPseudoFun("not", ns.toString());
+	}
+}
+
+/**
+ * @exception ParseException exception during the parse
+ */
+void pseudo(CssSelectors s) :
+{Token n;
+Token language = null;
+CssExpression param = null;
+}
+{
+    <PSEUDOELEMENT_SYM> ( ( n=<IDENT>
+	{ 
+	    try {
+		if (ac.getCssVersion().equals("css3")) {
+		    s.addPseudoElement(convertIdent(n.image).toLowerCase());
+		} else {
+		    throw new InvalidParamException("pseudo-element",
+						    "::" + convertIdent(n.image).toLowerCase() ,
+						    ac.getCssVersion() ,ac);
+		}
+	    } catch(InvalidParamException e) {
+		//	removeThisRule();
+		//		ac.getFrame().addError(new CssError(e));
+		validSelector = false;
+		throw new ParseException(e.getMessage());
+	    }
+	} ) )
+	|  
+	<COLON> ( ( n=<IDENT>
+	    { 
+		try {
+		    s.addPseudoClass(convertIdent(n.image).toLowerCase());
+		} catch(InvalidParamException e) {
+		    removeThisRule();
+		    ac.getFrame().addError(new CssError(e));
+		}
+	    } )
+		  // FXIXME rewrite to make :lang( use a special case
+		  | ( ( n=<FUNCTIONLANG> ( <S> )* (language=<NUMBER> | language=<IDENT> | language=<STRING> ) ( <S> )* ) {
+		try {
+		    s.setPseudoFun(convertStringIndex(n.image, 0,
+						      n.image.length() -1, false).toLowerCase(),
+				   convertIdent(language.image));
+		} catch(InvalidParamException e) {
+			removeThisRule();
+			ac.getFrame().addError(new CssError(e));
+		}
+	    }
+	    | ( n=<FUNCTION> ( <S> )* param=expression() ) {
+		try {
+		    s.setPseudoFun(convertStringIndex(n.image, 0,
+						      n.image.length() -1, 
+						      false).toLowerCase(),
+				   param.toString());
+		} catch(InvalidParamException e) {
+		    removeThisRule();
+		    ac.getFrame().addError(new CssError(e));
+		} 
+	    }
+	    ) <LPARAN>
+	    )
+}
+
+/**
+ * @exception ParseException exception during the parse
+ */
+void hash(CssSelectors s) :
+{Token n; }
+{
+  n=<HASHIDENT>  {
+      n.image = n.image.substring(1);
+      if(Character.isDigit(n.image.charAt(0))) { 
+	  String profile = ac.getProfile();
+	  if(profile == null || profile.equals("") || profile.equals("none")) {
+	      profile = ac.getCssVersion(); 
+	  }     
+	  
+	  if(!profile.equals("css1")) {
+	      // the id with the first digit escaped
+	      String cl = "\\" + Integer.toString(n.image.charAt(0), 16);
+	      cl += n.image.substring(1);
+	      
+	      addError(new ParseException(ac.getMsg().getString(
+	      	"parser.old_id")),
+	      	"To make \"." + n.image + "\" a valid id, CSS2" +
+	      	" requires the first digit to be escaped " +
+	      	"(\"#" + cl + "\")");
+	      // for css > 1, we add the rule to have a context, 
+	      // and we then remove it
+	      s.addId(new IdSelector(n.image));                            
+	      removeThisRule();              
+	  }
+	  else {
+	      CssLength length = new CssLength();
+	      boolean isLength = false;
+	      try {              
+		  length.set(n.image, ac);
+		  isLength = true;               
+	      }
+	      catch(Exception e) {
+		  isLength = false;              
+	      }
+	      if(isLength) {
+		  addError(new ParseException(ac.getMsg().getString(
+		  "parser.id_dim")), n.image);
+		  // we add the rule to have a context, and then we remove it
+		  s.addId(new IdSelector(n.image));                            
+		  removeThisRule();
+	      }        
+	      else {
+		  try {
+		      s.addId(new IdSelector(n.image));      
+		      ac.getFrame().addWarning("old_id");              
+		  } catch (InvalidParamException e) {
+		      ac.getFrame().addError(new CssError(e));
+		      removeThisRule();
+		  }
+	      }
+	  }
+      }
+      else {
+	  try {
+	      s.addId(new IdSelector(n.image));             
+	  } catch (InvalidParamException e) {
+	      ac.getFrame().addError(new CssError(e));
+	      removeThisRule();
+	  }
+      }
+  }
+  | n=<HASH> {
+      throw new ParseException(ac.getMsg().getString("parser.invalid_id_selector"));	 
+  }
+}
+
+/**
+ * @exception ParseException exception during the parse
+ */
+CssProperty mediadeclaration() :
+{ String string_property;
+  CssExpression values = null;
+  boolean important = false;
+  setMediaDeclaration("on");
+}
+{
+try {
+      string_property=property() (":" ( <S> )* 
+      values=expr() ( important=prio() )? )?
+    {
+	
+	try {
+	
+	    setImportant(important);
+	
+	    if (incompatible_error) {
+		throw new InvalidParamException("notforcss1", "inherit", ac);
+	    }
+
+	    CssProperty p = handleDeclaration(string_property.toLowerCase(),
+						  values, important);
+	    return p;
+	    	    
+	} catch (InvalidParamException e) {
+		incompatible_error = false;
+		if (null != values) {
+			values.starts();
+		}
+		addError(e, (CssExpression) values);
+	}
+	return null;
+    }
+ } catch (NumberFormatException e) {
+     skipAfterExpression(e);
+     return null;
+ } catch (ParseException e) {
+     skipAfterExpression(e);
+     return null;
+ } finally {
+     setMediaDeclaration("off");
+ }
+}
+
+
+/**
+ * @exception ParseException exception during the parse
+ */
+CssProperty declaration() :
+{ String string_property;
+  CssExpression values;
+  boolean important = false;
+}
+{
+try {
+     string_property=property() ":" ( <S> )* 
+      values=expr() ( important=prio() )?
+    {
+	try {
+	
+	    setImportant(important);
+	
+	    if (incompatible_error) {
+		throw new InvalidParamException("notforcss1", "inherit", ac);
+	    }
+
+	    if (values.getCount() != 0) {
+		CssProperty p = handleDeclaration(string_property.toLowerCase(),
+						  values, important);
+		// Did the property recognize all values in the expression ?
+
+		if (!values.end() && ac.getMedium() == null) {
+		        addError(new InvalidParamException("unrecognize", "", ac),
+			     values);
+		} else {
+		    // ok, return the new property
+		    return p;
+		}
+	    }
+	} catch (InvalidParamException e) {
+		incompatible_error = false;
+		values.starts();
+		addError(e, (CssExpression) values);
+	}
+	return null;
+    }
+ } catch (NumberFormatException e) {
+     skipAfterExpression(e);
+     return null;
+ } catch (ParseException e) {
+     skipAfterExpression(e);
+     return null;
+ } catch (NullPointerException e) {
+	// NullPointerException happen if in handling a property
+	// something bad happen (like setting values on sub properties
+	// that had not been initialized (for an unknown reason yet).
+     skipAfterExpression(e);
+     return null;
+  }
+}
+
+/**
+ * @exception ParseException exception during the parse
+ */
+boolean prio() :
+{}
+{
+  <IMPORTANT_SYM> ( <S> )* { return true; }
+}
+
+CssExpression expression() :
+{
+    CssExpression exp = new CssExpression();
+    char operator = ' ';
+    Token n = null;
+}
+{
+    ( ( <PLUS> { operator = '+' ; } 
+	| <MINUS> { operator = '-'; }
+	| n=<NUMBER> { setValue(new CssNumber(), exp, operator, n, NUMBER); }
+	// FIXME dimen should be a CssDimension()
+	| n=<DIMEN> { setValue(new CssIdent(), exp, operator, n, IDENT); } 
+	| n=<STRING> { setValue(new CssString(), exp, operator, n, STRING); } 
+	| n=<IDENT> { setValue(new CssIdent(), exp, operator, n, IDENT); } 
+	) ( <S> )* )+
+   { return exp; }
+}     
+/**
+ * @exception ParseException exception during the parse
+ */
+CssExpression expr() :
+{
+  CssExpression values = new CssExpression();
+}
+{
+  term(values) ( operator(values) term(values) )*
+  { return values; }
+}
+
+/**
+ * @exception ParseException exception during the parse
+ */
+void term(CssExpression exp) :
+{ Token n;
+  char operator = ' ';
+  CssValue func;
+}
+{
+  ( ( operator=unaryOperator() )?
+    ( n=<NUMBER> { setValue(new CssNumber(), exp, operator, n, NUMBER); }
+    | n=<PERCENTAGE> { setValue(new CssPercentage(), exp, operator, n, 
+				PERCENTAGE); }
+    | n=<LENGTH> { setValue(new CssLength(), exp, operator, n, LENGTH); }
+    | n=<EMS> { setValue(new CssLength(), exp, operator, n, EMS); }
+    | n=<EXS> { setValue(new CssLength(), exp, operator, n, EXS); }
+    | n=<ANGLE> { setValue(new CssAngle(), exp, operator, n, ANGLE);}
+    | n=<TIME> { setValue(new CssTime(), exp, operator, n, TIME); }
+    | n=<FREQ> { setValue(new CssFrequency(), exp, operator, n, FREQ); }
+    | n=<RESOLUTION> { setValue(new CssResolution(), exp, operator, n, RESOLUTION); }
+    | n=<DATE> { setValue(new CssDate(), exp, operator, n, DATE); }
+    | n=<DIMEN> {  
+	  addError(new ParseException(ac.getMsg().getString("parser.unknown-dimension")), n.image); }    
+    | func=function() { setValue(func, exp, operator, null, FUNCTION); }
+      ) ( <S> )* )
+  | (( n=<STRING> { setValue(new CssString(), exp, operator, n, STRING); }
+    | n=<IDENT> 
+    {
+	/*
+	 * Common error :
+	 * H1 {
+	 *   color : black
+	 *   background : white
+	 * }
+	 */
+	Token t = getToken(1);
+	Token semicolon = new Token();
+	semicolon.kind = SEMICOLON;
+	semicolon.image = ";";
+	if (t.kind == COLON) {
+	    /* @@SEEME. (generate a warning?) */
+	    /* @@SEEME if expression is a single ident, 
+	       generate an error ? */
+	    addError(new ParseException(ac.getMsg().getString("parser.semi-colon")),
+		     (CssExpression) null);
+	    rejectToken(semicolon);
+	} else {
+	    setValue(new CssIdent(), exp, operator, n, IDENT);
+	}
+    }
+    | hexcolor(exp)
+    | n=<URL> { 
+	CssURL _u = new CssURL();
+	_u.set(n.image, ac, url);
+	exp.addValue(_u);
+      }
+    | n=<UNICODERANGE> { setValue(new CssUnicodeRange(), exp, operator, n, 
+				UNICODERANGE); }
+    ) ( <S> )* )
+}
+
+/**
+ * @exception ParseException exception during the parse
+ */
+CssValue function() :
+{Token n;
+ CssExpression exp;
+ org.w3c.css.values.CssColor color = new org.w3c.css.values.CssColor();
+ org.w3c.css.values.ATSCColor colorATSC = new org.w3c.css.values.ATSCColor();
+}
+{
+    n=<FUNCTION> ( <S> )* exp=expr() 
+    ")" { 
+	String funcname = n.image.toLowerCase();
+	if (funcname.equals("rgb(")) {
+	    if (!getAtRule().toString().equals("@media atsc-tv")) {
+	       color.setRGBColor(exp, ac);
+	       return color;
+            } else {
+	       colorATSC.setRGBColor(exp, ac);
+	       return colorATSC;
+            }
+	} else if (n.image.toLowerCase().equals("atsc-rgba(")) {
+	    if (getAtRule().toString().equals("@media atsc-tv")) {
+	        colorATSC.setATSCrgba(exp, ac);
+	        return colorATSC;
+	    } else {
+		addError(new InvalidParamException("onlyATSC", "", ac),
+						 getAtRule().toString());
+	        return null;
+	    }
+	} else {
+	    CssFunction f = new CssFunction();
+	    f.set(n.image.substring(0, n.image.length() - 1),
+		  exp);
+	    return f;
+	}
+    }
+}
+
+/**
+ * @exception ParseException exception during the parse
+ */
+void hexcolor(CssExpression exp) :
+{Token n; 
+}
+{
+    ( n=<HASHIDENT> | n=<HASH> ) { 
+     n.image = Util.strip(n.image);
+     setValue(new org.w3c.css.values.CssColor(), exp, ' ', n, HASH); 
+    }
+}
+
+/*
+ * @@SEEME EOF
+ */
+
+JAVACODE
+String skipStatement() {
+    StringBuilder s = new StringBuilder();
+    Token tok = getToken(0);
+    boolean first = true;
+
+    if (tok.image != null) {
+	s.append(tok.image);	
+    }
+    /* FIXME here, two option, we skip during an error, or outside
+       an error, currently both can fail with a TokenMgrError, should
+       we catch all, or only when filling message for errors? 
+       
+       -> taking the "always skip" approach.
+    */
+    while (true) {
+	try {
+	    tok = getToken(1);
+	    if (tok.kind == EOF) {
+		if (first) {
+		    return null;
+		} else {
+		    break;
+		}
+	    } 
+	    s.append(tok.image);
+	    if (tok.kind == LBRACE) {
+		getNextToken();
+		s.append(skip_to_matching_brace());
+		getNextToken();
+		tok = getToken(1);
+		break;
+	    } else if ((tok.kind == RBRACE) || (tok.kind == SEMICOLON)) {
+		getNextToken();
+		tok = getToken(1);
+		break;
+	    }
+	    getNextToken();
+	} catch (TokenMgrError tokenerror) {
+	    // read one char at a time, and loop
+	    try {
+	        s.append(jj_input_stream.readChar());
+	        continue;
+            } catch (java.io.IOException ioex) { 
+		return s.toString().trim();
+	    }
+	}
+	first = false;
+    }
+    
+    // skip white space
+    while (tok.kind == S) {
+	getNextToken();
+	tok = getToken(1);
+    }
+    String statement = s.toString().trim();
+    return statement;
+}
+
+JAVACODE
+String skip_to_matching_brace() {
+    StringBuilder s = new StringBuilder();
+    Token tok;
+    int nesting = 1;
+    /* FIXME
+       same as above */
+    while (true) {
+	tok = getToken(1);
+	if (tok.kind == EOF) {
+	    break;
+	}
+	s.append(tok.image);
+	if (tok.kind == LBRACE) {
+	    nesting++;
+	} else if (tok.kind == RBRACE) {
+	    nesting--;
+	    if (nesting == 0) {
+		break;
+	    }
+	}
+	getNextToken();
+    }
+    return s.toString();
+}
+
+/*
+ * @@HACK
+ * I can't insert a token into the tokens flow.
+ * It's jj_consume_token implementation dependant! :-(
+ */
+JAVACODE
+void rejectToken(Token t) {
+    Token fakeToken = new Token();
+    t.next = token;
+    fakeToken.next = t;
+    token = fakeToken;
+}
+
+/** skip after an expression
+ */
+JAVACODE
+void skipAfterExpression(Exception e) {
+    StringBuilder s = new StringBuilder();
+    s.append(getToken(0).image);
+    while (true) {
+	try {
+	    Token t = getToken(1);
+	    if (t.kind == LBRACE) {
+		s.append(t.image);
+		getNextToken();
+		s.append(skip_to_matching_brace());
+		getNextToken();
+		t = getToken(1);
+		continue;
+	    }
+	    if ((t.kind == SEMICOLON) || (t.kind == RBRACE) 
+		                      || (t.kind == EOF)) {
+		break;
+	    }
+	    s.append(t.image);
+	    getNextToken();
+	    t = getToken(1);
+	} catch (TokenMgrError tmerr) {
+	    try {
+		s.append(jj_input_stream.readChar());
+	        continue;
+	    } catch (java.io.IOException ioex) { 
+		ioex.printStackTrace();
+		break;
+	    }
+	}
+    }
+    String statement = s.toString().trim();
+    addError(e, s.toString()); 
+}
+
+JAVACODE
+String convertStringIndex(String s, int start, int len, boolean escapeFirst) {
+    int index = start;
+    int t;
+    int maxCount = 0;
+    if ((start == 0) && (len == s.length()) && (s.indexOf('\\') == -1)) {
+	return s;
+    }
+    StringBuilder buf = new StringBuilder(len);
+
+    while (index < len) {
+	char c = s.charAt(index);
+	if (c == '\\') {
+	    if (++index < len) {
+		c = s.charAt(index);
+		switch (c) {
+		case '0': case '1': case '2': case '3': case '4':
+		case '5': case '6': case '7': case '8': case '9':
+		case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
+		case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
+		    int numValue = Character.digit(c, 16);
+		    int count = 1;
+		    if (maxCount == 0) {
+			maxCount = (ac.getCssVersion().equals("css1") ? 
+				    4 : 6);
+		    }
+		    while (index + 1 < len) {
+			c = s.charAt(index+1);
+			t = Character.digit(c, 16);
+			if (t != -1 && count++ < maxCount) {
+			    numValue = (numValue<<4) | t;
+			    index++;
+			} else {
+			    if (c == ' ' || c == '\t' || 
+				c == '\n' || c == '\f' ) {
+				// skip the latest white space
+				index++;
+			    } else if ( c == '\r' ) {
+				index++;
+				// special case for \r\n
+				if (index+1 < len) {
+				    if (s.charAt(index + 1) == '\n') {
+					index++;
+				    }
+				}
+			    }
+			    break;
+			}
+		    }
+		    if (!escapeFirst && numValue < 255 && numValue>31) { 
+			if (! ( (numValue>96 && numValue<123) // [a-z]
+				|| (numValue>64 && numValue<91) // [A-Z]
+				|| (numValue>47 && numValue<58) // [0-9]
+				|| (numValue == 95) // _
+				|| (numValue == 45) // -
+				)
+			    ) {
+			    buf.append('\\');
+			}
+			buf.append((char) numValue);
+			break;
+		    }
+		    char b[] = new char[maxCount];
+		    t = maxCount;
+		    while (t > 0) {
+			b[--t] = hexdigits[numValue & 0xF];
+			numValue >>>= 4;
+		    }
+		    buf.append('\\').append(b);
+		    break;
+		case '\n':
+		case '\f':
+		    break;
+		case '\r':
+		    if (index + 1 < len) {
+			if (s.charAt(index + 1) == '\n') {
+			    index ++;
+			}
+		    }
+		    break;
+		case '-' : case '_' : case 'g' : case 'G' :
+		case 'h' : case 'H' : case 'i' : case 'I' :
+		case 'j' : case 'J' : case 'k' : case 'K' :
+		case 'l' : case 'L' : case 'm' : case 'M' :
+		case 'n' : case 'N' : case 'o' : case 'O' :
+		case 'p' : case 'P' : case 'q' : case 'Q' :
+		case 'r' : case 'R' : case 's' : case 'S' :
+		case 't' : case 'T' : case 'u' : case 'U' :
+		case 'v' : case 'V' : case 'w' : case 'W' :
+		case 'x' : case 'X' : case 'y' : case 'Y' :
+		case 'z' : case 'Z' : 
+		    buf.append(c);
+		    break;
+		default:
+		    buf.append('\\').append(c);
+		}
+	    } else {
+		throw new ParseException("invalid string");
+	    }
+	} else {
+	    buf.append(c);
+	}
+	escapeFirst = false;
+	index++;
+    }
+    return buf.toString();
+}
+
+JAVACODE
+String convertIdent(String s) {
+    return convertStringIndex(s, 0, s.length(), false);
+}
+
+JAVACODE
+String convertClassIdent(String s) {
+    return convertStringIndex(s, 0, s.length(), true);
+}
+
+JAVACODE
+String convertString(String s) {
+    return convertStringIndex(s, 0, s.length(), false);
+}
+
+JAVACODE 
+String hexEscapeFirst(String s) {
+    StringBuilder sb = new StringBuilder();
+    sb.append('\\').append(Integer.toString(s.charAt(0), 16));
+    char c = s.charAt(1);
+    if (((c >= '0') && (c <= '9')) || 
+	((c >= 'A') && (c <= 'F')) ||
+	((c >= 'a') && (c <= 'f'))) {
+	sb.append(' ');
+    }
+    sb.append(s.substring(1));
+    return sb.toString();
+}
+/*
+ * compile-command: javacc CssParser.jj & jc CssParser.java
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/parser/analyzer/CssParserConstants.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,209 @@
+/* Generated By:JavaCC: Do not edit this line. CssParserConstants.java */
+package org.w3c.css.parser.analyzer;
+
+public interface CssParserConstants {
+
+  int EOF = 0;
+  int COMMENT = 1;
+  int H = 2;
+  int NONASCII = 3;
+  int UNICODE = 4;
+  int ESCAPE = 5;
+  int NMSTART = 6;
+  int NMCHAR = 7;
+  int STRING1 = 8;
+  int STRING2 = 9;
+  int INVALID1 = 10;
+  int INVALID2 = 11;
+  int _IDENT = 12;
+  int NAME = 13;
+  int NUM = 14;
+  int _STRING = 15;
+  int _INVALID = 16;
+  int _URL = 17;
+  int _S = 18;
+  int _W = 19;
+  int NL = 20;
+  int S = 21;
+  int CDO = 22;
+  int CDC = 23;
+  int INCLUDES = 24;
+  int DASHMATCH = 25;
+  int LBRACE = 26;
+  int PLUS = 27;
+  int GREATER = 28;
+  int COMMA = 29;
+  int TILDE = 30;
+  int AND = 31;
+  int STRING = 32;
+  int INVALID = 33;
+  int IDENT = 34;
+  int HASHIDENT = 35;
+  int HASH = 36;
+  int RBRACE = 37;
+  int PREFIXMATCH = 38;
+  int SUFFIXMATCH = 39;
+  int SUBSTRINGMATCH = 40;
+  int EQ = 41;
+  int MINUS = 42;
+  int SEMICOLON = 43;
+  int DIV = 44;
+  int LBRACKET = 45;
+  int RBRACKET = 46;
+  int ANY = 47;
+  int DOT = 48;
+  int LPARAN = 49;
+  int RPARAN = 50;
+  int COLON = 51;
+  int MEDIARESTRICTOR = 52;
+  int URL = 53;
+  int LENGTH = 54;
+  int EMS = 55;
+  int EXS = 56;
+  int ANGLE = 57;
+  int TIME = 58;
+  int FREQ = 59;
+  int RESOLUTION = 60;
+  int DATE = 61;
+  int DIMEN = 62;
+  int PERCENTAGE = 63;
+  int NUMBER = 64;
+  int IMPORTANT_SYM = 65;
+  int PSEUDOELEMENT_SYM = 66;
+  int CHARSET_SYM = 67;
+  int IMPORT_SYM = 68;
+  int NAMESPACE_SYM = 69;
+  int MEDIA_SYM = 70;
+  int PAGE_SYM = 71;
+  int FONT_FACE_SYM = 72;
+  int PREF_SYM = 73;
+  int COLOR_PROFILE = 74;
+  int ATTOP = 75;
+  int ATRIGHT = 76;
+  int ATBOTTOM = 77;
+  int ATLEFT = 78;
+  int ATCOUNTER = 79;
+  int PHONETIC_ALPHABET_SYM = 80;
+  int ATKEYWORD = 81;
+  int RANGE0 = 82;
+  int RANGE1 = 83;
+  int RANGE2 = 84;
+  int RANGE3 = 85;
+  int RANGE4 = 86;
+  int RANGE5 = 87;
+  int RANGE6 = 88;
+  int RANGE = 89;
+  int UNI = 90;
+  int UNICODERANGE = 91;
+  int CLASS = 92;
+  int FUNCTIONLANG = 93;
+  int FUNCTIONNOT = 94;
+  int FUNCTION = 95;
+  int HTMLSTARTTAG = 96;
+  int HTMLENDTAG = 97;
+
+  int DEFAULT = 0;
+
+  String[] tokenImage = {
+    "<EOF>",
+    "<COMMENT>",
+    "<H>",
+    "<NONASCII>",
+    "<UNICODE>",
+    "<ESCAPE>",
+    "<NMSTART>",
+    "<NMCHAR>",
+    "<STRING1>",
+    "<STRING2>",
+    "<INVALID1>",
+    "<INVALID2>",
+    "<_IDENT>",
+    "<NAME>",
+    "<NUM>",
+    "<_STRING>",
+    "<_INVALID>",
+    "<_URL>",
+    "<_S>",
+    "<_W>",
+    "<NL>",
+    "<S>",
+    "\"<!--\"",
+    "\"-->\"",
+    "<INCLUDES>",
+    "\"|=\"",
+    "<LBRACE>",
+    "<PLUS>",
+    "<GREATER>",
+    "<COMMA>",
+    "<TILDE>",
+    "\"and\"",
+    "<STRING>",
+    "<INVALID>",
+    "<IDENT>",
+    "<HASHIDENT>",
+    "<HASH>",
+    "\"}\"",
+    "\"^=\"",
+    "\"$=\"",
+    "\"*=\"",
+    "\"=\"",
+    "\"-\"",
+    "\";\"",
+    "\"/\"",
+    "\"[\"",
+    "\"]\"",
+    "\"*\"",
+    "\".\"",
+    "\")\"",
+    "\"(\"",
+    "\":\"",
+    "<MEDIARESTRICTOR>",
+    "<URL>",
+    "<LENGTH>",
+    "<EMS>",
+    "<EXS>",
+    "<ANGLE>",
+    "<TIME>",
+    "<FREQ>",
+    "<RESOLUTION>",
+    "<DATE>",
+    "<DIMEN>",
+    "<PERCENTAGE>",
+    "<NUMBER>",
+    "<IMPORTANT_SYM>",
+    "\"::\"",
+    "\"@charset\"",
+    "\"@import\"",
+    "\"@namespace\"",
+    "\"@media\"",
+    "\"@page\"",
+    "\"@font-face\"",
+    "\"@preference\"",
+    "\"@color-profile\"",
+    "\"@top\"",
+    "\"@right\"",
+    "\"@bottom\"",
+    "\"@left\"",
+    "\"@counter\"",
+    "\"@phonetic-alphabet\"",
+    "<ATKEYWORD>",
+    "<RANGE0>",
+    "<RANGE1>",
+    "<RANGE2>",
+    "<RANGE3>",
+    "<RANGE4>",
+    "<RANGE5>",
+    "<RANGE6>",
+    "<RANGE>",
+    "<UNI>",
+    "<UNICODERANGE>",
+    "<CLASS>",
+    "\"lang(\"",
+    "\":not(\"",
+    "<FUNCTION>",
+    "<HTMLSTARTTAG>",
+    "<HTMLENDTAG>",
+    "\"|\"",
+  };
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/parser/analyzer/CssParserTokenManager.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,6245 @@
+/* Generated By:JavaCC: Do not edit this line. CssParserTokenManager.java */
+package org.w3c.css.parser.analyzer;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.UnsupportedEncodingException;
+import java.util.Vector;
+import java.util.Enumeration;
+import java.net.URL;
+import org.w3c.css.values.CssValue;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssString;
+import org.w3c.css.values.CssURL;
+import org.w3c.css.values.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssColor;
+import org.w3c.css.values.CssIdent;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssFrequency;
+import org.w3c.css.values.CssTime;
+import org.w3c.css.values.CssDate;
+import org.w3c.css.values.CssAngle;
+import org.w3c.css.values.CssFunction;
+import org.w3c.css.values.CssUnicodeRange;
+import org.w3c.css.values.CssResolution;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.parser.Frame;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.parser.CssError;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssParseException;
+import org.w3c.css.parser.AtRule;
+import org.w3c.css.parser.AtRuleMedia;
+import org.w3c.css.parser.AtRuleFontFace;
+import org.w3c.css.parser.AtRulePage;
+import org.w3c.css.parser.AtRulePreference;
+import org.w3c.css.parser.AtRulePhoneticAlphabet;
+import org.w3c.css.properties.svg.AtRuleColorProfile;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.util.Util;
+import org.w3c.css.util.Messages;
+import org.w3c.css.selectors.AdjacentSiblingSelector;
+import org.w3c.css.selectors.AttributeSelector;
+import org.w3c.css.selectors.ChildSelector;
+import org.w3c.css.selectors.ClassSelector;
+import org.w3c.css.selectors.DescendantSelector;
+import org.w3c.css.selectors.GeneralSiblingSelector;
+import org.w3c.css.selectors.IdSelector;
+import org.w3c.css.selectors.TypeSelector;
+import org.w3c.css.selectors.UniversalSelector;
+import org.w3c.css.selectors.attributes.AttributeAny;
+import org.w3c.css.selectors.attributes.AttributeBegin;
+import org.w3c.css.selectors.attributes.AttributeExact;
+import org.w3c.css.selectors.attributes.AttributeOneOf;
+import org.w3c.css.selectors.attributes.AttributeStart;
+import org.w3c.css.selectors.attributes.AttributeSubstr;
+import org.w3c.css.selectors.attributes.AttributeSuffix;
+
+public class CssParserTokenManager implements CssParserConstants
+{
+  public  java.io.PrintStream debugStream = System.out;
+  public  void setDebugStream(java.io.PrintStream ds) { debugStream = ds; }
+private final int jjStopAtPos(int pos, int kind)
+{
+   jjmatchedKind = kind;
+   jjmatchedPos = pos;
+   return pos + 1;
+}
+private final int jjMoveStringLiteralDfa0_0()
+{
+   switch(curChar)
+   {
+      case 36:
+         return jjMoveStringLiteralDfa1_0(0x8000000000L, 0x0L);
+      case 40:
+         jjmatchedKind = 50;
+         return jjMoveNfa_0(7, 0);
+      case 41:
+         jjmatchedKind = 49;
+         return jjMoveNfa_0(7, 0);
+      case 42:
+         jjmatchedKind = 47;
+         return jjMoveStringLiteralDfa1_0(0x10000000000L, 0x0L);
+      case 45:
+         jjmatchedKind = 42;
+         return jjMoveStringLiteralDfa1_0(0x800000L, 0x0L);
+      case 46:
+         jjmatchedKind = 48;
+         return jjMoveNfa_0(7, 0);
+      case 47:
+         jjmatchedKind = 44;
+         return jjMoveNfa_0(7, 0);
+      case 58:
+         jjmatchedKind = 51;
+         return jjMoveStringLiteralDfa1_0(0x0L, 0x40000004L);
+      case 59:
+         jjmatchedKind = 43;
+         return jjMoveNfa_0(7, 0);
+      case 60:
+         return jjMoveStringLiteralDfa1_0(0x400000L, 0x0L);
+      case 61:
+         jjmatchedKind = 41;
+         return jjMoveNfa_0(7, 0);
+      case 64:
+         return jjMoveStringLiteralDfa1_0(0x0L, 0x1fff8L);
+      case 91:
+         jjmatchedKind = 45;
+         return jjMoveNfa_0(7, 0);
+      case 93:
+         jjmatchedKind = 46;
+         return jjMoveNfa_0(7, 0);
+      case 94:
+         return jjMoveStringLiteralDfa1_0(0x4000000000L, 0x0L);
+      case 65:
+      case 97:
+         return jjMoveStringLiteralDfa1_0(0x80000000L, 0x0L);
+      case 76:
+      case 108:
+         return jjMoveStringLiteralDfa1_0(0x0L, 0x20000000L);
+      case 124:
+         jjmatchedKind = 98;
+         return jjMoveStringLiteralDfa1_0(0x2000000L, 0x0L);
+      case 125:
+         jjmatchedKind = 37;
+         return jjMoveNfa_0(7, 0);
+      default :
+         return jjMoveNfa_0(7, 0);
+   }
+}
+private final int jjMoveStringLiteralDfa1_0(long active0, long active1)
+{
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) {
+   return jjMoveNfa_0(7, 0);
+   }
+   switch(curChar)
+   {
+      case 33:
+         return jjMoveStringLiteralDfa2_0(active0, 0x400000L, active1, 0L);
+      case 45:
+         return jjMoveStringLiteralDfa2_0(active0, 0x800000L, active1, 0L);
+      case 58:
+         if ((active1 & 0x4L) != 0L)
+         {
+            jjmatchedKind = 66;
+            jjmatchedPos = 1;
+         }
+         break;
+      case 61:
+         if ((active0 & 0x2000000L) != 0L)
+         {
+            jjmatchedKind = 25;
+            jjmatchedPos = 1;
+         }
+         else if ((active0 & 0x4000000000L) != 0L)
+         {
+            jjmatchedKind = 38;
+            jjmatchedPos = 1;
+         }
+         else if ((active0 & 0x8000000000L) != 0L)
+         {
+            jjmatchedKind = 39;
+            jjmatchedPos = 1;
+         }
+         else if ((active0 & 0x10000000000L) != 0L)
+         {
+            jjmatchedKind = 40;
+            jjmatchedPos = 1;
+         }
+         break;
+      case 65:
+      case 97:
+         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x20000000L);
+      case 66:
+      case 98:
+         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x2000L);
+      case 67:
+      case 99:
+         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x8408L);
+      case 70:
+      case 102:
+         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x100L);
+      case 73:
+      case 105:
+         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x10L);
+      case 76:
+      case 108:
+         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x4000L);
+      case 77:
+      case 109:
+         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x40L);
+      case 78:
+      case 110:
+         return jjMoveStringLiteralDfa2_0(active0, 0x80000000L, active1, 0x40000020L);
+      case 80:
+      case 112:
+         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x10280L);
+      case 82:
+      case 114:
+         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x1000L);
+      case 84:
+      case 116:
+         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x800L);
+      default :
+         break;
+   }
+   return jjMoveNfa_0(7, 1);
+}
+private final int jjMoveStringLiteralDfa2_0(long old0, long active0, long old1, long active1)
+{
+   if (((active0 &= old0) | (active1 &= old1)) == 0L)
+      return jjMoveNfa_0(7, 1);
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) {
+   return jjMoveNfa_0(7, 1);
+   }
+   switch(curChar)
+   {
+      case 45:
+         return jjMoveStringLiteralDfa3_0(active0, 0x400000L, active1, 0L);
+      case 62:
+         if ((active0 & 0x800000L) != 0L)
+         {
+            jjmatchedKind = 23;
+            jjmatchedPos = 2;
+         }
+         break;
+      case 65:
+      case 97:
+         return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0xa0L);
+      case 68:
+      case 100:
+         if ((active0 & 0x80000000L) != 0L)
+         {
+            jjmatchedKind = 31;
+            jjmatchedPos = 2;
+         }
+         break;
+      case 69:
+      case 101:
+         return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0x4040L);
+      case 72:
+      case 104:
+         return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0x10008L);
+      case 73:
+      case 105:
+         return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0x1000L);
+      case 77:
+      case 109:
+         return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0x10L);
+      case 78:
+      case 110:
+         return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0x20000000L);
+      case 79:
+      case 111:
+         return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0x4000ad00L);
+      case 82:
+      case 114:
+         return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0x200L);
+      default :
+         break;
+   }
+   return jjMoveNfa_0(7, 2);
+}
+private final int jjMoveStringLiteralDfa3_0(long old0, long active0, long old1, long active1)
+{
+   if (((active0 &= old0) | (active1 &= old1)) == 0L)
+      return jjMoveNfa_0(7, 2);
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) {
+   return jjMoveNfa_0(7, 2);
+   }
+   switch(curChar)
+   {
+      case 45:
+         if ((active0 & 0x400000L) != 0L)
+         {
+            jjmatchedKind = 22;
+            jjmatchedPos = 3;
+         }
+         break;
+      case 65:
+      case 97:
+         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x8L);
+      case 68:
+      case 100:
+         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x40L);
+      case 69:
+      case 101:
+         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x200L);
+      case 70:
+      case 102:
+         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x4000L);
+      case 71:
+      case 103:
+         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x20001080L);
+      case 76:
+      case 108:
+         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x400L);
+      case 77:
+      case 109:
+         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x20L);
+      case 78:
+      case 110:
+         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x100L);
+      case 79:
+      case 111:
+         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x10000L);
+      case 80:
+      case 112:
+         if ((active1 & 0x800L) != 0L)
+         {
+            jjmatchedKind = 75;
+            jjmatchedPos = 3;
+         }
+         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x10L);
+      case 84:
+      case 116:
+         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x40002000L);
+      case 85:
+      case 117:
+         return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x8000L);
+      default :
+         break;
+   }
+   return jjMoveNfa_0(7, 3);
+}
+private final int jjMoveStringLiteralDfa4_0(long old0, long active0, long old1, long active1)
+{
+   if (((active0 &= old0) | (active1 &= old1)) == 0L)
+      return jjMoveNfa_0(7, 3);
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) {
+   return jjMoveNfa_0(7, 3);
+   }
+   switch(curChar)
+   {
+      case 40:
+         if ((active1 & 0x20000000L) != 0L)
+         {
+            jjmatchedKind = 93;
+            jjmatchedPos = 4;
+         }
+         else if ((active1 & 0x40000000L) != 0L)
+         {
+            jjmatchedKind = 94;
+            jjmatchedPos = 4;
+         }
+         break;
+      case 69:
+      case 101:
+         if ((active1 & 0x80L) != 0L)
+         {
+            jjmatchedKind = 71;
+            jjmatchedPos = 4;
+         }
+         return jjMoveStringLiteralDfa5_0(active1, 0x20L);
+      case 70:
+      case 102:
+         return jjMoveStringLiteralDfa5_0(active1, 0x200L);
+      case 72:
+      case 104:
+         return jjMoveStringLiteralDfa5_0(active1, 0x1000L);
+      case 73:
+      case 105:
+         return jjMoveStringLiteralDfa5_0(active1, 0x40L);
+      case 78:
+      case 110:
+         return jjMoveStringLiteralDfa5_0(active1, 0x18000L);
+      case 79:
+      case 111:
+         return jjMoveStringLiteralDfa5_0(active1, 0x410L);
+      case 82:
+      case 114:
+         return jjMoveStringLiteralDfa5_0(active1, 0x8L);
+      case 84:
+      case 116:
+         if ((active1 & 0x4000L) != 0L)
+         {
+            jjmatchedKind = 78;
+            jjmatchedPos = 4;
+         }
+         return jjMoveStringLiteralDfa5_0(active1, 0x2100L);
+      default :
+         break;
+   }
+   return jjMoveNfa_0(7, 4);
+}
+private final int jjMoveStringLiteralDfa5_0(long old1, long active1)
+{
+   if (((active1 &= old1)) == 0L)
+      return jjMoveNfa_0(7, 4);
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) {
+   return jjMoveNfa_0(7, 4);
+   }
+   switch(curChar)
+   {
+      case 45:
+         return jjMoveStringLiteralDfa6_0(active1, 0x100L);
+      case 65:
+      case 97:
+         if ((active1 & 0x40L) != 0L)
+         {
+            jjmatchedKind = 70;
+            jjmatchedPos = 5;
+         }
+         break;
+      case 69:
+      case 101:
+         return jjMoveStringLiteralDfa6_0(active1, 0x10200L);
+      case 79:
+      case 111:
+         return jjMoveStringLiteralDfa6_0(active1, 0x2000L);
+      case 82:
+      case 114:
+         return jjMoveStringLiteralDfa6_0(active1, 0x410L);
+      case 83:
+      case 115:
+         return jjMoveStringLiteralDfa6_0(active1, 0x28L);
+      case 84:
+      case 116:
+         if ((active1 & 0x1000L) != 0L)
+         {
+            jjmatchedKind = 76;
+            jjmatchedPos = 5;
+         }
+         return jjMoveStringLiteralDfa6_0(active1, 0x8000L);
+      default :
+         break;
+   }
+   return jjMoveNfa_0(7, 5);
+}
+private final int jjMoveStringLiteralDfa6_0(long old1, long active1)
+{
+   if (((active1 &= old1)) == 0L)
+      return jjMoveNfa_0(7, 5);
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) {
+   return jjMoveNfa_0(7, 5);
+   }
+   switch(curChar)
+   {
+      case 45:
+         return jjMoveStringLiteralDfa7_0(active1, 0x400L);
+      case 69:
+      case 101:
+         return jjMoveStringLiteralDfa7_0(active1, 0x8008L);
+      case 70:
+      case 102:
+         return jjMoveStringLiteralDfa7_0(active1, 0x100L);
+      case 77:
+      case 109:
+         if ((active1 & 0x2000L) != 0L)
+         {
+            jjmatchedKind = 77;
+            jjmatchedPos = 6;
+         }
+         break;
+      case 80:
+      case 112:
+         return jjMoveStringLiteralDfa7_0(active1, 0x20L);
+      case 82:
+      case 114:
+         return jjMoveStringLiteralDfa7_0(active1, 0x200L);
+      case 84:
+      case 116:
+         if ((active1 & 0x10L) != 0L)
+         {
+            jjmatchedKind = 68;
+            jjmatchedPos = 6;
+         }
+         return jjMoveStringLiteralDfa7_0(active1, 0x10000L);
+      default :
+         break;
+   }
+   return jjMoveNfa_0(7, 6);
+}
+private final int jjMoveStringLiteralDfa7_0(long old1, long active1)
+{
+   if (((active1 &= old1)) == 0L)
+      return jjMoveNfa_0(7, 6);
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) {
+   return jjMoveNfa_0(7, 6);
+   }
+   switch(curChar)
+   {
+      case 65:
+      case 97:
+         return jjMoveStringLiteralDfa8_0(active1, 0x120L);
+      case 69:
+      case 101:
+         return jjMoveStringLiteralDfa8_0(active1, 0x200L);
+      case 73:
+      case 105:
+         return jjMoveStringLiteralDfa8_0(active1, 0x10000L);
+      case 80:
+      case 112:
+         return jjMoveStringLiteralDfa8_0(active1, 0x400L);
+      case 82:
+      case 114:
+         if ((active1 & 0x8000L) != 0L)
+         {
+            jjmatchedKind = 79;
+            jjmatchedPos = 7;
+         }
+         break;
+      case 84:
+      case 116:
+         if ((active1 & 0x8L) != 0L)
+         {
+            jjmatchedKind = 67;
+            jjmatchedPos = 7;
+         }
+         break;
+      default :
+         break;
+   }
+   return jjMoveNfa_0(7, 7);
+}
+private final int jjMoveStringLiteralDfa8_0(long old1, long active1)
+{
+   if (((active1 &= old1)) == 0L)
+      return jjMoveNfa_0(7, 7);
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) {
+   return jjMoveNfa_0(7, 7);
+   }
+   switch(curChar)
+   {
+      case 67:
+      case 99:
+         return jjMoveStringLiteralDfa9_0(active1, 0x10120L);
+      case 78:
+      case 110:
+         return jjMoveStringLiteralDfa9_0(active1, 0x200L);
+      case 82:
+      case 114:
+         return jjMoveStringLiteralDfa9_0(active1, 0x400L);
+      default :
+         break;
+   }
+   return jjMoveNfa_0(7, 8);
+}
+private final int jjMoveStringLiteralDfa9_0(long old1, long active1)
+{
+   if (((active1 &= old1)) == 0L)
+      return jjMoveNfa_0(7, 8);
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) {
+   return jjMoveNfa_0(7, 8);
+   }
+   switch(curChar)
+   {
+      case 45:
+         return jjMoveStringLiteralDfa10_0(active1, 0x10000L);
+      case 67:
+      case 99:
+         return jjMoveStringLiteralDfa10_0(active1, 0x200L);
+      case 69:
+      case 101:
+         if ((active1 & 0x20L) != 0L)
+         {
+            jjmatchedKind = 69;
+            jjmatchedPos = 9;
+         }
+         else if ((active1 & 0x100L) != 0L)
+         {
+            jjmatchedKind = 72;
+            jjmatchedPos = 9;
+         }
+         break;
+      case 79:
+      case 111:
+         return jjMoveStringLiteralDfa10_0(active1, 0x400L);
+      default :
+         break;
+   }
+   return jjMoveNfa_0(7, 9);
+}
+private final int jjMoveStringLiteralDfa10_0(long old1, long active1)
+{
+   if (((active1 &= old1)) == 0L)
+      return jjMoveNfa_0(7, 9);
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) {
+   return jjMoveNfa_0(7, 9);
+   }
+   switch(curChar)
+   {
+      case 65:
+      case 97:
+         return jjMoveStringLiteralDfa11_0(active1, 0x10000L);
+      case 69:
+      case 101:
+         if ((active1 & 0x200L) != 0L)
+         {
+            jjmatchedKind = 73;
+            jjmatchedPos = 10;
+         }
+         break;
+      case 70:
+      case 102:
+         return jjMoveStringLiteralDfa11_0(active1, 0x400L);
+      default :
+         break;
+   }
+   return jjMoveNfa_0(7, 10);
+}
+private final int jjMoveStringLiteralDfa11_0(long old1, long active1)
+{
+   if (((active1 &= old1)) == 0L)
+      return jjMoveNfa_0(7, 10);
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) {
+   return jjMoveNfa_0(7, 10);
+   }
+   switch(curChar)
+   {
+      case 73:
+      case 105:
+         return jjMoveStringLiteralDfa12_0(active1, 0x400L);
+      case 76:
+      case 108:
+         return jjMoveStringLiteralDfa12_0(active1, 0x10000L);
+      default :
+         break;
+   }
+   return jjMoveNfa_0(7, 11);
+}
+private final int jjMoveStringLiteralDfa12_0(long old1, long active1)
+{
+   if (((active1 &= old1)) == 0L)
+      return jjMoveNfa_0(7, 11);
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) {
+   return jjMoveNfa_0(7, 11);
+   }
+   switch(curChar)
+   {
+      case 76:
+      case 108:
+         return jjMoveStringLiteralDfa13_0(active1, 0x400L);
+      case 80:
+      case 112:
+         return jjMoveStringLiteralDfa13_0(active1, 0x10000L);
+      default :
+         break;
+   }
+   return jjMoveNfa_0(7, 12);
+}
+private final int jjMoveStringLiteralDfa13_0(long old1, long active1)
+{
+   if (((active1 &= old1)) == 0L)
+      return jjMoveNfa_0(7, 12);
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) {
+   return jjMoveNfa_0(7, 12);
+   }
+   switch(curChar)
+   {
+      case 69:
+      case 101:
+         if ((active1 & 0x400L) != 0L)
+         {
+            jjmatchedKind = 74;
+            jjmatchedPos = 13;
+         }
+         break;
+      case 72:
+      case 104:
+         return jjMoveStringLiteralDfa14_0(active1, 0x10000L);
+      default :
+         break;
+   }
+   return jjMoveNfa_0(7, 13);
+}
+private final int jjMoveStringLiteralDfa14_0(long old1, long active1)
+{
+   if (((active1 &= old1)) == 0L)
+      return jjMoveNfa_0(7, 13);
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) {
+   return jjMoveNfa_0(7, 13);
+   }
+   switch(curChar)
+   {
+      case 65:
+      case 97:
+         return jjMoveStringLiteralDfa15_0(active1, 0x10000L);
+      default :
+         break;
+   }
+   return jjMoveNfa_0(7, 14);
+}
+private final int jjMoveStringLiteralDfa15_0(long old1, long active1)
+{
+   if (((active1 &= old1)) == 0L)
+      return jjMoveNfa_0(7, 14);
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) {
+   return jjMoveNfa_0(7, 14);
+   }
+   switch(curChar)
+   {
+      case 66:
+      case 98:
+         return jjMoveStringLiteralDfa16_0(active1, 0x10000L);
+      default :
+         break;
+   }
+   return jjMoveNfa_0(7, 15);
+}
+private final int jjMoveStringLiteralDfa16_0(long old1, long active1)
+{
+   if (((active1 &= old1)) == 0L)
+      return jjMoveNfa_0(7, 15);
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) {
+   return jjMoveNfa_0(7, 15);
+   }
+   switch(curChar)
+   {
+      case 69:
+      case 101:
+         return jjMoveStringLiteralDfa17_0(active1, 0x10000L);
+      default :
+         break;
+   }
+   return jjMoveNfa_0(7, 16);
+}
+private final int jjMoveStringLiteralDfa17_0(long old1, long active1)
+{
+   if (((active1 &= old1)) == 0L)
+      return jjMoveNfa_0(7, 16);
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) {
+   return jjMoveNfa_0(7, 16);
+   }
+   switch(curChar)
+   {
+      case 84:
+      case 116:
+         if ((active1 & 0x10000L) != 0L)
+         {
+            jjmatchedKind = 80;
+            jjmatchedPos = 17;
+         }
+         break;
+      default :
+         break;
+   }
+   return jjMoveNfa_0(7, 17);
+}
+private final void jjCheckNAdd(int state)
+{
+   if (jjrounds[state] != jjround)
+   {
+      jjstateSet[jjnewStateCnt++] = state;
+      jjrounds[state] = jjround;
+   }
+}
+private final void jjAddStates(int start, int end)
+{
+   do {
+      jjstateSet[jjnewStateCnt++] = jjnextStates[start];
+   } while (start++ != end);
+}
+private final void jjCheckNAddTwoStates(int state1, int state2)
+{
+   jjCheckNAdd(state1);
+   jjCheckNAdd(state2);
+}
+private final void jjCheckNAddStates(int start, int end)
+{
+   do {
+      jjCheckNAdd(jjnextStates[start]);
+   } while (start++ != end);
+}
+private final void jjCheckNAddStates(int start)
+{
+   jjCheckNAdd(jjnextStates[start]);
+   jjCheckNAdd(jjnextStates[start + 1]);
+}
+static final long[] jjbitVec0 = {
+   0xfffffffffffffffeL, 0xffffffffffffffffL, 0xffffffffffffffffL, 0xffffffffffffffffL
+};
+static final long[] jjbitVec2 = {
+   0x0L, 0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL
+};
+private final int jjMoveNfa_0(int startState, int curPos)
+{
+   int strKind = jjmatchedKind;
+   int strPos = jjmatchedPos;
+   int seenUpto;
+   input_stream.backup(seenUpto = curPos + 1);
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) { throw new Error("Internal Error"); }
+   curPos = 0;
+   int[] nextStates;
+   int startsAt = 0;
+   jjnewStateCnt = 728;
+   int i = 1;
+   jjstateSet[0] = startState;
+   int j, kind = 0x7fffffff;
+   for (;;)
+   {
+      if (++jjround == 0x7fffffff)
+         ReInitRounds();
+      if (curChar < 64)
+      {
+         long l = 1L << curChar;
+         MatchLoop: do
+         {
+            switch(jjstateSet[--i])
+            {
+               case 7:
+                  if ((0x3ff000000000000L & l) != 0L)
+                  {
+                     if (kind > 64)
+                        kind = 64;
+                     jjCheckNAddStates(0, 78);
+                  }
+                  else if ((0x100003600L & l) != 0L)
+                  {
+                     if (kind > 21)
+                        kind = 21;
+                     jjCheckNAddStates(79, 98);
+                  }
+                  else if (curChar == 46)
+                     jjCheckNAddStates(99, 120);
+                  else if (curChar == 35)
+                     jjCheckNAddStates(121, 125);
+                  else if (curChar == 45)
+                     jjAddStates(126, 129);
+                  else if (curChar == 39)
+                  {
+                     if (kind > 33)
+                        kind = 33;
+                     jjCheckNAddStates(130, 134);
+                  }
+                  else if (curChar == 34)
+                  {
+                     if (kind > 33)
+                        kind = 33;
+                     jjCheckNAddStates(135, 139);
+                  }
+                  else if (curChar == 60)
+                     jjstateSet[jjnewStateCnt++] = 189;
+                  else if (curChar == 33)
+                     jjCheckNAddTwoStates(20, 37);
+                  else if (curChar == 44)
+                  {
+                     if (kind > 29)
+                        kind = 29;
+                  }
+                  else if (curChar == 62)
+                  {
+                     if (kind > 28)
+                        kind = 28;
+                  }
+                  else if (curChar == 43)
+                  {
+                     if (kind > 27)
+                        kind = 27;
+                  }
+                  else if (curChar == 47)
+                     jjstateSet[jjnewStateCnt++] = 0;
+                  if (curChar == 60)
+                     jjCheckNAddStates(140, 143);
+                  break;
+               case 0:
+                  if (curChar == 42)
+                     jjCheckNAddTwoStates(1, 2);
+                  break;
+               case 1:
+                  if ((0xfffffbffffffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(1, 2);
+                  break;
+               case 2:
+                  if (curChar == 42)
+                     jjCheckNAddStates(144, 146);
+                  break;
+               case 3:
+                  if ((0xffff7bffffffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(4, 5);
+                  break;
+               case 4:
+                  if ((0xfffffbffffffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(4, 5);
+                  break;
+               case 5:
+                  if (curChar == 42)
+                     jjCheckNAddStates(147, 149);
+                  break;
+               case 6:
+                  if (curChar == 47 && kind > 1)
+                     kind = 1;
+                  break;
+               case 9:
+                  if (curChar == 43 && kind > 27)
+                     kind = 27;
+                  break;
+               case 10:
+                  if (curChar == 62 && kind > 28)
+                     kind = 28;
+                  break;
+               case 11:
+                  if (curChar == 44 && kind > 29)
+                     kind = 29;
+                  break;
+               case 19:
+                  if (curChar == 33)
+                     jjCheckNAddTwoStates(20, 37);
+                  break;
+               case 20:
+                  if ((0x100003600L & l) != 0L)
+                     jjCheckNAddStates(150, 152);
+                  break;
+               case 21:
+                  if (curChar == 42)
+                     jjCheckNAddTwoStates(22, 23);
+                  break;
+               case 22:
+                  if ((0xfffffbffffffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(22, 23);
+                  break;
+               case 23:
+                  if (curChar == 42)
+                     jjCheckNAddStates(153, 155);
+                  break;
+               case 24:
+                  if ((0xffff7bffffffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(25, 26);
+                  break;
+               case 25:
+                  if ((0xfffffbffffffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(25, 26);
+                  break;
+               case 26:
+                  if (curChar == 42)
+                     jjCheckNAddStates(156, 158);
+                  break;
+               case 27:
+                  if (curChar == 47)
+                     jjCheckNAddStates(150, 152);
+                  break;
+               case 28:
+                  if (curChar == 47)
+                     jjstateSet[jjnewStateCnt++] = 21;
+                  break;
+               case 39:
+                  if (curChar == 45)
+                     jjAddStates(159, 160);
+                  break;
+               case 41:
+                  if ((0x3ff200000000000L & l) == 0L)
+                     break;
+                  if (kind > 81)
+                     kind = 81;
+                  jjCheckNAddTwoStates(41, 42);
+                  break;
+               case 43:
+                  if ((0xfc00ffffffffcbffL & l) == 0L)
+                     break;
+                  if (kind > 81)
+                     kind = 81;
+                  jjCheckNAddTwoStates(41, 42);
+                  break;
+               case 44:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 81)
+                     kind = 81;
+                  jjCheckNAddStates(161, 165);
+                  break;
+               case 45:
+                  if (curChar != 10)
+                     break;
+                  if (kind > 81)
+                     kind = 81;
+                  jjCheckNAddTwoStates(41, 42);
+                  break;
+               case 46:
+               case 55:
+                  if (curChar == 13)
+                     jjCheckNAdd(45);
+                  break;
+               case 47:
+                  if ((0x100003600L & l) == 0L)
+                     break;
+                  if (kind > 81)
+                     kind = 81;
+                  jjCheckNAddTwoStates(41, 42);
+                  break;
+               case 48:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 81)
+                     kind = 81;
+                  jjCheckNAddStates(166, 173);
+                  break;
+               case 49:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 81)
+                     kind = 81;
+                  jjCheckNAddStates(174, 177);
+                  break;
+               case 50:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 81)
+                     kind = 81;
+                  jjCheckNAddStates(178, 182);
+                  break;
+               case 51:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 81)
+                     kind = 81;
+                  jjCheckNAddStates(183, 188);
+                  break;
+               case 52:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 81)
+                     kind = 81;
+                  jjCheckNAddStates(189, 195);
+                  break;
+               case 54:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 81)
+                     kind = 81;
+                  jjCheckNAddStates(196, 200);
+                  break;
+               case 56:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 81)
+                     kind = 81;
+                  jjCheckNAddStates(201, 208);
+                  break;
+               case 57:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 81)
+                     kind = 81;
+                  jjCheckNAddStates(209, 212);
+                  break;
+               case 58:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 81)
+                     kind = 81;
+                  jjCheckNAddStates(213, 217);
+                  break;
+               case 59:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 81)
+                     kind = 81;
+                  jjCheckNAddStates(218, 223);
+                  break;
+               case 60:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 81)
+                     kind = 81;
+                  jjCheckNAddStates(224, 230);
+                  break;
+               case 61:
+                  if (curChar == 60)
+                     jjCheckNAddStates(140, 143);
+                  break;
+               case 62:
+                  if ((0x100003600L & l) != 0L)
+                     jjCheckNAddStates(231, 235);
+                  break;
+               case 63:
+                  if (curChar == 42)
+                     jjCheckNAddTwoStates(64, 65);
+                  break;
+               case 64:
+                  if ((0xfffffbffffffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(64, 65);
+                  break;
+               case 65:
+                  if (curChar == 42)
+                     jjCheckNAddStates(236, 238);
+                  break;
+               case 66:
+                  if ((0xffff7bffffffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(67, 68);
+                  break;
+               case 67:
+                  if ((0xfffffbffffffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(67, 68);
+                  break;
+               case 68:
+                  if (curChar == 42)
+                     jjCheckNAddStates(239, 241);
+                  break;
+               case 69:
+                  if (curChar == 47)
+                     jjCheckNAddStates(231, 235);
+                  break;
+               case 70:
+                  if (curChar == 47)
+                     jjstateSet[jjnewStateCnt++] = 63;
+                  break;
+               case 71:
+                  if (curChar == 45)
+                     jjCheckNAddTwoStates(72, 181);
+                  break;
+               case 73:
+                  if ((0x3ff200000000000L & l) != 0L)
+                     jjCheckNAddStates(242, 247);
+                  break;
+               case 74:
+                  if ((0x100003600L & l) != 0L)
+                     jjCheckNAddStates(248, 253);
+                  break;
+               case 75:
+                  if (curChar == 42)
+                     jjCheckNAddTwoStates(76, 77);
+                  break;
+               case 76:
+                  if ((0xfffffbffffffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(76, 77);
+                  break;
+               case 77:
+                  if (curChar == 42)
+                     jjCheckNAddStates(254, 256);
+                  break;
+               case 78:
+                  if ((0xffff7bffffffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(79, 80);
+                  break;
+               case 79:
+                  if ((0xfffffbffffffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(79, 80);
+                  break;
+               case 80:
+                  if (curChar == 42)
+                     jjCheckNAddStates(257, 259);
+                  break;
+               case 81:
+                  if (curChar == 47)
+                     jjCheckNAddStates(248, 253);
+                  break;
+               case 82:
+                  if (curChar == 47)
+                     jjstateSet[jjnewStateCnt++] = 75;
+                  break;
+               case 83:
+                  if (curChar == 45)
+                     jjCheckNAddTwoStates(84, 100);
+                  break;
+               case 85:
+                  if ((0x3ff200000000000L & l) != 0L)
+                     jjCheckNAddStates(260, 262);
+                  break;
+               case 86:
+                  if (curChar == 61)
+                     jjCheckNAddStates(263, 267);
+                  break;
+               case 87:
+                  if (curChar == 45)
+                     jjCheckNAddTwoStates(88, 130);
+                  break;
+               case 89:
+                  if ((0x3ff200000000000L & l) != 0L)
+                     jjCheckNAddStates(268, 273);
+                  break;
+               case 90:
+                  if ((0x100003600L & l) != 0L)
+                     jjCheckNAddStates(274, 279);
+                  break;
+               case 91:
+                  if (curChar == 42)
+                     jjCheckNAddTwoStates(92, 93);
+                  break;
+               case 92:
+                  if ((0xfffffbffffffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(92, 93);
+                  break;
+               case 93:
+                  if (curChar == 42)
+                     jjCheckNAddStates(280, 282);
+                  break;
+               case 94:
+                  if ((0xffff7bffffffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(95, 96);
+                  break;
+               case 95:
+                  if ((0xfffffbffffffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(95, 96);
+                  break;
+               case 96:
+                  if (curChar == 42)
+                     jjCheckNAddStates(283, 285);
+                  break;
+               case 97:
+                  if (curChar == 47)
+                     jjCheckNAddStates(274, 279);
+                  break;
+               case 98:
+                  if (curChar == 47)
+                     jjstateSet[jjnewStateCnt++] = 91;
+                  break;
+               case 99:
+                  if (curChar == 62 && kind > 96)
+                     kind = 96;
+                  break;
+               case 101:
+                  if ((0xfc00ffffffffcbffL & l) != 0L)
+                     jjCheckNAddStates(260, 262);
+                  break;
+               case 103:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(286, 291);
+                  break;
+               case 104:
+                  if (curChar == 10)
+                     jjCheckNAddStates(260, 262);
+                  break;
+               case 105:
+               case 113:
+                  if (curChar == 13)
+                     jjCheckNAdd(104);
+                  break;
+               case 106:
+                  if ((0x100003600L & l) != 0L)
+                     jjCheckNAddStates(260, 262);
+                  break;
+               case 107:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(292, 300);
+                  break;
+               case 108:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(301, 305);
+                  break;
+               case 109:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(306, 311);
+                  break;
+               case 110:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(312, 318);
+                  break;
+               case 111:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(319, 326);
+                  break;
+               case 112:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(327, 332);
+                  break;
+               case 114:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(333, 341);
+                  break;
+               case 115:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(342, 346);
+                  break;
+               case 116:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(347, 352);
+                  break;
+               case 117:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(353, 359);
+                  break;
+               case 118:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(360, 367);
+                  break;
+               case 120:
+                  if ((0xfc00ffffffffcbffL & l) != 0L)
+                     jjCheckNAddStates(268, 273);
+                  break;
+               case 121:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(368, 375);
+                  break;
+               case 122:
+                  if (curChar == 10)
+                     jjCheckNAddStates(268, 273);
+                  break;
+               case 123:
+               case 132:
+                  if (curChar == 13)
+                     jjCheckNAdd(122);
+                  break;
+               case 124:
+                  if ((0x100003600L & l) != 0L)
+                     jjCheckNAddStates(376, 384);
+                  break;
+               case 125:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(385, 395);
+                  break;
+               case 126:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(396, 402);
+                  break;
+               case 127:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(403, 410);
+                  break;
+               case 128:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(411, 419);
+                  break;
+               case 129:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(420, 429);
+                  break;
+               case 131:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(430, 437);
+                  break;
+               case 133:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(438, 448);
+                  break;
+               case 134:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(449, 455);
+                  break;
+               case 135:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(456, 463);
+                  break;
+               case 136:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(464, 472);
+                  break;
+               case 137:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(473, 482);
+                  break;
+               case 138:
+                  if (curChar == 34)
+                     jjCheckNAddStates(483, 485);
+                  break;
+               case 139:
+                  if ((0xfffffffbffffcbffL & l) != 0L)
+                     jjCheckNAddStates(483, 485);
+                  break;
+               case 140:
+                  if (curChar == 34)
+                     jjCheckNAddStates(486, 490);
+                  break;
+               case 142:
+                  if ((0x3400L & l) != 0L)
+                     jjCheckNAddStates(483, 485);
+                  break;
+               case 143:
+                  if (curChar == 10)
+                     jjCheckNAddStates(483, 485);
+                  break;
+               case 144:
+               case 147:
+                  if (curChar == 13)
+                     jjCheckNAdd(143);
+                  break;
+               case 145:
+                  if ((0xfc00ffffffffcbffL & l) != 0L)
+                     jjCheckNAddStates(483, 485);
+                  break;
+               case 146:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(491, 496);
+                  break;
+               case 148:
+                  if ((0x100003600L & l) != 0L)
+                     jjCheckNAddStates(483, 485);
+                  break;
+               case 149:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(497, 505);
+                  break;
+               case 150:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(506, 510);
+                  break;
+               case 151:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(511, 516);
+                  break;
+               case 152:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(517, 523);
+                  break;
+               case 153:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(524, 531);
+                  break;
+               case 154:
+                  if (curChar == 39)
+                     jjCheckNAddStates(532, 534);
+                  break;
+               case 155:
+                  if ((0xffffff7fffffcbffL & l) != 0L)
+                     jjCheckNAddStates(532, 534);
+                  break;
+               case 156:
+                  if (curChar == 39)
+                     jjCheckNAddStates(486, 490);
+                  break;
+               case 158:
+                  if ((0x3400L & l) != 0L)
+                     jjCheckNAddStates(532, 534);
+                  break;
+               case 159:
+                  if (curChar == 10)
+                     jjCheckNAddStates(532, 534);
+                  break;
+               case 160:
+               case 163:
+                  if (curChar == 13)
+                     jjCheckNAdd(159);
+                  break;
+               case 161:
+                  if ((0xfc00ffffffffcbffL & l) != 0L)
+                     jjCheckNAddStates(532, 534);
+                  break;
+               case 162:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(535, 540);
+                  break;
+               case 164:
+                  if ((0x100003600L & l) != 0L)
+                     jjCheckNAddStates(532, 534);
+                  break;
+               case 165:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(541, 549);
+                  break;
+               case 166:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(550, 554);
+                  break;
+               case 167:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(555, 560);
+                  break;
+               case 168:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(561, 567);
+                  break;
+               case 169:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(568, 575);
+                  break;
+               case 171:
+                  if ((0xfc00ffffffffcbffL & l) != 0L)
+                     jjCheckNAddStates(242, 247);
+                  break;
+               case 172:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(576, 583);
+                  break;
+               case 173:
+                  if (curChar == 10)
+                     jjCheckNAddStates(242, 247);
+                  break;
+               case 174:
+               case 183:
+                  if (curChar == 13)
+                     jjCheckNAdd(173);
+                  break;
+               case 175:
+                  if ((0x100003600L & l) != 0L)
+                     jjCheckNAddStates(584, 592);
+                  break;
+               case 176:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(593, 603);
+                  break;
+               case 177:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(604, 610);
+                  break;
+               case 178:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(611, 618);
+                  break;
+               case 179:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(619, 627);
+                  break;
+               case 180:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(628, 637);
+                  break;
+               case 182:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(638, 645);
+                  break;
+               case 184:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(646, 656);
+                  break;
+               case 185:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(657, 663);
+                  break;
+               case 186:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(664, 671);
+                  break;
+               case 187:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(672, 680);
+                  break;
+               case 188:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(681, 690);
+                  break;
+               case 189:
+                  if (curChar == 47)
+                     jjCheckNAddStates(691, 694);
+                  break;
+               case 190:
+                  if ((0x100003600L & l) != 0L)
+                     jjCheckNAddStates(695, 699);
+                  break;
+               case 191:
+                  if (curChar == 42)
+                     jjCheckNAddTwoStates(192, 193);
+                  break;
+               case 192:
+                  if ((0xfffffbffffffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(192, 193);
+                  break;
+               case 193:
+                  if (curChar == 42)
+                     jjCheckNAddStates(700, 702);
+                  break;
+               case 194:
+                  if ((0xffff7bffffffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(195, 196);
+                  break;
+               case 195:
+                  if ((0xfffffbffffffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(195, 196);
+                  break;
+               case 196:
+                  if (curChar == 42)
+                     jjCheckNAddStates(703, 705);
+                  break;
+               case 197:
+                  if (curChar == 47)
+                     jjCheckNAddStates(695, 699);
+                  break;
+               case 198:
+                  if (curChar == 47)
+                     jjstateSet[jjnewStateCnt++] = 191;
+                  break;
+               case 199:
+                  if (curChar == 45)
+                     jjCheckNAddTwoStates(200, 223);
+                  break;
+               case 201:
+                  if ((0x3ff200000000000L & l) != 0L)
+                     jjCheckNAddStates(706, 709);
+                  break;
+               case 202:
+                  if ((0x100003600L & l) != 0L)
+                     jjCheckNAddStates(710, 712);
+                  break;
+               case 203:
+                  if (curChar == 42)
+                     jjCheckNAddTwoStates(204, 205);
+                  break;
+               case 204:
+                  if ((0xfffffbffffffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(204, 205);
+                  break;
+               case 205:
+                  if (curChar == 42)
+                     jjCheckNAddStates(713, 715);
+                  break;
+               case 206:
+                  if ((0xffff7bffffffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(207, 208);
+                  break;
+               case 207:
+                  if ((0xfffffbffffffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(207, 208);
+                  break;
+               case 208:
+                  if (curChar == 42)
+                     jjCheckNAddStates(716, 718);
+                  break;
+               case 209:
+                  if (curChar == 47)
+                     jjCheckNAddStates(710, 712);
+                  break;
+               case 210:
+                  if (curChar == 47)
+                     jjstateSet[jjnewStateCnt++] = 203;
+                  break;
+               case 211:
+                  if (curChar == 62 && kind > 97)
+                     kind = 97;
+                  break;
+               case 213:
+                  if ((0xfc00ffffffffcbffL & l) != 0L)
+                     jjCheckNAddStates(706, 709);
+                  break;
+               case 214:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(719, 724);
+                  break;
+               case 215:
+                  if (curChar == 10)
+                     jjCheckNAddStates(706, 709);
+                  break;
+               case 216:
+               case 225:
+                  if (curChar == 13)
+                     jjCheckNAdd(215);
+                  break;
+               case 217:
+                  if ((0x100003600L & l) != 0L)
+                     jjCheckNAddStates(725, 730);
+                  break;
+               case 218:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(731, 739);
+                  break;
+               case 219:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(740, 744);
+                  break;
+               case 220:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(745, 750);
+                  break;
+               case 221:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(751, 757);
+                  break;
+               case 222:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(758, 765);
+                  break;
+               case 224:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(766, 771);
+                  break;
+               case 226:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(772, 780);
+                  break;
+               case 227:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(781, 785);
+                  break;
+               case 228:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(786, 791);
+                  break;
+               case 229:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(792, 798);
+                  break;
+               case 230:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(799, 806);
+                  break;
+               case 231:
+                  if (curChar == 60)
+                     jjstateSet[jjnewStateCnt++] = 189;
+                  break;
+               case 232:
+                  if ((0x100003600L & l) == 0L)
+                     break;
+                  if (kind > 21)
+                     kind = 21;
+                  jjCheckNAddStates(79, 98);
+                  break;
+               case 233:
+                  if (curChar == 42)
+                     jjCheckNAddTwoStates(234, 235);
+                  break;
+               case 234:
+                  if ((0xfffffbffffffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(234, 235);
+                  break;
+               case 235:
+                  if (curChar == 42)
+                     jjCheckNAddStates(807, 809);
+                  break;
+               case 236:
+                  if ((0xffff7bffffffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(237, 238);
+                  break;
+               case 237:
+                  if ((0xfffffbffffffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(237, 238);
+                  break;
+               case 238:
+                  if (curChar == 42)
+                     jjCheckNAddStates(810, 812);
+                  break;
+               case 239:
+                  if (curChar != 47)
+                     break;
+                  if (kind > 21)
+                     kind = 21;
+                  jjCheckNAddTwoStates(240, 241);
+                  break;
+               case 240:
+                  if (curChar == 47)
+                     jjstateSet[jjnewStateCnt++] = 233;
+                  break;
+               case 241:
+                  if ((0x100003600L & l) == 0L)
+                     break;
+                  if (kind > 21)
+                     kind = 21;
+                  jjCheckNAddTwoStates(240, 241);
+                  break;
+               case 242:
+                  if (curChar == 42)
+                     jjCheckNAddTwoStates(243, 244);
+                  break;
+               case 243:
+                  if ((0xfffffbffffffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(243, 244);
+                  break;
+               case 244:
+                  if (curChar == 42)
+                     jjCheckNAddStates(813, 815);
+                  break;
+               case 245:
+                  if ((0xffff7bffffffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(246, 247);
+                  break;
+               case 246:
+                  if ((0xfffffbffffffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(246, 247);
+                  break;
+               case 247:
+                  if (curChar == 42)
+                     jjCheckNAddStates(816, 818);
+                  break;
+               case 248:
+                  if (curChar == 47)
+                     jjCheckNAddStates(819, 821);
+                  break;
+               case 249:
+                  if (curChar == 47)
+                     jjstateSet[jjnewStateCnt++] = 242;
+                  break;
+               case 250:
+                  if ((0x100003600L & l) != 0L)
+                     jjCheckNAddStates(819, 821);
+                  break;
+               case 252:
+                  if (curChar == 61 && kind > 24)
+                     kind = 24;
+                  break;
+               case 253:
+                  if (curChar == 42)
+                     jjCheckNAddTwoStates(254, 255);
+                  break;
+               case 254:
+                  if ((0xfffffbffffffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(254, 255);
+                  break;
+               case 255:
+                  if (curChar == 42)
+                     jjCheckNAddStates(822, 824);
+                  break;
+               case 256:
+                  if ((0xffff7bffffffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(257, 258);
+                  break;
+               case 257:
+                  if ((0xfffffbffffffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(257, 258);
+                  break;
+               case 258:
+                  if (curChar == 42)
+                     jjCheckNAddStates(825, 827);
+                  break;
+               case 259:
+                  if (curChar == 47)
+                     jjCheckNAddStates(828, 830);
+                  break;
+               case 260:
+                  if (curChar == 47)
+                     jjstateSet[jjnewStateCnt++] = 253;
+                  break;
+               case 261:
+                  if ((0x100003600L & l) != 0L)
+                     jjCheckNAddStates(828, 830);
+                  break;
+               case 262:
+                  if (curChar == 42)
+                     jjCheckNAddTwoStates(263, 264);
+                  break;
+               case 263:
+                  if ((0xfffffbffffffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(263, 264);
+                  break;
+               case 264:
+                  if (curChar == 42)
+                     jjCheckNAddStates(831, 833);
+                  break;
+               case 265:
+                  if ((0xffff7bffffffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(266, 267);
+                  break;
+               case 266:
+                  if ((0xfffffbffffffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(266, 267);
+                  break;
+               case 267:
+                  if (curChar == 42)
+                     jjCheckNAddStates(834, 836);
+                  break;
+               case 268:
+                  if (curChar == 47)
+                     jjCheckNAddStates(837, 839);
+                  break;
+               case 269:
+                  if (curChar == 47)
+                     jjstateSet[jjnewStateCnt++] = 262;
+                  break;
+               case 270:
+                  if ((0x100003600L & l) != 0L)
+                     jjCheckNAddStates(837, 839);
+                  break;
+               case 271:
+                  if (curChar == 42)
+                     jjCheckNAddTwoStates(272, 273);
+                  break;
+               case 272:
+                  if ((0xfffffbffffffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(272, 273);
+                  break;
+               case 273:
+                  if (curChar == 42)
+                     jjCheckNAddStates(840, 842);
+                  break;
+               case 274:
+                  if ((0xffff7bffffffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(275, 276);
+                  break;
+               case 275:
+                  if ((0xfffffbffffffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(275, 276);
+                  break;
+               case 276:
+                  if (curChar == 42)
+                     jjCheckNAddStates(843, 845);
+                  break;
+               case 277:
+                  if (curChar == 47)
+                     jjCheckNAddStates(846, 848);
+                  break;
+               case 278:
+                  if (curChar == 47)
+                     jjstateSet[jjnewStateCnt++] = 271;
+                  break;
+               case 279:
+                  if ((0x100003600L & l) != 0L)
+                     jjCheckNAddStates(846, 848);
+                  break;
+               case 280:
+                  if (curChar == 42)
+                     jjCheckNAddTwoStates(281, 282);
+                  break;
+               case 281:
+                  if ((0xfffffbffffffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(281, 282);
+                  break;
+               case 282:
+                  if (curChar == 42)
+                     jjCheckNAddStates(849, 851);
+                  break;
+               case 283:
+                  if ((0xffff7bffffffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(284, 285);
+                  break;
+               case 284:
+                  if ((0xfffffbffffffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(284, 285);
+                  break;
+               case 285:
+                  if (curChar == 42)
+                     jjCheckNAddStates(852, 854);
+                  break;
+               case 286:
+                  if (curChar == 47)
+                     jjCheckNAddStates(855, 857);
+                  break;
+               case 287:
+                  if (curChar == 47)
+                     jjstateSet[jjnewStateCnt++] = 280;
+                  break;
+               case 288:
+                  if ((0x100003600L & l) != 0L)
+                     jjCheckNAddStates(855, 857);
+                  break;
+               case 289:
+                  if (curChar == 42)
+                     jjCheckNAddTwoStates(290, 291);
+                  break;
+               case 290:
+                  if ((0xfffffbffffffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(290, 291);
+                  break;
+               case 291:
+                  if (curChar == 42)
+                     jjCheckNAddStates(858, 860);
+                  break;
+               case 292:
+                  if ((0xffff7bffffffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(293, 294);
+                  break;
+               case 293:
+                  if ((0xfffffbffffffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(293, 294);
+                  break;
+               case 294:
+                  if (curChar == 42)
+                     jjCheckNAddStates(861, 863);
+                  break;
+               case 295:
+                  if (curChar == 47)
+                     jjCheckNAddStates(864, 866);
+                  break;
+               case 296:
+                  if (curChar == 47)
+                     jjstateSet[jjnewStateCnt++] = 289;
+                  break;
+               case 297:
+                  if ((0x100003600L & l) != 0L)
+                     jjCheckNAddStates(864, 866);
+                  break;
+               case 300:
+                  if (curChar != 34)
+                     break;
+                  if (kind > 33)
+                     kind = 33;
+                  jjCheckNAddStates(135, 139);
+                  break;
+               case 301:
+                  if ((0xfffffffbffffcbffL & l) != 0L)
+                     jjCheckNAddStates(867, 869);
+                  break;
+               case 302:
+                  if (curChar == 34 && kind > 32)
+                     kind = 32;
+                  break;
+               case 304:
+                  if ((0x3400L & l) != 0L)
+                     jjCheckNAddStates(867, 869);
+                  break;
+               case 305:
+                  if (curChar == 10)
+                     jjCheckNAddStates(867, 869);
+                  break;
+               case 306:
+               case 309:
+                  if (curChar == 13)
+                     jjCheckNAdd(305);
+                  break;
+               case 307:
+                  if ((0xfc00ffffffffcbffL & l) != 0L)
+                     jjCheckNAddStates(867, 869);
+                  break;
+               case 308:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(870, 875);
+                  break;
+               case 310:
+                  if ((0x100003600L & l) != 0L)
+                     jjCheckNAddStates(867, 869);
+                  break;
+               case 311:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(876, 884);
+                  break;
+               case 312:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(885, 889);
+                  break;
+               case 313:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(890, 895);
+                  break;
+               case 314:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(896, 902);
+                  break;
+               case 315:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(903, 910);
+                  break;
+               case 316:
+                  if ((0xfffffffbffffcbffL & l) == 0L)
+                     break;
+                  if (kind > 33)
+                     kind = 33;
+                  jjCheckNAddTwoStates(316, 317);
+                  break;
+               case 318:
+                  if ((0x3400L & l) == 0L)
+                     break;
+                  if (kind > 33)
+                     kind = 33;
+                  jjCheckNAddTwoStates(316, 317);
+                  break;
+               case 319:
+                  if (curChar != 10)
+                     break;
+                  if (kind > 33)
+                     kind = 33;
+                  jjCheckNAddTwoStates(316, 317);
+                  break;
+               case 320:
+               case 323:
+                  if (curChar == 13)
+                     jjCheckNAdd(319);
+                  break;
+               case 321:
+                  if ((0xfc00ffffffffcbffL & l) == 0L)
+                     break;
+                  if (kind > 33)
+                     kind = 33;
+                  jjCheckNAddTwoStates(316, 317);
+                  break;
+               case 322:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 33)
+                     kind = 33;
+                  jjCheckNAddStates(911, 915);
+                  break;
+               case 324:
+                  if ((0x100003600L & l) == 0L)
+                     break;
+                  if (kind > 33)
+                     kind = 33;
+                  jjCheckNAddTwoStates(316, 317);
+                  break;
+               case 325:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 33)
+                     kind = 33;
+                  jjCheckNAddStates(916, 923);
+                  break;
+               case 326:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 33)
+                     kind = 33;
+                  jjCheckNAddStates(924, 927);
+                  break;
+               case 327:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 33)
+                     kind = 33;
+                  jjCheckNAddStates(928, 932);
+                  break;
+               case 328:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 33)
+                     kind = 33;
+                  jjCheckNAddStates(933, 938);
+                  break;
+               case 329:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 33)
+                     kind = 33;
+                  jjCheckNAddStates(939, 945);
+                  break;
+               case 330:
+                  if (curChar != 39)
+                     break;
+                  if (kind > 33)
+                     kind = 33;
+                  jjCheckNAddStates(130, 134);
+                  break;
+               case 331:
+                  if ((0xffffff7fffffcbffL & l) != 0L)
+                     jjCheckNAddStates(946, 948);
+                  break;
+               case 332:
+                  if (curChar == 39 && kind > 32)
+                     kind = 32;
+                  break;
+               case 334:
+                  if ((0x3400L & l) != 0L)
+                     jjCheckNAddStates(946, 948);
+                  break;
+               case 335:
+                  if (curChar == 10)
+                     jjCheckNAddStates(946, 948);
+                  break;
+               case 336:
+               case 339:
+                  if (curChar == 13)
+                     jjCheckNAdd(335);
+                  break;
+               case 337:
+                  if ((0xfc00ffffffffcbffL & l) != 0L)
+                     jjCheckNAddStates(946, 948);
+                  break;
+               case 338:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(949, 954);
+                  break;
+               case 340:
+                  if ((0x100003600L & l) != 0L)
+                     jjCheckNAddStates(946, 948);
+                  break;
+               case 341:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(955, 963);
+                  break;
+               case 342:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(964, 968);
+                  break;
+               case 343:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(969, 974);
+                  break;
+               case 344:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(975, 981);
+                  break;
+               case 345:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(982, 989);
+                  break;
+               case 346:
+                  if ((0xffffff7fffffcbffL & l) == 0L)
+                     break;
+                  if (kind > 33)
+                     kind = 33;
+                  jjCheckNAddTwoStates(346, 347);
+                  break;
+               case 348:
+                  if ((0x3400L & l) == 0L)
+                     break;
+                  if (kind > 33)
+                     kind = 33;
+                  jjCheckNAddTwoStates(346, 347);
+                  break;
+               case 349:
+                  if (curChar != 10)
+                     break;
+                  if (kind > 33)
+                     kind = 33;
+                  jjCheckNAddTwoStates(346, 347);
+                  break;
+               case 350:
+               case 353:
+                  if (curChar == 13)
+                     jjCheckNAdd(349);
+                  break;
+               case 351:
+                  if ((0xfc00ffffffffcbffL & l) == 0L)
+                     break;
+                  if (kind > 33)
+                     kind = 33;
+                  jjCheckNAddTwoStates(346, 347);
+                  break;
+               case 352:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 33)
+                     kind = 33;
+                  jjCheckNAddStates(990, 994);
+                  break;
+               case 354:
+                  if ((0x100003600L & l) == 0L)
+                     break;
+                  if (kind > 33)
+                     kind = 33;
+                  jjCheckNAddTwoStates(346, 347);
+                  break;
+               case 355:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 33)
+                     kind = 33;
+                  jjCheckNAddStates(995, 1002);
+                  break;
+               case 356:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 33)
+                     kind = 33;
+                  jjCheckNAddStates(1003, 1006);
+                  break;
+               case 357:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 33)
+                     kind = 33;
+                  jjCheckNAddStates(1007, 1011);
+                  break;
+               case 358:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 33)
+                     kind = 33;
+                  jjCheckNAddStates(1012, 1017);
+                  break;
+               case 359:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 33)
+                     kind = 33;
+                  jjCheckNAddStates(1018, 1024);
+                  break;
+               case 360:
+                  if (curChar == 45)
+                     jjAddStates(126, 129);
+                  break;
+               case 362:
+                  if ((0x3ff200000000000L & l) == 0L)
+                     break;
+                  if (kind > 34)
+                     kind = 34;
+                  jjCheckNAddTwoStates(362, 363);
+                  break;
+               case 364:
+                  if ((0xfc00ffffffffcbffL & l) == 0L)
+                     break;
+                  if (kind > 34)
+                     kind = 34;
+                  jjCheckNAddTwoStates(362, 363);
+                  break;
+               case 365:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 34)
+                     kind = 34;
+                  jjCheckNAddStates(1025, 1029);
+                  break;
+               case 366:
+                  if (curChar != 10)
+                     break;
+                  if (kind > 34)
+                     kind = 34;
+                  jjCheckNAddTwoStates(362, 363);
+                  break;
+               case 367:
+               case 398:
+                  if (curChar == 13)
+                     jjCheckNAdd(366);
+                  break;
+               case 368:
+                  if ((0x100003600L & l) == 0L)
+                     break;
+                  if (kind > 34)
+                     kind = 34;
+                  jjCheckNAddTwoStates(362, 363);
+                  break;
+               case 369:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 34)
+                     kind = 34;
+                  jjCheckNAddStates(1030, 1037);
+                  break;
+               case 370:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 34)
+                     kind = 34;
+                  jjCheckNAddStates(1038, 1041);
+                  break;
+               case 371:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 34)
+                     kind = 34;
+                  jjCheckNAddStates(1042, 1046);
+                  break;
+               case 372:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 34)
+                     kind = 34;
+                  jjCheckNAddStates(1047, 1052);
+                  break;
+               case 373:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 34)
+                     kind = 34;
+                  jjCheckNAddStates(1053, 1059);
+                  break;
+               case 375:
+                  if ((0x3ff200000000000L & l) != 0L)
+                     jjCheckNAddStates(1060, 1062);
+                  break;
+               case 376:
+                  if (curChar == 40 && kind > 95)
+                     kind = 95;
+                  break;
+               case 378:
+                  if ((0xfc00ffffffffcbffL & l) != 0L)
+                     jjCheckNAddStates(1060, 1062);
+                  break;
+               case 379:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(1063, 1068);
+                  break;
+               case 380:
+                  if (curChar == 10)
+                     jjCheckNAddStates(1060, 1062);
+                  break;
+               case 381:
+               case 390:
+                  if (curChar == 13)
+                     jjCheckNAdd(380);
+                  break;
+               case 382:
+                  if ((0x100003600L & l) != 0L)
+                     jjCheckNAddStates(1060, 1062);
+                  break;
+               case 383:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(1069, 1077);
+                  break;
+               case 384:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(1078, 1082);
+                  break;
+               case 385:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(1083, 1088);
+                  break;
+               case 386:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(1089, 1095);
+                  break;
+               case 387:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(1096, 1103);
+                  break;
+               case 389:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(1104, 1109);
+                  break;
+               case 391:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(1110, 1118);
+                  break;
+               case 392:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(1119, 1123);
+                  break;
+               case 393:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(1124, 1129);
+                  break;
+               case 394:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(1130, 1136);
+                  break;
+               case 395:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(1137, 1144);
+                  break;
+               case 397:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 34)
+                     kind = 34;
+                  jjCheckNAddStates(1145, 1149);
+                  break;
+               case 399:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 34)
+                     kind = 34;
+                  jjCheckNAddStates(1150, 1157);
+                  break;
+               case 400:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 34)
+                     kind = 34;
+                  jjCheckNAddStates(1158, 1161);
+                  break;
+               case 401:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 34)
+                     kind = 34;
+                  jjCheckNAddStates(1162, 1166);
+                  break;
+               case 402:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 34)
+                     kind = 34;
+                  jjCheckNAddStates(1167, 1172);
+                  break;
+               case 403:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 34)
+                     kind = 34;
+                  jjCheckNAddStates(1173, 1179);
+                  break;
+               case 405:
+                  if (curChar == 35)
+                     jjCheckNAddStates(121, 125);
+                  break;
+               case 406:
+                  if (curChar == 45)
+                     jjCheckNAddTwoStates(407, 420);
+                  break;
+               case 408:
+                  if ((0x3ff200000000000L & l) == 0L)
+                     break;
+                  if (kind > 35)
+                     kind = 35;
+                  jjCheckNAddTwoStates(408, 409);
+                  break;
+               case 410:
+                  if ((0xfc00ffffffffcbffL & l) == 0L)
+                     break;
+                  if (kind > 35)
+                     kind = 35;
+                  jjCheckNAddTwoStates(408, 409);
+                  break;
+               case 411:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 35)
+                     kind = 35;
+                  jjCheckNAddStates(1180, 1184);
+                  break;
+               case 412:
+                  if (curChar != 10)
+                     break;
+                  if (kind > 35)
+                     kind = 35;
+                  jjCheckNAddTwoStates(408, 409);
+                  break;
+               case 413:
+               case 422:
+                  if (curChar == 13)
+                     jjCheckNAdd(412);
+                  break;
+               case 414:
+                  if ((0x100003600L & l) == 0L)
+                     break;
+                  if (kind > 35)
+                     kind = 35;
+                  jjCheckNAddTwoStates(408, 409);
+                  break;
+               case 415:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 35)
+                     kind = 35;
+                  jjCheckNAddStates(1185, 1192);
+                  break;
+               case 416:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 35)
+                     kind = 35;
+                  jjCheckNAddStates(1193, 1196);
+                  break;
+               case 417:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 35)
+                     kind = 35;
+                  jjCheckNAddStates(1197, 1201);
+                  break;
+               case 418:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 35)
+                     kind = 35;
+                  jjCheckNAddStates(1202, 1207);
+                  break;
+               case 419:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 35)
+                     kind = 35;
+                  jjCheckNAddStates(1208, 1214);
+                  break;
+               case 421:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 35)
+                     kind = 35;
+                  jjCheckNAddStates(1215, 1219);
+                  break;
+               case 423:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 35)
+                     kind = 35;
+                  jjCheckNAddStates(1220, 1227);
+                  break;
+               case 424:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 35)
+                     kind = 35;
+                  jjCheckNAddStates(1228, 1231);
+                  break;
+               case 425:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 35)
+                     kind = 35;
+                  jjCheckNAddStates(1232, 1236);
+                  break;
+               case 426:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 35)
+                     kind = 35;
+                  jjCheckNAddStates(1237, 1242);
+                  break;
+               case 427:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 35)
+                     kind = 35;
+                  jjCheckNAddStates(1243, 1249);
+                  break;
+               case 428:
+                  if ((0x3ff200000000000L & l) == 0L)
+                     break;
+                  if (kind > 36)
+                     kind = 36;
+                  jjCheckNAddTwoStates(428, 429);
+                  break;
+               case 430:
+                  if ((0xfc00ffffffffcbffL & l) == 0L)
+                     break;
+                  if (kind > 36)
+                     kind = 36;
+                  jjCheckNAddTwoStates(428, 429);
+                  break;
+               case 431:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 36)
+                     kind = 36;
+                  jjCheckNAddStates(1250, 1254);
+                  break;
+               case 432:
+                  if (curChar != 10)
+                     break;
+                  if (kind > 36)
+                     kind = 36;
+                  jjCheckNAddTwoStates(428, 429);
+                  break;
+               case 433:
+                  if (curChar == 13)
+                     jjstateSet[jjnewStateCnt++] = 432;
+                  break;
+               case 434:
+                  if ((0x100003600L & l) == 0L)
+                     break;
+                  if (kind > 36)
+                     kind = 36;
+                  jjCheckNAddTwoStates(428, 429);
+                  break;
+               case 435:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 36)
+                     kind = 36;
+                  jjCheckNAddStates(1255, 1262);
+                  break;
+               case 436:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 36)
+                     kind = 36;
+                  jjCheckNAddStates(1263, 1266);
+                  break;
+               case 437:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 36)
+                     kind = 36;
+                  jjCheckNAddStates(1267, 1271);
+                  break;
+               case 438:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 36)
+                     kind = 36;
+                  jjCheckNAddStates(1272, 1277);
+                  break;
+               case 439:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 36)
+                     kind = 36;
+                  jjCheckNAddStates(1278, 1284);
+                  break;
+               case 441:
+                  if (curChar == 40)
+                     jjCheckNAddStates(1285, 1290);
+                  break;
+               case 442:
+                  if (curChar == 34)
+                     jjCheckNAddStates(1291, 1293);
+                  break;
+               case 443:
+                  if ((0xfffffffbffffcbffL & l) != 0L)
+                     jjCheckNAddStates(1291, 1293);
+                  break;
+               case 444:
+                  if (curChar == 34)
+                     jjCheckNAddTwoStates(445, 454);
+                  break;
+               case 445:
+                  if ((0x100003600L & l) != 0L)
+                     jjCheckNAddStates(1294, 1296);
+                  break;
+               case 446:
+                  if (curChar == 42)
+                     jjCheckNAddTwoStates(447, 448);
+                  break;
+               case 447:
+                  if ((0xfffffbffffffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(447, 448);
+                  break;
+               case 448:
+                  if (curChar == 42)
+                     jjCheckNAddStates(1297, 1299);
+                  break;
+               case 449:
+                  if ((0xffff7bffffffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(450, 451);
+                  break;
+               case 450:
+                  if ((0xfffffbffffffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(450, 451);
+                  break;
+               case 451:
+                  if (curChar == 42)
+                     jjCheckNAddStates(1300, 1302);
+                  break;
+               case 452:
+                  if (curChar == 47)
+                     jjCheckNAddStates(1294, 1296);
+                  break;
+               case 453:
+                  if (curChar == 47)
+                     jjstateSet[jjnewStateCnt++] = 446;
+                  break;
+               case 454:
+                  if (curChar == 41 && kind > 53)
+                     kind = 53;
+                  break;
+               case 456:
+                  if ((0x3400L & l) != 0L)
+                     jjCheckNAddStates(1291, 1293);
+                  break;
+               case 457:
+                  if (curChar == 10)
+                     jjCheckNAddStates(1291, 1293);
+                  break;
+               case 458:
+               case 461:
+                  if (curChar == 13)
+                     jjCheckNAdd(457);
+                  break;
+               case 459:
+                  if ((0xfc00ffffffffcbffL & l) != 0L)
+                     jjCheckNAddStates(1291, 1293);
+                  break;
+               case 460:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(1303, 1308);
+                  break;
+               case 462:
+                  if ((0x100003600L & l) != 0L)
+                     jjCheckNAddStates(1291, 1293);
+                  break;
+               case 463:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(1309, 1317);
+                  break;
+               case 464:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(1318, 1322);
+                  break;
+               case 465:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(1323, 1328);
+                  break;
+               case 466:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(1329, 1335);
+                  break;
+               case 467:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(1336, 1343);
+                  break;
+               case 468:
+                  if (curChar == 39)
+                     jjCheckNAddStates(1344, 1346);
+                  break;
+               case 469:
+                  if ((0xffffff7fffffcbffL & l) != 0L)
+                     jjCheckNAddStates(1344, 1346);
+                  break;
+               case 470:
+                  if (curChar == 39)
+                     jjCheckNAddTwoStates(445, 454);
+                  break;
+               case 472:
+                  if ((0x3400L & l) != 0L)
+                     jjCheckNAddStates(1344, 1346);
+                  break;
+               case 473:
+                  if (curChar == 10)
+                     jjCheckNAddStates(1344, 1346);
+                  break;
+               case 474:
+               case 477:
+                  if (curChar == 13)
+                     jjCheckNAdd(473);
+                  break;
+               case 475:
+                  if ((0xfc00ffffffffcbffL & l) != 0L)
+                     jjCheckNAddStates(1344, 1346);
+                  break;
+               case 476:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(1347, 1352);
+                  break;
+               case 478:
+                  if ((0x100003600L & l) != 0L)
+                     jjCheckNAddStates(1344, 1346);
+                  break;
+               case 479:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(1353, 1361);
+                  break;
+               case 480:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(1362, 1366);
+                  break;
+               case 481:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(1367, 1372);
+                  break;
+               case 482:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(1373, 1379);
+                  break;
+               case 483:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(1380, 1387);
+                  break;
+               case 484:
+                  if ((0xfffffc7a00000000L & l) != 0L)
+                     jjCheckNAddStates(1388, 1391);
+                  break;
+               case 486:
+                  if ((0xfc00ffffffffcbffL & l) != 0L)
+                     jjCheckNAddStates(1388, 1391);
+                  break;
+               case 487:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(1392, 1397);
+                  break;
+               case 488:
+                  if (curChar == 10)
+                     jjCheckNAddStates(1388, 1391);
+                  break;
+               case 489:
+                  if (curChar == 13)
+                     jjstateSet[jjnewStateCnt++] = 488;
+                  break;
+               case 490:
+                  if ((0x100003600L & l) != 0L)
+                     jjCheckNAddStates(1398, 1403);
+                  break;
+               case 491:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(1404, 1412);
+                  break;
+               case 492:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(1413, 1417);
+                  break;
+               case 493:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(1418, 1423);
+                  break;
+               case 494:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(1424, 1430);
+                  break;
+               case 495:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(1431, 1438);
+                  break;
+               case 496:
+                  if ((0x100003600L & l) != 0L)
+                     jjCheckNAddStates(1439, 1447);
+                  break;
+               case 497:
+                  if (curChar == 42)
+                     jjCheckNAddTwoStates(498, 499);
+                  break;
+               case 498:
+                  if ((0xfffffbffffffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(498, 499);
+                  break;
+               case 499:
+                  if (curChar == 42)
+                     jjCheckNAddStates(1448, 1450);
+                  break;
+               case 500:
+                  if ((0xffff7bffffffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(501, 502);
+                  break;
+               case 501:
+                  if ((0xfffffbffffffffffL & l) != 0L)
+                     jjCheckNAddTwoStates(501, 502);
+                  break;
+               case 502:
+                  if (curChar == 42)
+                     jjCheckNAddStates(1451, 1453);
+                  break;
+               case 503:
+                  if (curChar == 47)
+                     jjCheckNAddStates(1454, 1460);
+                  break;
+               case 504:
+                  if (curChar == 47)
+                     jjstateSet[jjnewStateCnt++] = 497;
+                  break;
+               case 507:
+                  if (curChar == 43)
+                     jjAddStates(1461, 1462);
+                  break;
+               case 508:
+                  if (curChar != 63)
+                     break;
+                  if (kind > 91)
+                     kind = 91;
+                  jjstateSet[jjnewStateCnt++] = 509;
+                  break;
+               case 509:
+                  if (curChar != 63)
+                     break;
+                  if (kind > 91)
+                     kind = 91;
+                  jjCheckNAddStates(1463, 1466);
+                  break;
+               case 510:
+                  if (curChar == 63 && kind > 91)
+                     kind = 91;
+                  break;
+               case 511:
+               case 527:
+               case 531:
+               case 534:
+               case 537:
+                  if (curChar != 63)
+                     break;
+                  if (kind > 91)
+                     kind = 91;
+                  jjCheckNAdd(510);
+                  break;
+               case 512:
+                  if (curChar != 63)
+                     break;
+                  if (kind > 91)
+                     kind = 91;
+                  jjCheckNAddTwoStates(510, 511);
+                  break;
+               case 513:
+                  if (curChar != 63)
+                     break;
+                  if (kind > 91)
+                     kind = 91;
+                  jjCheckNAddStates(1467, 1469);
+                  break;
+               case 514:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 91)
+                     kind = 91;
+                  jjAddStates(1470, 1475);
+                  break;
+               case 515:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 516;
+                  break;
+               case 516:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 517;
+                  break;
+               case 517:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 518;
+                  break;
+               case 518:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAdd(519);
+                  break;
+               case 519:
+                  if ((0x3ff000000000000L & l) != 0L && kind > 91)
+                     kind = 91;
+                  break;
+               case 520:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 521;
+                  break;
+               case 521:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 522;
+                  break;
+               case 522:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 523;
+                  break;
+               case 523:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 91)
+                     kind = 91;
+                  jjCheckNAdd(510);
+                  break;
+               case 524:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 525;
+                  break;
+               case 525:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 526;
+                  break;
+               case 526:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 91)
+                     kind = 91;
+                  jjstateSet[jjnewStateCnt++] = 527;
+                  break;
+               case 528:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 529;
+                  break;
+               case 529:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 91)
+                     kind = 91;
+                  jjstateSet[jjnewStateCnt++] = 530;
+                  break;
+               case 530:
+                  if (curChar != 63)
+                     break;
+                  if (kind > 91)
+                     kind = 91;
+                  jjCheckNAddTwoStates(510, 531);
+                  break;
+               case 532:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 91)
+                     kind = 91;
+                  jjstateSet[jjnewStateCnt++] = 533;
+                  break;
+               case 533:
+                  if (curChar != 63)
+                     break;
+                  if (kind > 91)
+                     kind = 91;
+                  jjCheckNAddStates(1476, 1478);
+                  break;
+               case 535:
+                  if (curChar != 63)
+                     break;
+                  if (kind > 91)
+                     kind = 91;
+                  jjCheckNAddTwoStates(510, 534);
+                  break;
+               case 536:
+                  if (curChar != 63)
+                     break;
+                  if (kind > 91)
+                     kind = 91;
+                  jjCheckNAddStates(1479, 1482);
+                  break;
+               case 538:
+                  if (curChar != 63)
+                     break;
+                  if (kind > 91)
+                     kind = 91;
+                  jjCheckNAddTwoStates(510, 537);
+                  break;
+               case 539:
+                  if (curChar != 63)
+                     break;
+                  if (kind > 91)
+                     kind = 91;
+                  jjCheckNAddStates(1483, 1485);
+                  break;
+               case 540:
+                  if (curChar == 43)
+                     jjstateSet[jjnewStateCnt++] = 541;
+                  break;
+               case 541:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(542, 548);
+                  break;
+               case 542:
+                  if (curChar == 45)
+                     jjstateSet[jjnewStateCnt++] = 543;
+                  break;
+               case 543:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 91)
+                     kind = 91;
+                  jjstateSet[jjnewStateCnt++] = 544;
+                  break;
+               case 544:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 91)
+                     kind = 91;
+                  jjCheckNAddStates(1486, 1489);
+                  break;
+               case 545:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 91)
+                     kind = 91;
+                  jjCheckNAdd(519);
+                  break;
+               case 546:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 91)
+                     kind = 91;
+                  jjCheckNAddTwoStates(519, 545);
+                  break;
+               case 547:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 91)
+                     kind = 91;
+                  jjCheckNAddStates(1490, 1492);
+                  break;
+               case 548:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(1493, 1497);
+                  break;
+               case 549:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAdd(542);
+                  break;
+               case 550:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(549, 542);
+                  break;
+               case 551:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(1498, 1500);
+                  break;
+               case 552:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(1501, 1504);
+                  break;
+               case 553:
+                  if (curChar == 46)
+                     jjCheckNAddStates(99, 120);
+                  break;
+               case 554:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(554, 556);
+                  break;
+               case 557:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(557, 559);
+                  break;
+               case 560:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(560, 561);
+                  break;
+               case 562:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(562, 564);
+                  break;
+               case 565:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(565, 567);
+                  break;
+               case 568:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(568, 570);
+                  break;
+               case 571:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(571, 573);
+                  break;
+               case 574:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(574, 576);
+                  break;
+               case 577:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(577, 579);
+                  break;
+               case 580:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(1505, 1508);
+                  break;
+               case 590:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(1509, 1511);
+                  break;
+               case 594:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(594, 596);
+                  break;
+               case 597:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(597, 599);
+                  break;
+               case 600:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(600, 603);
+                  break;
+               case 604:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(604, 608);
+                  break;
+               case 609:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(609, 610);
+                  break;
+               case 610:
+                  if (curChar == 47)
+                     jjCheckNAddTwoStates(611, 619);
+                  break;
+               case 611:
+                  if (curChar == 46)
+                     jjCheckNAdd(612);
+                  break;
+               case 612:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(612, 613);
+                  break;
+               case 613:
+                  if (curChar == 47)
+                     jjCheckNAddTwoStates(614, 616);
+                  break;
+               case 614:
+                  if (curChar == 46)
+                     jjCheckNAdd(615);
+                  break;
+               case 615:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 61)
+                     kind = 61;
+                  jjCheckNAdd(615);
+                  break;
+               case 616:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 61)
+                     kind = 61;
+                  jjCheckNAddStates(1512, 1514);
+                  break;
+               case 617:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 61)
+                     kind = 61;
+                  jjCheckNAdd(617);
+                  break;
+               case 618:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(618, 614);
+                  break;
+               case 619:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(1515, 1518);
+                  break;
+               case 620:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(620, 613);
+                  break;
+               case 621:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(621, 611);
+                  break;
+               case 622:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(1519, 1521);
+                  break;
+               case 624:
+                  if ((0x3ff200000000000L & l) == 0L)
+                     break;
+                  if (kind > 62)
+                     kind = 62;
+                  jjCheckNAddTwoStates(624, 625);
+                  break;
+               case 626:
+                  if ((0xfc00ffffffffcbffL & l) == 0L)
+                     break;
+                  if (kind > 62)
+                     kind = 62;
+                  jjCheckNAddTwoStates(624, 625);
+                  break;
+               case 627:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 62)
+                     kind = 62;
+                  jjCheckNAddStates(1522, 1526);
+                  break;
+               case 628:
+                  if (curChar != 10)
+                     break;
+                  if (kind > 62)
+                     kind = 62;
+                  jjCheckNAddTwoStates(624, 625);
+                  break;
+               case 629:
+               case 638:
+                  if (curChar == 13)
+                     jjCheckNAdd(628);
+                  break;
+               case 630:
+                  if ((0x100003600L & l) == 0L)
+                     break;
+                  if (kind > 62)
+                     kind = 62;
+                  jjCheckNAddTwoStates(624, 625);
+                  break;
+               case 631:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 62)
+                     kind = 62;
+                  jjCheckNAddStates(1527, 1534);
+                  break;
+               case 632:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 62)
+                     kind = 62;
+                  jjCheckNAddStates(1535, 1538);
+                  break;
+               case 633:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 62)
+                     kind = 62;
+                  jjCheckNAddStates(1539, 1543);
+                  break;
+               case 634:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 62)
+                     kind = 62;
+                  jjCheckNAddStates(1544, 1549);
+                  break;
+               case 635:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 62)
+                     kind = 62;
+                  jjCheckNAddStates(1550, 1556);
+                  break;
+               case 637:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 62)
+                     kind = 62;
+                  jjCheckNAddStates(1557, 1561);
+                  break;
+               case 639:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 62)
+                     kind = 62;
+                  jjCheckNAddStates(1562, 1569);
+                  break;
+               case 640:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 62)
+                     kind = 62;
+                  jjCheckNAddStates(1570, 1573);
+                  break;
+               case 641:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 62)
+                     kind = 62;
+                  jjCheckNAddStates(1574, 1578);
+                  break;
+               case 642:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 62)
+                     kind = 62;
+                  jjCheckNAddStates(1579, 1584);
+                  break;
+               case 643:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 62)
+                     kind = 62;
+                  jjCheckNAddStates(1585, 1591);
+                  break;
+               case 644:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(644, 645);
+                  break;
+               case 645:
+                  if (curChar == 37 && kind > 63)
+                     kind = 63;
+                  break;
+               case 646:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 64)
+                     kind = 64;
+                  jjCheckNAdd(646);
+                  break;
+               case 647:
+                  if (curChar == 45)
+                     jjCheckNAddTwoStates(648, 661);
+                  break;
+               case 649:
+                  if ((0x3ff200000000000L & l) == 0L)
+                     break;
+                  if (kind > 92)
+                     kind = 92;
+                  jjCheckNAddTwoStates(649, 650);
+                  break;
+               case 651:
+                  if ((0xfc00ffffffffcbffL & l) == 0L)
+                     break;
+                  if (kind > 92)
+                     kind = 92;
+                  jjCheckNAddTwoStates(649, 650);
+                  break;
+               case 652:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 92)
+                     kind = 92;
+                  jjCheckNAddStates(1592, 1596);
+                  break;
+               case 653:
+                  if (curChar != 10)
+                     break;
+                  if (kind > 92)
+                     kind = 92;
+                  jjCheckNAddTwoStates(649, 650);
+                  break;
+               case 654:
+               case 663:
+                  if (curChar == 13)
+                     jjCheckNAdd(653);
+                  break;
+               case 655:
+                  if ((0x100003600L & l) == 0L)
+                     break;
+                  if (kind > 92)
+                     kind = 92;
+                  jjCheckNAddTwoStates(649, 650);
+                  break;
+               case 656:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 92)
+                     kind = 92;
+                  jjCheckNAddStates(1597, 1604);
+                  break;
+               case 657:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 92)
+                     kind = 92;
+                  jjCheckNAddStates(1605, 1608);
+                  break;
+               case 658:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 92)
+                     kind = 92;
+                  jjCheckNAddStates(1609, 1613);
+                  break;
+               case 659:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 92)
+                     kind = 92;
+                  jjCheckNAddStates(1614, 1619);
+                  break;
+               case 660:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 92)
+                     kind = 92;
+                  jjCheckNAddStates(1620, 1626);
+                  break;
+               case 662:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 92)
+                     kind = 92;
+                  jjCheckNAddStates(1627, 1631);
+                  break;
+               case 664:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 92)
+                     kind = 92;
+                  jjCheckNAddStates(1632, 1639);
+                  break;
+               case 665:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 92)
+                     kind = 92;
+                  jjCheckNAddStates(1640, 1643);
+                  break;
+               case 666:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 92)
+                     kind = 92;
+                  jjCheckNAddStates(1644, 1648);
+                  break;
+               case 667:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 92)
+                     kind = 92;
+                  jjCheckNAddStates(1649, 1654);
+                  break;
+               case 668:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 92)
+                     kind = 92;
+                  jjCheckNAddStates(1655, 1661);
+                  break;
+               case 670:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 64)
+                     kind = 64;
+                  jjCheckNAddStates(0, 78);
+                  break;
+               case 671:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(671, 556);
+                  break;
+               case 672:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(672, 673);
+                  break;
+               case 673:
+                  if (curChar == 46)
+                     jjCheckNAdd(554);
+                  break;
+               case 674:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(674, 559);
+                  break;
+               case 675:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(675, 676);
+                  break;
+               case 676:
+                  if (curChar == 46)
+                     jjCheckNAdd(557);
+                  break;
+               case 677:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(677, 561);
+                  break;
+               case 678:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(678, 679);
+                  break;
+               case 679:
+                  if (curChar == 46)
+                     jjCheckNAdd(560);
+                  break;
+               case 680:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(680, 564);
+                  break;
+               case 681:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(681, 682);
+                  break;
+               case 682:
+                  if (curChar == 46)
+                     jjCheckNAdd(562);
+                  break;
+               case 683:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(683, 567);
+                  break;
+               case 684:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(684, 685);
+                  break;
+               case 685:
+                  if (curChar == 46)
+                     jjCheckNAdd(565);
+                  break;
+               case 686:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(686, 570);
+                  break;
+               case 687:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(687, 688);
+                  break;
+               case 688:
+                  if (curChar == 46)
+                     jjCheckNAdd(568);
+                  break;
+               case 689:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(689, 573);
+                  break;
+               case 690:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(690, 691);
+                  break;
+               case 691:
+                  if (curChar == 46)
+                     jjCheckNAdd(571);
+                  break;
+               case 692:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(692, 576);
+                  break;
+               case 693:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(693, 694);
+                  break;
+               case 694:
+                  if (curChar == 46)
+                     jjCheckNAdd(574);
+                  break;
+               case 695:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(695, 579);
+                  break;
+               case 696:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(696, 697);
+                  break;
+               case 697:
+                  if (curChar == 46)
+                     jjCheckNAdd(577);
+                  break;
+               case 698:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(1662, 1665);
+                  break;
+               case 699:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(699, 700);
+                  break;
+               case 700:
+                  if (curChar == 46)
+                     jjCheckNAdd(580);
+                  break;
+               case 701:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(1666, 1668);
+                  break;
+               case 702:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(702, 703);
+                  break;
+               case 703:
+                  if (curChar == 46)
+                     jjCheckNAdd(590);
+                  break;
+               case 704:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(704, 596);
+                  break;
+               case 705:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(705, 706);
+                  break;
+               case 706:
+                  if (curChar == 46)
+                     jjCheckNAdd(594);
+                  break;
+               case 707:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(707, 599);
+                  break;
+               case 708:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(708, 709);
+                  break;
+               case 709:
+                  if (curChar == 46)
+                     jjCheckNAdd(597);
+                  break;
+               case 710:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(710, 603);
+                  break;
+               case 711:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(711, 712);
+                  break;
+               case 712:
+                  if (curChar == 46)
+                     jjCheckNAdd(600);
+                  break;
+               case 713:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(713, 608);
+                  break;
+               case 714:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(714, 715);
+                  break;
+               case 715:
+                  if (curChar == 46)
+                     jjCheckNAdd(604);
+                  break;
+               case 716:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(716, 610);
+                  break;
+               case 717:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(717, 718);
+                  break;
+               case 718:
+                  if (curChar == 46)
+                     jjCheckNAdd(609);
+                  break;
+               case 719:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(1669, 1671);
+                  break;
+               case 720:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(720, 721);
+                  break;
+               case 721:
+                  if (curChar == 46)
+                     jjCheckNAdd(622);
+                  break;
+               case 722:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(722, 645);
+                  break;
+               case 723:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(723, 724);
+                  break;
+               case 724:
+                  if (curChar == 46)
+                     jjCheckNAdd(644);
+                  break;
+               case 725:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 64)
+                     kind = 64;
+                  jjCheckNAdd(725);
+                  break;
+               case 726:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(726, 727);
+                  break;
+               case 727:
+                  if (curChar == 46)
+                     jjCheckNAdd(646);
+                  break;
+               default : break;
+            }
+         } while(i != startsAt);
+      }
+      else if (curChar < 128)
+      {
+         long l = 1L << (curChar & 077);
+         MatchLoop: do
+         {
+            switch(jjstateSet[--i])
+            {
+               case 7:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 34)
+                        kind = 34;
+                     jjCheckNAddStates(1672, 1676);
+                  }
+                  else if (curChar == 92)
+                     jjCheckNAddStates(1677, 1680);
+                  else if (curChar == 126)
+                  {
+                     if (kind > 30)
+                        kind = 30;
+                     jjCheckNAdd(252);
+                  }
+                  else if (curChar == 64)
+                     jjAddStates(1681, 1683);
+                  else if (curChar == 123)
+                  {
+                     if (kind > 26)
+                        kind = 26;
+                  }
+                  if ((0x20000000200000L & l) != 0L)
+                     jjAddStates(1684, 1686);
+                  else if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 17;
+                  else if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 14;
+                  break;
+               case 1:
+                  jjAddStates(1687, 1688);
+                  break;
+               case 3:
+               case 4:
+                  jjCheckNAddTwoStates(4, 5);
+                  break;
+               case 8:
+                  if (curChar == 123 && kind > 26)
+                     kind = 26;
+                  break;
+               case 12:
+                  if ((0x200000002000000L & l) != 0L && kind > 52)
+                     kind = 52;
+                  break;
+               case 13:
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 12;
+                  break;
+               case 14:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 13;
+                  break;
+               case 15:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 14;
+                  break;
+               case 16:
+                  if ((0x10000000100000L & l) != 0L && kind > 52)
+                     kind = 52;
+                  break;
+               case 17:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 16;
+                  break;
+               case 18:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 17;
+                  break;
+               case 22:
+                  jjAddStates(1689, 1690);
+                  break;
+               case 24:
+               case 25:
+                  jjCheckNAddTwoStates(25, 26);
+                  break;
+               case 29:
+                  if ((0x10000000100000L & l) != 0L && kind > 65)
+                     kind = 65;
+                  break;
+               case 30:
+                  if ((0x400000004000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 29;
+                  break;
+               case 31:
+                  if ((0x200000002L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 30;
+                  break;
+               case 32:
+                  if ((0x10000000100000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 31;
+                  break;
+               case 33:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 32;
+                  break;
+               case 34:
+                  if ((0x800000008000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 33;
+                  break;
+               case 35:
+                  if ((0x1000000010000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 34;
+                  break;
+               case 36:
+                  if ((0x200000002000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 35;
+                  break;
+               case 37:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 36;
+                  break;
+               case 38:
+                  if (curChar == 64)
+                     jjAddStates(1681, 1683);
+                  break;
+               case 40:
+               case 41:
+                  if ((0x7fffffe87fffffeL & l) == 0L)
+                     break;
+                  if (kind > 81)
+                     kind = 81;
+                  jjCheckNAddTwoStates(41, 42);
+                  break;
+               case 42:
+                  if (curChar == 92)
+                     jjCheckNAddTwoStates(43, 44);
+                  break;
+               case 43:
+                  if ((0xffffff81ffffff81L & l) == 0L)
+                     break;
+                  if (kind > 81)
+                     kind = 81;
+                  jjCheckNAddTwoStates(41, 42);
+                  break;
+               case 44:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 81)
+                     kind = 81;
+                  jjCheckNAddStates(161, 165);
+                  break;
+               case 48:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 81)
+                     kind = 81;
+                  jjCheckNAddStates(166, 173);
+                  break;
+               case 49:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 81)
+                     kind = 81;
+                  jjCheckNAddStates(174, 177);
+                  break;
+               case 50:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 81)
+                     kind = 81;
+                  jjCheckNAddStates(178, 182);
+                  break;
+               case 51:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 81)
+                     kind = 81;
+                  jjCheckNAddStates(183, 188);
+                  break;
+               case 52:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 81)
+                     kind = 81;
+                  jjCheckNAddStates(189, 195);
+                  break;
+               case 53:
+                  if (curChar == 92)
+                     jjCheckNAddTwoStates(43, 54);
+                  break;
+               case 54:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 81)
+                     kind = 81;
+                  jjCheckNAddStates(196, 200);
+                  break;
+               case 56:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 81)
+                     kind = 81;
+                  jjCheckNAddStates(201, 208);
+                  break;
+               case 57:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 81)
+                     kind = 81;
+                  jjCheckNAddStates(209, 212);
+                  break;
+               case 58:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 81)
+                     kind = 81;
+                  jjCheckNAddStates(213, 217);
+                  break;
+               case 59:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 81)
+                     kind = 81;
+                  jjCheckNAddStates(218, 223);
+                  break;
+               case 60:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 81)
+                     kind = 81;
+                  jjCheckNAddStates(224, 230);
+                  break;
+               case 64:
+                  jjAddStates(1691, 1692);
+                  break;
+               case 66:
+               case 67:
+                  jjCheckNAddTwoStates(67, 68);
+                  break;
+               case 72:
+               case 73:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                     jjCheckNAddStates(242, 247);
+                  break;
+               case 76:
+                  jjAddStates(1693, 1694);
+                  break;
+               case 78:
+               case 79:
+                  jjCheckNAddTwoStates(79, 80);
+                  break;
+               case 84:
+               case 85:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                     jjCheckNAddStates(260, 262);
+                  break;
+               case 88:
+               case 89:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                     jjCheckNAddStates(268, 273);
+                  break;
+               case 92:
+                  jjAddStates(1695, 1696);
+                  break;
+               case 94:
+               case 95:
+                  jjCheckNAddTwoStates(95, 96);
+                  break;
+               case 100:
+                  if (curChar == 92)
+                     jjCheckNAddTwoStates(101, 112);
+                  break;
+               case 101:
+                  if ((0xffffff81ffffff81L & l) != 0L)
+                     jjCheckNAddStates(260, 262);
+                  break;
+               case 102:
+                  if (curChar == 92)
+                     jjCheckNAddTwoStates(101, 103);
+                  break;
+               case 103:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(286, 291);
+                  break;
+               case 107:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(292, 300);
+                  break;
+               case 108:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(301, 305);
+                  break;
+               case 109:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(306, 311);
+                  break;
+               case 110:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(312, 318);
+                  break;
+               case 111:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(319, 326);
+                  break;
+               case 112:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(327, 332);
+                  break;
+               case 114:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(333, 341);
+                  break;
+               case 115:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(342, 346);
+                  break;
+               case 116:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(347, 352);
+                  break;
+               case 117:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(353, 359);
+                  break;
+               case 118:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(360, 367);
+                  break;
+               case 119:
+                  if (curChar == 92)
+                     jjCheckNAddStates(1697, 1700);
+                  break;
+               case 120:
+                  if ((0xffffff81ffffff81L & l) != 0L)
+                     jjCheckNAddStates(268, 273);
+                  break;
+               case 121:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(368, 375);
+                  break;
+               case 125:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(385, 395);
+                  break;
+               case 126:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(396, 402);
+                  break;
+               case 127:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(403, 410);
+                  break;
+               case 128:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(411, 419);
+                  break;
+               case 129:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(420, 429);
+                  break;
+               case 130:
+                  if (curChar == 92)
+                     jjCheckNAddTwoStates(120, 131);
+                  break;
+               case 131:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(430, 437);
+                  break;
+               case 133:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(438, 448);
+                  break;
+               case 134:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(449, 455);
+                  break;
+               case 135:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(456, 463);
+                  break;
+               case 136:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(464, 472);
+                  break;
+               case 137:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(473, 482);
+                  break;
+               case 139:
+                  if ((0xffffffffefffffffL & l) != 0L)
+                     jjCheckNAddStates(483, 485);
+                  break;
+               case 141:
+                  if (curChar == 92)
+                     jjAddStates(1701, 1704);
+                  break;
+               case 145:
+                  if ((0xffffff81ffffff81L & l) != 0L)
+                     jjCheckNAddStates(483, 485);
+                  break;
+               case 146:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(491, 496);
+                  break;
+               case 149:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(497, 505);
+                  break;
+               case 150:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(506, 510);
+                  break;
+               case 151:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(511, 516);
+                  break;
+               case 152:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(517, 523);
+                  break;
+               case 153:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(524, 531);
+                  break;
+               case 155:
+                  if ((0xffffffffefffffffL & l) != 0L)
+                     jjCheckNAddStates(532, 534);
+                  break;
+               case 157:
+                  if (curChar == 92)
+                     jjAddStates(1705, 1708);
+                  break;
+               case 161:
+                  if ((0xffffff81ffffff81L & l) != 0L)
+                     jjCheckNAddStates(532, 534);
+                  break;
+               case 162:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(535, 540);
+                  break;
+               case 165:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(541, 549);
+                  break;
+               case 166:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(550, 554);
+                  break;
+               case 167:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(555, 560);
+                  break;
+               case 168:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(561, 567);
+                  break;
+               case 169:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(568, 575);
+                  break;
+               case 170:
+                  if (curChar == 92)
+                     jjCheckNAddStates(1709, 1712);
+                  break;
+               case 171:
+                  if ((0xffffff81ffffff81L & l) != 0L)
+                     jjCheckNAddStates(242, 247);
+                  break;
+               case 172:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(576, 583);
+                  break;
+               case 176:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(593, 603);
+                  break;
+               case 177:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(604, 610);
+                  break;
+               case 178:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(611, 618);
+                  break;
+               case 179:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(619, 627);
+                  break;
+               case 180:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(628, 637);
+                  break;
+               case 181:
+                  if (curChar == 92)
+                     jjCheckNAddTwoStates(171, 182);
+                  break;
+               case 182:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(638, 645);
+                  break;
+               case 184:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(646, 656);
+                  break;
+               case 185:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(657, 663);
+                  break;
+               case 186:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(664, 671);
+                  break;
+               case 187:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(672, 680);
+                  break;
+               case 188:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(681, 690);
+                  break;
+               case 192:
+                  jjAddStates(1713, 1714);
+                  break;
+               case 194:
+               case 195:
+                  jjCheckNAddTwoStates(195, 196);
+                  break;
+               case 200:
+               case 201:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                     jjCheckNAddStates(706, 709);
+                  break;
+               case 204:
+                  jjAddStates(1715, 1716);
+                  break;
+               case 206:
+               case 207:
+                  jjCheckNAddTwoStates(207, 208);
+                  break;
+               case 212:
+                  if (curChar == 92)
+                     jjCheckNAddTwoStates(213, 214);
+                  break;
+               case 213:
+                  if ((0xffffff81ffffff81L & l) != 0L)
+                     jjCheckNAddStates(706, 709);
+                  break;
+               case 214:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(719, 724);
+                  break;
+               case 218:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(731, 739);
+                  break;
+               case 219:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(740, 744);
+                  break;
+               case 220:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(745, 750);
+                  break;
+               case 221:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(751, 757);
+                  break;
+               case 222:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(758, 765);
+                  break;
+               case 223:
+                  if (curChar == 92)
+                     jjCheckNAddTwoStates(213, 224);
+                  break;
+               case 224:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(766, 771);
+                  break;
+               case 226:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(772, 780);
+                  break;
+               case 227:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(781, 785);
+                  break;
+               case 228:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(786, 791);
+                  break;
+               case 229:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(792, 798);
+                  break;
+               case 230:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(799, 806);
+                  break;
+               case 234:
+                  jjAddStates(1717, 1718);
+                  break;
+               case 236:
+               case 237:
+                  jjCheckNAddTwoStates(237, 238);
+                  break;
+               case 243:
+                  jjAddStates(1719, 1720);
+                  break;
+               case 245:
+               case 246:
+                  jjCheckNAddTwoStates(246, 247);
+                  break;
+               case 251:
+                  if (curChar == 126)
+                     jjCheckNAdd(252);
+                  break;
+               case 254:
+                  jjAddStates(1721, 1722);
+                  break;
+               case 256:
+               case 257:
+                  jjCheckNAddTwoStates(257, 258);
+                  break;
+               case 263:
+                  jjAddStates(1723, 1724);
+                  break;
+               case 265:
+               case 266:
+                  jjCheckNAddTwoStates(266, 267);
+                  break;
+               case 272:
+                  jjAddStates(1725, 1726);
+                  break;
+               case 274:
+               case 275:
+                  jjCheckNAddTwoStates(275, 276);
+                  break;
+               case 281:
+                  jjAddStates(1727, 1728);
+                  break;
+               case 283:
+               case 284:
+                  jjCheckNAddTwoStates(284, 285);
+                  break;
+               case 290:
+                  jjAddStates(1729, 1730);
+                  break;
+               case 292:
+               case 293:
+                  jjCheckNAddTwoStates(293, 294);
+                  break;
+               case 298:
+                  if (curChar == 126 && kind > 30)
+                     kind = 30;
+                  break;
+               case 299:
+                  if (curChar != 126)
+                     break;
+                  if (kind > 30)
+                     kind = 30;
+                  jjCheckNAdd(252);
+                  break;
+               case 301:
+                  if ((0xffffffffefffffffL & l) != 0L)
+                     jjCheckNAddStates(867, 869);
+                  break;
+               case 303:
+                  if (curChar == 92)
+                     jjAddStates(1731, 1734);
+                  break;
+               case 307:
+                  if ((0xffffff81ffffff81L & l) != 0L)
+                     jjCheckNAddStates(867, 869);
+                  break;
+               case 308:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(870, 875);
+                  break;
+               case 311:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(876, 884);
+                  break;
+               case 312:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(885, 889);
+                  break;
+               case 313:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(890, 895);
+                  break;
+               case 314:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(896, 902);
+                  break;
+               case 315:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(903, 910);
+                  break;
+               case 316:
+                  if ((0xffffffffefffffffL & l) == 0L)
+                     break;
+                  if (kind > 33)
+                     kind = 33;
+                  jjCheckNAddTwoStates(316, 317);
+                  break;
+               case 317:
+                  if (curChar == 92)
+                     jjAddStates(1735, 1738);
+                  break;
+               case 321:
+                  if ((0xffffff81ffffff81L & l) == 0L)
+                     break;
+                  if (kind > 33)
+                     kind = 33;
+                  jjCheckNAddTwoStates(316, 317);
+                  break;
+               case 322:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 33)
+                     kind = 33;
+                  jjCheckNAddStates(911, 915);
+                  break;
+               case 325:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 33)
+                     kind = 33;
+                  jjCheckNAddStates(916, 923);
+                  break;
+               case 326:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 33)
+                     kind = 33;
+                  jjCheckNAddStates(924, 927);
+                  break;
+               case 327:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 33)
+                     kind = 33;
+                  jjCheckNAddStates(928, 932);
+                  break;
+               case 328:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 33)
+                     kind = 33;
+                  jjCheckNAddStates(933, 938);
+                  break;
+               case 329:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 33)
+                     kind = 33;
+                  jjCheckNAddStates(939, 945);
+                  break;
+               case 331:
+                  if ((0xffffffffefffffffL & l) != 0L)
+                     jjCheckNAddStates(946, 948);
+                  break;
+               case 333:
+                  if (curChar == 92)
+                     jjAddStates(1739, 1742);
+                  break;
+               case 337:
+                  if ((0xffffff81ffffff81L & l) != 0L)
+                     jjCheckNAddStates(946, 948);
+                  break;
+               case 338:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(949, 954);
+                  break;
+               case 341:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(955, 963);
+                  break;
+               case 342:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(964, 968);
+                  break;
+               case 343:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(969, 974);
+                  break;
+               case 344:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(975, 981);
+                  break;
+               case 345:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(982, 989);
+                  break;
+               case 346:
+                  if ((0xffffffffefffffffL & l) == 0L)
+                     break;
+                  if (kind > 33)
+                     kind = 33;
+                  jjCheckNAddTwoStates(346, 347);
+                  break;
+               case 347:
+                  if (curChar == 92)
+                     jjAddStates(1743, 1746);
+                  break;
+               case 351:
+                  if ((0xffffff81ffffff81L & l) == 0L)
+                     break;
+                  if (kind > 33)
+                     kind = 33;
+                  jjCheckNAddTwoStates(346, 347);
+                  break;
+               case 352:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 33)
+                     kind = 33;
+                  jjCheckNAddStates(990, 994);
+                  break;
+               case 355:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 33)
+                     kind = 33;
+                  jjCheckNAddStates(995, 1002);
+                  break;
+               case 356:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 33)
+                     kind = 33;
+                  jjCheckNAddStates(1003, 1006);
+                  break;
+               case 357:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 33)
+                     kind = 33;
+                  jjCheckNAddStates(1007, 1011);
+                  break;
+               case 358:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 33)
+                     kind = 33;
+                  jjCheckNAddStates(1012, 1017);
+                  break;
+               case 359:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 33)
+                     kind = 33;
+                  jjCheckNAddStates(1018, 1024);
+                  break;
+               case 361:
+               case 362:
+                  if ((0x7fffffe87fffffeL & l) == 0L)
+                     break;
+                  if (kind > 34)
+                     kind = 34;
+                  jjCheckNAddTwoStates(362, 363);
+                  break;
+               case 363:
+                  if (curChar == 92)
+                     jjCheckNAddTwoStates(364, 365);
+                  break;
+               case 364:
+                  if ((0xffffff81ffffff81L & l) == 0L)
+                     break;
+                  if (kind > 34)
+                     kind = 34;
+                  jjCheckNAddTwoStates(362, 363);
+                  break;
+               case 365:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 34)
+                     kind = 34;
+                  jjCheckNAddStates(1025, 1029);
+                  break;
+               case 369:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 34)
+                     kind = 34;
+                  jjCheckNAddStates(1030, 1037);
+                  break;
+               case 370:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 34)
+                     kind = 34;
+                  jjCheckNAddStates(1038, 1041);
+                  break;
+               case 371:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 34)
+                     kind = 34;
+                  jjCheckNAddStates(1042, 1046);
+                  break;
+               case 372:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 34)
+                     kind = 34;
+                  jjCheckNAddStates(1047, 1052);
+                  break;
+               case 373:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 34)
+                     kind = 34;
+                  jjCheckNAddStates(1053, 1059);
+                  break;
+               case 374:
+               case 375:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                     jjCheckNAddStates(1060, 1062);
+                  break;
+               case 377:
+                  if (curChar == 92)
+                     jjCheckNAddTwoStates(378, 379);
+                  break;
+               case 378:
+                  if ((0xffffff81ffffff81L & l) != 0L)
+                     jjCheckNAddStates(1060, 1062);
+                  break;
+               case 379:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(1063, 1068);
+                  break;
+               case 383:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(1069, 1077);
+                  break;
+               case 384:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(1078, 1082);
+                  break;
+               case 385:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(1083, 1088);
+                  break;
+               case 386:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(1089, 1095);
+                  break;
+               case 387:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(1096, 1103);
+                  break;
+               case 388:
+                  if (curChar == 92)
+                     jjCheckNAddTwoStates(378, 389);
+                  break;
+               case 389:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(1104, 1109);
+                  break;
+               case 391:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(1110, 1118);
+                  break;
+               case 392:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(1119, 1123);
+                  break;
+               case 393:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(1124, 1129);
+                  break;
+               case 394:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(1130, 1136);
+                  break;
+               case 395:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(1137, 1144);
+                  break;
+               case 396:
+                  if (curChar == 92)
+                     jjCheckNAddTwoStates(364, 397);
+                  break;
+               case 397:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 34)
+                     kind = 34;
+                  jjCheckNAddStates(1145, 1149);
+                  break;
+               case 399:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 34)
+                     kind = 34;
+                  jjCheckNAddStates(1150, 1157);
+                  break;
+               case 400:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 34)
+                     kind = 34;
+                  jjCheckNAddStates(1158, 1161);
+                  break;
+               case 401:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 34)
+                     kind = 34;
+                  jjCheckNAddStates(1162, 1166);
+                  break;
+               case 402:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 34)
+                     kind = 34;
+                  jjCheckNAddStates(1167, 1172);
+                  break;
+               case 403:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 34)
+                     kind = 34;
+                  jjCheckNAddStates(1173, 1179);
+                  break;
+               case 404:
+                  if ((0x7fffffe87fffffeL & l) == 0L)
+                     break;
+                  if (kind > 34)
+                     kind = 34;
+                  jjCheckNAddStates(1672, 1676);
+                  break;
+               case 407:
+               case 408:
+                  if ((0x7fffffe87fffffeL & l) == 0L)
+                     break;
+                  if (kind > 35)
+                     kind = 35;
+                  jjCheckNAddTwoStates(408, 409);
+                  break;
+               case 409:
+                  if (curChar == 92)
+                     jjCheckNAddTwoStates(410, 411);
+                  break;
+               case 410:
+                  if ((0xffffff81ffffff81L & l) == 0L)
+                     break;
+                  if (kind > 35)
+                     kind = 35;
+                  jjCheckNAddTwoStates(408, 409);
+                  break;
+               case 411:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 35)
+                     kind = 35;
+                  jjCheckNAddStates(1180, 1184);
+                  break;
+               case 415:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 35)
+                     kind = 35;
+                  jjCheckNAddStates(1185, 1192);
+                  break;
+               case 416:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 35)
+                     kind = 35;
+                  jjCheckNAddStates(1193, 1196);
+                  break;
+               case 417:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 35)
+                     kind = 35;
+                  jjCheckNAddStates(1197, 1201);
+                  break;
+               case 418:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 35)
+                     kind = 35;
+                  jjCheckNAddStates(1202, 1207);
+                  break;
+               case 419:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 35)
+                     kind = 35;
+                  jjCheckNAddStates(1208, 1214);
+                  break;
+               case 420:
+                  if (curChar == 92)
+                     jjCheckNAddTwoStates(410, 421);
+                  break;
+               case 421:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 35)
+                     kind = 35;
+                  jjCheckNAddStates(1215, 1219);
+                  break;
+               case 423:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 35)
+                     kind = 35;
+                  jjCheckNAddStates(1220, 1227);
+                  break;
+               case 424:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 35)
+                     kind = 35;
+                  jjCheckNAddStates(1228, 1231);
+                  break;
+               case 425:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 35)
+                     kind = 35;
+                  jjCheckNAddStates(1232, 1236);
+                  break;
+               case 426:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 35)
+                     kind = 35;
+                  jjCheckNAddStates(1237, 1242);
+                  break;
+               case 427:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 35)
+                     kind = 35;
+                  jjCheckNAddStates(1243, 1249);
+                  break;
+               case 428:
+                  if ((0x7fffffe87fffffeL & l) == 0L)
+                     break;
+                  if (kind > 36)
+                     kind = 36;
+                  jjCheckNAddTwoStates(428, 429);
+                  break;
+               case 429:
+                  if (curChar == 92)
+                     jjAddStates(1747, 1748);
+                  break;
+               case 430:
+                  if ((0xffffff81ffffff81L & l) == 0L)
+                     break;
+                  if (kind > 36)
+                     kind = 36;
+                  jjCheckNAddTwoStates(428, 429);
+                  break;
+               case 431:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 36)
+                     kind = 36;
+                  jjCheckNAddStates(1250, 1254);
+                  break;
+               case 435:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 36)
+                     kind = 36;
+                  jjCheckNAddStates(1255, 1262);
+                  break;
+               case 436:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 36)
+                     kind = 36;
+                  jjCheckNAddStates(1263, 1266);
+                  break;
+               case 437:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 36)
+                     kind = 36;
+                  jjCheckNAddStates(1267, 1271);
+                  break;
+               case 438:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 36)
+                     kind = 36;
+                  jjCheckNAddStates(1272, 1277);
+                  break;
+               case 439:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 36)
+                     kind = 36;
+                  jjCheckNAddStates(1278, 1284);
+                  break;
+               case 440:
+                  if ((0x20000000200000L & l) != 0L)
+                     jjAddStates(1684, 1686);
+                  break;
+               case 443:
+                  if ((0xffffffffefffffffL & l) != 0L)
+                     jjCheckNAddStates(1291, 1293);
+                  break;
+               case 447:
+                  jjAddStates(1749, 1750);
+                  break;
+               case 449:
+               case 450:
+                  jjCheckNAddTwoStates(450, 451);
+                  break;
+               case 455:
+                  if (curChar == 92)
+                     jjAddStates(1751, 1754);
+                  break;
+               case 459:
+                  if ((0xffffff81ffffff81L & l) != 0L)
+                     jjCheckNAddStates(1291, 1293);
+                  break;
+               case 460:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(1303, 1308);
+                  break;
+               case 463:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(1309, 1317);
+                  break;
+               case 464:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(1318, 1322);
+                  break;
+               case 465:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(1323, 1328);
+                  break;
+               case 466:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(1329, 1335);
+                  break;
+               case 467:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(1336, 1343);
+                  break;
+               case 469:
+                  if ((0xffffffffefffffffL & l) != 0L)
+                     jjCheckNAddStates(1344, 1346);
+                  break;
+               case 471:
+                  if (curChar == 92)
+                     jjAddStates(1755, 1758);
+                  break;
+               case 475:
+                  if ((0xffffff81ffffff81L & l) != 0L)
+                     jjCheckNAddStates(1344, 1346);
+                  break;
+               case 476:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(1347, 1352);
+                  break;
+               case 479:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(1353, 1361);
+                  break;
+               case 480:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(1362, 1366);
+                  break;
+               case 481:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(1367, 1372);
+                  break;
+               case 482:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(1373, 1379);
+                  break;
+               case 483:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(1380, 1387);
+                  break;
+               case 484:
+                  if ((0x7fffffffefffffffL & l) != 0L)
+                     jjCheckNAddStates(1388, 1391);
+                  break;
+               case 485:
+                  if (curChar == 92)
+                     jjAddStates(1759, 1760);
+                  break;
+               case 486:
+                  if ((0xffffff81ffffff81L & l) != 0L)
+                     jjCheckNAddStates(1388, 1391);
+                  break;
+               case 487:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(1392, 1397);
+                  break;
+               case 491:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(1404, 1412);
+                  break;
+               case 492:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(1413, 1417);
+                  break;
+               case 493:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(1418, 1423);
+                  break;
+               case 494:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(1424, 1430);
+                  break;
+               case 495:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(1431, 1438);
+                  break;
+               case 498:
+                  jjAddStates(1761, 1762);
+                  break;
+               case 500:
+               case 501:
+                  jjCheckNAddTwoStates(501, 502);
+                  break;
+               case 505:
+                  if ((0x100000001000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 441;
+                  break;
+               case 506:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 505;
+                  break;
+               case 514:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 91)
+                     kind = 91;
+                  jjAddStates(1470, 1475);
+                  break;
+               case 515:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 516;
+                  break;
+               case 516:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 517;
+                  break;
+               case 517:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 518;
+                  break;
+               case 518:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAdd(519);
+                  break;
+               case 519:
+                  if ((0x7e0000007eL & l) != 0L && kind > 91)
+                     kind = 91;
+                  break;
+               case 520:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 521;
+                  break;
+               case 521:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 522;
+                  break;
+               case 522:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 523;
+                  break;
+               case 523:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 91)
+                     kind = 91;
+                  jjstateSet[jjnewStateCnt++] = 510;
+                  break;
+               case 524:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 525;
+                  break;
+               case 525:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 526;
+                  break;
+               case 526:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 91)
+                     kind = 91;
+                  jjstateSet[jjnewStateCnt++] = 527;
+                  break;
+               case 528:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 529;
+                  break;
+               case 529:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 91)
+                     kind = 91;
+                  jjstateSet[jjnewStateCnt++] = 530;
+                  break;
+               case 532:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 91)
+                     kind = 91;
+                  jjstateSet[jjnewStateCnt++] = 533;
+                  break;
+               case 541:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddTwoStates(542, 548);
+                  break;
+               case 543:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 91)
+                     kind = 91;
+                  jjstateSet[jjnewStateCnt++] = 544;
+                  break;
+               case 544:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 91)
+                     kind = 91;
+                  jjCheckNAddStates(1486, 1489);
+                  break;
+               case 545:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 91)
+                     kind = 91;
+                  jjCheckNAdd(519);
+                  break;
+               case 546:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 91)
+                     kind = 91;
+                  jjCheckNAddTwoStates(519, 545);
+                  break;
+               case 547:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 91)
+                     kind = 91;
+                  jjCheckNAddStates(1490, 1492);
+                  break;
+               case 548:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(1493, 1497);
+                  break;
+               case 549:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAdd(542);
+                  break;
+               case 550:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddTwoStates(549, 542);
+                  break;
+               case 551:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(1498, 1500);
+                  break;
+               case 552:
+                  if ((0x7e0000007eL & l) != 0L)
+                     jjCheckNAddStates(1501, 1504);
+                  break;
+               case 555:
+                  if ((0x10000000100000L & l) != 0L && kind > 54)
+                     kind = 54;
+                  break;
+               case 556:
+                  if ((0x1000000010000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 555;
+                  break;
+               case 558:
+                  if ((0x200000002000L & l) != 0L && kind > 54)
+                     kind = 54;
+                  break;
+               case 559:
+                  if ((0x200000002000L & l) != 0L)
+                     jjCheckNAdd(558);
+                  break;
+               case 561:
+                  if ((0x800000008L & l) != 0L)
+                     jjCheckNAdd(558);
+                  break;
+               case 563:
+                  if ((0x800000008L & l) != 0L && kind > 54)
+                     kind = 54;
+                  break;
+               case 564:
+                  if ((0x1000000010000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 563;
+                  break;
+               case 566:
+                  if ((0x400000004000L & l) != 0L && kind > 54)
+                     kind = 54;
+                  break;
+               case 567:
+                  if ((0x20000000200L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 566;
+                  break;
+               case 569:
+                  if ((0x1000000010L & l) != 0L && kind > 54)
+                     kind = 54;
+                  break;
+               case 570:
+                  if ((0x8000000080L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 569;
+                  break;
+               case 572:
+                  if ((0x100000001000000L & l) != 0L && kind > 54)
+                     kind = 54;
+                  break;
+               case 573:
+                  if ((0x1000000010000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 572;
+                  break;
+               case 575:
+                  if ((0x200000002000L & l) != 0L && kind > 55)
+                     kind = 55;
+                  break;
+               case 576:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 575;
+                  break;
+               case 578:
+                  if ((0x100000001000000L & l) != 0L && kind > 56)
+                     kind = 56;
+                  break;
+               case 579:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 578;
+                  break;
+               case 581:
+                  if ((0x8000000080L & l) != 0L && kind > 57)
+                     kind = 57;
+                  break;
+               case 582:
+                  if ((0x2000000020L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 581;
+                  break;
+               case 583:
+                  if ((0x1000000010L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 582;
+                  break;
+               case 584:
+                  if ((0x1000000010L & l) != 0L && kind > 57)
+                     kind = 57;
+                  break;
+               case 585:
+               case 588:
+                  if ((0x200000002L & l) != 0L)
+                     jjCheckNAdd(584);
+                  break;
+               case 586:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 585;
+                  break;
+               case 587:
+                  if ((0x8000000080L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 586;
+                  break;
+               case 589:
+                  if ((0x4000000040000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 588;
+                  break;
+               case 591:
+               case 593:
+                  if ((0x8000000080000L & l) != 0L && kind > 58)
+                     kind = 58;
+                  break;
+               case 592:
+                  if ((0x200000002000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 591;
+                  break;
+               case 595:
+                  if ((0x400000004000000L & l) != 0L && kind > 59)
+                     kind = 59;
+                  break;
+               case 596:
+               case 598:
+                  if ((0x10000000100L & l) != 0L)
+                     jjCheckNAdd(595);
+                  break;
+               case 599:
+                  if ((0x80000000800L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 598;
+                  break;
+               case 601:
+                  if ((0x20000000200L & l) != 0L && kind > 60)
+                     kind = 60;
+                  break;
+               case 602:
+                  if ((0x1000000010000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 601;
+                  break;
+               case 603:
+                  if ((0x1000000010L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 602;
+                  break;
+               case 605:
+                  if ((0x200000002000L & l) != 0L && kind > 60)
+                     kind = 60;
+                  break;
+               case 606:
+                  if ((0x800000008L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 605;
+                  break;
+               case 607:
+                  if ((0x1000000010000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 606;
+                  break;
+               case 608:
+                  if ((0x1000000010L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 607;
+                  break;
+               case 623:
+               case 624:
+                  if ((0x7fffffe87fffffeL & l) == 0L)
+                     break;
+                  if (kind > 62)
+                     kind = 62;
+                  jjCheckNAddTwoStates(624, 625);
+                  break;
+               case 625:
+                  if (curChar == 92)
+                     jjCheckNAddTwoStates(626, 627);
+                  break;
+               case 626:
+                  if ((0xffffff81ffffff81L & l) == 0L)
+                     break;
+                  if (kind > 62)
+                     kind = 62;
+                  jjCheckNAddTwoStates(624, 625);
+                  break;
+               case 627:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 62)
+                     kind = 62;
+                  jjCheckNAddStates(1522, 1526);
+                  break;
+               case 631:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 62)
+                     kind = 62;
+                  jjCheckNAddStates(1527, 1534);
+                  break;
+               case 632:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 62)
+                     kind = 62;
+                  jjCheckNAddStates(1535, 1538);
+                  break;
+               case 633:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 62)
+                     kind = 62;
+                  jjCheckNAddStates(1539, 1543);
+                  break;
+               case 634:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 62)
+                     kind = 62;
+                  jjCheckNAddStates(1544, 1549);
+                  break;
+               case 635:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 62)
+                     kind = 62;
+                  jjCheckNAddStates(1550, 1556);
+                  break;
+               case 636:
+                  if (curChar == 92)
+                     jjCheckNAddTwoStates(626, 637);
+                  break;
+               case 637:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 62)
+                     kind = 62;
+                  jjCheckNAddStates(1557, 1561);
+                  break;
+               case 639:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 62)
+                     kind = 62;
+                  jjCheckNAddStates(1562, 1569);
+                  break;
+               case 640:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 62)
+                     kind = 62;
+                  jjCheckNAddStates(1570, 1573);
+                  break;
+               case 641:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 62)
+                     kind = 62;
+                  jjCheckNAddStates(1574, 1578);
+                  break;
+               case 642:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 62)
+                     kind = 62;
+                  jjCheckNAddStates(1579, 1584);
+                  break;
+               case 643:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 62)
+                     kind = 62;
+                  jjCheckNAddStates(1585, 1591);
+                  break;
+               case 648:
+               case 649:
+                  if ((0x7fffffe87fffffeL & l) == 0L)
+                     break;
+                  if (kind > 92)
+                     kind = 92;
+                  jjCheckNAddTwoStates(649, 650);
+                  break;
+               case 650:
+                  if (curChar == 92)
+                     jjCheckNAddTwoStates(651, 652);
+                  break;
+               case 651:
+                  if ((0xffffff81ffffff81L & l) == 0L)
+                     break;
+                  if (kind > 92)
+                     kind = 92;
+                  jjCheckNAddTwoStates(649, 650);
+                  break;
+               case 652:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 92)
+                     kind = 92;
+                  jjCheckNAddStates(1592, 1596);
+                  break;
+               case 656:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 92)
+                     kind = 92;
+                  jjCheckNAddStates(1597, 1604);
+                  break;
+               case 657:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 92)
+                     kind = 92;
+                  jjCheckNAddStates(1605, 1608);
+                  break;
+               case 658:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 92)
+                     kind = 92;
+                  jjCheckNAddStates(1609, 1613);
+                  break;
+               case 659:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 92)
+                     kind = 92;
+                  jjCheckNAddStates(1614, 1619);
+                  break;
+               case 660:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 92)
+                     kind = 92;
+                  jjCheckNAddStates(1620, 1626);
+                  break;
+               case 661:
+                  if (curChar == 92)
+                     jjCheckNAddTwoStates(651, 662);
+                  break;
+               case 662:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 92)
+                     kind = 92;
+                  jjCheckNAddStates(1627, 1631);
+                  break;
+               case 664:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 92)
+                     kind = 92;
+                  jjCheckNAddStates(1632, 1639);
+                  break;
+               case 665:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 92)
+                     kind = 92;
+                  jjCheckNAddStates(1640, 1643);
+                  break;
+               case 666:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 92)
+                     kind = 92;
+                  jjCheckNAddStates(1644, 1648);
+                  break;
+               case 667:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 92)
+                     kind = 92;
+                  jjCheckNAddStates(1649, 1654);
+                  break;
+               case 668:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 92)
+                     kind = 92;
+                  jjCheckNAddStates(1655, 1661);
+                  break;
+               case 669:
+                  if (curChar == 92)
+                     jjCheckNAddStates(1677, 1680);
+                  break;
+               default : break;
+            }
+         } while(i != startsAt);
+      }
+      else
+      {
+         int hiByte = (int)(curChar >> 8);
+         int i1 = hiByte >> 6;
+         long l1 = 1L << (hiByte & 077);
+         int i2 = (curChar & 0xff) >> 6;
+         long l2 = 1L << (curChar & 077);
+         MatchLoop: do
+         {
+            switch(jjstateSet[--i])
+            {
+               case 7:
+                  if (!jjCanMove_1(hiByte, i1, i2, l1, l2))
+                     break;
+                  if (kind > 34)
+                     kind = 34;
+                  jjCheckNAddStates(1672, 1676);
+                  break;
+               case 1:
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     jjAddStates(1687, 1688);
+                  break;
+               case 3:
+               case 4:
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     jjCheckNAddTwoStates(4, 5);
+                  break;
+               case 22:
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     jjAddStates(1689, 1690);
+                  break;
+               case 24:
+               case 25:
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     jjCheckNAddTwoStates(25, 26);
+                  break;
+               case 40:
+               case 41:
+                  if (!jjCanMove_1(hiByte, i1, i2, l1, l2))
+                     break;
+                  if (kind > 81)
+                     kind = 81;
+                  jjCheckNAddTwoStates(41, 42);
+                  break;
+               case 43:
+                  if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     break;
+                  if (kind > 81)
+                     kind = 81;
+                  jjCheckNAddTwoStates(41, 42);
+                  break;
+               case 64:
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     jjAddStates(1691, 1692);
+                  break;
+               case 66:
+               case 67:
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     jjCheckNAddTwoStates(67, 68);
+                  break;
+               case 72:
+               case 73:
+                  if (jjCanMove_1(hiByte, i1, i2, l1, l2))
+                     jjCheckNAddStates(242, 247);
+                  break;
+               case 76:
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     jjAddStates(1693, 1694);
+                  break;
+               case 78:
+               case 79:
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     jjCheckNAddTwoStates(79, 80);
+                  break;
+               case 84:
+               case 85:
+                  if (jjCanMove_1(hiByte, i1, i2, l1, l2))
+                     jjCheckNAddStates(260, 262);
+                  break;
+               case 88:
+               case 89:
+                  if (jjCanMove_1(hiByte, i1, i2, l1, l2))
+                     jjCheckNAddStates(268, 273);
+                  break;
+               case 92:
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     jjAddStates(1695, 1696);
+                  break;
+               case 94:
+               case 95:
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     jjCheckNAddTwoStates(95, 96);
+                  break;
+               case 101:
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     jjCheckNAddStates(260, 262);
+                  break;
+               case 120:
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     jjCheckNAddStates(268, 273);
+                  break;
+               case 139:
+               case 145:
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     jjCheckNAddStates(483, 485);
+                  break;
+               case 155:
+               case 161:
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     jjCheckNAddStates(532, 534);
+                  break;
+               case 171:
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     jjCheckNAddStates(242, 247);
+                  break;
+               case 192:
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     jjAddStates(1713, 1714);
+                  break;
+               case 194:
+               case 195:
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     jjCheckNAddTwoStates(195, 196);
+                  break;
+               case 200:
+               case 201:
+                  if (jjCanMove_1(hiByte, i1, i2, l1, l2))
+                     jjCheckNAddStates(706, 709);
+                  break;
+               case 204:
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     jjAddStates(1715, 1716);
+                  break;
+               case 206:
+               case 207:
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     jjCheckNAddTwoStates(207, 208);
+                  break;
+               case 213:
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     jjCheckNAddStates(706, 709);
+                  break;
+               case 234:
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     jjAddStates(1717, 1718);
+                  break;
+               case 236:
+               case 237:
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     jjCheckNAddTwoStates(237, 238);
+                  break;
+               case 243:
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     jjAddStates(1719, 1720);
+                  break;
+               case 245:
+               case 246:
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     jjCheckNAddTwoStates(246, 247);
+                  break;
+               case 254:
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     jjAddStates(1721, 1722);
+                  break;
+               case 256:
+               case 257:
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     jjCheckNAddTwoStates(257, 258);
+                  break;
+               case 263:
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     jjAddStates(1723, 1724);
+                  break;
+               case 265:
+               case 266:
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     jjCheckNAddTwoStates(266, 267);
+                  break;
+               case 272:
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     jjAddStates(1725, 1726);
+                  break;
+               case 274:
+               case 275:
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     jjCheckNAddTwoStates(275, 276);
+                  break;
+               case 281:
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     jjAddStates(1727, 1728);
+                  break;
+               case 283:
+               case 284:
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     jjCheckNAddTwoStates(284, 285);
+                  break;
+               case 290:
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     jjAddStates(1729, 1730);
+                  break;
+               case 292:
+               case 293:
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     jjCheckNAddTwoStates(293, 294);
+                  break;
+               case 301:
+               case 307:
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     jjCheckNAddStates(867, 869);
+                  break;
+               case 316:
+               case 321:
+                  if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     break;
+                  if (kind > 33)
+                     kind = 33;
+                  jjCheckNAddTwoStates(316, 317);
+                  break;
+               case 331:
+               case 337:
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     jjCheckNAddStates(946, 948);
+                  break;
+               case 346:
+               case 351:
+                  if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     break;
+                  if (kind > 33)
+                     kind = 33;
+                  jjCheckNAddTwoStates(346, 347);
+                  break;
+               case 361:
+               case 362:
+                  if (!jjCanMove_1(hiByte, i1, i2, l1, l2))
+                     break;
+                  if (kind > 34)
+                     kind = 34;
+                  jjCheckNAddTwoStates(362, 363);
+                  break;
+               case 364:
+                  if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     break;
+                  if (kind > 34)
+                     kind = 34;
+                  jjCheckNAddTwoStates(362, 363);
+                  break;
+               case 374:
+               case 375:
+                  if (jjCanMove_1(hiByte, i1, i2, l1, l2))
+                     jjCheckNAddStates(1060, 1062);
+                  break;
+               case 378:
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     jjCheckNAddStates(1060, 1062);
+                  break;
+               case 407:
+               case 408:
+                  if (!jjCanMove_1(hiByte, i1, i2, l1, l2))
+                     break;
+                  if (kind > 35)
+                     kind = 35;
+                  jjCheckNAddTwoStates(408, 409);
+                  break;
+               case 410:
+                  if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     break;
+                  if (kind > 35)
+                     kind = 35;
+                  jjCheckNAddTwoStates(408, 409);
+                  break;
+               case 428:
+                  if (!jjCanMove_1(hiByte, i1, i2, l1, l2))
+                     break;
+                  if (kind > 36)
+                     kind = 36;
+                  jjCheckNAddTwoStates(428, 429);
+                  break;
+               case 430:
+                  if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     break;
+                  if (kind > 36)
+                     kind = 36;
+                  jjCheckNAddTwoStates(428, 429);
+                  break;
+               case 443:
+               case 459:
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     jjCheckNAddStates(1291, 1293);
+                  break;
+               case 447:
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     jjAddStates(1749, 1750);
+                  break;
+               case 449:
+               case 450:
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     jjCheckNAddTwoStates(450, 451);
+                  break;
+               case 469:
+               case 475:
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     jjCheckNAddStates(1344, 1346);
+                  break;
+               case 484:
+                  if (jjCanMove_1(hiByte, i1, i2, l1, l2))
+                     jjCheckNAddStates(1388, 1391);
+                  break;
+               case 486:
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     jjCheckNAddStates(1388, 1391);
+                  break;
+               case 498:
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     jjAddStates(1761, 1762);
+                  break;
+               case 500:
+               case 501:
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     jjCheckNAddTwoStates(501, 502);
+                  break;
+               case 623:
+               case 624:
+                  if (!jjCanMove_1(hiByte, i1, i2, l1, l2))
+                     break;
+                  if (kind > 62)
+                     kind = 62;
+                  jjCheckNAddTwoStates(624, 625);
+                  break;
+               case 626:
+                  if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     break;
+                  if (kind > 62)
+                     kind = 62;
+                  jjCheckNAddTwoStates(624, 625);
+                  break;
+               case 648:
+               case 649:
+                  if (!jjCanMove_1(hiByte, i1, i2, l1, l2))
+                     break;
+                  if (kind > 92)
+                     kind = 92;
+                  jjCheckNAddTwoStates(649, 650);
+                  break;
+               case 651:
+                  if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     break;
+                  if (kind > 92)
+                     kind = 92;
+                  jjCheckNAddTwoStates(649, 650);
+                  break;
+               default : break;
+            }
+         } while(i != startsAt);
+      }
+      if (kind != 0x7fffffff)
+      {
+         jjmatchedKind = kind;
+         jjmatchedPos = curPos;
+         kind = 0x7fffffff;
+      }
+      ++curPos;
+      if ((i = jjnewStateCnt) == (startsAt = 728 - (jjnewStateCnt = startsAt)))
+         break;
+      try { curChar = input_stream.readChar(); }
+      catch(java.io.IOException e) { break; }
+   }
+   if (jjmatchedPos > strPos)
+      return curPos;
+
+   int toRet = Math.max(curPos, seenUpto);
+
+   if (curPos < toRet)
+      for (i = toRet - Math.min(curPos, seenUpto); i-- > 0; )
+         try { curChar = input_stream.readChar(); }
+         catch(java.io.IOException e) { throw new Error("Internal Error : Please send a bug report."); }
+
+   if (jjmatchedPos < strPos)
+   {
+      jjmatchedKind = strKind;
+      jjmatchedPos = strPos;
+   }
+   else if (jjmatchedPos == strPos && jjmatchedKind > strKind)
+      jjmatchedKind = strKind;
+
+   return toRet;
+}
+static final int[] jjnextStates = {
+   671, 672, 673, 556, 674, 675, 676, 559, 677, 678, 679, 561, 680, 681, 682, 564, 
+   683, 684, 685, 567, 686, 687, 688, 570, 689, 690, 691, 573, 692, 693, 694, 576, 
+   695, 696, 697, 579, 698, 699, 700, 583, 587, 589, 701, 702, 703, 592, 593, 704, 
+   705, 706, 596, 707, 708, 709, 599, 710, 711, 712, 603, 713, 714, 715, 608, 716, 
+   717, 718, 610, 719, 720, 721, 623, 722, 723, 724, 645, 725, 726, 727, 636, 240, 
+   241, 249, 250, 251, 260, 261, 8, 269, 270, 9, 278, 279, 10, 287, 288, 11, 
+   296, 297, 298, 554, 557, 560, 562, 565, 568, 571, 574, 577, 580, 590, 594, 597, 
+   600, 604, 609, 622, 644, 646, 647, 648, 661, 406, 407, 428, 429, 420, 361, 374, 
+   388, 396, 331, 332, 346, 347, 333, 301, 302, 316, 317, 303, 62, 71, 72, 181, 
+   2, 3, 6, 3, 5, 6, 28, 37, 20, 23, 24, 27, 24, 26, 27, 40, 
+   53, 41, 46, 47, 42, 48, 41, 49, 46, 47, 42, 50, 51, 52, 41, 46, 
+   47, 42, 41, 49, 46, 47, 42, 41, 49, 46, 47, 42, 50, 41, 49, 46, 
+   47, 42, 50, 51, 55, 47, 41, 42, 56, 57, 55, 47, 41, 42, 58, 59, 
+   60, 55, 47, 41, 42, 57, 55, 47, 41, 42, 57, 55, 47, 41, 42, 58, 
+   57, 55, 47, 41, 42, 58, 59, 70, 71, 72, 181, 62, 65, 66, 69, 66, 
+   68, 69, 73, 74, 83, 84, 99, 170, 82, 83, 84, 99, 100, 74, 77, 78, 
+   81, 78, 80, 81, 85, 86, 102, 87, 88, 138, 154, 130, 83, 84, 89, 90, 
+   99, 119, 83, 84, 98, 99, 100, 90, 93, 94, 97, 94, 96, 97, 85, 105, 
+   106, 86, 102, 107, 85, 108, 105, 106, 86, 102, 109, 110, 111, 85, 105, 106, 
+   86, 102, 85, 108, 105, 106, 86, 102, 85, 108, 105, 106, 86, 102, 109, 85, 
+   108, 105, 106, 86, 102, 109, 110, 113, 106, 85, 86, 102, 114, 115, 113, 106, 
+   85, 86, 102, 116, 117, 118, 113, 106, 85, 86, 102, 115, 113, 106, 85, 86, 
+   102, 115, 113, 106, 85, 86, 102, 116, 115, 113, 106, 85, 86, 102, 116, 117, 
+   83, 84, 89, 123, 99, 119, 124, 125, 83, 84, 89, 90, 98, 99, 100, 90, 
+   119, 83, 84, 89, 126, 123, 99, 119, 124, 127, 128, 129, 83, 84, 89, 123, 
+   99, 119, 124, 83, 84, 89, 126, 123, 99, 119, 124, 83, 84, 89, 126, 123, 
+   99, 119, 124, 127, 83, 84, 89, 126, 123, 99, 119, 124, 127, 128, 83, 84, 
+   132, 89, 99, 119, 124, 133, 83, 84, 134, 132, 89, 99, 119, 124, 135, 136, 
+   137, 83, 84, 132, 89, 99, 119, 124, 83, 84, 134, 132, 89, 99, 119, 124, 
+   83, 84, 134, 132, 89, 99, 119, 124, 135, 83, 84, 134, 132, 89, 99, 119, 
+   124, 135, 136, 139, 140, 141, 83, 84, 90, 99, 100, 139, 147, 148, 140, 141, 
+   149, 139, 150, 147, 148, 140, 141, 151, 152, 153, 139, 147, 148, 140, 141, 139, 
+   150, 147, 148, 140, 141, 139, 150, 147, 148, 140, 141, 151, 139, 150, 147, 148, 
+   140, 141, 151, 152, 155, 156, 157, 155, 163, 164, 156, 157, 165, 155, 166, 163, 
+   164, 156, 157, 167, 168, 169, 155, 163, 164, 156, 157, 155, 166, 163, 164, 156, 
+   157, 155, 166, 163, 164, 156, 157, 167, 155, 166, 163, 164, 156, 157, 167, 168, 
+   73, 174, 83, 84, 99, 170, 175, 176, 73, 74, 82, 83, 84, 99, 100, 74, 
+   170, 73, 177, 174, 83, 84, 99, 170, 175, 178, 179, 180, 73, 174, 83, 84, 
+   99, 170, 175, 73, 177, 174, 83, 84, 99, 170, 175, 73, 177, 174, 83, 84, 
+   99, 170, 175, 178, 73, 177, 174, 83, 84, 99, 170, 175, 178, 179, 183, 73, 
+   83, 84, 99, 170, 175, 184, 185, 183, 73, 83, 84, 99, 170, 175, 186, 187, 
+   188, 183, 73, 83, 84, 99, 170, 175, 185, 183, 73, 83, 84, 99, 170, 175, 
+   185, 183, 73, 83, 84, 99, 170, 175, 186, 185, 183, 73, 83, 84, 99, 170, 
+   175, 186, 187, 190, 199, 200, 223, 198, 199, 200, 223, 190, 193, 194, 197, 194, 
+   196, 197, 201, 202, 211, 212, 210, 211, 202, 205, 206, 209, 206, 208, 209, 201, 
+   216, 211, 212, 217, 218, 201, 202, 210, 211, 202, 212, 201, 219, 216, 211, 212, 
+   217, 220, 221, 222, 201, 216, 211, 212, 217, 201, 219, 216, 211, 212, 217, 201, 
+   219, 216, 211, 212, 217, 220, 201, 219, 216, 211, 212, 217, 220, 221, 225, 201, 
+   211, 212, 217, 226, 227, 225, 201, 211, 212, 217, 228, 229, 230, 225, 201, 211, 
+   212, 217, 227, 225, 201, 211, 212, 217, 227, 225, 201, 211, 212, 217, 228, 227, 
+   225, 201, 211, 212, 217, 228, 229, 235, 236, 239, 236, 238, 239, 244, 245, 248, 
+   245, 247, 248, 249, 250, 251, 255, 256, 259, 256, 258, 259, 260, 261, 8, 264, 
+   265, 268, 265, 267, 268, 269, 270, 9, 273, 274, 277, 274, 276, 277, 278, 279, 
+   10, 282, 283, 286, 283, 285, 286, 287, 288, 11, 291, 292, 295, 292, 294, 295, 
+   296, 297, 298, 301, 302, 303, 301, 309, 310, 302, 303, 311, 301, 312, 309, 310, 
+   302, 303, 313, 314, 315, 301, 309, 310, 302, 303, 301, 312, 309, 310, 302, 303, 
+   301, 312, 309, 310, 302, 303, 313, 301, 312, 309, 310, 302, 303, 313, 314, 316, 
+   323, 324, 317, 325, 316, 326, 323, 324, 317, 327, 328, 329, 316, 323, 324, 317, 
+   316, 326, 323, 324, 317, 316, 326, 323, 324, 317, 327, 316, 326, 323, 324, 317, 
+   327, 328, 331, 332, 333, 331, 339, 340, 332, 333, 341, 331, 342, 339, 340, 332, 
+   333, 343, 344, 345, 331, 339, 340, 332, 333, 331, 342, 339, 340, 332, 333, 331, 
+   342, 339, 340, 332, 333, 343, 331, 342, 339, 340, 332, 333, 343, 344, 346, 353, 
+   354, 347, 355, 346, 356, 353, 354, 347, 357, 358, 359, 346, 353, 354, 347, 346, 
+   356, 353, 354, 347, 346, 356, 353, 354, 347, 357, 346, 356, 353, 354, 347, 357, 
+   358, 362, 367, 368, 363, 369, 362, 370, 367, 368, 363, 371, 372, 373, 362, 367, 
+   368, 363, 362, 370, 367, 368, 363, 362, 370, 367, 368, 363, 371, 362, 370, 367, 
+   368, 363, 371, 372, 375, 376, 377, 375, 381, 382, 376, 377, 383, 375, 384, 381, 
+   382, 376, 377, 385, 386, 387, 375, 381, 382, 376, 377, 375, 384, 381, 382, 376, 
+   377, 375, 384, 381, 382, 376, 377, 385, 375, 384, 381, 382, 376, 377, 385, 386, 
+   390, 382, 375, 376, 377, 391, 392, 390, 382, 375, 376, 377, 393, 394, 395, 390, 
+   382, 375, 376, 377, 392, 390, 382, 375, 376, 377, 392, 390, 382, 375, 376, 377, 
+   393, 392, 390, 382, 375, 376, 377, 393, 394, 398, 368, 362, 363, 399, 400, 398, 
+   368, 362, 363, 401, 402, 403, 398, 368, 362, 363, 400, 398, 368, 362, 363, 400, 
+   398, 368, 362, 363, 401, 400, 398, 368, 362, 363, 401, 402, 408, 413, 414, 409, 
+   415, 408, 416, 413, 414, 409, 417, 418, 419, 408, 413, 414, 409, 408, 416, 413, 
+   414, 409, 408, 416, 413, 414, 409, 417, 408, 416, 413, 414, 409, 417, 418, 422, 
+   414, 408, 409, 423, 424, 422, 414, 408, 409, 425, 426, 427, 422, 414, 408, 409, 
+   424, 422, 414, 408, 409, 424, 422, 414, 408, 409, 425, 424, 422, 414, 408, 409, 
+   425, 426, 428, 433, 434, 429, 435, 428, 436, 433, 434, 429, 437, 438, 439, 428, 
+   433, 434, 429, 428, 436, 433, 434, 429, 428, 436, 433, 434, 429, 437, 428, 436, 
+   433, 434, 429, 437, 438, 442, 468, 484, 454, 485, 496, 443, 444, 455, 453, 454, 
+   445, 448, 449, 452, 449, 451, 452, 443, 461, 462, 444, 455, 463, 443, 464, 461, 
+   462, 444, 455, 465, 466, 467, 443, 461, 462, 444, 455, 443, 464, 461, 462, 444, 
+   455, 443, 464, 461, 462, 444, 455, 465, 443, 464, 461, 462, 444, 455, 465, 466, 
+   469, 470, 471, 469, 477, 478, 470, 471, 479, 469, 480, 477, 478, 470, 471, 481, 
+   482, 483, 469, 477, 478, 470, 471, 469, 480, 477, 478, 470, 471, 469, 480, 477, 
+   478, 470, 471, 481, 469, 480, 477, 478, 470, 471, 481, 482, 484, 445, 454, 485, 
+   484, 489, 454, 485, 490, 491, 484, 445, 453, 454, 445, 485, 484, 492, 489, 454, 
+   485, 490, 493, 494, 495, 484, 489, 454, 485, 490, 484, 492, 489, 454, 485, 490, 
+   484, 492, 489, 454, 485, 490, 493, 484, 492, 489, 454, 485, 490, 493, 494, 504, 
+   442, 468, 484, 453, 454, 445, 485, 496, 499, 500, 503, 500, 502, 503, 504, 442, 
+   468, 484, 454, 485, 496, 508, 514, 510, 511, 512, 513, 510, 511, 512, 515, 520, 
+   524, 528, 532, 536, 510, 534, 535, 510, 537, 538, 539, 510, 537, 538, 519, 545, 
+   546, 547, 519, 545, 546, 549, 542, 550, 551, 552, 549, 542, 550, 549, 542, 550, 
+   551, 580, 583, 587, 589, 590, 592, 593, 617, 618, 614, 620, 621, 611, 613, 622, 
+   623, 636, 624, 629, 630, 625, 631, 624, 632, 629, 630, 625, 633, 634, 635, 624, 
+   629, 630, 625, 624, 632, 629, 630, 625, 624, 632, 629, 630, 625, 633, 624, 632, 
+   629, 630, 625, 633, 634, 638, 630, 624, 625, 639, 640, 638, 630, 624, 625, 641, 
+   642, 643, 638, 630, 624, 625, 640, 638, 630, 624, 625, 640, 638, 630, 624, 625, 
+   641, 640, 638, 630, 624, 625, 641, 642, 649, 654, 655, 650, 656, 649, 657, 654, 
+   655, 650, 658, 659, 660, 649, 654, 655, 650, 649, 657, 654, 655, 650, 649, 657, 
+   654, 655, 650, 658, 649, 657, 654, 655, 650, 658, 659, 663, 655, 649, 650, 664, 
+   665, 663, 655, 649, 650, 666, 667, 668, 663, 655, 649, 650, 665, 663, 655, 649, 
+   650, 665, 663, 655, 649, 650, 666, 665, 663, 655, 649, 650, 666, 667, 698, 583, 
+   587, 589, 701, 592, 593, 719, 623, 636, 362, 375, 376, 377, 363, 364, 397, 378, 
+   389, 39, 40, 53, 506, 507, 540, 1, 2, 22, 23, 64, 65, 76, 77, 92, 
+   93, 101, 112, 120, 121, 142, 144, 145, 146, 158, 160, 161, 162, 171, 172, 101, 
+   112, 192, 193, 204, 205, 234, 235, 243, 244, 254, 255, 263, 264, 272, 273, 281, 
+   282, 290, 291, 304, 306, 307, 308, 318, 320, 321, 322, 334, 336, 337, 338, 348, 
+   350, 351, 352, 430, 431, 447, 448, 456, 458, 459, 460, 472, 474, 475, 476, 486, 
+   487, 498, 499, 
+};
+private static final boolean jjCanMove_0(int hiByte, int i1, int i2, long l1, long l2)
+{
+   switch(hiByte)
+   {
+      case 0:
+         return ((jjbitVec2[i2] & l2) != 0L);
+      default : 
+         if ((jjbitVec0[i1] & l1) != 0L)
+            return true;
+         return false;
+   }
+}
+private static final boolean jjCanMove_1(int hiByte, int i1, int i2, long l1, long l2)
+{
+   switch(hiByte)
+   {
+      case 0:
+         return ((jjbitVec2[i2] & l2) != 0L);
+      default : 
+         return false;
+   }
+}
+public static final String[] jjstrLiteralImages = {
+"", null, null, null, null, null, null, null, null, null, null, null, null, 
+null, null, null, null, null, null, null, null, null, "\74\41\55\55", "\55\55\76", 
+null, "\174\75", null, null, null, null, null, null, null, null, null, null, null, 
+"\175", "\136\75", "\44\75", "\52\75", "\75", "\55", "\73", "\57", "\133", "\135", 
+"\52", "\56", "\51", "\50", "\72", null, null, null, null, null, null, null, null, 
+null, null, null, null, null, null, "\72\72", null, null, null, null, null, null, 
+null, null, null, null, null, null, null, null, null, null, null, null, null, null, 
+null, null, null, null, null, null, null, null, null, null, null, "\174", };
+public static final String[] lexStateNames = {
+   "DEFAULT", 
+};
+static final long[] jjtoToken = {
+   0xffffffffffe00001L, 0x7f803ffffL, 
+};
+static final long[] jjtoSkip = {
+   0x2L, 0x0L, 
+};
+static final long[] jjtoSpecial = {
+   0x2L, 0x0L, 
+};
+protected SimpleCharStream input_stream;
+private final int[] jjrounds = new int[728];
+private final int[] jjstateSet = new int[1456];
+protected char curChar;
+public CssParserTokenManager(SimpleCharStream stream){
+   if (SimpleCharStream.staticFlag)
+      throw new Error("ERROR: Cannot use a static CharStream class with a non-static lexical analyzer.");
+   input_stream = stream;
+}
+public CssParserTokenManager(SimpleCharStream stream, int lexState){
+   this(stream);
+   SwitchTo(lexState);
+}
+public void ReInit(SimpleCharStream stream)
+{
+   jjmatchedPos = jjnewStateCnt = 0;
+   curLexState = defaultLexState;
+   input_stream = stream;
+   ReInitRounds();
+}
+private final void ReInitRounds()
+{
+   int i;
+   jjround = 0x80000001;
+   for (i = 728; i-- > 0;)
+      jjrounds[i] = 0x80000000;
+}
+public void ReInit(SimpleCharStream stream, int lexState)
+{
+   ReInit(stream);
+   SwitchTo(lexState);
+}
+public void SwitchTo(int lexState)
+{
+   if (lexState >= 1 || lexState < 0)
+      throw new TokenMgrError("Error: Ignoring invalid lexical state : " + lexState + ". State unchanged.", TokenMgrError.INVALID_LEXICAL_STATE);
+   else
+      curLexState = lexState;
+}
+
+protected Token jjFillToken()
+{
+   Token t = Token.newToken(jjmatchedKind);
+   t.kind = jjmatchedKind;
+   String im = jjstrLiteralImages[jjmatchedKind];
+   t.image = (im == null) ? input_stream.GetImage() : im;
+   t.beginLine = input_stream.getBeginLine();
+   t.beginColumn = input_stream.getBeginColumn();
+   t.endLine = input_stream.getEndLine();
+   t.endColumn = input_stream.getEndColumn();
+   return t;
+}
+
+int curLexState = 0;
+int defaultLexState = 0;
+int jjnewStateCnt;
+int jjround;
+int jjmatchedPos;
+int jjmatchedKind;
+
+public Token getNextToken() 
+{
+  int kind;
+  Token specialToken = null;
+  Token matchedToken;
+  int curPos = 0;
+
+  EOFLoop :
+  for (;;)
+  {   
+   try   
+   {     
+      curChar = input_stream.BeginToken();
+   }     
+   catch(java.io.IOException e)
+   {        
+      jjmatchedKind = 0;
+      matchedToken = jjFillToken();
+      matchedToken.specialToken = specialToken;
+      return matchedToken;
+   }
+
+   jjmatchedKind = 0x7fffffff;
+   jjmatchedPos = 0;
+   curPos = jjMoveStringLiteralDfa0_0();
+   if (jjmatchedKind != 0x7fffffff)
+   {
+      if (jjmatchedPos + 1 < curPos)
+         input_stream.backup(curPos - jjmatchedPos - 1);
+      if ((jjtoToken[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)
+      {
+         matchedToken = jjFillToken();
+         matchedToken.specialToken = specialToken;
+         return matchedToken;
+      }
+      else
+      {
+         if ((jjtoSpecial[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)
+         {
+            matchedToken = jjFillToken();
+            if (specialToken == null)
+               specialToken = matchedToken;
+            else
+            {
+               matchedToken.specialToken = specialToken;
+               specialToken = (specialToken.next = matchedToken);
+            }
+         }
+         continue EOFLoop;
+      }
+   }
+   int error_line = input_stream.getEndLine();
+   int error_column = input_stream.getEndColumn();
+   String error_after = null;
+   boolean EOFSeen = false;
+   try { input_stream.readChar(); input_stream.backup(1); }
+   catch (java.io.IOException e1) {
+      EOFSeen = true;
+      error_after = curPos <= 1 ? "" : input_stream.GetImage();
+      if (curChar == '\n' || curChar == '\r') {
+         error_line++;
+         error_column = 0;
+      }
+      else
+         error_column++;
+   }
+   if (!EOFSeen) {
+      input_stream.backup(1);
+      error_after = curPos <= 1 ? "" : input_stream.GetImage();
+   }
+   throw new TokenMgrError(EOFSeen, curLexState, error_line, error_column, error_after, curChar, TokenMgrError.LEXICAL_ERROR);
+  }
+}
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/parser/analyzer/Makefile	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,52 @@
+SRCS = CssGrammar.jj
+
+JRCS = $(SRCS:.jj=.java) Couple.java
+OBJS = $(JRCS:.java=.class)
+
+PACKAGE = CSS.Parser.Analyzer
+JAVAC = /usr/local/java11/bin/javac
+JAVADOC = javadoc
+JAVADOCFLAGS = -version -d docs -protected
+JAVACFLAGS =
+MAKEDEPEND = jmakedepend
+
+JAVACC_HOME = /u/www43/0/w3c/plehegar/Work/JavaCC
+
+.SUFFIXES: .class .java .jj
+.java.class:; $(JAVAC) $(JAVACFLAGS) $<
+
+
+all: $(OBJS)
+
+javadoc:; $(JAVADOC) $(JAVADOCFLAGS) $(PACKAGE)
+
+clean:; -rm -f $(OBJS) $(JRCS) *~ core
+
+depend:; $(MAKEDEPEND) $(JRCS)
+
+CssGrammar.java: CssGrammar.jj
+	( export CLASSPATH=$(JAVACC_HOME)/JavaCC.zip:$CLASSPATH ; $(JAVACC_HOME)/bin/javacc $< )
+
+# DO NOT DELETE THIS LINE -- make depend depends on it.
+Couple.class:: Couple.java\
+	/u/www43/0/w3c/plehegar/Work/Java/CSS/Values/CssExpression.class
+CssGrammar.class:: CssGrammar.java\
+	/usr/local/java11/lib/classes.zip\
+	/u/www43/0/w3c/plehegar/Work/Java/CSS/Values/CssValue.class\
+	/u/www43/0/w3c/plehegar/Work/Java/CSS/Values/CssExpression.class\
+	/u/www43/0/w3c/plehegar/Work/Java/CSS/Values/CssString.class\
+	/u/www43/0/w3c/plehegar/Work/Java/CSS/Values/CssURL.class\
+	/u/www43/0/w3c/plehegar/Work/Java/CSS/Values/CssLength.class\
+	/u/www43/0/w3c/plehegar/Work/Java/CSS/Values/CssNumber.class\
+	/u/www43/0/w3c/plehegar/Work/Java/CSS/Values/CssColor.class\
+	/u/www43/0/w3c/plehegar/Work/Java/CSS/Values/CssIdent.class\
+	/u/www43/0/w3c/plehegar/Work/Java/CSS/Values/CssPercentage.class\
+	/u/www43/0/w3c/plehegar/Work/Java/CSS/Values/CssFrequency.class\
+	/u/www43/0/w3c/plehegar/Work/Java/CSS/Values/CssTime.class\
+	/u/www43/0/w3c/plehegar/Work/Java/CSS/Values/CssAngle.class\
+	/u/www43/0/w3c/plehegar/Work/Java/CSS/Properties/CssProperty.class\
+	/u/www43/0/w3c/plehegar/Work/Java/CSS/Parser/Frame.class\
+	/u/www43/0/w3c/plehegar/Work/Java/CSS/Parser/CssError.class\
+	/u/www43/0/w3c/plehegar/Work/Java/CSS/Parser/CssSelectors.class\
+	/u/www43/0/w3c/plehegar/Work/Java/CSS/util/InvalidParamException.class\
+	/u/www43/0/w3c/plehegar/Work/Java/CSS/util/Util.class
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/parser/analyzer/ParseException.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,192 @@
+/* Generated By:JavaCC: Do not edit this line. ParseException.java Version 3.0 */
+package org.w3c.css.parser.analyzer;
+
+/**
+ * This exception is thrown when parse errors are encountered.
+ * You can explicitly create objects of this exception type by
+ * calling the method generateParseException in the generated
+ * parser.
+ *
+ * You can modify this class to customize your error reporting
+ * mechanisms so long as you retain the public fields.
+ */
+public class ParseException extends Exception {
+
+  /**
+   * This constructor is used by the method "generateParseException"
+   * in the generated parser.  Calling this constructor generates
+   * a new object of this type with the fields "currentToken",
+   * "expectedTokenSequences", and "tokenImage" set.  The boolean
+   * flag "specialConstructor" is also set to true to indicate that
+   * this constructor was used to create this object.
+   * This constructor calls its super class with the empty string
+   * to force the "toString" method of parent class "Throwable" to
+   * print the error message in the form:
+   *     ParseException: <result of getMessage>
+   */
+  public ParseException(Token currentTokenVal,
+                        int[][] expectedTokenSequencesVal,
+                        String[] tokenImageVal
+                       )
+  {
+    super("");
+    specialConstructor = true;
+    currentToken = currentTokenVal;
+    expectedTokenSequences = expectedTokenSequencesVal;
+    tokenImage = tokenImageVal;
+  }
+
+  /**
+   * The following constructors are for use by you for whatever
+   * purpose you can think of.  Constructing the exception in this
+   * manner makes the exception behave in the normal way - i.e., as
+   * documented in the class "Throwable".  The fields "errorToken",
+   * "expectedTokenSequences", and "tokenImage" do not contain
+   * relevant information.  The JavaCC generated code does not use
+   * these constructors.
+   */
+
+  public ParseException() {
+    super();
+    specialConstructor = false;
+  }
+
+  public ParseException(String message) {
+    super(message);
+    specialConstructor = false;
+  }
+
+  /**
+   * This variable determines which constructor was used to create
+   * this object and thereby affects the semantics of the
+   * "getMessage" method (see below).
+   */
+  protected boolean specialConstructor;
+
+  /**
+   * This is the last token that has been consumed successfully.  If
+   * this object has been created due to a parse error, the token
+   * followng this token will (therefore) be the first error token.
+   */
+  public Token currentToken;
+
+  /**
+   * Each entry in this array is an array of integers.  Each array
+   * of integers represents a sequence of tokens (by their ordinal
+   * values) that is expected at this point of the parse.
+   */
+  public int[][] expectedTokenSequences;
+
+  /**
+   * This is a reference to the "tokenImage" array of the generated
+   * parser within which the parse error occurred.  This array is
+   * defined in the generated ...Constants interface.
+   */
+  public String[] tokenImage;
+
+  /**
+   * This method has the standard behavior when this object has been
+   * created using the standard constructors.  Otherwise, it uses
+   * "currentToken" and "expectedTokenSequences" to generate a parse
+   * error message and returns it.  If this object has been created
+   * due to a parse error, and you do not catch it (it gets thrown
+   * from the parser), then this method is called during the printing
+   * of the final stack trace, and hence the correct error message
+   * gets displayed.
+   */
+  public String getMessage() {
+    if (!specialConstructor) {
+      return super.getMessage();
+    }
+    StringBuffer expected = new StringBuffer();
+    int maxSize = 0;
+    for (int i = 0; i < expectedTokenSequences.length; i++) {
+      if (maxSize < expectedTokenSequences[i].length) {
+        maxSize = expectedTokenSequences[i].length;
+      }
+      for (int j = 0; j < expectedTokenSequences[i].length; j++) {
+        expected.append(tokenImage[expectedTokenSequences[i][j]]).append(" ");
+      }
+      if (expectedTokenSequences[i][expectedTokenSequences[i].length - 1] != 0) {
+        expected.append("...");
+      }
+      expected.append(eol).append("    ");
+    }
+    String retval = "Encountered \"";
+    Token tok = currentToken.next;
+    for (int i = 0; i < maxSize; i++) {
+      if (i != 0) retval += " ";
+      if (tok.kind == 0) {
+        retval += tokenImage[0];
+        break;
+      }
+      retval += add_escapes(tok.image);
+      tok = tok.next; 
+    }
+    retval += "\" at line " + currentToken.next.beginLine + ", column " + currentToken.next.beginColumn;
+    retval += "." + eol;
+    if (expectedTokenSequences.length == 1) {
+      retval += "Was expecting:" + eol + "    ";
+    } else {
+      retval += "Was expecting one of:" + eol + "    ";
+    }
+    retval += expected.toString();
+    return retval;
+  }
+
+  /**
+   * The end of line string for this machine.
+   */
+  protected String eol = System.getProperty("line.separator", "\n");
+ 
+  /**
+   * Used to convert raw characters to their escaped version
+   * when these raw version cannot be used as part of an ASCII
+   * string literal.
+   */
+  protected String add_escapes(String str) {
+      StringBuffer retval = new StringBuffer();
+      char ch;
+      for (int i = 0; i < str.length(); i++) {
+        switch (str.charAt(i))
+        {
+           case 0 :
+              continue;
+           case '\b':
+              retval.append("\\b");
+              continue;
+           case '\t':
+              retval.append("\\t");
+              continue;
+           case '\n':
+              retval.append("\\n");
+              continue;
+           case '\f':
+              retval.append("\\f");
+              continue;
+           case '\r':
+              retval.append("\\r");
+              continue;
+           case '\"':
+              retval.append("\\\"");
+              continue;
+           case '\'':
+              retval.append("\\\'");
+              continue;
+           case '\\':
+              retval.append("\\\\");
+              continue;
+           default:
+              if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
+                 String s = "0000" + Integer.toString(ch, 16);
+                 retval.append("\\u" + s.substring(s.length() - 4, s.length()));
+              } else {
+                 retval.append(ch);
+              }
+              continue;
+        }
+      }
+      return retval.toString();
+   }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/parser/analyzer/SimpleCharStream.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,439 @@
+/* Generated By:JavaCC: Do not edit this line. SimpleCharStream.java Version 4.0 */
+package org.w3c.css.parser.analyzer;
+
+/**
+ * An implementation of interface CharStream, where the stream is assumed to
+ * contain only ASCII characters (without unicode processing).
+ */
+
+public class SimpleCharStream
+{
+  public static final boolean staticFlag = false;
+  int bufsize;
+  int available;
+  int tokenBegin;
+  public int bufpos = -1;
+  protected int bufline[];
+  protected int bufcolumn[];
+
+  protected int column = 0;
+  protected int line = 1;
+
+  protected boolean prevCharIsCR = false;
+  protected boolean prevCharIsLF = false;
+
+  protected java.io.Reader inputStream;
+
+  protected char[] buffer;
+  protected int maxNextCharInd = 0;
+  protected int inBuf = 0;
+  protected int tabSize = 8;
+
+  protected void setTabSize(int i) { tabSize = i; }
+  protected int getTabSize(int i) { return tabSize; }
+
+
+  protected void ExpandBuff(boolean wrapAround)
+  {
+     char[] newbuffer = new char[bufsize + 2048];
+     int newbufline[] = new int[bufsize + 2048];
+     int newbufcolumn[] = new int[bufsize + 2048];
+
+     try
+     {
+        if (wrapAround)
+        {
+           System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
+           System.arraycopy(buffer, 0, newbuffer,
+                                             bufsize - tokenBegin, bufpos);
+           buffer = newbuffer;
+
+           System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
+           System.arraycopy(bufline, 0, newbufline, bufsize - tokenBegin, bufpos);
+           bufline = newbufline;
+
+           System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
+           System.arraycopy(bufcolumn, 0, newbufcolumn, bufsize - tokenBegin, bufpos);
+           bufcolumn = newbufcolumn;
+
+           maxNextCharInd = (bufpos += (bufsize - tokenBegin));
+        }
+        else
+        {
+           System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
+           buffer = newbuffer;
+
+           System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
+           bufline = newbufline;
+
+           System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
+           bufcolumn = newbufcolumn;
+
+           maxNextCharInd = (bufpos -= tokenBegin);
+        }
+     }
+     catch (Throwable t)
+     {
+        throw new Error(t.getMessage());
+     }
+
+
+     bufsize += 2048;
+     available = bufsize;
+     tokenBegin = 0;
+  }
+
+  protected void FillBuff() throws java.io.IOException
+  {
+     if (maxNextCharInd == available)
+     {
+        if (available == bufsize)
+        {
+           if (tokenBegin > 2048)
+           {
+              bufpos = maxNextCharInd = 0;
+              available = tokenBegin;
+           }
+           else if (tokenBegin < 0)
+              bufpos = maxNextCharInd = 0;
+           else
+              ExpandBuff(false);
+        }
+        else if (available > tokenBegin)
+           available = bufsize;
+        else if ((tokenBegin - available) < 2048)
+           ExpandBuff(true);
+        else
+           available = tokenBegin;
+     }
+
+     int i;
+     try {
+        if ((i = inputStream.read(buffer, maxNextCharInd,
+                                    available - maxNextCharInd)) == -1)
+        {
+           inputStream.close();
+           throw new java.io.IOException();
+        }
+        else
+           maxNextCharInd += i;
+        return;
+     }
+     catch(java.io.IOException e) {
+        --bufpos;
+        backup(0);
+        if (tokenBegin == -1)
+           tokenBegin = bufpos;
+        throw e;
+     }
+  }
+
+  public char BeginToken() throws java.io.IOException
+  {
+     tokenBegin = -1;
+     char c = readChar();
+     tokenBegin = bufpos;
+
+     return c;
+  }
+
+  protected void UpdateLineColumn(char c)
+  {
+     column++;
+
+     if (prevCharIsLF)
+     {
+        prevCharIsLF = false;
+        line += (column = 1);
+     }
+     else if (prevCharIsCR)
+     {
+        prevCharIsCR = false;
+        if (c == '\n')
+        {
+           prevCharIsLF = true;
+        }
+        else
+           line += (column = 1);
+     }
+
+     switch (c)
+     {
+        case '\r' :
+           prevCharIsCR = true;
+           break;
+        case '\n' :
+           prevCharIsLF = true;
+           break;
+        case '\t' :
+           column--;
+           column += (tabSize - (column % tabSize));
+           break;
+        default :
+           break;
+     }
+
+     bufline[bufpos] = line;
+     bufcolumn[bufpos] = column;
+  }
+
+  public char readChar() throws java.io.IOException
+  {
+     if (inBuf > 0)
+     {
+        --inBuf;
+
+        if (++bufpos == bufsize)
+           bufpos = 0;
+
+        return buffer[bufpos];
+     }
+
+     if (++bufpos >= maxNextCharInd)
+        FillBuff();
+
+     char c = buffer[bufpos];
+
+     UpdateLineColumn(c);
+     return (c);
+  }
+
+  /**
+   * @deprecated 
+   * @see #getEndColumn
+   */
+
+  public int getColumn() {
+     return bufcolumn[bufpos];
+  }
+
+  /**
+   * @deprecated 
+   * @see #getEndLine
+   */
+
+  public int getLine() {
+     return bufline[bufpos];
+  }
+
+  public int getEndColumn() {
+     return bufcolumn[bufpos];
+  }
+
+  public int getEndLine() {
+     return bufline[bufpos];
+  }
+
+  public int getBeginColumn() {
+     return bufcolumn[tokenBegin];
+  }
+
+  public int getBeginLine() {
+     return bufline[tokenBegin];
+  }
+
+  public void backup(int amount) {
+
+    inBuf += amount;
+    if ((bufpos -= amount) < 0)
+       bufpos += bufsize;
+  }
+
+  public SimpleCharStream(java.io.Reader dstream, int startline,
+  int startcolumn, int buffersize)
+  {
+    inputStream = dstream;
+    line = startline;
+    column = startcolumn - 1;
+
+    available = bufsize = buffersize;
+    buffer = new char[buffersize];
+    bufline = new int[buffersize];
+    bufcolumn = new int[buffersize];
+  }
+
+  public SimpleCharStream(java.io.Reader dstream, int startline,
+                          int startcolumn)
+  {
+     this(dstream, startline, startcolumn, 4096);
+  }
+
+  public SimpleCharStream(java.io.Reader dstream)
+  {
+     this(dstream, 1, 1, 4096);
+  }
+  public void ReInit(java.io.Reader dstream, int startline,
+  int startcolumn, int buffersize)
+  {
+    inputStream = dstream;
+    line = startline;
+    column = startcolumn - 1;
+
+    if (buffer == null || buffersize != buffer.length)
+    {
+      available = bufsize = buffersize;
+      buffer = new char[buffersize];
+      bufline = new int[buffersize];
+      bufcolumn = new int[buffersize];
+    }
+    prevCharIsLF = prevCharIsCR = false;
+    tokenBegin = inBuf = maxNextCharInd = 0;
+    bufpos = -1;
+  }
+
+  public void ReInit(java.io.Reader dstream, int startline,
+                     int startcolumn)
+  {
+     ReInit(dstream, startline, startcolumn, 4096);
+  }
+
+  public void ReInit(java.io.Reader dstream)
+  {
+     ReInit(dstream, 1, 1, 4096);
+  }
+  public SimpleCharStream(java.io.InputStream dstream, String encoding, int startline,
+  int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException
+  {
+     this(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize);
+  }
+
+  public SimpleCharStream(java.io.InputStream dstream, int startline,
+  int startcolumn, int buffersize)
+  {
+     this(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize);
+  }
+
+  public SimpleCharStream(java.io.InputStream dstream, String encoding, int startline,
+                          int startcolumn) throws java.io.UnsupportedEncodingException
+  {
+     this(dstream, encoding, startline, startcolumn, 4096);
+  }
+
+  public SimpleCharStream(java.io.InputStream dstream, int startline,
+                          int startcolumn)
+  {
+     this(dstream, startline, startcolumn, 4096);
+  }
+
+  public SimpleCharStream(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException
+  {
+     this(dstream, encoding, 1, 1, 4096);
+  }
+
+  public SimpleCharStream(java.io.InputStream dstream)
+  {
+     this(dstream, 1, 1, 4096);
+  }
+
+  public void ReInit(java.io.InputStream dstream, String encoding, int startline,
+                          int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException
+  {
+     ReInit(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize);
+  }
+
+  public void ReInit(java.io.InputStream dstream, int startline,
+                          int startcolumn, int buffersize)
+  {
+     ReInit(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize);
+  }
+
+  public void ReInit(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException
+  {
+     ReInit(dstream, encoding, 1, 1, 4096);
+  }
+
+  public void ReInit(java.io.InputStream dstream)
+  {
+     ReInit(dstream, 1, 1, 4096);
+  }
+  public void ReInit(java.io.InputStream dstream, String encoding, int startline,
+                     int startcolumn) throws java.io.UnsupportedEncodingException
+  {
+     ReInit(dstream, encoding, startline, startcolumn, 4096);
+  }
+  public void ReInit(java.io.InputStream dstream, int startline,
+                     int startcolumn)
+  {
+     ReInit(dstream, startline, startcolumn, 4096);
+  }
+  public String GetImage()
+  {
+     if (bufpos >= tokenBegin)
+        return new String(buffer, tokenBegin, bufpos - tokenBegin + 1);
+     else
+        return new String(buffer, tokenBegin, bufsize - tokenBegin) +
+                              new String(buffer, 0, bufpos + 1);
+  }
+
+  public char[] GetSuffix(int len)
+  {
+     char[] ret = new char[len];
+
+     if ((bufpos + 1) >= len)
+        System.arraycopy(buffer, bufpos - len + 1, ret, 0, len);
+     else
+     {
+        System.arraycopy(buffer, bufsize - (len - bufpos - 1), ret, 0,
+                                                          len - bufpos - 1);
+        System.arraycopy(buffer, 0, ret, len - bufpos - 1, bufpos + 1);
+     }
+
+     return ret;
+  }
+
+  public void Done()
+  {
+     buffer = null;
+     bufline = null;
+     bufcolumn = null;
+  }
+
+  /**
+   * Method to adjust line and column numbers for the start of a token.
+   */
+  public void adjustBeginLineColumn(int newLine, int newCol)
+  {
+     int start = tokenBegin;
+     int len;
+
+     if (bufpos >= tokenBegin)
+     {
+        len = bufpos - tokenBegin + inBuf + 1;
+     }
+     else
+     {
+        len = bufsize - tokenBegin + bufpos + 1 + inBuf;
+     }
+
+     int i = 0, j = 0, k = 0;
+     int nextColDiff = 0, columnDiff = 0;
+
+     while (i < len &&
+            bufline[j = start % bufsize] == bufline[k = ++start % bufsize])
+     {
+        bufline[j] = newLine;
+        nextColDiff = columnDiff + bufcolumn[k] - bufcolumn[j];
+        bufcolumn[j] = newCol + columnDiff;
+        columnDiff = nextColDiff;
+        i++;
+     } 
+
+     if (i < len)
+     {
+        bufline[j] = newLine++;
+        bufcolumn[j] = newCol + columnDiff;
+
+        while (i++ < len)
+        {
+           if (bufline[j = start % bufsize] != bufline[++start % bufsize])
+              bufline[j] = newLine++;
+           else
+              bufline[j] = newLine;
+        }
+     }
+
+     line = bufline[j];
+     column = bufcolumn[j];
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/parser/analyzer/Token.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,81 @@
+/* Generated By:JavaCC: Do not edit this line. Token.java Version 3.0 */
+package org.w3c.css.parser.analyzer;
+
+/**
+ * Describes the input token stream.
+ */
+
+public class Token {
+
+  /**
+   * An integer that describes the kind of this token.  This numbering
+   * system is determined by JavaCCParser, and a table of these numbers is
+   * stored in the file ...Constants.java.
+   */
+  public int kind;
+
+  /**
+   * beginLine and beginColumn describe the position of the first character
+   * of this token; endLine and endColumn describe the position of the
+   * last character of this token.
+   */
+  public int beginLine, beginColumn, endLine, endColumn;
+
+  /**
+   * The string image of the token.
+   */
+  public String image;
+
+  /**
+   * A reference to the next regular (non-special) token from the input
+   * stream.  If this is the last token from the input stream, or if the
+   * token manager has not read tokens beyond this one, this field is
+   * set to null.  This is true only if this token is also a regular
+   * token.  Otherwise, see below for a description of the contents of
+   * this field.
+   */
+  public Token next;
+
+  /**
+   * This field is used to access special tokens that occur prior to this
+   * token, but after the immediately preceding regular (non-special) token.
+   * If there are no such special tokens, this field is set to null.
+   * When there are more than one such special token, this field refers
+   * to the last of these special tokens, which in turn refers to the next
+   * previous special token through its specialToken field, and so on
+   * until the first special token (whose specialToken field is null).
+   * The next fields of special tokens refer to other special tokens that
+   * immediately follow it (without an intervening regular token).  If there
+   * is no such token, this field is null.
+   */
+  public Token specialToken;
+
+  /**
+   * Returns the image.
+   */
+  public String toString()
+  {
+     return image;
+  }
+
+  /**
+   * Returns a new Token object, by default. However, if you want, you
+   * can create and return subclass objects based on the value of ofKind.
+   * Simply add the cases to the switch for all those special cases.
+   * For example, if you have a subclass of Token called IDToken that
+   * you want to create if ofKind is ID, simlpy add something like :
+   *
+   *    case MyParserConstants.ID : return new IDToken();
+   *
+   * to the following switch statement. Then you can cast matchedToken
+   * variable to the appropriate type and use it in your lexical actions.
+   */
+  public static final Token newToken(int ofKind)
+  {
+     switch(ofKind)
+     {
+       default : return new Token();
+     }
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/parser/analyzer/TokenMgrError.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,142 @@
+/* Generated By:JavaCC: Do not edit this line. TokenMgrError.java Version 3.0 */
+package org.w3c.css.parser.analyzer;
+
+public class TokenMgrError extends Error
+{
+   /*
+    * Ordinals for various reasons why an Error of this type can be thrown.
+    */
+
+   /**
+    * Lexical error occured.
+    */
+   static final int LEXICAL_ERROR = 0;
+
+   /**
+    * An attempt wass made to create a second instance of a static token manager.
+    */
+   static final int STATIC_LEXER_ERROR = 1;
+
+   /**
+    * Tried to change to an invalid lexical state.
+    */
+   static final int INVALID_LEXICAL_STATE = 2;
+
+   /**
+    * Detected (and bailed out of) an infinite loop in the token manager.
+    */
+   static final int LOOP_DETECTED = 3;
+
+   /**
+    * Indicates the reason why the exception is thrown. It will have
+    * one of the above 4 values.
+    */
+   int errorCode;
+
+   private int errorLine;
+
+   public int getErrorLine() {
+	return errorLine;
+   }
+
+   /**
+    * Replaces unprintable characters by their espaced (or unicode escaped)
+    * equivalents in the given string
+    */
+   protected static final String addEscapes(String str) {
+      StringBuffer retval = new StringBuffer();
+      char ch;
+      for (int i = 0; i < str.length(); i++) {
+        switch (str.charAt(i))
+        {
+           case 0 :
+              continue;
+           case '\b':
+              retval.append("\\b");
+              continue;
+           case '\t':
+              retval.append("\\t");
+              continue;
+           case '\n':
+              retval.append("\\n");
+              continue;
+           case '\f':
+              retval.append("\\f");
+              continue;
+           case '\r':
+              retval.append("\\r");
+              continue;
+           case '\"':
+              retval.append("\\\"");
+              continue;
+           case '\'':
+              retval.append("\\\'");
+              continue;
+           case '\\':
+              retval.append("\\\\");
+              continue;
+           default:
+              if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
+                 String s = "0000" + Integer.toString(ch, 16);
+                 retval.append("\\u" + s.substring(s.length() - 4, s.length()));
+              } else {
+                 retval.append(ch);
+              }
+              continue;
+        }
+      }
+      return retval.toString();
+   }
+
+   /**
+    * Returns a detailed message for the Error when it is thrown by the
+    * token manager to indicate a lexical error.
+    * Parameters :
+    *    EOFSeen     : indicates if EOF caused the lexicl error
+    *    curLexState : lexical state in which this error occured
+    *    errorLine   : line number when the error occured
+    *    errorColumn : column number when the error occured
+    *    errorAfter  : prefix that was seen before this error occured
+    *    curchar     : the offending character
+    * Note: You can customize the lexical error message by modifying this method.
+    */
+   protected static String LexicalError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar) {
+      return("Lexical error at line " +
+           errorLine + ", column " +
+           errorColumn + ".  Encountered: " +
+           (EOFSeen ? "<EOF> " : ("\"" + addEscapes(String.valueOf(curChar)) + "\"") + " (" + (int)curChar + "), ") +
+           "after : \"" + addEscapes(errorAfter) + "\"");
+   }
+
+   /**
+    * You can also modify the body of this method to customize your error messages.
+    * For example, cases like LOOP_DETECTED and INVALID_LEXICAL_STATE are not
+    * of end-users concern, so you can return something like :
+    *
+    *     "Internal Error : Please file a bug report .... "
+    *
+    * from this method for such cases in the release version of your parser.
+    */
+   public String getMessage() {
+      return super.getMessage();
+   }
+
+   /*
+    * Constructors of various flavors follow.
+    */
+
+   public TokenMgrError() {
+   }
+
+   public TokenMgrError(String message, int reason) {
+      super(message);
+      errorCode = reason;
+   }
+
+   public TokenMgrError(boolean EOFSeen, int lexState, int errorLine,
+	   int errorColumn, String errorAfter, char curChar, int reason) {
+      this(LexicalError(EOFSeen, lexState, errorLine, errorColumn, errorAfter, curChar),
+	      reason);
+      this.errorLine = errorLine;
+   }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/ATSCProperties.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,211 @@
+# Paged properties
+@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
+@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
+
+# Font properties
+@font-face.font-style:            org.w3c.css.properties.font.FontStyle
+@font-face.font-variant:          org.w3c.css.properties.font.FontVariant
+@font-face.font-weight:           org.w3c.css.properties.font.FontWeight
+@font-face.font-size:             org.w3c.css.properties.font.FontSize
+@font-face.font-family:           org.w3c.css.properties.font.FontFamily
+@font-face.font-stretch:          org.w3c.css.properties.font.FontStretch
+@font-face.unicode-range:         org.w3c.css.properties.font.UnicodeRange
+#@font-face.units-per-em:          org.w3c.css.font.UnitsPerEm
+@font-face.src:                   org.w3c.css.properties.font.Src
+#@font-face.panose-1:              org.w3c.css.font.Panose1
+#@font-face.stemv:                 org.w3c.css.font.Stemv
+#@font-face.stemh:                 org.w3c.css.font.Stemh
+#@font-face.slope:                 org.w3c.css.font.Slope
+#@font-face.cap-height:            org.w3c.css.font.CapHeight
+#@font-face.x-hegiht:              org.w3c.css.font.XHeight
+#@font-face.widths:                org.w3c.css.font.Widths
+#@font-face.ascent:                org.w3c.css.font.Ascent
+#@font-face.descent:               org.w3c.css.font.Descent
+#@font-face.bbox:                  org.w3c.css.font.Bbox
+#@font-face.baseline:              org.w3c.css.font.Baseline
+#@font-face.centerline:            org.w3c.css.font.Centerline
+#@font-face.definition-src:        org.w3c.css.font.DefinitionSrc
+#@font-face.mathline:              org.w3c.css.font.Mathline
+#@font-face.topline:               org.w3c.css.font.Topline
+
+# ATSC
+
+atsc-dynamic-refresh        org.w3c.css.properties.atsc.ATSCDynamicRefresh
+atsc-nav-down       org.w3c.css.properties.atsc.ATSCNavDown
+atsc-nav-index      org.w3c.css.properties.atsc.ATSCNavIndex
+atsc-nav-left       org.w3c.css.properties.atsc.ATSCNavLeft
+atsc-nav-right      org.w3c.css.properties.atsc.ATSCNavRight    
+atsc-nav-up                 org.w3c.css.properties.atsc.ATSCNavUp
+font-style:            org.w3c.css.properties.css1.CssFontStyleCSS2
+font-variant:          org.w3c.css.properties.css1.CssFontVariantCSS2
+font-weight:           org.w3c.css.properties.css1.CssFontWeightCSS2
+font-size:             org.w3c.css.properties.css1.CssFontSizeCSS2
+font-family:           org.w3c.css.properties.css1.CssFontFamilyCSS2
+font:                  org.w3c.css.properties.css1.CssFontCSS2
+color:                 org.w3c.css.properties.atsc.ATSCColor
+background-color:      org.w3c.css.properties.atsc.CssBackgroundColorATSC
+background-image:      org.w3c.css.properties.atsc.CssBackgroundImageATSC
+background-repeat:     org.w3c.css.properties.atsc.CssBackgroundRepeatATSC
+background-attachment: org.w3c.css.properties.atsc.CssBackgroundAttachmentATSC
+background-position:   org.w3c.css.properties.atsc.CssBackgroundPositionATSC
+background:            org.w3c.css.properties.atsc.CssBackgroundATSC
+word-spacing:          org.w3c.css.properties.css1.CssWordSpacing
+letter-spacing:        org.w3c.css.properties.css1.CssLetterSpacing
+text-decoration:       org.w3c.css.properties.css1.CssTextDecoration
+vertical-align:        org.w3c.css.properties.css1.CssVerticalAlign
+text-transform:        org.w3c.css.properties.css1.CssTextTransform
+text-align:            org.w3c.css.properties.css1.CssTextAlign
+text-indent:           org.w3c.css.properties.css1.CssTextIndent
+line-height:           org.w3c.css.properties.css1.CssLineHeightCSS2
+margin-top:            org.w3c.css.properties.css1.CssMarginTop
+margin-bottom:         org.w3c.css.properties.css1.CssMarginBottom
+margin-left:           org.w3c.css.properties.css1.CssMarginLeft
+margin-right:          org.w3c.css.properties.css1.CssMarginRight
+margin:                org.w3c.css.properties.css1.CssMargin
+padding-top:           org.w3c.css.properties.css1.CssPaddingTop
+padding-bottom:        org.w3c.css.properties.css1.CssPaddingBottom
+padding-left:          org.w3c.css.properties.css1.CssPaddingLeft
+padding-right:         org.w3c.css.properties.css1.CssPaddingRight
+padding:               org.w3c.css.properties.css1.CssPadding
+border-top-width:      org.w3c.css.properties.atsc.CssBorderTopWidthATSC
+border-right-width:    org.w3c.css.properties.atsc.CssBorderRightWidthATSC
+border-left-width:     org.w3c.css.properties.atsc.CssBorderLeftWidthATSC
+border-bottom-width:   org.w3c.css.properties.atsc.CssBorderBottomWidthATSC
+border-top-color:      org.w3c.css.properties.atsc.CssBorderTopColorATSC
+border-right-color:    org.w3c.css.properties.atsc.CssBorderRightColorATSC
+border-left-color:     org.w3c.css.properties.atsc.CssBorderLeftColorATSC
+border-bottom-color:   org.w3c.css.properties.atsc.CssBorderBottomColorATSC
+border-top-style:      org.w3c.css.properties.atsc.CssBorderTopStyleATSC
+border-right-style:    org.w3c.css.properties.atsc.CssBorderRightStyleATSC
+border-left-style:     org.w3c.css.properties.atsc.CssBorderLeftStyleATSC
+border-bottom-style:   org.w3c.css.properties.atsc.CssBorderBottomStyleATSC
+border-width:          org.w3c.css.properties.atsc.CssBorderWidthATSC
+border-color:          org.w3c.css.properties.atsc.CssBorderColorATSC
+border-style:          org.w3c.css.properties.atsc.CssBorderStyleATSC
+border-top:            org.w3c.css.properties.atsc.CssBorderTopATSC
+border-right:          org.w3c.css.properties.atsc.CssBorderRightATSC
+border-left:           org.w3c.css.properties.atsc.CssBorderLeftATSC
+border-bottom:         org.w3c.css.properties.atsc.CssBorderBottomATSC
+border:                org.w3c.css.properties.atsc.CssBorderATSC
+width:                 org.w3c.css.properties.css1.CssWidth
+height:                org.w3c.css.properties.css1.CssHeight
+float:                 org.w3c.css.properties.css1.CssFloat
+clear:                 org.w3c.css.properties.css1.CssClear
+display:               org.w3c.css.properties.css1.CssDisplayCSS2
+position:              org.w3c.css.properties.css1.CssPosition
+z-index:               org.w3c.css.properties.css1.CssZIndex
+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
+white-space:           org.w3c.css.properties.css1.CssWhiteSpace
+list-style-type:       org.w3c.css.properties.css1.CssListStyleTypeCSS2
+list-style-image:      org.w3c.css.properties.css1.CssListStyleImageCSS2
+list-style-position:   org.w3c.css.properties.css1.CssListStylePositionCSS2
+list-style:            org.w3c.css.properties.css1.CssListStyleCSS2
+overflow:              org.w3c.css.properties.css1.CssOverflow
+clip:                  org.w3c.css.properties.css1.CssClip
+visibility:            org.w3c.css.properties.css1.CssVisibility
+content:               org.w3c.css.properties.css1.CssContentCSS2
+counter-reset:         org.w3c.css.properties.css1.CssCounterReset
+counter-increment:     org.w3c.css.properties.css1.CssCounterIncrement
+font-style:            org.w3c.css.properties.css1.CssFontStyleCSS2
+font-variant:          org.w3c.css.properties.css1.CssFontVariantCSS2
+font-weight:           org.w3c.css.properties.css1.CssFontWeightCSS2
+font-size:             org.w3c.css.properties.css1.CssFontSizeCSS2
+font-family:           org.w3c.css.properties.css1.CssFontFamilyCSS2
+font-stretch:          org.w3c.css.properties.css1.CssFontStretchCSS2
+caption-side:          org.w3c.css.properties.css2.table.CaptionSide
+
+# these properties are valid for CSS2 but have a warning for ATSC
+
+units-per-em:          org.w3c.css.properties.atsc.UnitsPerEmATSC
+panose-1:              org.w3c.css.properties.atsc.Panose1ATSC
+stemv:                 org.w3c.css.properties.atsc.StemvATSC
+stemh:                 org.w3c.css.properties.atsc.StemhATSC
+slope:                 org.w3c.css.properties.atsc.SlopeATSC
+cap-height:            org.w3c.css.properties.atsc.CapHeightATSC
+x-height:              org.w3c.css.properties.atsc.XHeightATSC
+widths:                org.w3c.css.properties.atsc.WidthsATSC
+ascent:                org.w3c.css.properties.atsc.AscentATSC
+descent:               org.w3c.css.properties.atsc.DescentATSC
+bbox:                  org.w3c.css.properties.atsc.BboxATSC
+baseline:              org.w3c.css.properties.atsc.BaselineATSC
+centerline:            org.w3c.css.properties.atsc.CenterlineATSC
+definition-src:        org.w3c.css.properties.atsc.DefinitionSrcATSC
+mathline:              org.w3c.css.properties.atsc.MathlineATSC
+topline:               org.w3c.css.properties.atsc.ToplineATSC
+text-shadow:           org.w3c.css.properties.css1.CssTextShadowATSC
+direction:             org.w3c.css.properties.css1.CssDirectionATSC
+unicode-bidi:          org.w3c.css.properties.css1.CssUnicodeBidiATSC
+marker-offset:         org.w3c.css.properties.css1.CssMarkerOffsetATSC
+quotes:                org.w3c.css.properties.css1.CssQuotesATSC
+min-width:             org.w3c.css.properties.css1.CssMinWidthATSC
+max-width:             org.w3c.css.properties.css1.CssMaxWidthATSC
+min-height:            org.w3c.css.properties.css1.CssMinHeightATSC
+max-height:            org.w3c.css.properties.css1.CssMaxHeightATSC
+row-span:               org.w3c.css.properties.css2.table.RowSpanATSC
+column-span:            org.w3c.css.properties.css2.table.ColumnSpanATSC
+table-layout:           org.w3c.css.properties.css2.table.TableLayoutATSC
+border-collapse:        org.w3c.css.properties.css2.table.BorderCollapseATSC
+border-spacing:         org.w3c.css.properties.css2.table.BorderSpacingATSC
+empty-cells:            org.w3c.css.properties.css2.table.EmptyCellsATSC
+speak-header:           org.w3c.css.properties.css2.table.SpeakHeaderATSC
+cursor:                 org.w3c.css.properties.css2.user.CursorATSC
+outline:                org.w3c.css.properties.css2.user.OutlineATSC
+outline-width:          org.w3c.css.properties.css2.user.OutlineWidthATSC
+outline-style:          org.w3c.css.properties.css2.user.OutlineStyleATSC
+outline-color:          org.w3c.css.properties.css2.user.OutlineColorATSC
+page-break-before:     org.w3c.css.properties.paged.PageBreakBeforeATSC
+page-break-after:      org.w3c.css.properties.paged.PageBreakAfterATSC
+page-break-inside:     org.w3c.css.properties.paged.PageBreakInsideATSC
+page:                  org.w3c.css.properties.paged.PageATSC
+orphans:               org.w3c.css.properties.paged.OrphansATSC
+widows:                org.w3c.css.properties.paged.WidowsATSC
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/CSS1Properties.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,59 @@
+
+# Fonts properties
+
+font-style:            org.w3c.css.properties.css1.CssFontStyleCSS1
+font-variant:          org.w3c.css.properties.css1.CssFontVariantCSS1
+font-weight:           org.w3c.css.properties.css1.CssFontWeightCSS1
+font-stretch:          org.w3c.css.properties.css1.CssFontStretchCSS1
+font-size:             org.w3c.css.properties.css1.CssFontSizeCSS1
+font-family:           org.w3c.css.properties.css1.CssFontFamilyCSS1
+font:                  org.w3c.css.properties.css1.CssFontCSS1
+color:                 org.w3c.css.properties.css1.CssColorCSS1
+background-color:      org.w3c.css.properties.css1.CssBackgroundColorCSS1
+background-image:      org.w3c.css.properties.css1.CssBackgroundImageCSS1
+background-repeat:     org.w3c.css.properties.css1.CssBackgroundRepeatCSS1
+background-attachment: org.w3c.css.properties.css1.CssBackgroundAttachmentCSS1
+background-position:   org.w3c.css.properties.css1.CssBackgroundPositionCSS1
+background:            org.w3c.css.properties.css1.CssBackgroundCSS1
+word-spacing:          org.w3c.css.properties.css1.CssWordSpacing
+letter-spacing:        org.w3c.css.properties.css1.CssLetterSpacing
+text-decoration:       org.w3c.css.properties.css1.CssTextDecoration
+vertical-align:        org.w3c.css.properties.css1.CssVerticalAlignCSS1
+text-transform:        org.w3c.css.properties.css1.CssTextTransform
+text-align:            org.w3c.css.properties.css1.CssTextAlign
+text-indent:           org.w3c.css.properties.css1.CssTextIndent
+line-height:           org.w3c.css.properties.css1.CssLineHeightCSS1
+margin-top:            org.w3c.css.properties.css1.CssMarginTop
+margin-bottom:         org.w3c.css.properties.css1.CssMarginBottom
+margin-left:           org.w3c.css.properties.css1.CssMarginLeft
+margin-right:          org.w3c.css.properties.css1.CssMarginRight
+margin:                org.w3c.css.properties.css1.CssMargin
+padding-top:           org.w3c.css.properties.css1.CssPaddingTop
+padding-bottom:        org.w3c.css.properties.css1.CssPaddingBottom
+padding-left:          org.w3c.css.properties.css1.CssPaddingLeft
+padding-right:         org.w3c.css.properties.css1.CssPaddingRight
+padding:               org.w3c.css.properties.css1.CssPadding
+border-top-width:      org.w3c.css.properties.css1.CssBorderTopWidthCSS1
+border-right-width:    org.w3c.css.properties.css1.CssBorderRightWidthCSS1
+border-left-width:     org.w3c.css.properties.css1.CssBorderLeftWidthCSS1
+border-bottom-width:   org.w3c.css.properties.css1.CssBorderBottomWidthCSS1
+border-width:          org.w3c.css.properties.css1.CssBorderWidthCSS1
+border-color:          org.w3c.css.properties.css1.CssBorderColorCSS1
+border-style:          org.w3c.css.properties.css1.CssBorderStyleCSS1
+border-top:            org.w3c.css.properties.css1.CssBorderTopCSS1
+border-right:          org.w3c.css.properties.css1.CssBorderRightCSS1
+border-left:           org.w3c.css.properties.css1.CssBorderLeftCSS1
+border-bottom:         org.w3c.css.properties.css1.CssBorderBottomCSS1
+border:                org.w3c.css.properties.css1.CssBorderCSS1
+width:                 org.w3c.css.properties.css1.CssWidth
+height:                org.w3c.css.properties.css1.CssHeight
+float:                 org.w3c.css.properties.css1.CssFloat
+clear:                 org.w3c.css.properties.css1.CssClear
+display:               org.w3c.css.properties.css1.CssDisplayCSS1
+# position:              org.w3c.css.properties.css1.CssPosition
+white-space:           org.w3c.css.properties.css1.CssWhiteSpace
+list-style-type:       org.w3c.css.properties.css1.CssListStyleTypeCSS1
+list-style-image:      org.w3c.css.properties.css1.CssListStyleImageCSS1
+list-style-position:   org.w3c.css.properties.css1.CssListStylePositionCSS1
+list-style:            org.w3c.css.properties.css1.CssListStyleCSS1
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/CSS21Properties.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,175 @@
+# All properties for all media
+
+# CSS2 Properties
+font-style:                     org.w3c.css.properties.css1.CssFontStyleCSS2
+font-variant:                   org.w3c.css.properties.css1.CssFontVariantCSS2
+font-weight:                    org.w3c.css.properties.css1.CssFontWeightCSS2
+font-size:                      org.w3c.css.properties.css1.CssFontSizeCSS2
+font-family:                    org.w3c.css.properties.css1.CssFontFamilyCSS2
+font:                           org.w3c.css.properties.css1.CssFontCSS2
+color:                          org.w3c.css.properties.css21.CssColorCSS21
+background-color:               org.w3c.css.properties.css21.CssBackgroundColorCSS21
+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.css21.CssBackgroundPositionCSS21
+background:                     org.w3c.css.properties.css21.CssBackgroundCSS21
+word-spacing:                   org.w3c.css.properties.css1.CssWordSpacing
+letter-spacing:                 org.w3c.css.properties.css1.CssLetterSpacing
+text-decoration:                org.w3c.css.properties.css1.CssTextDecoration
+vertical-align:                 org.w3c.css.properties.css1.CssVerticalAlign
+text-transform:                 org.w3c.css.properties.css1.CssTextTransform
+text-align:                     org.w3c.css.properties.css21.CssTextAlignCSS21
+text-indent:                    org.w3c.css.properties.css1.CssTextIndent
+line-height:                    org.w3c.css.properties.css1.CssLineHeightCSS2
+margin-top:                     org.w3c.css.properties.css1.CssMarginTop
+margin-bottom:                  org.w3c.css.properties.css1.CssMarginBottom
+margin-left:                    org.w3c.css.properties.css1.CssMarginLeft
+margin-right:                   org.w3c.css.properties.css1.CssMarginRight
+margin:                         org.w3c.css.properties.css1.CssMargin
+padding-top:                    org.w3c.css.properties.css1.CssPaddingTop
+padding-bottom:                 org.w3c.css.properties.css1.CssPaddingBottom
+padding-left:                   org.w3c.css.properties.css1.CssPaddingLeft
+padding-right:                  org.w3c.css.properties.css1.CssPaddingRight
+padding:                        org.w3c.css.properties.css1.CssPadding
+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-top-color:               org.w3c.css.properties.css21.CssBorderTopColorCSS21
+border-right-color:             org.w3c.css.properties.css21.CssBorderRightColorCSS21
+border-left-color:              org.w3c.css.properties.css21.CssBorderLeftColorCSS21
+border-bottom-color:            org.w3c.css.properties.css21.CssBorderBottomColorCSS21
+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
+border-width:                   org.w3c.css.properties.css1.CssBorderWidthCSS2
+border-color:                   org.w3c.css.properties.css21.CssBorderColorCSS21
+border-style:                   org.w3c.css.properties.css1.CssBorderStyleCSS2
+border-top:                     org.w3c.css.properties.css21.CssBorderTopCSS21
+border-right:                   org.w3c.css.properties.css21.CssBorderRightCSS21
+border-left:                    org.w3c.css.properties.css21.CssBorderLeftCSS21
+border-bottom:                  org.w3c.css.properties.css21.CssBorderBottomCSS21
+border:                         org.w3c.css.properties.css21.CssBorderCSS21
+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
+float:                          org.w3c.css.properties.css1.CssFloat
+clear:                          org.w3c.css.properties.css1.CssClear
+display:                        org.w3c.css.properties.css21.CssDisplayCSS21
+position:                       org.w3c.css.properties.css1.CssPosition
+z-index:                        org.w3c.css.properties.css1.CssZIndex
+direction:                      org.w3c.css.properties.css1.CssDirection
+unicode-bidi:                   org.w3c.css.properties.css1.CssUnicodeBidi
+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
+white-space:                    org.w3c.css.properties.css21.CssWhiteSpaceCSS21
+list-style-type:                org.w3c.css.properties.css21.CssListStyleTypeCSS21
+list-style-image:               org.w3c.css.properties.css1.CssListStyleImageCSS2
+list-style-position:            org.w3c.css.properties.css1.CssListStylePositionCSS2
+list-style:                     org.w3c.css.properties.css21.CssListStyleCSS21
+overflow:                       org.w3c.css.properties.css1.CssOverflow
+clip:                           org.w3c.css.properties.css1.CssClip
+visibility:                     org.w3c.css.properties.css1.CssVisibility
+content:                        org.w3c.css.properties.css21.CssContentCSS21
+quotes:                         org.w3c.css.properties.css1.CssQuotes
+counter-reset:                  org.w3c.css.properties.css1.CssCounterReset
+counter-increment:              org.w3c.css.properties.css1.CssCounterIncrement
+marker-offset:                  org.w3c.css.properties.css1.CssMarkerOffset
+row-span:                       org.w3c.css.properties.css2.table.RowSpan
+column-span:                    org.w3c.css.properties.css2.table.ColumnSpan
+table-layout:                   org.w3c.css.properties.css2.table.TableLayout
+caption-side:                   org.w3c.css.properties.css21.table.CssCaptionSideCSS21
+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
+speak-header:                   org.w3c.css.properties.css2.table.SpeakHeader
+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
+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
+cursor:                         org.w3c.css.properties.css21.user.CssCursorCSS21
+
+# Aural Properties
+
+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
+
+# Paged properties
+@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
+@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.orphans:                  org.w3c.css.properties.paged.Orphans
+@page.widows:                   org.w3c.css.properties.paged.Widows
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/CSS2Properties.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,207 @@
+# All properties for all media
+
+# CSS2 Properties
+font-style:                     org.w3c.css.properties.css1.CssFontStyleCSS2
+font-variant:                   org.w3c.css.properties.css1.CssFontVariantCSS2
+font-weight:                    org.w3c.css.properties.css1.CssFontWeightCSS2
+font-size:                      org.w3c.css.properties.css1.CssFontSizeCSS2
+font-family:                    org.w3c.css.properties.css1.CssFontFamilyCSS2
+font-stretch:                   org.w3c.css.properties.css1.CssFontStretchCSS2
+font-size-adjust:               org.w3c.css.properties.css1.CssFontSizeAdjustCSS2
+font:                           org.w3c.css.properties.css1.CssFontCSS2
+color:                          org.w3c.css.properties.css1.CssColorCSS2
+background-color:               org.w3c.css.properties.css1.CssBackgroundColorCSS2
+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:                     org.w3c.css.properties.css1.CssBackgroundCSS2
+word-spacing:                   org.w3c.css.properties.css1.CssWordSpacing
+letter-spacing:                 org.w3c.css.properties.css1.CssLetterSpacing
+text-decoration:                org.w3c.css.properties.css1.CssTextDecoration
+text-shadow:                    org.w3c.css.properties.css1.CssTextShadow
+vertical-align:                 org.w3c.css.properties.css1.CssVerticalAlign
+text-transform:                 org.w3c.css.properties.css1.CssTextTransform
+text-align:                     org.w3c.css.properties.css1.CssTextAlign
+text-indent:                    org.w3c.css.properties.css1.CssTextIndent
+line-height:                    org.w3c.css.properties.css1.CssLineHeightCSS2
+margin-top:                     org.w3c.css.properties.css1.CssMarginTop
+margin-bottom:                  org.w3c.css.properties.css1.CssMarginBottom
+margin-left:                    org.w3c.css.properties.css1.CssMarginLeft
+margin-right:                   org.w3c.css.properties.css1.CssMarginRight
+margin:                         org.w3c.css.properties.css1.CssMargin
+padding-top:                    org.w3c.css.properties.css1.CssPaddingTop
+padding-bottom:                 org.w3c.css.properties.css1.CssPaddingBottom
+padding-left:                   org.w3c.css.properties.css1.CssPaddingLeft
+padding-right:                  org.w3c.css.properties.css1.CssPaddingRight
+padding:                        org.w3c.css.properties.css1.CssPadding
+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-top-color:               org.w3c.css.properties.css1.CssBorderTopColorCSS2
+border-right-color:             org.w3c.css.properties.css1.CssBorderRightColorCSS2
+border-left-color:              org.w3c.css.properties.css1.CssBorderLeftColorCSS2
+border-bottom-color:            org.w3c.css.properties.css1.CssBorderBottomColorCSS2
+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
+border-width:                   org.w3c.css.properties.css1.CssBorderWidthCSS2
+border-color:                   org.w3c.css.properties.css1.CssBorderColorCSS2
+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:                         org.w3c.css.properties.css1.CssBorderCSS2
+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
+float:                          org.w3c.css.properties.css1.CssFloat
+clear:                          org.w3c.css.properties.css1.CssClear
+display:                        org.w3c.css.properties.css1.CssDisplayCSS2
+position:                       org.w3c.css.properties.css1.CssPosition
+z-index:                        org.w3c.css.properties.css1.CssZIndex
+direction:                      org.w3c.css.properties.css1.CssDirection
+unicode-bidi:                   org.w3c.css.properties.css1.CssUnicodeBidi
+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
+white-space:                    org.w3c.css.properties.css1.CssWhiteSpace
+list-style-type:                org.w3c.css.properties.css1.CssListStyleTypeCSS2
+list-style-image:               org.w3c.css.properties.css1.CssListStyleImageCSS2
+list-style-position:            org.w3c.css.properties.css1.CssListStylePositionCSS2
+list-style:                     org.w3c.css.properties.css1.CssListStyleCSS2
+overflow:                       org.w3c.css.properties.css1.CssOverflow
+clip:                           org.w3c.css.properties.css1.CssClip
+visibility:                     org.w3c.css.properties.css1.CssVisibility
+content:                        org.w3c.css.properties.css1.CssContentCSS2
+quotes:                         org.w3c.css.properties.css1.CssQuotes
+counter-reset:                  org.w3c.css.properties.css1.CssCounterReset
+counter-increment:              org.w3c.css.properties.css1.CssCounterIncrement
+marker-offset:                  org.w3c.css.properties.css1.CssMarkerOffset
+row-span:                       org.w3c.css.properties.css2.table.RowSpan
+column-span:                    org.w3c.css.properties.css2.table.ColumnSpan
+table-layout:                   org.w3c.css.properties.css2.table.TableLayout
+caption-side:                   org.w3c.css.properties.css2.table.CaptionSide
+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
+speak-header:                   org.w3c.css.properties.css2.table.SpeakHeader
+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
+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
+cursor:                         org.w3c.css.properties.css2.user.CursorCSS2
+
+# Aural Properties
+
+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
+
+# Paged properties
+@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
+@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
+
+# Font properties
+@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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/CSS3Properties.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,401 @@
+# CSS3 Properties
+font-style:                             org.w3c.css.properties.css1.CssFontStyle
+font-variant:                           org.w3c.css.properties.css1.CssFontVariant
+font-weight:                            org.w3c.css.properties.css1.CssFontWeight
+font-size:                              org.w3c.css.properties.css1.CssFontSize
+font-family:                            org.w3c.css.properties.css1.CssFontFamily
+font-stretch:                           org.w3c.css.properties.css1.CssFontStretch
+font-size-adjust:                       org.w3c.css.properties.css1.CssFontSizeAdjust
+font:                                   org.w3c.css.properties.css1.CssFont
+color:                                  org.w3c.css.properties.css1.CssColor
+background-color:                       org.w3c.css.properties.css1.CssBackgroundColor
+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.css21.CssBackgroundPositionCSS21
+background:                             org.w3c.css.properties.css3.CssBackgroundCSS3
+word-spacing:                           org.w3c.css.properties.css3.CssWordSpacingCSS3
+letter-spacing:                         org.w3c.css.properties.css1.CssLetterSpacing
+text-decoration:                        org.w3c.css.properties.css3.CssTextDecorationCSS3
+text-shadow:                            org.w3c.css.properties.css1.CssTextShadow
+vertical-align:                         org.w3c.css.properties.css1.CssVerticalAlign
+text-transform:                         org.w3c.css.properties.css1.CssTextTransform
+text-align:                             org.w3c.css.properties.css1.CssTextAlign
+text-indent:                            org.w3c.css.properties.css3.CssTextIndentCSS3
+line-height:                            org.w3c.css.properties.css1.CssLineHeight
+margin-top:                             org.w3c.css.properties.css1.CssMarginTop
+margin-bottom:                          org.w3c.css.properties.css1.CssMarginBottom
+margin-left:                            org.w3c.css.properties.css1.CssMarginLeft
+margin-right:                           org.w3c.css.properties.css1.CssMarginRight
+margin:                                 org.w3c.css.properties.css1.CssMargin
+padding-top:                            org.w3c.css.properties.css3.CssPaddingTopCSS3
+padding-bottom:                         org.w3c.css.properties.css3.CssPaddingBottomCSS3
+padding-left:                           org.w3c.css.properties.css3.CssPaddingLeftCSS3
+padding-right:                          org.w3c.css.properties.css3.CssPaddingRightCSS3
+padding:                                org.w3c.css.properties.css3.CssPaddingCSS3
+border-top-width:                       org.w3c.css.properties.css1.CssBorderTopWidth
+border-right-width:                     org.w3c.css.properties.css1.CssBorderRightWidth
+border-left-width:                      org.w3c.css.properties.css1.CssBorderLeftWidth
+border-bottom-width:                    org.w3c.css.properties.css1.CssBorderBottomWidth
+border-top-color:                       org.w3c.css.properties.css1.CssBorderTopColor
+border-right-color:                     org.w3c.css.properties.css1.CssBorderRightColor
+border-left-color:                      org.w3c.css.properties.css1.CssBorderLeftColor
+border-bottom-color:                    org.w3c.css.properties.css1.CssBorderBottomColor
+border-top-style:                       org.w3c.css.properties.css1.CssBorderTopStyle
+border-right-style:                     org.w3c.css.properties.css1.CssBorderRightStyle
+border-left-style:                      org.w3c.css.properties.css1.CssBorderLeftStyle
+border-bottom-style:                    org.w3c.css.properties.css1.CssBorderBottomStyle
+border-width:                           org.w3c.css.properties.css1.CssBorderWidth
+border-color:                           org.w3c.css.properties.css1.CssBorderColor
+border-style:                           org.w3c.css.properties.css1.CssBorderStyle
+border-top:                             org.w3c.css.properties.css1.CssBorderTop
+border-right:                           org.w3c.css.properties.css1.CssBorderRight
+border-left:                            org.w3c.css.properties.css1.CssBorderLeft
+border-bottom:                          org.w3c.css.properties.css1.CssBorderBottom
+border:                                 org.w3c.css.properties.css1.CssBorder
+width:                                  org.w3c.css.properties.css3.CssWidthCSS3
+min-width:                              org.w3c.css.properties.css3.CssMinWidthCSS3
+max-width:                              org.w3c.css.properties.css3.CssMaxWidthCSS3
+min-height:                             org.w3c.css.properties.css3.CssMinHeightCSS3
+max-height:                             org.w3c.css.properties.css3.CssMaxHeightCSS3
+height:                                 org.w3c.css.properties.css3.CssHeightCSS3
+float:                                  org.w3c.css.properties.css3.CssFloatCSS3
+clear:                                  org.w3c.css.properties.css3.CssClearCSS3
+display:                                org.w3c.css.properties.css1.CssDisplay
+position:                               org.w3c.css.properties.css1.CssPosition
+z-index:                                org.w3c.css.properties.css1.CssZIndex
+direction:                              org.w3c.css.properties.css1.CssDirection
+unicode-bidi:                           org.w3c.css.properties.css1.CssUnicodeBidi
+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
+white-space:                            org.w3c.css.properties.css3.CssWhiteSpaceCSS3
+list-style-type:                        org.w3c.css.properties.css1.CssListStyleType
+list-style-image:                       org.w3c.css.properties.css1.CssListStyleImage
+list-style-position:                    org.w3c.css.properties.css1.CssListStylePosition
+list-style:                             org.w3c.css.properties.css1.CssListStyle
+overflow:                               org.w3c.css.properties.css3.CssOverflowCSS3
+clip:                                   org.w3c.css.properties.css1.CssClip
+visibility:                             org.w3c.css.properties.css3.CssVisibilityCSS3
+content:                                org.w3c.css.properties.css1.CssContent
+quotes:                                 org.w3c.css.properties.css1.CssQuotes
+counter-reset:                          org.w3c.css.properties.css1.CssCounterReset
+counter-increment:                      org.w3c.css.properties.css1.CssCounterIncrement
+marker-offset:                          org.w3c.css.properties.css1.CssMarkerOffset
+# Aural Properties
+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.ACssVoiceFamilyCSS3
+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.ACssSpeakCSS3
+azimuth:                                org.w3c.css.properties.aural.ACssAzimuth
+voice-volume:                           org.w3c.css.properties.aural.ACssVoiceVolume
+voice-balance:                          org.w3c.css.properties.aural.ACssVoiceBalance
+voice-rate:                             org.w3c.css.properties.aural.ACssVoiceRate
+voice-pitch:                            org.w3c.css.properties.aural.ACssPitch
+voice-pitch-range:                      org.w3c.css.properties.aural.ACssVoicePitchRange
+voice-duration:                         org.w3c.css.properties.aural.ACssVoiceDuration
+phonemes:                               org.w3c.css.properties.aural.ACssPhonemes
+interpret-as:                           org.w3c.css.properties.aural.ACssInterpretAs
+row-span:                               org.w3c.css.properties.css2.table.RowSpan
+table-layout:                           org.w3c.css.properties.css2.table.TableLayout
+caption-side:                           org.w3c.css.properties.css2.table.CaptionSide
+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
+speak-header:                           org.w3c.css.properties.css2.table.SpeakHeader
+cursor:                                 org.w3c.css.properties.css2.user.Cursor
+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
+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
+opacity:                                org.w3c.css.properties.css3.CssOpacity
+color-profile:                          org.w3c.css.properties.css3.CssColorProfile
+rendering-intent:                       org.w3c.css.properties.css3.CssRenderIntent
+font-effect:                            org.w3c.css.properties.css3.CssFontEffect
+font-smooth:                            org.w3c.css.properties.css3.CssFontSmooth
+font-emphasize-style:                   org.w3c.css.properties.css3.CssFontEmphasizeStyle
+font-emphasize-position:                org.w3c.css.properties.css3.CssFontEmphasizePos
+font-emphasize:                         org.w3c.css.properties.css3.CssFontEmphasize
+ruby-position:                          org.w3c.css.properties.css3.CssRubyPosition
+ruby-align:                             org.w3c.css.properties.css3.CssRubyAlign
+ruby-overhang:                          org.w3c.css.properties.css3.CssRubyOverhang
+box-sizing:                             org.w3c.css.properties.css3.CssBoxSizing
+resize:                                 org.w3c.css.properties.css3.CssResizer
+key-equivalent:                         org.w3c.css.properties.css3.CssKeyEq
+tab-index:                              org.w3c.css.properties.css3.CssTabIndex
+user-input:                             org.w3c.css.properties.css3.CssUserInput
+user-modify:                            org.w3c.css.properties.css3.CssUserModify
+user-select:                            org.w3c.css.properties.css3.CssUserSelect
+user-focus:                             org.w3c.css.properties.css3.CssUserFocus
+user-focus-key:                         org.w3c.css.properties.css3.CssUserFocusKey
+user-focus-pointer:                     org.w3c.css.properties.css3.CssUserFocusPointer
+toggle-group:                           org.w3c.css.properties.css3.CssToggleGroup
+group-reset:                            org.w3c.css.properties.css3.CssGroupReset
+writing-mode:                           org.w3c.css.properties.css3.CssWritingMode
+glyph-orientation-vertical:             org.w3c.css.properties.css3.CssGlyphOrVert
+glyph-orientation-horizontal:           org.w3c.css.properties.css3.CssGlyphHor
+text-justify:                           org.w3c.css.properties.css3.CssTextJustify
+text-align-last:                        org.w3c.css.properties.css3.CssTextAlignLast
+min-font-size:                          org.w3c.css.properties.css3.CssMinFontSize
+max-font-size:                          org.w3c.css.properties.css3.CssMaxFontSize
+text-justify-trim:                      org.w3c.css.properties.css3.CssTextJustifyTrim
+text-kashida-space:                     org.w3c.css.properties.css3.CssTextKashidaSpace
+dominant-baseline:                      org.w3c.css.properties.css3.CssDominantBaseLine
+alignment-baseline:                     org.w3c.css.properties.css3.CssAlignmentBaseLine
+alignment-adjust:                       org.w3c.css.properties.css3.CssAlignmentAdjust
+baseline-shift:                         org.w3c.css.properties.css3.CssBaselineShift
+line-break:                             org.w3c.css.properties.css3.CssLineBreak
+word-break-cjk:                         org.w3c.css.properties.css3.CssWordBreakCJK
+word-break-inside:                      org.w3c.css.properties.css3.CssWordBreakInside
+word-break:                             org.w3c.css.properties.css3.CssWordBreak
+text-space:                             org.w3c.css.properties.css3.CssTextSpace
+text-end-overflow:                      org.w3c.css.properties.css3.CssTextEndOverflowCSS3
+text-after-overflow:                    org.w3c.css.properties.css3.CssTextAfterOverflowCSS3
+punctuation-trim:                       org.w3c.css.properties.css3.CssPunctuationTrim
+text-autospace:                         org.w3c.css.properties.css3.CssTextAutoSpace
+kerning-mode:                           org.w3c.css.properties.css3.CssKerningMode
+kerning-pair-treshold:                  org.w3c.css.properties.css3.CssKerningPairTreshold
+text-underline-style:                   org.w3c.css.properties.css3.CssTextUlStyle
+text-underline-color:                   org.w3c.css.properties.css3.CssTextUlColor
+text-underline-mode:                    org.w3c.css.properties.css3.CssTextUlMode
+text-underline-position:                org.w3c.css.properties.css3.CssTextUlPos
+text-underline:                         org.w3c.css.properties.css3.CssTextUnderLine
+text-line-through-style:                org.w3c.css.properties.css3.CssTextLTStyle
+text-line-through-color:                org.w3c.css.properties.css3.CssTextLTColor
+text-line-through-mode:                 org.w3c.css.properties.css3.CssTextLTMode
+text-line-through:                      org.w3c.css.properties.css3.CssTextLineThrough
+text-overline-style:                    org.w3c.css.properties.css3.CssTextOLStyle
+text-overline-color:                    org.w3c.css.properties.css3.CssTextOLColor
+text-overline-mode:                     org.w3c.css.properties.css3.CssTextOLMode
+text-overline:                          org.w3c.css.properties.css3.CssTextOverLine
+text-combine:                           org.w3c.css.properties.css3.CssTextCombine
+display-model:                          org.w3c.css.properties.css3.CssDisplayModel
+display-role:                           org.w3c.css.properties.css3.CssDisplayRole
+margin-inside:                          org.w3c.css.properties.css1.CssMarginInside
+margin-outside:                         org.w3c.css.properties.css1.CssMarginOutside
+box-width:                              org.w3c.css.properties.css3.CssBoxWidth
+box-height:                             org.w3c.css.properties.css3.CssBoxHeight
+fit:                                    org.w3c.css.properties.css3.CssFit
+link:                                   org.w3c.css.properties.css3.CssLink
+background-clip:                        org.w3c.css.properties.css3.CssBackgroundClip
+handheld.background-clip:               org.w3c.css.properties.css3.CssBackgroundClip
+background-size:                        org.w3c.css.properties.css3.CssBackgroundSize
+background-quantity:                    org.w3c.css.properties.css3.CssBackgroundQuantity
+background-spacing:                     org.w3c.css.properties.css3.CssBackgroundSpacing
+background-origin:                      org.w3c.css.properties.css3.CssBackgroundOrigin
+all-space-treatment:                    org.w3c.css.properties.css3.CssAllSpaceTreatment
+hanging-punctuation:                    org.w3c.css.properties.css3.CssHangingPunctuation
+line-grid:                              org.w3c.css.properties.css3.CssLineGrid
+line-grid-mode:                         org.w3c.css.properties.css3.CssLineGridMode
+line-grid-progression:                  org.w3c.css.properties.css3.CssLineGridProgression
+linefeed-treatment:                     org.w3c.css.properties.css3.CssLinefeedTreatment
+text-script:                            org.w3c.css.properties.css3.CssScript
+text-overflow:                          org.w3c.css.properties.css3.CssTextOverflowCSS3
+text-overflow-ellipsis:                 org.w3c.css.properties.css3.CssTextOverflowEllipsis
+text-overflow-mode:                     org.w3c.css.properties.css3.CssTextOverflowMode
+white-space-treatment:                  org.w3c.css.properties.css3.CssWhiteSpaceTreatment
+wrap-option:                            org.w3c.css.properties.css3.CssWrapOption
+column-count:                           org.w3c.css.properties.css3.CssColumnCount
+column-width:                           org.w3c.css.properties.css3.CssColumnWidth
+column-gap:                             org.w3c.css.properties.css3.CssColumnGap
+column-rule:                            org.w3c.css.properties.css3.CssColumnRule
+column-rule-color:                      org.w3c.css.properties.css3.CssColumnRuleColor
+column-rule-style:                      org.w3c.css.properties.css3.CssColumnRuleStyle
+column-rule-width:                      org.w3c.css.properties.css3.CssColumnRuleWidth
+drop-initial-after-adjust:              org.w3c.css.properties.css3.CssDropInitialAfterAdjust
+drop-initial-before-adjust:             org.w3c.css.properties.css3.CssDropInitialBeforeAdjust
+drop-initial-size:                      org.w3c.css.properties.css3.CssDropInitialSize
+inline-box-align:                       org.w3c.css.properties.css3.CssInlineBoxAlign
+line-stacking-ruby:                     org.w3c.css.properties.css3.CssLineStackingRuby
+line-stacking-strategy:                 org.w3c.css.properties.css3.CssLineStackingStrategy
+icon:                                   org.w3c.css.properties.css3.CssIcon
+nav-up:                                 org.w3c.css.properties.css3.CssNavUp
+nav-right:                              org.w3c.css.properties.css3.CssNavRight
+nav-down:                               org.w3c.css.properties.css3.CssNavDown
+nav-left:                               org.w3c.css.properties.css3.CssNavLeft
+outline-offset:                         org.w3c.css.properties.css3.CssOutlineOffset
+overflow-x:                             org.w3c.css.properties.css3.CssOverflowX
+overflow-y:                             org.w3c.css.properties.css3.CssOverflowY
+ruby-span:                              org.w3c.css.properties.css3.CssRubySpan
+text-blink:                             org.w3c.css.properties.css3.CssTextBlink
+clear-after:                            org.w3c.css.properties.css3.CssClearAfter
+crop:                                   org.w3c.css.properties.css3.CssCrop
+fit-position:                           org.w3c.css.properties.css3.CssFitPosition
+float-displace:                         org.w3c.css.properties.css3.CssFloatDisplace
+indent-edge-reset:                      org.w3c.css.properties.css3.CssIndentEdgeReset
+marquee:                                org.w3c.css.properties.css3.CssMarquee
+marquee-direction:                      org.w3c.css.properties.css3.CssMarqueeDirection
+marquee-repetition:                     org.w3c.css.properties.css3.CssMarqueeRepetition
+marquee-speed:                          org.w3c.css.properties.css3.CssMarqueeSpeed
+marquee-style:                          org.w3c.css.properties.css3.CssMarqueeStyle
+overflow-clip:                          org.w3c.css.properties.css3.CssOverflowClip
+border-top-right-radius:                org.w3c.css.properties.css3.CssBorderTopRightRadius
+border-bottom-right-radius:             org.w3c.css.properties.css3.CssBorderBottomRightRadius
+border-bottom-left-radius:              org.w3c.css.properties.css3.CssBorderBottomLeftRadius
+border-top-left-radius:                 org.w3c.css.properties.css3.CssBorderTopLeftRadius
+border-radius:                          org.w3c.css.properties.css3.CssBorderRadius
+border-top-image:                       org.w3c.css.properties.css3.CssBorderTopImage
+border-right-image:                     org.w3c.css.properties.css3.CssBorderRightImage
+border-bottom-image:                    org.w3c.css.properties.css3.CssBorderBottomImage
+border-left-image:                      org.w3c.css.properties.css3.CssBorderLeftImage
+border-image:                           org.w3c.css.properties.css3.CssBorderImage
+border-top-left-image:                  org.w3c.css.properties.css3.CssBorderTopLeftImage
+border-top-right-image:                 org.w3c.css.properties.css3.CssBorderTopRightImage
+border-bottom-right-image:              org.w3c.css.properties.css3.CssBorderBottomRightImage
+border-bottom-left-image:               org.w3c.css.properties.css3.CssBorderBottomLeftImage
+border-corner-image:                    org.w3c.css.properties.css3.CssBorderCornerImage
+border-top-fit-length:                  org.w3c.css.properties.css3.CssBorderTopFitLength
+border-right-fit-length:                org.w3c.css.properties.css3.CssBorderRightFitLength
+border-bottom-fit-length:               org.w3c.css.properties.css3.CssBorderBottomFitLength
+border-left-fit-length:                 org.w3c.css.properties.css3.CssBorderLeftFitLength
+border-top-fit-width:                   org.w3c.css.properties.css3.CssBorderTopFitWidth
+border-right-fit-width:                 org.w3c.css.properties.css3.CssBorderRightFitWidth
+border-bottom-fit-width:                org.w3c.css.properties.css3.CssBorderBottomFitWidth
+border-left-fit-width:                  org.w3c.css.properties.css3.CssBorderLeftFitWidth
+border-fit-length:                      org.w3c.css.properties.css3.CssBorderFitLength
+border-fit-width:                       org.w3c.css.properties.css3.CssBorderFitWidth
+border-fit:                             org.w3c.css.properties.css3.CssBorderFit
+border-top-left-fit-length:             org.w3c.css.properties.css3.CssBorderTopLeftFitLength
+border-top-right-fit-length:            org.w3c.css.properties.css3.CssBorderTopRightFitLength
+border-bottom-right-fit-length:         org.w3c.css.properties.css3.CssBorderBottomRightFitLength
+border-bottom-left-fit-length:          org.w3c.css.properties.css3.CssBorderBottomLeftFitLength
+border-top-left-fit-width:              org.w3c.css.properties.css3.CssBorderTopLeftFitWidth
+border-top-right-fit-width:             org.w3c.css.properties.css3.CssBorderTopRightFitWidth
+border-bottom-right-fit-width:          org.w3c.css.properties.css3.CssBorderBottomRightFitWidth
+border-bottom-left-fit-width:           org.w3c.css.properties.css3.CssBorderBottomLeftFitWidth
+border-corner-fit:                      org.w3c.css.properties.css3.CssBorderCornerFit
+border-image-transform:                 org.w3c.css.properties.css3.CssBorderImageTransform
+border-break:                           org.w3c.css.properties.css3.CssBorderBreak
+box-shadow:                             org.w3c.css.properties.css3.CssBoxShadow
+block-progression:                      org.w3c.css.properties.css3.CssBlockProgression
+word-break-wrap:                        org.w3c.css.properties.css3.CssTextWrap
+text-decoration:                        org.w3c.css.properties.css3.CssTextDecorationCSS3
+text-shadow:                            org.w3c.css.properties.css1.CssTextShadow
+width:                                  org.w3c.css.properties.css3.CssWidthCSS3
+round-clip:                             org.w3c.css.properties.css3.CssBackgroundClip
+row-span:                               org.w3c.css.properties.css2.table.RowSpan
+tty.link:                               org.w3c.css.properties.css3.CssLink
+collapse:                               org.w3c.css.properties.css3.CssCollapse
+hanging-punctuation:                    org.w3c.css.properties.css3.CssHangingPunctuation
+                                        
+@page.padding-left:                     org.w3c.css.properties.css3.CssPaddingLeftCSS3
+@page.padding-right:                    org.w3c.css.properties.css3.CssPaddingRightCSS3
+@page.padding:                          org.w3c.css.properties.css3.CssPaddingCSS3
+@page.border-top-width:                 org.w3c.css.properties.css1.CssBorderTopWidth
+@page.border-right-width:               org.w3c.css.properties.css1.CssBorderRightWidth
+@page.border-left-width:                org.w3c.css.properties.css1.CssBorderLeftWidth
+@page.border-bottom-width:              org.w3c.css.properties.css1.CssBorderBottomWidth
+@page.border-top-color:                 org.w3c.css.properties.css1.CssBorderTopColor
+@page.border-right-color:               org.w3c.css.properties.css1.CssBorderRightColor
+@page.border-left-color:                org.w3c.css.properties.css1.CssBorderLeftColor
+@page.border-bottom-color:              org.w3c.css.properties.css1.CssBorderBottomColor
+@page.border-top-style:                 org.w3c.css.properties.css1.CssBorderTopStyle
+@page.border-right-style:               org.w3c.css.properties.css1.CssBorderRightStyle
+@page.border-left-style:                org.w3c.css.properties.css1.CssBorderLeftStyle
+@page.border-bottom-style:              org.w3c.css.properties.css1.CssBorderBottomStyle
+@page.border-width:                     org.w3c.css.properties.css1.CssBorderWidth
+@page.border-color:                     org.w3c.css.properties.css1.CssBorderColor
+@page.border-style:                     org.w3c.css.properties.css1.CssBorderStyle
+@page.border-top:                       org.w3c.css.properties.css1.CssBorderTop
+@page.border-right:                     org.w3c.css.properties.css1.CssBorderRight
+@page.border-left:                      org.w3c.css.properties.css1.CssBorderLeft
+@page.border-bottom:                    org.w3c.css.properties.css1.CssBorderBottom
+@page.border:                           org.w3c.css.properties.css1.CssBorder
+@page.float:                            org.w3c.css.properties.css3.CssFloatCSS3
+@page.clear:                            org.w3c.css.properties.css3.CssClear
+@page.display:                          org.w3c.css.properties.css1.CssDisplay
+@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.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
+@page.padding-bottom:                   org.w3c.css.properties.css3.CssPaddingBottomCSS3
+@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
+@preference.media:                      org.w3c.css.properties.css3.CssMedia
+@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
+
+mediafeature.device-width:              org.w3c.css.properties.css3.MediaDeviceWidth
+mediafeature.min-device-width:          org.w3c.css.properties.css3.MediaMinDeviceWidth
+mediafeature.max-device-width:          org.w3c.css.properties.css3.MediaMaxDeviceWidth
+mediafeature.device-height:             org.w3c.css.properties.css3.MediaDeviceHeight
+mediafeature.min-device-height:         org.w3c.css.properties.css3.MediaMinDeviceHeight
+mediafeature.max-device-height:         org.w3c.css.properties.css3.MediaMaxDeviceHeight
+mediafeature.device-aspect-ratio:       org.w3c.css.properties.css3.MediaDeviceAspectRatio
+mediafeature.min-device-aspect-ratio:   org.w3c.css.properties.css3.MediaMinDeviceAspectRatio
+mediafeature.max-device-aspect-ratio:   org.w3c.css.properties.css3.MediaMaxDeviceAspectRatio
+mediafeature.min-color:                 org.w3c.css.properties.css3.MediaMinColor
+mediafeature.max-color:                 org.w3c.css.properties.css3.MediaMaxColor
+mediafeature.color-index:               org.w3c.css.properties.css3.MediaColorIndex
+mediafeature.min-color-index:           org.w3c.css.properties.css3.MediaMinColorIndex
+mediafeature.max-color-index:           org.w3c.css.properties.css3.MediaMaxColorIndex
+mediafeature.monochrome:                org.w3c.css.properties.css3.MediaMonochrome
+mediafeature.min-monochrome:            org.w3c.css.properties.css3.MediaMinMonochrome
+mediafeature.max-monochrome:            org.w3c.css.properties.css3.MediaMaxMonochrome
+mediafeature.resolution:                org.w3c.css.properties.css3.MediaResolution
+mediafeature.min-resolution:            org.w3c.css.properties.css3.MediaMinResolution
+mediafeature.max-resolution:            org.w3c.css.properties.css3.MediaMaxResolution
+mediafeature.scan:                      org.w3c.css.properties.css3.MediaScan
+mediafeature.grid:                      org.w3c.css.properties.css3.MediaGrid
+mediafeature.color:                     org.w3c.css.properties.css3.MediaColor
+mediafeature.width:                     org.w3c.css.properties.css3.MediaWidth
+mediafeature.min-width:                 org.w3c.css.properties.css3.MediaMinWidth
+mediafeature.max-width:                 org.w3c.css.properties.css3.MediaMaxWidth
+mediafeature.min-height:                org.w3c.css.properties.css3.MediaMinHeight
+mediafeature.height:                    org.w3c.css.properties.css3.MediaHeight
+mediafeature.max-height:                org.w3c.css.properties.css3.MediaMaxHeight
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/Config.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,30 @@
+# 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
+
+#media
+media: Media.properties
+
+# file containing the properties files for each profile
+profilesProperties: ProfilesProperties.properties
+
+#default profile
+defaultProfile: css21
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/Media.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,380 @@
+font-style:                     handheld, print, projection, screen, tty, tv
+font-variant:                   handheld, print, projection, screen, tty, tv
+font-weight:                    handheld, print, projection, screen, tty, tv
+font-size:                      handheld, print, projection, screen, tty, tv
+font-family:                    handheld, print, projection, screen, tty, tv
+font-stretch:                   handheld, print, projection, screen, tty, tv
+font-size-adjust:               handheld, print, projection, screen, tty, tv
+font:                           handheld, print, projection, screen, tty, tv
+color:                          handheld, print, projection, screen, tty, tv
+background-color:               handheld, print, projection, screen, tty, tv
+background-image:               handheld, print, projection, screen, tty, tv
+background-repeat:              handheld, print, projection, screen, tty, tv
+background-attachment:          handheld, print, projection, screen, tty, tv
+background-position:            handheld, print, projection, screen, tty, tv
+background:                     handheld, print, projection, screen, tty, tv
+word-spacing:                   handheld, print, projection, screen, tty, tv
+letter-spacing:                 handheld, print, projection, screen, tty, tv
+text-decoration:                handheld, print, projection, screen, tty, tv
+text-shadow:                    handheld, print, projection, screen, tty, tv
+vertical-align:                 handheld, print, projection, screen, tty, tv
+text-transform:                 handheld, print, projection, screen, tty, tv
+text-align:                     handheld, print, projection, screen, tty, tv
+text-indent:                    handheld, print, projection, screen, tty, tv
+line-height:                    handheld, print, projection, screen, tty, tv
+margin-top:                     handheld, print, projection, screen, tty, tv
+margin-bottom:                  handheld, print, projection, screen, tty, tv
+margin-left:                    handheld, print, projection, screen, tty, tv
+margin-right:                   handheld, print, projection, screen, tty, tv
+margin:                         handheld, print, projection, screen, tty, tv
+padding-top:                    handheld, print, projection, screen, tty, tv
+padding-bottom:                 handheld, print, projection, screen, tty, tv
+padding-left:                   handheld, print, projection, screen, tty, tv
+padding-right:                  handheld, print, projection, screen, tty, tv
+padding:                        handheld, print, projection, screen, tty, tv
+border-top-width:               handheld, print, projection, screen, tty, tv
+border-right-width:             handheld, print, projection, screen, tty, tv
+border-bottom-width:            handheld, print, projection, screen, tty, tv
+border-left-width:              handheld, print, projection, screen, tty, tv
+border-top-color:               handheld, print, projection, screen, tty, tv
+border-right-color:             handheld, print, projection, screen, tty, tv
+border-bottom-color:            handheld, print, projection, screen, tty, tv
+border-left-color:              handheld, print, projection, screen, tty, tv
+border-top-style:               handheld, print, projection, screen, tty, tv
+border-right-style:             handheld, print, projection, screen, tty, tv
+border-bottom-style:            handheld, print, projection, screen, tty, tv
+border-left-style:              handheld, print, projection, screen, tty, tv
+border-width:                   handheld, print, projection, screen, tty, tv
+border-color:                   handheld, print, projection, screen, tty, tv
+border-style:                   handheld, print, projection, screen, tty, tv
+border-top:                     handheld, print, projection, screen, tty, tv
+border-right:                   handheld, print, projection, screen, tty, tv
+border-bottom:                  handheld, print, projection, screen, tty, tv
+border-left:                    handheld, print, projection, screen, tty, tv
+border:                         handheld, print, projection, screen, tty, tv
+width:                          handheld, print, projection, screen, tty, tv
+min-width:                      handheld, print, projection, screen, tty, tv
+max-width:                      handheld, print, projection, screen, tty, tv
+height:                         handheld, print, projection, screen, tty, tv
+min-height:                     handheld, print, projection, screen, tty, tv
+max-height:                     handheld, print, projection, screen, tty, tv
+float:                          handheld, print, projection, screen, tty, tv
+clear:                          handheld, print, projection, screen, tty, tv
+display:                        all
+position:                       handheld, print, projection, screen, tty, tv
+z-index:                        handheld, print, projection, screen, tty, tv
+direction:                      handheld, print, projection, screen, tty, tv
+unicode-bidi:                   handheld, print, projection, screen, tty, tv
+top:                            handheld, print, projection, screen, tty, tv
+right:                          handheld, print, projection, screen, tty, tv
+left:                           handheld, print, projection, screen, tty, tv
+bottom:                         handheld, print, projection, screen, tty, tv
+white-space:                    handheld, print, projection, screen, tty, tv
+list-style-type:                handheld, print, projection, screen, tty, tv
+list-style-image:               handheld, print, projection, screen, tty, tv
+list-style-position:            handheld, print, projection, screen, tty, tv
+list-style:                     handheld, print, projection, screen, tty, tv
+overflow:                       handheld, print, projection, screen, tty, tv
+clip:                           handheld, print, projection, screen, tty, tv
+visibility:                     handheld, print, projection, screen, tty, tv
+content:                        all
+quotes:                         handheld, print, projection, screen, tty, tv
+counter-reset:                  all
+counter-increment:              all
+marker-offset:                  handheld, print, projection, screen, tty, tv
+row-span:                       handheld, print, projection, screen, tty, tv
+column-span:                    handheld, print, projection, screen, tty, tv
+table-layout:                   handheld, print, projection, screen, tty, tv
+caption-side:                   handheld, print, projection, screen, tty, tv
+border-collapse:                handheld, print, projection, screen, tty, tv
+border-spacing:                 handheld, print, projection, screen, tty, tv
+empty-cells:                    handheld, print, projection, screen, tty, tv
+speak-header:                   aural
+cursor:                         handheld, projection, screen, tty, tv
+outline:                        handheld, print, projection, screen, tty, tv
+outline-width:                  handheld, print, projection, screen, tty, tv
+outline-style:                  handheld, print, projection, screen, tty, tv
+outline-color:                  handheld, print, projection, screen, tty, tv
+page-break-before:              embossed, handheld, print, projection, tv
+page-break-after:               embossed, handheld, print, projection, tv
+page-break-inside:              embossed, handheld, print, projection, tv
+page:                           embossed, handheld, print, projection, tv
+orphans:                        handheld, print, projection, screen, tty, tv
+widows:                         handheld, print, projection, screen, tty, tv
+
+volume:                         aural, speech
+pause-before:                   aural, speech
+pause-after:                    aural, speech
+pause:                          aural, speech
+cue-before:                     aural, speech
+cue-after:                      aural, speech
+cue:                            aural, speech
+play-during:                    aural, speech
+voice-family:                   aural, speech
+elevation:                      aural, speech
+speech-rate:                    aural, speech
+pitch:                          aural, speech
+pitch-range:                    aural, speech
+stress:                         aural, speech
+richness:                       aural, speech
+speak-punctuation:              aural, speech
+speak-date:                     aural, speech
+speak-numeral:                  aural, speech
+speak-time:                     aural, speech
+speak:                          aural, speech
+azimuth:                        aural, speech
+voice-volume:                   aural, speech
+voice-balance:                  aural, speech
+voice-rate:                     aural, speech
+voice-pitch:                    aural, speech
+voice-pitch-range:              aural, speech
+voice-duration:                 aural, speech
+phonemes:                       aural, speech
+interpret-as:                   aural, speech
+
+fill:                           handheld, print, projection, screen, tty, tv
+fill-rule:                      handheld, print, projection, screen, tty, tv
+stroke:                         handheld, print, projection, screen, tty, tv
+stroke-dashoffset:              handheld, print, projection, screen, tty, tv
+stroke-dasharray:               handheld, print, projection, screen, tty, tv
+stroke-linejoin:                handheld, print, projection, screen, tty, tv
+stroke-linecap:                 handheld, print, projection, screen, tty, tv
+stroke-miterlimit:              handheld, print, projection, screen, tty, tv
+stroke-width:                   handheld, print, projection, screen, tty, tv
+
+rendering-intent:               handheld, print, projection, screen, tty, tv
+font-effect:                    handheld, print, projection, screen, tty, tv
+font-smooth:                    handheld, print, projection, screen, tty, tv
+font-emphasize-style:           handheld, print, projection, screen, tty, tv
+font-emphasize-position:        handheld, print, projection, screen, tty, tv
+font-emphasize:                 handheld, print, projection, screen, tty, tv
+ruby-align:                     handheld, print, projection, screen, tty, tv
+ruby-overhang:                  handheld, print, projection, screen, tty, tv
+box-sizing:                     handheld, print, projection, screen, tty, tv
+resize:                         handheld, projection, screen, tty, tv
+key-equivalent:                 braille, emboss, handheld, screen, tty, tv
+tab-index                       braille, emboss, handheld, screen, tty, tv
+user-input:                     braille, emboss, handheld, screen, tty, tv
+user-modify:                    braille, emboss, handheld, screen, tty, tv
+user-select:                    braille, emboss, handheld, screen, tty, tv
+user-focus:                     braille, emboss, handheld, screen, tty, tv
+user-focus-key:                 braille, emboss, handheld, screen, tty, tv
+user-focus-pointer:             braille, emboss, handheld, screen, tty, tv
+toggle-group:                   all
+group-reset:                    all
+text-justify:                   handheld, print, projection, screen, tty, tv
+text-align-last:                handheld, print, projection, screen, tty, tv
+min-font-size:                  handheld, print, projection, screen, tty, tv
+max-font-size:                  handheld, print, projection, screen, tty, tv
+text-justify-trim:              handheld, print, projection, screen, tty, tv
+text-kashida-space:             handheld, print, projection, screen, tty, tv
+alignment-adjust:               handheld, print, projection, screen, tty, tv
+line-break:                     handheld, print, projection, screen, tty, tv
+word-break-cjk:                 handheld, print, projection, screen, tty, tv
+word-break-inside:              handheld, print, projection, screen, tty, tv
+word-break:                     handheld, print, projection, screen, tty, tv
+text-space:                     handheld, print, projection, screen, tty, tv
+text-end-overflow:              handheld, print, projection, screen, tty, tv
+text-after-overflow:            handheld, print, projection, screen, tty, tv
+punctuation-trim:               handheld, print, projection, screen, tty, tv
+text-autospace:                 handheld, print, projection, screen, tty, tv
+kerning-mode:                   handheld, print, projection, screen, tty, tv
+kerning-pair-treshold:          handheld, print, projection, screen, tty, tv
+text-underline-style:           handheld, print, projection, screen, tty, tv
+text-underline-color:           handheld, print, projection, screen, tty, tv
+text-underline-mode:            handheld, print, projection, screen, tty, tv
+text-underline-position:        handheld, print, projection, screen, tty, tv
+text-underline:                 handheld, print, projection, screen, tty, tv
+text-line-through-style:        handheld, print, projection, screen, tty, tv
+text-line-through-color:        handheld, print, projection, screen, tty, tv
+text-line-through-mode:         handheld, print, projection, screen, tty, tv
+text-line-through:              handheld, print, projection, screen, tty, tv
+text-overline-style:            handheld, print, projection, screen, tty, tv
+text-overline-color:            handheld, print, projection, screen, tty, tv
+text-overline-mode:             handheld, print, projection, screen, tty, tv
+text-overline:                  handheld, print, projection, screen, tty, tv
+text-combine:                   handheld, print, projection, screen, tty, tv
+display-model:                  handheld, print, projection, screen, tty, tv
+display-role:                   handheld, print, projection, screen, tty, tv
+margin-inside:                  handheld, print, projection, screen, tty, tv
+margin-outside:                 handheld, print, projection, screen, tty, tv
+box-width:                      handheld, print, projection, screen, tty, tv
+box-height:                     handheld, print, projection, screen, tty, tv
+fit:                            handheld, print, projection, screen, tty, tv
+link:                           handheld, print, projection, screen, tty, tv
+column-width-policy:            handheld, print, projection, screen, tty, tv
+column-space-distribution:      handheld, print, projection, screen, tty, tv
+column-count:                   handheld, print, projection, screen, tty, tv
+column-width:                   handheld, print, projection, screen, tty, tv
+background-clip:                handheld, print, projection, screen, tty, tv
+background-size:                handheld, print, projection, screen, tty, tv
+background-quantity:            handheld, print, projection, screen, tty, tv
+background-spacing:             handheld, print, projection, screen, tty, tv
+background-origin:              handheld, print, projection, screen, tty, tv
+all-space-treatment:            handheld, print, projection, screen, tty, tv
+hanging-punctuation:            handheld, print, projection, screen, tty, tv
+line-grid:                      handheld, print, projection, screen, tty, tv
+line-grid-mode:                 handheld, print, projection, screen, tty, tv
+line-grid-progression:          handheld, print, projection, screen, tty, tv
+linefeed-treatment:             handheld, print, projection, screen, tty, tv
+text-script:                    handheld, print, projection, screen, tty, tv
+text-overflow:                  handheld, print, projection, screen, tty, tv
+text-overflow-ellipsis:         handheld, print, projection, screen, tty, tv
+text-overflow-mode:             handheld, print, projection, screen, tty, tv
+white-space-treatment:          handheld, print, projection, screen, tty, tv
+wrap-option:                    handheld, print, projection, screen, tty, tv
+column-gap:                     handheld, print, projection, screen, tty, tv
+column-rule:                    handheld, print, projection, screen, tty, tv
+column-rule-color:              handheld, print, projection, screen, tty, tv
+column-rule-style:              handheld, print, projection, screen, tty, tv
+column-rule-width:              handheld, print, projection, screen, tty, tv
+drop-initial-after-adjust:      handheld, print, projection, screen, tty, tv
+drop-initial-after-align:       handheld, print, projection, screen, tty, tv
+drop-initial-before-adjust:     handheld, print, projection, screen, tty, tv
+drop-initial-before-align:      handheld, print, projection, screen, tty, tv
+drop-initial-size:              handheld, print, projection, screen, tty, tv
+drop-initial-value:             handheld, print, projection, screen, tty, tv
+inline-box-align:               handheld, print, projection, screen, tty, tv
+line-stacking:                  handheld, print, projection, screen, tty, tv
+line-stacking-ruby:             handheld, print, projection, screen, tty, tv
+line-stacking-shift:            handheld, print, projection, screen, tty, tv
+line-stacking-strategy:         handheld, print, projection, screen, tty, tv
+text-height:                    handheld, print, projection, screen, tty, tv
+appearance:                     handheld, projection, screen, tty, tv
+icon:                           all
+nav-index:                      braille, handheld, projection, screen, speech, tty, tv
+nav-right:                      braille, handheld, projection, screen, speech, tty, tv
+nav-up:                         braille, handheld, projection, screen, speech, tty, tv
+nav-down:                       braille, handheld, projection, screen, speech, tty, tv
+nav-left:                       braille, handheld, projection, screen, speech, tty, tv
+outline-offset:                 handheld, print, projection, screen, tty, tv
+overflow-x:                     handheld, print, projection, screen, tty, tv
+overflow-y:                     handheld, print, projection, screen, tty, tv
+ruby-span:                      handheld, print, projection, screen, tty, tv
+text-blink:                     handheld, print, projection, screen, tty, tv
+clear-after:                    handheld, print, projection, screen, tty, tv
+crop:                           handheld, print, projection, screen, tty, tv
+fit-position:                   handheld, print, projection, screen, tty, tv
+float-displace:                 handheld, print, projection, screen, tty, tv
+indent-edge-reset:              handheld, print, projection, screen, tty, tv
+marquee:                        handheld, print, projection, screen, tty, tv
+marquee-direction:              handheld, print, projection, screen, tty, tv
+marquee-repetition:             handheld, print, projection, screen, tty, tv
+marquee-speed:                  handheld, print, projection, screen, tty, tv
+marquee-style:                  handheld, print, projection, screen, tty, tv
+overflow-clip:                  handheld, print, projection, screen, tty, tv
+border-top-right-radius:        handheld, print, projection, screen, tty, tv
+border-bottom-right-radius:     handheld, print, projection, screen, tty, tv
+border-bottom-left-radius:      handheld, print, projection, screen, tty, tv
+border-top-left-radius:         handheld, print, projection, screen, tty, tv
+border-radius:                  handheld, print, projection, screen, tty, tv
+border-top-image:               handheld, print, projection, screen, tty, tv
+border-right-image:             handheld, print, projection, screen, tty, tv
+border-bottom-image:            handheld, print, projection, screen, tty, tv
+border-left-image:              handheld, print, projection, screen, tty, tv
+border-image:                   handheld, print, projection, screen, tty, tv
+border-top-left-image:          handheld, print, projection, screen, tty, tv
+border-top-right-image:         handheld, print, projection, screen, tty, tv
+border-bottom-right-image:      handheld, print, projection, screen, tty, tv
+border-bottom-left-image:       handheld, print, projection, screen, tty, tv
+border-corner-image:            handheld, print, projection, screen, tty, tv
+border-top-fit-length:          handheld, print, projection, screen, tty, tv
+border-right-fit-length:        handheld, print, projection, screen, tty, tv
+border-bottom-fit-length:       handheld, print, projection, screen, tty, tv
+border-left-fit-length:         handheld, print, projection, screen, tty, tv
+border-top-fit-width:           handheld, print, projection, screen, tty, tv
+border-right-fit-width:         handheld, print, projection, screen, tty, tv
+border-bottom-fit-width:        handheld, print, projection, screen, tty, tv
+border-left-fit-width:          handheld, print, projection, screen, tty, tv
+border-fit-length:              handheld, print, projection, screen, tty, tv
+border-fit-width:               handheld, print, projection, screen, tty, tv
+border-fit:                     handheld, print, projection, screen, tty, tv
+border-top-left-fit-length:     handheld, print, projection, screen, tty, tv
+border-top-right-fit-length:    handheld, print, projection, screen, tty, tv
+border-bottom-right-fit-length: handheld, print, projection, screen, tty, tv
+border-bottom-left-fit-length:  handheld, print, projection, screen, tty, tv
+border-top-left-fit-width:      handheld, print, projection, screen, tty, tv
+border-top-right-fit-width:     handheld, print, projection, screen, tty, tv
+border-bottom-right-fit-width:  handheld, print, projection, screen, tty, tv
+border-bottom-left-fit-width:   handheld, print, projection, screen, tty, tv
+border-corner-fit:              handheld, print, projection, screen, tty, tv
+border-image-transform:         handheld, print, projection, screen, tty, tv
+border-break:                   handheld, print, projection, screen, tty, tv
+box-shadow:                     handheld, print, projection, screen, tty, tv
+block-progression:              handheld, print, projection, screen, tty, tv
+word-break-wrap:                handheld, print, projection, screen, tty, tv
+collapse:                       handheld, print, projection, screen, tty, tv
+
+alignment-baseline:             handheld, print, projection, screen, tty, tv
+baseline-shift:                 handheld, print, projection, screen, tty, tv
+clip-path:                      handheld, print, projection, screen, tty, tv
+clip-rule:                      handheld, print, projection, screen, tty, tv
+color-interpolation:            handheld, print, projection, screen, tty, tv
+dominant-baseline:              handheld, print, projection, screen, tty, tv
+enable-background:              handheld, print, projection, screen, tty, tv
+fill-opacity:                   handheld, print, projection, screen, tty, tv
+filter:                         handheld, print, projection, screen, tty, tv
+flood-opacity:                  handheld, print, projection, screen, tty, tv
+flood-color:                    handheld, print, projection, screen, tty, tv
+glyph-orientation-horizontal:   handheld, print, projection, screen, tty, tv
+glyph-orientation-vertical:     handheld, print, projection, screen, tty, tv
+image-rendering:                handheld, print, projection, screen, tty, tv
+kerning:                        handheld, print, projection, screen, tty, tv
+mask:                           handheld, print, projection, screen, tty, tv
+opacity:                        handheld, print, projection, screen, tty, tv
+pointer-events:                 handheld, print, projection, screen, tty, tv
+shape-rendering:                handheld, print, projection, screen, tty, tv
+stop-color:                     handheld, print, projection, screen, tty, tv
+stop-opacity:                   handheld, print, projection, screen, tty, tv
+stroke-opacity:                 handheld, print, projection, screen, tty, tv
+text-anchor:                    handheld, print, projection, screen, tty, tv
+text-rendering:                 handheld, print, projection, screen, tty, tv
+writing-mode:                   handheld, print, projection, screen, tty, tv
+
+color-interpolation-filter:     handheld, print, projection, screen, tty, tv
+color-profile:                  handheld, print, projection, screen, tty, tv
+color-rendering:                handheld, print, projection, screen, tty, tv
+marker:                         handheld, print, projection, screen, tty, tv
+marker-start:                   handheld, print, projection, screen, tty, tv
+marker-end:                     handheld, print, projection, screen, tty, tv
+marker-mid:                     handheld, print, projection, screen, tty, tv
+lighting-color:                 handheld, print, projection, screen, tty, tv
+
+
+# properties not yet implemented
+
+background-break:               handheld, print, projection, screen, tty, tv
+image-orientation:              handheld, print, projection, screen, tty, tv
+image-resolution:               handheld, print, projection, screen, tty, tv
+move-to:                        all
+page-policy:                    embossed, handheld, print, projection, tv
+box-orient:                     handheld, print, projection, screen, tty, tv
+box-direction:                  handheld, print, projection, screen, tty, tv
+box-align:                      handheld, print, projection, screen, tty, tv
+box-flex:                       handheld, print, projection, screen, tty, tv
+box-pack:                       handheld, print, projection, screen, tty, tv
+box-flex-group:                 handheld, print, projection, screen, tty, tv
+box-lines:                      handheld, print, projection, screen, tty, tv
+target-name:                    handheld, projection, screen, tty, tv
+target-new:                     handheld, projection, screen, tty, tv
+target-position:                handheld, projection, screen, tty, tv
+target:                         handheld, projection, screen, tty, tv
+presentation-level:             all
+ruby-position:                  handheld, print, projection, screen, tty, tv
+rest-before:                    aural, speech
+rest-after:                     aural, speech
+rest:                           aural, speech
+mark-before:                    aural, speech
+mark-after:                     aural, speech
+mark:                           aural, speech
+voice-stress:                   aural, speech
+tab-position:                   handheld, print, projection, screen, tty, tv
+tab-align:                      handheld, print, projection, screen, tty, tv
+tab-leaders:                    handheld, print, projection, screen, tty, tv
+tab-leaders-alignment:          handheld, print, projection, screen, tty, tv
+tab:                            handheld, print, projection, screen, tty, tv
+white-space-collapse:           handheld, print, projection, screen, tty, tv
+hyphenate:                      handheld, print, projection, screen, tty, tv
+text-wrap:                      handheld, print, projection, screen, tty, tv
+word-wrap:                      handheld, print, projection, screen, tty, tv
+size:                           embossed, handheld, print, projection, tv
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/MobileProperties.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,206 @@
+# Mobile Properties
+
+font-style:                     org.w3c.css.properties.css1.CssFontStyleCSS2
+font-variant:                   org.w3c.css.properties.css1.CssFontVariantCSS2
+font-weight:                    org.w3c.css.properties.css1.CssFontWeightCSS2
+font-size:                      org.w3c.css.properties.css1.CssFontSizeCSS2
+font-family:                    org.w3c.css.properties.css1.CssFontFamilyCSS2
+font:                           org.w3c.css.properties.css1.CssFontCSS2
+color:                          org.w3c.css.properties.css1.CssColorCSS2
+background-color:               org.w3c.css.properties.css1.CssBackgroundColorMob
+background-image:               org.w3c.css.properties.css1.CssBackgroundImageMob
+background-repeat:              org.w3c.css.properties.css1.CssBackgroundRepeatMob
+background-attachment:          org.w3c.css.properties.css1.CssBackgroundAttachmentMob
+background-position:            org.w3c.css.properties.css1.CssBackgroundPositionMob
+background:                     org.w3c.css.properties.css1.CssBackgroundMob
+text-decoration:                org.w3c.css.properties.css1.CssTextDecorationMob
+vertical-align:                 org.w3c.css.properties.css1.CssVerticalAlignMob
+text-transform:                 org.w3c.css.properties.css1.CssTextTransform
+text-align:                     org.w3c.css.properties.css1.CssTextAlignMob
+text-indent:                    org.w3c.css.properties.css1.CssTextIndentMob
+margin-top:                     org.w3c.css.properties.css1.CssMarginTop
+margin-bottom:                  org.w3c.css.properties.css1.CssMarginBottom
+margin-left:                    org.w3c.css.properties.css1.CssMarginLeft
+margin-right:                   org.w3c.css.properties.css1.CssMarginRight
+margin:                         org.w3c.css.properties.css1.CssMargin
+padding-top:                    org.w3c.css.properties.css1.CssPaddingTop
+padding-bottom:                 org.w3c.css.properties.css1.CssPaddingBottom
+padding-left:                   org.w3c.css.properties.css1.CssPaddingLeft
+padding-right:                  org.w3c.css.properties.css1.CssPaddingRight
+padding:                        org.w3c.css.properties.css1.CssPadding
+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-top-color:               org.w3c.css.properties.css1.CssBorderTopColorCSS2
+border-right-color:             org.w3c.css.properties.css1.CssBorderRightColorCSS2
+border-left-color:              org.w3c.css.properties.css1.CssBorderLeftColorCSS2
+border-bottom-color:            org.w3c.css.properties.css1.CssBorderBottomColorCSS2
+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
+border-width:                   org.w3c.css.properties.css1.CssBorderWidthCSS2
+border-color:                   org.w3c.css.properties.css1.CssBorderColorCSS2
+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:                         org.w3c.css.properties.css1.CssBorderCSS2
+width:                          org.w3c.css.properties.css1.CssWidthMob
+height:                         org.w3c.css.properties.css1.CssHeightMob
+float:                          org.w3c.css.properties.css1.CssFloat
+clear:                          org.w3c.css.properties.css1.CssClear
+display:                        org.w3c.css.properties.css1.CssDisplayCSS1
+white-space:                    org.w3c.css.properties.css1.CssWhiteSpace
+list-style-type:                org.w3c.css.properties.css1.CssListStyleTypeCSS1
+list-style-image:               org.w3c.css.properties.css1.CssListStyleImageCSS1
+list-style-position:            org.w3c.css.properties.css1.CssListStylePositionCSS1
+list-style:                     org.w3c.css.properties.css1.CssListStyleCSS1
+visibility:                     org.w3c.css.properties.css1.CssVisibility
+speak-date:                             org.w3c.css.properties.aural.ACssSpeakDate
+speak-time:                             org.w3c.css.properties.aural.ACssSpeakTime
+counter-increment:                  org.w3c.css.properties.css1.CssCounterIncrement
+counter-reset:                      org.w3c.css.properties.css1.CssCounterReset
+content:                                org.w3c.css.properties.css1.CssContentCSS2
+
+# Table properties
+
+row-span:                       org.w3c.css.properties.css2.table.RowSpan
+column-span:                    org.w3c.css.properties.css2.table.ColumnSpan
+table-layout:                       org.w3c.css.properties.css2.table.TableLayout
+caption-side:                   org.w3c.css.properties.css2.table.CaptionSide
+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
+speak-header:                   org.w3c.css.properties.css2.table.SpeakHeader
+cursor:                         org.w3c.css.properties.css2.user.CursorCSS2
+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
+font-stretch:                   org.w3c.css.properties.css1.CssFontStretchCSS2
+font-size-adjust:               org.w3c.css.properties.css1.CssFontSizeAdjustCSS2
+word-spacing:                   org.w3c.css.properties.css1.CssWordSpacing
+letter-spacing:                 org.w3c.css.properties.css1.CssLetterSpacing
+text-shadow:                    org.w3c.css.properties.css1.CssTextShadow
+line-height:                    org.w3c.css.properties.css1.CssLineHeightCSS2
+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
+position:                       org.w3c.css.properties.css1.CssPosition
+z-index:                        org.w3c.css.properties.css1.CssZIndex
+direction:                      org.w3c.css.properties.css1.CssDirection
+unicode-bidi:                   org.w3c.css.properties.css1.CssUnicodeBidi
+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
+overflow:                       org.w3c.css.properties.css1.CssOverflow
+clip:                           org.w3c.css.properties.css1.CssClip
+quotes:                         org.w3c.css.properties.css1.CssQuotes
+marker-offset:                  org.w3c.css.properties.css1.CssMarkerOffset
+                        
+# Aural Properties      
+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-numeral:                  org.w3c.css.properties.aural.ACssSpeakNumeral
+speak:                          org.w3c.css.properties.aural.ACssSpeak
+azimuth:                        org.w3c.css.properties.aural.ACssAzimuth
+
+# Paged properties
+
+@page.size:                     org.w3c.css.properties.paged.Size  #should be left out?
+@page.marks:                    org.w3c.css.properties.paged.Marks  #should be left out?
+@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
+@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.float:                    org.w3c.css.properties.css1.CssFloat
+@page.clear:                    org.w3c.css.properties.css1.CssClear
+@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
+
+
+
+# Font properties
+
+@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
+@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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/ProfilesProperties.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,27 @@
+# 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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/PropertiesLoader.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,190 @@
+// $Id: PropertiesLoader.java,v 1.4 2009-02-11 22:42:18 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+
+package org.w3c.css.properties;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Hashtable;
+import java.util.Iterator;
+
+import org.w3c.css.util.Utf8Properties;
+import org.w3c.css.util.Util;
+
+/**
+ * PropertiesLoader<br />
+ * Created: Aug 16, 2005 5:19:44 PM<br />
+ * This class is a factory used to load all the CSS-related properties files
+ */
+public class PropertiesLoader {
+
+    public static Utf8Properties DEFAULT_PROFILE;
+
+    /**
+     * Basic configuration of the CSS Validator
+     */
+    public static Utf8Properties config;
+
+    /**
+     * The association between properties and the media for which they
+     * are defined
+     */
+    public static Utf8Properties mediaProperties;
+
+    /**
+     * The list of existing profiles associated to their Java classes
+     */
+    private static Utf8Properties profiles;
+
+    /**
+     * This hashtable contains for each css profile, an Utf8Properties
+     * containing all its properties
+     */
+    private static Hashtable<String, Utf8Properties> allProps;
+
+    private static Utf8Properties loadProfile(String profile,
+					      String profilePath) 
+	throws IOException 
+    {
+	Utf8Properties result = new Utf8Properties();
+	InputStream f = null;
+
+	URL url = null;
+
+	// the url of the properties file of the selected profile
+	if (profilePath != null) {
+	    url = PropertiesLoader.class.getResource(profilePath);
+	}
+
+	f = url.openStream();
+
+	// we load the properties
+	result.load(f);
+	// we add the profile to the profiles Hashtable
+	allProps.put(new String(profile), result);
+
+	if (Util.onDebug) {
+	    System.out.println(profile + " profile loaded");
+	}
+	return result;
+    }
+
+    /**
+     *
+     * @param  profile the profile needed
+     * @return an Utf8Properties containing all the properties 
+     *         for the specified profile
+     */
+    public static Utf8Properties getProfile(String profile) {
+	Utf8Properties result = (Utf8Properties) allProps.get(profile);
+	// the profile has not been loaded yet
+	if (result == null) {
+	    result = new Utf8Properties();
+
+	    String profilePath = (String) profiles.get(profile);
+
+	    if (profilePath != null && !profilePath.equals("")) {
+		try {
+		    return loadProfile(profile, profilePath);
+		} catch(IOException e) {
+		    if(Util.onDebug) {
+			System.out.println(PropertiesLoader.class +
+					   ": Error while loading " + profile +
+					   " profile");
+		    }
+		    e.printStackTrace();
+		}
+	    }
+	    // if the wanted profile is unknown, or there has been an error
+	    // while loading it, we return the default profile
+	    return DEFAULT_PROFILE;
+	} else {
+	    return result;
+	}
+    }
+    
+    /**
+     * This method returns the profile to check against 
+     * when no special profile is specified 
+     * This function is used in CssPropertyFactory
+     * @return the sorted list of profiles as a string array
+     */
+    public static String[] getProfiles() {
+    	//initializations
+    	Iterator it = profiles.keySet().iterator();
+    	
+    	ArrayList<String> res = new ArrayList<String>();
+    	String profil;
+    	
+    	while (it.hasNext()) {
+	    // we filtered only the profiles that we're interessted in
+	    profil = it.next().toString();
+	    if (profil.startsWith("css"))
+		res.add(profil);
+    	}
+    	// we sort them
+    	Collections.sort(res);
+    	// return them as an array
+    	return (String[]) res.toArray(new String[res.size()]);
+    }
+
+    static {
+	config = new Utf8Properties();
+	mediaProperties = new Utf8Properties();
+	profiles = new Utf8Properties();
+
+	allProps = new Hashtable<String, Utf8Properties>();
+
+	InputStream f = null;
+
+	try {
+	    // first, we load the general Config
+	    URL url = PropertiesLoader.class.getResource("Config.properties");
+	    f = url.openStream();
+	    config.load(f);
+
+	    // the media associated to each property
+	    url = PropertiesLoader.class.getResource(
+						   config.getProperty("media"));
+	    f = url.openStream();
+	    mediaProperties.load(f);
+
+	    // profiles
+	    url = PropertiesLoader.class.getResource(
+				      config.getProperty("profilesProperties"));
+
+	    f = url.openStream();
+	    profiles.load(f);
+
+	    // Load the default profile
+	    String defaultProfile =  config.getProperty("defaultProfile");
+	    String defaultPath = (String) profiles.get(defaultProfile);
+	    DEFAULT_PROFILE = loadProfile(defaultProfile, defaultPath);
+
+	    if(Util.onDebug) {
+		System.out.println("Default profile (" + defaultProfile +
+				   ") loaded");
+	    }
+	} catch (Exception e) {
+	    System.err.println(PropertiesLoader.class +
+			       ": Error while loading default config");
+	    e.printStackTrace();
+	} finally {
+	    try {
+		if (f != null) {
+		    f.close();
+		    f = null;
+		}
+	    } catch (Exception e) {
+		e.printStackTrace();
+	    }
+	}
+
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/SVGBasicProperties.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,57 @@
+alignment-baseline:             org.w3c.css.properties.svg.AlignmentBaseline
+baseline-shift:                 org.w3c.css.properties.css3.CssBaselineShift
+clip:                           org.w3c.css.properties.css1.CssClip
+clip-path:                      org.w3c.css.properties.svg.ClipPath
+clip-rule:                      org.w3c.css.properties.svg.ClipRule
+color:                          org.w3c.css.properties.css1.CssColor
+color-interpolation:            org.w3c.css.properties.svg.ColorInterpolation
+color-interpolation-filters:    org.w3c.css.properties.svg.ColorInterpolation
+color-profile:                  org.w3c.css.properties.svg.ColorProfile
+color-rendering:                org.w3c.css.properties.svg.ColorRendering
+cursor:                         org.w3c.css.properties.css2.user.CssCursorCSS2
+direction:                      org.w3c.css.properties.css1.CssDirection
+display:                        org.w3c.css.properties.css1.CssDisplayCSS2
+dominant-baseline:              org.w3c.css.properties.svg.DominantBaseline
+enable-background:              org.w3c.css.properties.svg.EnableBackground
+fill:                           org.w3c.css.properties.svg.Fill
+fill-rule:                      org.w3c.css.properties.svg.FillRule
+fill-opacity:                   org.w3c.css.properties.svg.FillOpacity
+filter:                         org.w3c.css.properties.svg.Filter
+flood-opacity:                  org.w3c.css.properties.svg.FloodOpacity
+flood-color:                    org.w3c.css.properties.svg.FloodColor
+font:                           org.w3c.css.properties.css1.CssFontCSS2
+font-family:                    org.w3c.css.properties.css1.CssFontFamilyCSS2
+font-size-adjust:               org.w3c.css.properties.css1.CssFontSizeAdjustCSS2
+font-stretch:                   org.w3c.css.properties.css1.CssFontStretchCSS2
+font-style:                     org.w3c.css.properties.css1.CssFontStyleCSS2
+font-variant:                   org.w3c.css.properties.css1.CssFontVariantCSS2
+font-weight:                    org.w3c.css.properties.css1.CssFontWeightCSS2
+font-size:                      org.w3c.css.properties.css1.CssFontSizeCSS2
+glyph-orientation-horizontal:   org.w3c.css.properties.css3.CssGlyphHor
+glyph-orientation-vertical:     org.w3c.css.properties.css3.CssGlyphOrVert
+image-rendering:                org.w3c.css.properties.svg.ImageRendering
+kerning:                        org.w3c.css.properties.svg.Kerning
+letter-spacing:                 org.w3c.css.properties.css1.CssLetterSpacing
+mask:                           org.w3c.css.properties.svg.Mask
+opacity:                        org.w3c.css.properties.css3.CssOpacity
+overflow:                       org.w3c.css.properties.css1.CssOverflow
+pointer-events:                 org.w3c.css.properties.svg.PointerEvents
+shape-rendering:                org.w3c.css.properties.svg.ShapeRendering
+stop-color:                     org.w3c.css.properties.svg.StopColor
+stop-opacity:                   org.w3c.css.properties.svg.StopOpacity
+projection.stop-opacity:         org.w3c.css.properties.svg.StopOpacity
+stroke:                         org.w3c.css.properties.svg.Stroke
+stroke-dasharray:               org.w3c.css.properties.svg.StrokeDashArray
+stroke-dashoffset:              org.w3c.css.properties.svg.StrokeDashOffset
+stroke-linecap:                 org.w3c.css.properties.svg.StrokeLineCap
+stroke-linejoin:                org.w3c.css.properties.svg.StrokeLinejoin
+stroke-miterlimit:              org.w3c.css.properties.svg.StrokeMiterLimit
+stroke-opacity:                 org.w3c.css.properties.svg.StrokeOpacity
+stroke-width:                   org.w3c.css.properties.svg.StrokeWidth
+text-anchor:                    org.w3c.css.properties.svg.TextAnchor
+text-decoration:                org.w3c.css.properties.css1.CssTextDecoration
+text-rendering:                 org.w3c.css.properties.svg.TextRendering
+unicode-bidi:                   org.w3c.css.properties.css1.CssUnicodeBidi
+visibility:                     org.w3c.css.properties.css1.CssVisibility
+word-spacing:                   org.w3c.css.properties.css1.CssWordSpacing
+writing-mode:                   org.w3c.css.properties.svg.WritingModeSVG
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/SVGProperties.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,65 @@
+alignment-baseline:             org.w3c.css.properties.svg.AlignmentBaseline
+baseline-shift:                 org.w3c.css.properties.css3.CssBaselineShift
+clip:                           org.w3c.css.properties.css1.CssClip
+clip-path:                      org.w3c.css.properties.svg.ClipPath
+clip-rule:                      org.w3c.css.properties.svg.ClipRule
+color:                          org.w3c.css.properties.css1.CssColor
+color-interpolation:            org.w3c.css.properties.svg.ColorInterpolation
+color-interpolation-filters:    org.w3c.css.properties.svg.ColorInterpolation
+color-profile:                  org.w3c.css.properties.svg.ColorProfile
+color-rendering:                org.w3c.css.properties.svg.ColorRendering
+cursor:                         org.w3c.css.properties.css2.user.CssCursorCSS2
+direction:                      org.w3c.css.properties.css1.CssDirection
+display:                        org.w3c.css.properties.css1.CssDisplayCSS2
+dominant-baseline:              org.w3c.css.properties.svg.DominantBaseline
+enable-background:              org.w3c.css.properties.svg.EnableBackground
+font:                           org.w3c.css.properties.css1.CssFontCSS2
+font-family:                    org.w3c.css.properties.css1.CssFontFamilyCSS2
+font-size-adjust:               org.w3c.css.properties.css1.CssFontSizeAdjustCSS2
+font-stretch:                   org.w3c.css.properties.css1.CssFontStretchCSS2
+font-style:                     org.w3c.css.properties.css1.CssFontStyleCSS2
+font-variant:                   org.w3c.css.properties.css1.CssFontVariantCSS2
+font-weight:                    org.w3c.css.properties.css1.CssFontWeightCSS2
+glyph-orientation-horizontal:   org.w3c.css.properties.css3.CssGlyphHor
+glyph-orientation-vertical:     org.w3c.css.properties.css3.CssGlyphOrVert
+letter-spacing:                 org.w3c.css.properties.css1.CssLetterSpacing
+opacity:                        org.w3c.css.properties.css3.CssOpacity
+overflow:                       org.w3c.css.properties.css1.CssOverflow
+text-decoration:                org.w3c.css.properties.css1.CssTextDecoration
+unicode-bidi:                   org.w3c.css.properties.css1.CssUnicodeBidi
+visibility:                     org.w3c.css.properties.css1.CssVisibility
+word-spacing:                   org.w3c.css.properties.css1.CssWordSpacing
+writing-mode:                   org.w3c.css.properties.svg.WritingModeSVG
+flood-opacity:                  org.w3c.css.properties.svg.FloodOpacity
+filter:                         org.w3c.css.properties.svg.Filter
+fill-rule:                      org.w3c.css.properties.svg.FillRule
+fill-opacity:                   org.w3c.css.properties.svg.FillOpacity
+image-rendering:                org.w3c.css.properties.svg.ImageRendering
+mask:                           org.w3c.css.properties.svg.Mask
+stop-opacity:                   org.w3c.css.properties.svg.StopOpacity
+projection.stop-opacity:        org.w3c.css.properties.svg.StopOpacity
+kerning:                        org.w3c.css.properties.svg.Kerning
+marker:                         org.w3c.css.properties.svg.Marker
+marker-start:                   org.w3c.css.properties.svg.MarkerStart
+projection.marker-start:        org.w3c.css.properties.svg.MarkerStart
+marker-end:                     org.w3c.css.properties.svg.MarkerEnd
+marker-mid:                     org.w3c.css.properties.svg.MarkerMid
+pointer-events:                 org.w3c.css.properties.svg.PointerEvents
+shape-rendering:                org.w3c.css.properties.svg.ShapeRendering
+text-rendering:                 org.w3c.css.properties.svg.TextRendering        
+text-anchor:                    org.w3c.css.properties.svg.TextAnchor
+stroke-linejoin:                org.w3c.css.properties.svg.StrokeLinejoin
+stroke-linecap:                 org.w3c.css.properties.svg.StrokeLineCap
+stroke-miterlimit:              org.w3c.css.properties.svg.StrokeMiterLimit
+stroke-opacity:                 org.w3c.css.properties.svg.StrokeOpacity
+stroke-width:                   org.w3c.css.properties.svg.StrokeWidth
+stroke-dashoffset:              org.w3c.css.properties.svg.StrokeDashOffset
+stroke-dasharray:               org.w3c.css.properties.svg.StrokeDashArray
+stop-color:                     org.w3c.css.properties.svg.StopColor
+lighting-color:                 org.w3c.css.properties.svg.LightingColor
+flood-color:                    org.w3c.css.properties.svg.FloodColor
+stroke:                         org.w3c.css.properties.svg.Stroke
+fill:                           org.w3c.css.properties.svg.Fill
+font-size:                      org.w3c.css.properties.css1.CssFontSizeCSS2
+solid-color:                    org.w3c.css.properties.svg.SolidColor
+solid-opacity:                  org.w3c.css.properties.svg.SolidOpacity
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/SVGTinyProperties.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,17 @@
+color:                          org.w3c.css.properties.css1.CssColor
+display:                        org.w3c.css.properties.css1.CssDisplayCSS2
+fill:                           org.w3c.css.properties.svg.Fill
+fill-rule:                      org.w3c.css.properties.svg.FillRule
+font:                           org.w3c.css.properties.css1.CssFontCSS2
+font-family:                    org.w3c.css.properties.css1.CssFontFamilyCSS2
+font-size:                      org.w3c.css.properties.css1.CssFontSizeCSS2
+font-style:                     org.w3c.css.properties.css1.CssFontStyleCSS2
+font-weight:                    org.w3c.css.properties.css1.CssFontWeightCSS2
+stroke:                         org.w3c.css.properties.svg.Stroke
+stroke-dashoffset:              org.w3c.css.properties.svg.StrokeDashOffset
+stroke-dasharray:               org.w3c.css.properties.svg.StrokeDashArray
+stroke-linejoin:                org.w3c.css.properties.svg.StrokeLinejoin
+stroke-linecap:                 org.w3c.css.properties.svg.StrokeLineCap
+stroke-miterlimit:              org.w3c.css.properties.svg.StrokeMiterLimit
+stroke-width:                   org.w3c.css.properties.svg.StrokeWidth
+visibility:                     org.w3c.css.properties.css1.CssVisibility
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/TVProperties.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,80 @@
+#TV profile properties
+
+background-color:      org.w3c.css.properties.css1.CssBackgroundColorCSS2
+background-image:      org.w3c.css.properties.css1.CssBackgroundImageCSS2
+background-repeat:     org.w3c.css.properties.css1.CssBackgroundRepeatCSS2
+background-position:   org.w3c.css.properties.css1.CssBackgroundPositionCSS2
+background:            org.w3c.css.properties.css1.CssBackgroundTV
+border:                org.w3c.css.properties.css1.CssBorderCSS2
+border-color:          org.w3c.css.properties.css1.CssBorderColorCSS2
+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-top-color:      org.w3c.css.properties.css1.CssBorderTopColorCSS2
+border-right-color:    org.w3c.css.properties.css1.CssBorderRightColorCSS2
+border-left-color:     org.w3c.css.properties.css1.CssBorderLeftColorCSS2
+border-bottom-color:   org.w3c.css.properties.css1.CssBorderBottomColorCSS2
+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
+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-width:          org.w3c.css.properties.css1.CssBorderWidthCSS2
+bottom:                org.w3c.css.properties.css1.CssBottom
+caption-side:          org.w3c.css.table.CaptionSide
+clear:                 org.w3c.css.properties.css1.CssClear
+clip:                  org.w3c.css.properties.css1.CssClip
+color:                 org.w3c.css.properties.css1.CssColorCSS2
+display:               org.w3c.css.properties.css1.CssDisplayCSS1
+float:                 org.w3c.css.properties.css1.CssFloatCSS2
+font:                  org.w3c.css.properties.css1.CssFontCSS2
+font-family:           org.w3c.css.properties.css1.CssFontFamilyCSS2
+font-size:             org.w3c.css.properties.css1.CssFontSizeCSS2
+font-style:            org.w3c.css.properties.css1.CssFontStyleCSS2
+font-variant:          org.w3c.css.properties.css1.CssFontVariantCSS2
+font-weight:           org.w3c.css.properties.css1.CssFontWeightCSS2
+height:                org.w3c.css.properties.css1.CssHeight
+left:                  org.w3c.css.properties.css1.CssLeft
+line-height:           org.w3c.css.properties.css1.CssLineHeightCSS2
+list-style-image:      org.w3c.css.properties.css1.CssListStyleImageCSS2
+list-style-position:   org.w3c.css.properties.css1.CssListStylePositionCSS2
+list-style:            org.w3c.css.properties.css1.CssListStyleCSS2
+list-style-type:       org.w3c.css.properties.css1.CssListStyleTypeTV
+margin-top:            org.w3c.css.properties.css1.CssMarginTop
+margin-bottom:         org.w3c.css.properties.css1.CssMarginBottom
+margin-left:           org.w3c.css.properties.css1.CssMarginLeft
+margin-right:          org.w3c.css.properties.css1.CssMarginRight
+margin:                org.w3c.css.properties.css1.CssMargin
+outline:               org.w3c.css.user.Outline
+outline-width:         org.w3c.css.user.OutlineWidth
+outline-style:         org.w3c.css.user.OutlineStyle
+outline-color:         org.w3c.css.user.OutlineColor
+padding-top:           org.w3c.css.properties.css1.CssPaddingTop
+padding-bottom:        org.w3c.css.properties.css1.CssPaddingBottom
+padding-left:          org.w3c.css.properties.css1.CssPaddingLeft
+padding-right:         org.w3c.css.properties.css1.CssPaddingRight
+padding:               org.w3c.css.properties.css1.CssPadding
+position:              org.w3c.css.properties.css1.CssPositionTV
+right:                 org.w3c.css.properties.css1.CssRight
+text-decoration:       org.w3c.css.properties.css1.CssTextDecorationTV
+vertical-align:        org.w3c.css.properties.css1.CssVerticalAlignTV
+text-align:            org.w3c.css.properties.css1.CssTextAlignTV
+text-indent:           org.w3c.css.properties.css1.CssTextIndent
+text-transform:        org.w3c.css.properties.css1.CssTextTransform
+top:                   org.w3c.css.properties.css1.CssTopright                
+visibility:            org.w3c.css.properties.css1.CssVisibility
+white-space:           org.w3c.css.properties.css1.CssWhiteSpace
+width:                 org.w3c.css.properties.css1.CssWidth
+z-index:               org.w3c.css.properties.css1.CssZIndex
+
+#CSS3 color properties
+
+opacity:                org.w3c.css.properties.css3.CssOpacity
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/ATSCColor.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,165 @@
+//
+// $Id: ATSCColor.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.atsc;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'color'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;color&gt;<BR>
+ *   <EM>Initial:</EM> UA specific<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   This property describes the text color of an element (often referred to as
+ *   the <EM>foreground</EM> color). There are different ways to specify red:
+ *   <PRE>
+ *   EM { color: red }              /* natural language * /
+ *   EM { color: rgb(255,0,0) }     /* RGB range 0-255   * /
+ * </PRE>
+ * @version $Revision: 1.3 $
+ */
+public class ATSCColor extends CssProperty {
+
+    CssValue color;
+
+    /**
+     * Create a new ATSCColor
+     */
+    public ATSCColor() {
+	color = inherit;
+    }
+
+    /**
+     * Set the value of the property
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public ATSCColor(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    color = inherit;
+	    expression.next();
+	} else if (val instanceof org.w3c.css.values.ATSCColor ||
+		val instanceof org.w3c.css.values.CssColor) {
+	    color = val;
+	    expression.next();
+	} else if (val instanceof CssIdent) {
+	    color = new org.w3c.css.values.ATSCColor(ac, (String) val.get());
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public ATSCColor(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return color;
+    }
+
+    /**
+     * Returns the color
+     */
+    public org.w3c.css.values.ATSCColor getColor() {
+	if (color.equals(inherit)) {
+	    /*
+	    System.err.println("[ERROR] org.w3c.css.properties.CssColor");
+	    System.err.println("[ERROR] value is inherited");
+	    */
+	    return null;
+	} else {
+	    return (org.w3c.css.values.ATSCColor) color;
+	}
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return color.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return color.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	ATSCStyle style0 = (ATSCStyle) style;
+	if (style0.ATSCcolor != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.ATSCcolor = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ATSCStyle) style).getColorATSC();
+	} else {
+	    return ((ATSCStyle) style).ATSCcolor;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof ATSCColor &&
+		color.equals(((ATSCColor) property).color));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "color";
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/ATSCDynamicRefresh.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,146 @@
+//
+// $Id: ATSCDynamicRefresh.java,v 1.2 2005-09-14 15:14:18 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.atsc;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssNumber;
+import org.w3c.css.values.CssValue;
+
+public class ATSCDynamicRefresh extends CssProperty {
+
+    CssValue dynamicRefresh;
+    ApplContext ac;
+
+    CssIdent auto = new CssIdent("auto");
+    CssIdent none = new CssIdent("none");
+
+    /**
+     * Create a new ATSCDynamicRefresh
+     */
+    public ATSCDynamicRefresh () {
+	//nothing to do
+    }
+
+    /**
+     * Create a new ATSCDynamicRefresh
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public ATSCDynamicRefresh (ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	this.ac = ac;
+	setByUser(); // tell this property is set by the user
+	CssValue val = expression.getValue();
+	if (val instanceof CssNumber) {
+	    if (((CssNumber) val).getValue() > 0 &&
+		    ((CssNumber) val).getValue() < 32767 &&
+		    ((CssNumber) val).isInteger()) {
+
+		dynamicRefresh = val;
+		expression.next();
+	    } else {
+		throw new InvalidParamException("value", val.toString(),
+			getPropertyName(), ac);
+	    }
+	} else if (val.equals(auto) || val.equals(none) || val.equals(inherit)) {
+	    dynamicRefresh = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", val.toString(),
+		    getPropertyName(), ac);
+	}
+    }
+
+    public ATSCDynamicRefresh(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	 if (((ATSCStyle) style).dynamicRefresh != null)
+	     style.addRedefinitionWarning(ac, this);
+	 ((ATSCStyle) style).dynamicRefresh = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ATSCStyle) style).getDynamicRefresh();
+	} else {
+	    return ((ATSCStyle) style).dynamicRefresh;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof ATSCDynamicRefresh &&
+                dynamicRefresh.equals( ((ATSCDynamicRefresh) property).dynamicRefresh));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "atsc-dynamic-refresh";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return dynamicRefresh;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return false;
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return dynamicRefresh.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/ATSCNavDown.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,143 @@
+//
+// $Id: ATSCNavDown.java,v 1.2 2005-09-14 15:14:18 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.atsc;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssNumber;
+import org.w3c.css.values.CssString;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  This property is used to effect explicit directional navigation control by
+ *  associating specific styled elements with directional navigation events.
+ */
+public class ATSCNavDown extends CssProperty {
+
+    CssValue navdown;
+    ApplContext ac;
+    CssIdent auto = new CssIdent("auto");
+
+    public ATSCNavDown() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new ATSCNavDown
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public ATSCNavDown (ApplContext ac, CssExpression expression, boolean check)
+	throws InvalidParamException {
+
+	if(check && expression.getCount() >1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	this.ac = ac;
+	setByUser(); // tell this property is set by the user
+	CssValue val = expression.getValue();
+
+	if (val instanceof CssNumber) {
+	    navdown = val;
+	    expression.next();
+	} else if (val instanceof CssString) {
+	    navdown = val;
+	    expression.next();
+	} else if (val.equals(auto)) {
+	    navdown = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", val.toString(),
+		    getPropertyName(), ac);
+	}
+
+    }
+
+    public ATSCNavDown(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	 if (((ATSCStyle) style).navdown != null)
+	     style.addRedefinitionWarning(ac, this);
+	 ((ATSCStyle) style).navdown = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ATSCStyle) style).getNavDown();
+	} else {
+	    return ((ATSCStyle) style).navdown;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof ATSCNavDown &&
+                navdown.equals( ((ATSCNavDown) property).navdown));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "atsc-nav-down";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return navdown;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return false;
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return navdown.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/ATSCNavIndex.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,156 @@
+//
+// $Id: ATSCNavIndex.java,v 1.2 2005-09-14 15:14:18 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.atsc;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> &lt;integer&gt;<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  This property is used to associate a styled element with a document unique
+ *  integer in the range 0 throwug 32767 (inclusive) which is used for
+ *  explicit directional navigation control.
+ */
+
+public class ATSCNavIndex extends CssProperty {
+
+    CssValue navindex;
+    ApplContext ac;
+    CssIdent auto = new CssIdent("auto");
+
+    /**
+     * Create a new ATSCNavIndex
+     */
+    public ATSCNavIndex () {
+	//nothing to do
+    }
+
+    /**
+     * Create a new ATSCNavIndex
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public ATSCNavIndex (ApplContext ac, CssExpression expression, boolean check)
+	throws InvalidParamException {
+
+	if(check && expression.getCount() >1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	this.ac = ac;
+	setByUser(); // tell this property is set by the user
+	CssValue val = expression.getValue();
+	if (val instanceof CssNumber) {
+	    if (((CssNumber) val).getValue() > 0 &&
+		    ((CssNumber) val).getValue() < 32767 &&
+		    ((CssNumber) val).isInteger()) {
+
+		navindex = val;
+		expression.next();
+	    } else {
+		throw new InvalidParamException("value", val.toString(),
+			getPropertyName(), ac);
+	    }
+	} else if (val.equals(auto) || val.equals(inherit)) {
+	    navindex = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", val.toString(),
+		    getPropertyName(), ac);
+	}
+    }
+
+    public ATSCNavIndex(ApplContext ac, CssExpression expression)
+    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	 if (((ATSCStyle) style).navindex != null)
+	     style.addRedefinitionWarning(ac, this);
+	 ((ATSCStyle) style).navindex = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ATSCStyle) style).getNavIndex();
+	} else {
+	    return ((ATSCStyle) style).navindex;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof ATSCNavIndex &&
+                navindex.equals( ((ATSCNavIndex) property).navindex));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "atsc-nav-index";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return navindex;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return false;
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return navindex.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/ATSCNavLeft.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,151 @@
+//
+// $Id: ATSCNavLeft.java,v 1.2 2005-09-14 15:14:18 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.atsc;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssNumber;
+import org.w3c.css.values.CssString;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> &lt;integer&gt; || &lt;identifier&gt; ||
+ *   &lt;identifier&gt;  &lt;integer&gt; <BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  This property is used to effect explicit directional navigation control by
+ *  associating specific styled elements with directional navigation events.
+ */
+public class ATSCNavLeft extends CssProperty {
+
+    CssValue navleft;
+    ApplContext ac;
+    CssIdent auto = new CssIdent("auto");
+
+    public ATSCNavLeft() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new ATSCNavLeft
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public ATSCNavLeft (ApplContext ac, CssExpression expression, boolean check)
+	throws InvalidParamException {
+
+	if(check && expression.getCount() >1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	this.ac = ac;
+	setByUser(); // tell this property is set by the user
+	CssValue val = expression.getValue();
+
+	if (val instanceof CssNumber) {
+	    navleft = val;
+	    expression.next();
+	} else if (val instanceof CssString) {
+	    navleft = val;
+	    expression.next();
+	} else if (val.equals(auto)) {
+	    navleft = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", val.toString(),
+		    getPropertyName(), ac);
+	}
+    }
+
+    public ATSCNavLeft(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	 if (((ATSCStyle) style).navleft != null)
+	     style.addRedefinitionWarning(ac, this);
+	 ((ATSCStyle) style).navleft = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ATSCStyle) style).getNavLeft();
+	} else {
+	    return ((ATSCStyle) style).navleft;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof ATSCNavLeft &&
+                navleft.equals( ((ATSCNavLeft) property).navleft));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "atsc-nav-left";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return navleft;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return false;
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return navleft.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/ATSCNavRight.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,149 @@
+//
+// $Id: ATSCNavRight.java,v 1.2 2005-09-14 15:14:18 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.atsc;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssNumber;
+import org.w3c.css.values.CssString;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> &lt;integer&gt; || &lt;identifier&gt; ||
+ *   &lt;identifier&gt;  &lt;integer&gt; <BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  This property is used to effect explicit directional navigation control by
+ *  associating specific styled elements with directional navigation events.
+ */
+public class ATSCNavRight extends CssProperty {
+
+    CssValue navright;
+    ApplContext ac;
+    CssIdent auto = new CssIdent("auto");
+
+    public ATSCNavRight() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new ATSCNavRight
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public ATSCNavRight (ApplContext ac, CssExpression expression, boolean check)
+	throws InvalidParamException {
+
+	if(check && expression.getCount() >1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	this.ac = ac;
+	setByUser(); // tell this property is set by the user
+	CssValue val = expression.getValue();
+
+	if (val instanceof CssNumber) {
+	    navright = val;
+	    expression.next();
+	} else if (val instanceof CssString) {
+	    navright = val;
+	    expression.next();
+	} else if (val.equals(auto)) {
+	    navright = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", val.toString(),
+		    getPropertyName(), ac);
+	}
+    }
+
+    public ATSCNavRight(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	 if (((ATSCStyle) style).navright != null)
+	     style.addRedefinitionWarning(ac, this);
+	 ((ATSCStyle) style).navright = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ATSCStyle) style).getNavRight();
+	} else {
+	    return ((ATSCStyle) style).navright;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof ATSCNavRight &&
+                navright.equals( ((ATSCNavRight) property).navright));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "atsc-nav-right";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return navright;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return false;
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return navright.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/ATSCNavUp.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,149 @@
+//
+// $Id: ATSCNavUp.java,v 1.2 2005-09-14 15:14:18 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.atsc;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssNumber;
+import org.w3c.css.values.CssString;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> &lt;integer&gt; || &lt;identifier&gt; ||
+ *   &lt;identifier&gt;  &lt;integer&gt; <BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  This property is used to effect explicit directional navigation control by
+ *  associating specific styled elements with directional navigation events.
+ */
+public class ATSCNavUp extends CssProperty {
+
+    CssValue navup;
+    ApplContext ac;
+    CssIdent auto = new CssIdent("auto");
+
+    public ATSCNavUp() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new ATSCNavUp
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public ATSCNavUp (ApplContext ac, CssExpression expression, boolean check)
+	throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	this.ac = ac;
+	setByUser(); // tell this property is set by the user
+	CssValue val = expression.getValue();
+
+	if (val instanceof CssNumber) {
+	    navup = val;
+	    expression.next();
+	} else if (val instanceof CssString) {
+	    navup = val;
+	    expression.next();
+	} else if (val.equals(auto)) {
+	    navup = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", val.toString(),
+		    getPropertyName(), ac);
+	}
+    }
+
+    public ATSCNavUp(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	 if (((ATSCStyle) style).navup != null)
+	     style.addRedefinitionWarning(ac, this);
+	 ((ATSCStyle) style).navup = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ATSCStyle) style).getNavUp();
+	} else {
+	    return ((ATSCStyle) style).navup;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof ATSCNavUp &&
+                navup.equals( ((ATSCNavUp) property).navup));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "atsc-nav-up";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return navup;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return false;
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return navup.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/ATSCStyle.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,510 @@
+//
+// $Id: ATSCStyle.java,v 1.2 2005-09-14 15:14:18 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.atsc;
+
+import org.w3c.css.parser.CssPrinterStyle;
+
+/**
+ * @version $Revision: 1.2 $
+ */
+public class ATSCStyle extends org.w3c.css.properties.css2.font.Css2Style {
+
+    ATSCNavIndex navindex;
+    ATSCNavLeft navleft;
+    ATSCNavUp navup;
+    ATSCNavDown navdown;
+    ATSCNavRight navright;
+    ATSCDynamicRefresh dynamicRefresh;
+
+    UnitsPerEmATSC unitsPerEmATSC;
+    SrcATSC srcATSC;
+    Panose1ATSC panose1ATSC;
+    BboxATSC bboxATSC;
+    WidthsATSC widthsATSC;
+    StemvATSC stemvATSC;
+    StemhATSC stemhATSC;
+    SlopeATSC slopeATSC;
+    CapHeightATSC capHeightATSC;
+    XHeightATSC xHeightATSC;
+    AscentATSC ascentATSC;
+    DescentATSC descentATSC;
+    BaselineATSC baselineATSC;
+    CenterlineATSC centerlineATSC;
+    MathlineATSC mathlineATSC;
+    ToplineATSC toplineATSC;
+    DefinitionSrcATSC definitionSrcATSC;
+    ATSCColor ATSCcolor;
+    CssBackgroundColorATSC cssBackgroundColorATSC;
+    CssBackgroundImageATSC cssBackgroundImageATSC;
+    CssBackgroundRepeatATSC cssBackgroundRepeatATSC;
+    CssBackgroundAttachmentATSC cssBackgroundAttachmentATSC;
+    CssBackgroundPositionATSC cssBackgroundPositionATSC;
+    CssBackgroundATSC cssBackgroundATSC = new CssBackgroundATSC(); //shortcut
+    protected CssBorderATSC cssBorderATSC = new CssBorderATSC();
+
+
+    /**
+     * Get the atsc-nav-index property
+     */
+    public final ATSCNavIndex getNavIndex() {
+	return navindex;
+    }
+
+    /**
+     * Get the atsc-nav-index property
+     */
+    public final ATSCDynamicRefresh getDynamicRefresh() {
+		return dynamicRefresh;
+    }
+
+
+    /**
+     * Get the atsc-nav-left property
+     */
+    public final ATSCNavLeft getNavLeft() {
+	return navleft;
+    }
+
+    /**
+     * Get the atsc-nav-up property
+     */
+    public final ATSCNavUp getNavUp() {
+	return navup;
+    }
+
+    /**
+     * Get the atsc-nav-down property
+     */
+    public final ATSCNavDown getNavDown() {
+	return navdown;
+    }
+
+    /**
+     * Get the atsc-nav-right property
+     */
+    public final ATSCNavRight getNavRight() {
+	return navright;
+    }
+
+    public final UnitsPerEmATSC getUnitsPerEmATSC() {
+	return unitsPerEmATSC;
+    }
+
+    public final StemvATSC getStemvATSC() {
+	return stemvATSC;
+    }
+
+    public final SrcATSC getSrcATSC() {
+	return srcATSC;
+    }
+
+    public final Panose1ATSC getPanose1ATSC() {
+	return panose1ATSC;
+    }
+
+    public final WidthsATSC getWidthsATSC() {
+        return widthsATSC;
+    }
+
+    public final BboxATSC getBboxATSC() {
+	return bboxATSC;
+    }
+
+    public final StemhATSC getStemhATSC() {
+	return stemhATSC;
+    }
+
+    public final SlopeATSC getSlopeATSC() {
+        return slopeATSC;
+    }
+
+    public final AscentATSC getAscentATSC() {
+	return ascentATSC;
+    }
+
+    public final DescentATSC getDescentATSC() {
+	return descentATSC;
+    }
+
+    public final CapHeightATSC getCapHeightATSC() {
+        return capHeightATSC;
+    }
+
+    public final XHeightATSC getXHeightATSC() {
+        return xHeightATSC;
+    }
+
+    public final BaselineATSC getBaselineATSC() {
+	return baselineATSC;
+    }
+
+    public final CenterlineATSC getCenterlineATSC() {
+	return centerlineATSC;
+    }
+
+    public final MathlineATSC getMathlineATSC() {
+	return mathlineATSC;
+    }
+
+    public final ToplineATSC getToplineATSC() {
+	return toplineATSC;
+    }
+
+    public final DefinitionSrcATSC getDefinitionSrcATSC() {
+        return definitionSrcATSC;
+    }
+
+    public final ATSCColor getColorATSC() {
+	return ATSCcolor;
+    }
+
+    public final CssBackgroundColorATSC getBackgroundColorATSC() {
+	if (cssBackgroundATSC.color == null) {
+	    cssBackgroundATSC.color =
+		(CssBackgroundColorATSC) style.CascadingOrder(
+					     new CssBackgroundColorATSC(),
+					     style, selector);
+	}
+	return cssBackgroundATSC.color;
+    }
+
+    public final CssBackgroundImageATSC getBackgroundImageATSC() {
+	if (cssBackgroundATSC.image == null) {
+	    cssBackgroundATSC.image =
+		(CssBackgroundImageATSC) style.CascadingOrder(new CssBackgroundImageATSC(),
+							  style, selector);
+	}
+	return cssBackgroundATSC.image;
+    }
+
+    public final CssBackgroundRepeatATSC getBackgroundRepeatATSC() {
+	if (cssBackgroundATSC.repeat == null) {
+	    cssBackgroundATSC.repeat =
+		(CssBackgroundRepeatATSC) style.CascadingOrder(new CssBackgroundRepeatATSC(),
+							   style, selector);
+	}
+	return cssBackgroundATSC.repeat;
+    }
+
+    public final CssBackgroundAttachmentATSC getBackgroundAttachmentATSC() {
+	if (cssBackgroundATSC.attachment == null) {
+	    cssBackgroundATSC.attachment =
+		(CssBackgroundAttachmentATSC) style.CascadingOrder(new CssBackgroundAttachmentATSC(),
+							       style, selector);
+	}
+	return cssBackgroundATSC.attachment;
+    }
+
+    public final CssBackgroundPositionATSC getBackgroundPositionATSC() {
+	if (cssBackgroundATSC.position == null) {
+	    cssBackgroundATSC.position =
+		(CssBackgroundPositionATSC) style.CascadingOrder(new CssBackgroundPositionATSC(),
+							     style, selector);
+	}
+	return cssBackgroundATSC.position;
+    }
+
+    public final CssBackgroundATSC getBackgroundATSC() {
+	if (cssBackgroundATSC.getColor() == null) {
+	    cssBackgroundATSC.color = getBackgroundColorATSC();
+	}
+	if (cssBackgroundATSC.image == null) {
+	    cssBackgroundATSC.image = getBackgroundImageATSC();
+	}
+	if (cssBackgroundATSC.repeat == null) {
+	    cssBackgroundATSC.repeat = getBackgroundRepeatATSC();
+	}
+	if (cssBackgroundATSC.attachment == null) {
+	    cssBackgroundATSC.attachment = getBackgroundAttachmentATSC();
+	}
+	if (cssBackgroundATSC.position == null) {
+	    cssBackgroundATSC.position = getBackgroundPositionATSC();
+	}
+	return cssBackgroundATSC;
+    }
+
+    public final CssBorderTopWidthATSC getBorderTopWidthATSC() {
+	if (cssBorderATSC.getTop().getWidth() == null) {
+	    cssBorderATSC.getTop().width =
+		(CssBorderTopWidthATSC) style.CascadingOrder(new CssBorderTopWidthATSC(),
+							 style, selector);
+	}
+	return cssBorderATSC.getTop().width;
+    }
+
+    public final CssBorderTopStyleATSC getBorderTopStyleATSC() {
+	if (cssBorderATSC.getTop().getStyle() == null) {
+	    cssBorderATSC.getTop().style =
+		(CssBorderTopStyleATSC) style.CascadingOrder(new CssBorderTopStyleATSC(),
+							 style, selector);
+	}
+	return cssBorderATSC.getTop().style;
+    }
+
+    public final CssBorderTopColorATSC getBorderTopColorATSC() {
+	if (cssBorderATSC.getTop().getColor() == null) {
+	    cssBorderATSC.getTop().color =
+		(CssBorderTopColorATSC) style.CascadingOrder(new CssBorderTopColorATSC(),
+							 style, selector);
+	}
+	return cssBorderATSC.getTop().color;
+    }
+
+    public final CssBorderRightWidthATSC getBorderRightWidthATSC() {
+	if (cssBorderATSC.getRight().getWidth() == null) {
+	    cssBorderATSC.getRight().width =
+		(CssBorderRightWidthATSC) style.CascadingOrder(new CssBorderRightWidthATSC(),
+							   style, selector);
+	}
+	return cssBorderATSC.getRight().width;
+    }
+
+    public final CssBorderRightStyleATSC getBorderRightStyleATSC() {
+	if (cssBorderATSC.getRight().getStyle() == null) {
+	    cssBorderATSC.getRight().style =
+		(CssBorderRightStyleATSC) style.CascadingOrder(new CssBorderRightStyleATSC(),
+							   style, selector);
+	}
+	return cssBorderATSC.getRight().style;
+    }
+
+    public final CssBorderRightColorATSC getBorderRightColorATSC() {
+	if (cssBorderATSC.getRight().getColor() == null) {
+	    cssBorderATSC.getRight().color =
+		(CssBorderRightColorATSC) style.CascadingOrder(new CssBorderRightColorATSC(),
+							   style, selector);
+	}
+	return cssBorderATSC.getRight().color;
+    }
+
+    public final CssBorderBottomWidthATSC getBorderBottomWidthATSC() {
+	if (cssBorderATSC.getBottom().getWidth() == null) {
+	    cssBorderATSC.getBottom().width =
+		(CssBorderBottomWidthATSC) style.CascadingOrder(new CssBorderBottomWidthATSC(),
+							    style, selector);
+	}
+	return cssBorderATSC.getBottom().width;
+    }
+
+    public final CssBorderBottomStyleATSC getBorderBottomStyleATSC() {
+	if (cssBorderATSC.getBottom().getStyle() == null) {
+	    cssBorderATSC.getBottom().style =
+		(CssBorderBottomStyleATSC) style.CascadingOrder(new CssBorderBottomStyleATSC(),
+							    style, selector);
+	}
+	return cssBorderATSC.getBottom().style;
+    }
+
+    public final CssBorderBottomColorATSC getBorderBottomColorATSC() {
+	if (cssBorderATSC.getBottom().getColor() == null) {
+	    cssBorderATSC.getBottom().color =
+		(CssBorderBottomColorATSC) style.CascadingOrder(new CssBorderBottomColorATSC(),
+							    style, selector);
+	}
+	return cssBorderATSC.getBottom().color;
+    }
+
+    public final CssBorderLeftWidthATSC getBorderLeftWidthATSC() {
+	if (cssBorderATSC.getLeft().getWidth() == null) {
+	    cssBorderATSC.getLeft().width =
+		(CssBorderLeftWidthATSC) style.CascadingOrder(new CssBorderLeftWidthATSC(),
+							  style, selector);
+	}
+	return cssBorderATSC.getLeft().width;
+    }
+
+    public final CssBorderLeftStyleATSC getBorderLeftStyleATSC() {
+	if (cssBorderATSC.getLeft().getStyle() == null) {
+	    cssBorderATSC.getLeft().style =
+		(CssBorderLeftStyleATSC) style.CascadingOrder(new CssBorderLeftStyleATSC(),
+							  style, selector);
+	}
+	return cssBorderATSC.getLeft().style;
+    }
+
+    public final CssBorderLeftColorATSC getBorderLeftColorATSC() {
+	if (cssBorderATSC.getLeft().getColor() == null) {
+	    cssBorderATSC.getLeft().color =
+		(CssBorderLeftColorATSC) style.CascadingOrder(new CssBorderLeftColorATSC(),
+							  style, selector);
+	}
+	return cssBorderATSC.getLeft().color;
+    }
+
+    public final CssBorderTopATSC getBorderTopATSC() {
+	if (cssBorderATSC.getTop().getWidth() == null) {
+	    cssBorderATSC.getTop().width = getBorderTopWidthATSC();
+	}
+	if (cssBorderATSC.getTop().getStyle() == null) {
+	    cssBorderATSC.getTop().style = getBorderTopStyleATSC();
+	}
+	if (cssBorderATSC.getTop().getColor() == null) {
+	    cssBorderATSC.getTop().color = getBorderTopColorATSC();
+	}
+	return cssBorderATSC.getTop();
+    }
+
+    public final CssBorderRightATSC getBorderRightATSC() {
+	if (cssBorderATSC.getRight().getWidth() == null) {
+	    cssBorderATSC.getRight().width = getBorderRightWidthATSC();
+	}
+	if (cssBorderATSC.getRight().getStyle() == null) {
+	    cssBorderATSC.getRight().style = getBorderRightStyleATSC();
+	}
+	if (cssBorderATSC.getRight().getColor() == null) {
+	    cssBorderATSC.getRight().color = getBorderRightColorATSC();
+	}
+	return cssBorderATSC.getRight();
+    }
+
+    public final CssBorderBottomATSC getBorderBottomATSC() {
+	if (cssBorderATSC.getBottom().getWidth() == null) {
+	    cssBorderATSC.getBottom().width = getBorderBottomWidthATSC();
+	}
+	if (cssBorderATSC.getBottom().getStyle() == null) {
+	    cssBorderATSC.getBottom().style = getBorderBottomStyleATSC();
+	}
+	if (cssBorderATSC.getBottom().getColor() == null) {
+	    cssBorderATSC.getBottom().color = getBorderBottomColorATSC();
+	}
+	return cssBorderATSC.getBottom();
+    }
+
+    public final CssBorderLeftATSC getBorderLeftATSC() {
+	if (cssBorderATSC.getLeft().getWidth() == null) {
+	    cssBorderATSC.getLeft().width = getBorderLeftWidthATSC();
+	}
+	if (cssBorderATSC.getLeft().getStyle() == null) {
+	    cssBorderATSC.getLeft().style = getBorderLeftStyleATSC();
+	}
+	if (cssBorderATSC.getLeft().getColor() == null) {
+	    cssBorderATSC.getLeft().color = getBorderLeftColorATSC();
+	}
+	return cssBorderATSC.getLeft();
+    }
+
+    public final CssBorderATSC getBorderATSC() {
+	getBorderTopATSC();
+	getBorderRightATSC();
+	getBorderBottomATSC();
+	getBorderLeftATSC();
+	return cssBorderATSC;
+    }
+
+    public final CssBorderWidthATSC getBorderWidthATSC() {
+	// WARNING invalid fields in this property ....
+	return new CssBorderWidthATSC(getBorderTopWidthATSC(),
+				  getBorderBottomWidthATSC(),
+				  getBorderRightWidthATSC(),
+				  getBorderLeftWidthATSC());
+    }
+
+    public final CssBorderStyleATSC getBorderStyleATSC() {
+	// WARNING invalid fields in this property ....
+	return new CssBorderStyleATSC(getBorderTopStyleATSC(),
+				  getBorderBottomStyleATSC(),
+				  getBorderRightStyleATSC(),
+				  getBorderLeftStyleATSC());
+    }
+
+    public final CssBorderColorATSC getBorderColorATSC() {
+	// WARNING invalid fields in this property ....
+	return new CssBorderColorATSC(getBorderTopColorATSC(),
+				  getBorderBottomColorATSC(),
+				  getBorderRightColorATSC(),
+				  getBorderLeftColorATSC());
+    }
+
+
+
+    /**
+     * Print this style.
+     *
+     * @param printer The printer interface.
+     */
+    public void print(CssPrinterStyle printer) {
+	super.print(printer);
+	if (navindex != null) {
+	    navindex.print(printer);
+	}
+	if (navleft != null) {
+	    navleft.print(printer);
+	}
+	if (navup != null) {
+	    navup.print(printer);
+	}
+	if (navdown != null) {
+	    navdown.print(printer);
+	}
+	if (navright != null) {
+	    navright.print(printer);
+	}
+	if (unitsPerEmATSC != null) {
+	    unitsPerEmATSC.print(printer);
+	}
+	if (srcATSC != null) {
+	    srcATSC.print(printer);
+	}
+	if (panose1ATSC != null) {
+	    panose1ATSC.print(printer);
+	}
+	if (widthsATSC != null) {
+	    widthsATSC.print(printer);
+	}
+	if (bboxATSC != null) {
+	    bboxATSC.print(printer);
+	}
+	if (stemvATSC != null) {
+	    stemvATSC.print(printer);
+	}
+	if (stemhATSC != null) {
+	    stemhATSC.print(printer);
+	}
+	if (slopeATSC != null) {
+	    slopeATSC.print(printer);
+	}
+	if (ascentATSC != null) {
+	    ascentATSC.print(printer);
+	}
+	if (descentATSC != null) {
+	    descentATSC.print(printer);
+	}
+	if (capHeightATSC != null) {
+	    capHeightATSC.print(printer);
+	}
+	if (xHeightATSC != null) {
+	    xHeightATSC.print(printer);
+	}
+	if (baselineATSC != null) {
+	    baselineATSC.print(printer);
+	}
+	if (centerlineATSC != null) {
+	    centerlineATSC.print(printer);
+	}
+	if (mathlineATSC != null) {
+	    mathlineATSC.print(printer);
+	}
+	if (toplineATSC != null) {
+	    toplineATSC.print(printer);
+	}
+	if (definitionSrcATSC != null) {
+	    definitionSrcATSC.print(printer);
+	}
+	if (ATSCcolor != null) {
+	    ATSCcolor.print(printer);
+	}
+	if (dynamicRefresh != null) {
+		dynamicRefresh.print(printer);
+	}
+	cssBackgroundATSC.print(printer);
+	cssBorderATSC.print(printer);
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/AscentATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,130 @@
+//
+// $Id: AscentATSC.java,v 1.2 2005-09-14 15:14:18 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 org.w3c.css.properties.atsc;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class AscentATSC extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new AscentATSC
+     */
+    public AscentATSC() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new AscentATSC
+     *
+     * @param expression the unicode em
+     * @exception InvalidParamException values are incorrect
+     */
+    public AscentATSC(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	setByUser();
+
+	ac.getFrame().addWarning("atsc", val.toString());
+
+	if (val instanceof CssNumber) {
+	    value = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public AscentATSC(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "ascent";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	ATSCStyle style0 = (ATSCStyle) style;
+	if (style0.ascentATSC != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.ascentATSC = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ATSCStyle) style).getAscentATSC();
+	} else {
+	    return ((ATSCStyle) style).ascentATSC;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @@TODO
+	return false;
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/BaselineATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,130 @@
+//
+// $Id: BaselineATSC.java,v 1.2 2005-09-14 15:14:18 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 org.w3c.css.properties.atsc;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class BaselineATSC extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new BaselineATSC
+     */
+    public BaselineATSC() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new BaselineATSC
+     *
+     * @param expression the unicode em
+     * @exception InvalidParamException values are incorrect
+     */
+    public BaselineATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	setByUser();
+
+	ac.getFrame().addWarning("atsc", val.toString());
+
+	if (val instanceof CssNumber) {
+	    value = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public BaselineATSC(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "baseline";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	ATSCStyle style0 = (ATSCStyle) style;
+	if (style0.baselineATSC != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.baselineATSC = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ATSCStyle) style).getBaselineATSC();
+	} else {
+	    return ((ATSCStyle) style).baselineATSC;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @@TODO
+	return false;
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/BboxATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,198 @@
+//
+// $Id: BboxATSC.java,v 1.2 2005-09-14 15:14:18 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 org.w3c.css.properties.atsc;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class BboxATSC extends CssProperty {
+
+    CssValue[] value = new CssValue[4];
+
+    /**
+     * Create a new BboxATSC
+     */
+    public BboxATSC() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new BboxATSC
+     *
+     * @param expression the unicode em
+     * @exception InvalidParamException values are incorrect
+     */
+    public BboxATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 4) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	boolean manyValues = expression.getCount() > 1;
+
+	CssValue val;
+	char op;
+	int i = 0;
+	setByUser();
+
+	{
+	    val = expression.getValue();
+	    ac.getFrame().addWarning("atsc", val.toString());
+	}
+
+	val = expression.getValue();
+	op = expression.getOperator();
+	if(manyValues && val.equals(inherit)) {
+	    throw new InvalidParamException("unrecognize", null, null, ac);
+	}
+	if (val instanceof CssNumber) {
+	    value[i++] = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+	if (op != CssOperator.COMMA || expression.end()) {
+	    throw new InvalidParamException("few-value",
+					    getPropertyName(), ac);
+	}
+
+	val = expression.getValue();
+	op = expression.getOperator();
+	if(manyValues && val.equals(inherit)) {
+	    throw new InvalidParamException("unrecognize", null, null, ac);
+	}
+	if (val instanceof CssNumber) {
+	    value[i++] = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+	if (op != CssOperator.COMMA || expression.end()) {
+	    throw new InvalidParamException("few-value",
+					    getPropertyName(), ac);
+	}
+
+	val = expression.getValue();
+	op = expression.getOperator();
+	if(manyValues && val.equals(inherit)) {
+	    throw new InvalidParamException("unrecognize", null, null, ac);
+	}
+	if (val instanceof CssNumber) {
+	    value[i++] = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+	if (op != CssOperator.COMMA || expression.end()) {
+	    throw new InvalidParamException("few-value",
+					    getPropertyName(), ac);
+	}
+
+	val = expression.getValue();
+	op = expression.getOperator();
+	if(manyValues && val.equals(inherit)) {
+	    throw new InvalidParamException("unrecognize", null, null, ac);
+	}
+	if (val instanceof CssNumber) {
+	    value[i++] = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public BboxATSC(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value[0];
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	String ret = "";
+	for (int i = 0; i < 4; i++) {
+	    ret += ", " + value[i];
+	}
+	return ret.substring(2);
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "bbox";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	ATSCStyle style0 = (ATSCStyle) style;
+	if (style0.bboxATSC != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.bboxATSC = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ATSCStyle) style).getBboxATSC();
+	} else {
+	    return ((ATSCStyle) style).bboxATSC;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @@TODO
+	return false;
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/CapHeightATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,130 @@
+//
+// $Id: CapHeightATSC.java,v 1.2 2005-09-14 15:14:18 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 org.w3c.css.properties.atsc;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class CapHeightATSC extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new CapHeightATSC
+     */
+    public CapHeightATSC() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new CapHeightATSC
+     *
+     * @param expression the unicode em
+     * @exception InvalidParamException values are incorrect
+     */
+    public CapHeightATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() >1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	setByUser();
+
+	ac.getFrame().addWarning("atsc", val.toString());
+
+	if (val instanceof CssNumber) {
+	    value = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CapHeightATSC(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "cap-height";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	ATSCStyle style0 = (ATSCStyle) style;
+	if (style0.capHeightATSC != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.capHeightATSC = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ATSCStyle) style).getCapHeightATSC();
+	} else {
+	    return ((ATSCStyle) style).capHeightATSC;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @@TODO
+	return false;
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/CenterlineATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,130 @@
+//
+// $Id: CenterlineATSC.java,v 1.2 2005-09-14 15:14:18 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 org.w3c.css.properties.atsc;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class CenterlineATSC extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new CenterlineATSC
+     */
+    public CenterlineATSC() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new CenterlineATSC
+     *
+     * @param expression the unicode em
+     * @exception InvalidParamException values are incorrect
+     */
+    public CenterlineATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() >1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	setByUser();
+
+	ac.getFrame().addWarning("atsc", val.toString());
+
+	if (val instanceof CssNumber) {
+	    value = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CenterlineATSC(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "centerline";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	ATSCStyle style0 = (ATSCStyle) style;
+	if (style0.centerlineATSC != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.centerlineATSC = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ATSCStyle) style).getCenterlineATSC();
+	} else {
+	    return ((ATSCStyle) style).centerlineATSC;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @@TODO
+	return false;
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/CssBackgroundATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,399 @@
+//
+// $Id: CssBackgroundATSC.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.atsc;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssBackgroundAttachment;
+import org.w3c.css.properties.css1.CssBackgroundColor;
+import org.w3c.css.properties.css1.CssBackgroundConstants;
+import org.w3c.css.properties.css1.CssBackgroundImage;
+import org.w3c.css.properties.css1.CssBackgroundPosition;
+import org.w3c.css.properties.css1.CssBackgroundRepeat;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     <A NAME="background">5.3.7 &nbsp;&nbsp; 'background'</A>
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;background-color&gt; || &lt;background-image&gt; ||
+ *   &lt;background-repeat&gt; || &lt;background-attachment&gt; ||
+ *   &lt;background-position&gt;<BR>
+ *   <EM>Initial:</EM> not defined for shorthand properties<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> allowed on &lt;background-position&gt;<BR>
+ *   <P>
+ *   The 'background' property is a shorthand property for setting the individual
+ *   background properties (i.e., 'background-color', 'background-image',
+ *   'background-repeat', 'background-attachment' and 'background-position') at
+ *   the same place in the style sheet.
+ *   <P>
+ *   Possible values on the 'background' properties are the set of all possible
+ *   values on the individual properties.
+ *   <PRE>
+ *   BODY { background: red }
+ *   P { background: url(chess.png) gray 50% repeat fixed }
+ * </PRE>
+ *   <P> The 'background' property always sets all the individual background
+ *   properties.  In the first rule of the above example, only a value for
+ *   'background-color' has been given and the other individual properties are
+ *   set to their initial value. In the second rule, all individual properties
+ *   have been specified.
+ *
+ * @version $Revision: 1.3 $
+ * @see CssBackgroundColor
+ * @see CssBackgroundImage
+ * @see CssBackgroundRepeat
+ * @see CssBackgroundAttachment
+ * @see CssBackgroundPosition
+ */
+public class CssBackgroundATSC extends CssProperty
+        implements CssOperator, CssBackgroundConstants {
+
+    CssBackgroundColorATSC color;
+    CssBackgroundImageATSC image;
+    CssBackgroundRepeatATSC repeat;
+    CssBackgroundAttachmentATSC attachment;
+    CssBackgroundPositionATSC position;
+
+    boolean same;
+
+    /**
+     * Create a new CssBackgroundATSC
+     */
+    public CssBackgroundATSC() {
+    }
+
+    /**
+     * Set the value of the property
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssBackgroundATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	CssValue val = expression.getValue();
+	char op = SPACE;
+	boolean find = true;
+
+	// too many values
+	if(check && expression.getCount() > 6) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+
+	boolean manyValues = (expression.getCount() > 1);
+
+	while (find) {
+	    find = false;
+	    val = expression.getValue();
+	    op = expression.getOperator();
+
+	    if (val == null) {
+		break;
+	    }
+
+	    // if there are many values, we can't have inherit as one of them
+	    if(manyValues && val != null && val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", null, null, ac);
+	    }
+
+	    if (color == null) {
+		try {
+		    color = new CssBackgroundColorATSC(ac, expression);
+		    find = true;
+		} catch (InvalidParamException e) {
+		    // nothing to do, image will test this value
+		}
+	    }
+	    if (!find && image == null) {
+		try {
+		    image = new CssBackgroundImageATSC(ac, expression);
+		    find = true;
+		} catch (InvalidParamException e) {
+		    // nothing to do, repeat will test this value
+		}
+	    }
+	    if (!find && repeat == null) {
+		try {
+		    repeat = new CssBackgroundRepeatATSC(ac, expression);
+		    find = true;
+		} catch (InvalidParamException e) {
+		    // nothing to do, attachment will test this value
+		}
+	    }
+	    if (!find && attachment == null) {
+		try {
+		    attachment = new CssBackgroundAttachmentATSC(ac, expression);
+		    find = true;
+		} catch (InvalidParamException e) {
+		    // nothing to do, position will test this value
+		}
+	    }
+	    if (!find && position == null) {
+		position = new CssBackgroundPositionATSC(ac, expression);
+		find = true;
+	    }
+	    if(check && val != null && !find) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    if (op != SPACE) {
+		throw new InvalidParamException("operator",
+						((new Character(op)).toString()),
+						ac);
+	    }
+	}
+    }
+
+    public CssBackgroundATSC(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return color;
+    }
+
+    /**
+     * Returns the color
+     */
+    public final CssValue getColor() {
+	if (color == null) {
+	    return null;
+	} else {
+	    return color.getColor();
+	}
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "background";
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	String ret = "";
+	if(color != null) {
+	    ret += color;
+	}
+	if(image != null) {
+	    if(ret != null) {
+		ret += " ";
+	    }
+	    ret += image;
+	}
+	if(repeat != null) {
+	    if(ret != null) {
+		ret += " ";
+	    }
+	    ret += repeat;
+	}
+	if(attachment != null) {
+	    if(ret != null) {
+		ret += " ";
+	    }
+	    ret += attachment;
+	}
+	if(position != null) {
+	    if(ret != null) {
+		ret += " ";
+	    }
+	    ret += position;
+	}
+	return ret;
+    }
+
+    /**
+     * Set this property to be important.
+     * Overrides this method for a macro
+     */
+    public void setImportant() {
+	if(color != null) {
+	    color.setImportant();
+	}
+	if(image != null) {
+	    image.setImportant();
+	}
+	if(repeat != null) {
+	    repeat.setImportant();
+	}
+	if(attachment != null) {
+	    attachment.setImportant();
+	}
+	if(position != null) {
+	    position.setImportant();
+	}
+    }
+
+    /**
+     * Returns true if this property is important.
+     * Overrides this method for a macro
+     */
+    public boolean getImportant() {
+	return ((color == null || color.getImportant()) &&
+		(image == null || image.getImportant()) &&
+		(repeat == null || repeat.getImportant()) &&
+		(attachment == null || attachment.getImportant()) &&
+		(position == null || position.getImportant()));
+    }
+
+    /**
+     * Print this property.
+     *
+     * @param printer The printer.
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	if ((color != null && image != null &&
+	     repeat != null && attachment !=null &&
+	     position != null) &&
+	    (getImportant() ||
+	     (!image.getImportant() &&
+	      !color.getImportant() &&
+	      !repeat.getImportant() &&
+	      !attachment.getImportant() &&
+	      !position.getImportant()))) {
+	    if (color.isByUser() || image.isByUser() || repeat.isByUser()
+		|| attachment.isByUser() || position.isByUser()) {
+		printer.print(this);
+	    }
+	} else {
+	    if (color != null)
+		color.print(printer);
+	    if (image != null)
+		image.print(printer);
+	    if (repeat != null)
+		repeat.print(printer);
+	    if (attachment != null)
+		attachment.print(printer);
+	    if (position != null)
+		position.print(printer);
+	}
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors selector) {
+	super.setSelectors(selector);
+	if (color != null) {
+	    color.setSelectors(selector);
+	}
+	if (image != null) {
+	    image.setSelectors(selector);
+	}
+	if (repeat != null) {
+	    repeat.setSelectors(selector);
+	}
+	if (attachment != null) {
+	    attachment.setSelectors(selector);
+	}
+	if (position != null) {
+	    position.setSelectors(selector);
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	((ATSCStyle) style).cssBackgroundATSC.same = same;
+	if (isByUser())
+	    ((ATSCStyle) style).cssBackgroundATSC.setByUser();
+
+	if(color != null) {
+	    color.addToStyle(ac, style);
+	}
+	if(image != null) {
+	    image.addToStyle(ac, style);
+	}
+	if(repeat != null) {
+	    repeat.addToStyle(ac, style);
+	}
+	if(attachment != null) {
+	    attachment.addToStyle(ac, style);
+	}
+	if(position != null) {
+	    position.addToStyle(ac, style);
+	}
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ATSCStyle) style).getBackgroundATSC();
+	} else {
+	    return ((ATSCStyle) style).cssBackgroundATSC;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return false; // FIXME
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	super.setInfo(line, source);
+	if(color != null) {
+	    color.setInfo(line, source);
+	}
+	if(image != null) {
+	    image.setInfo(line, source);
+	}
+	if(repeat != null) {
+	    repeat.setInfo(line, source);
+	}
+	if(attachment != null) {
+	    attachment.setInfo(line, source);
+	}
+	if(position != null) {
+	    position.setInfo(line, source);
+	}
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/CssBackgroundAttachmentATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,170 @@
+//
+// $Id: CssBackgroundAttachmentATSC.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.atsc;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssBackgroundConstants;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'background-attachment'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> scroll | fixed<BR>
+ *   <EM>Initial:</EM> scroll<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   If a background image is specified, the value of 'background-attachment'
+ *   determines if it is fixed with regard to the canvas or if it scrolls along
+ *   with the content.
+ *   <PRE>
+ *   BODY {
+ *     background: red url(pendant.gif);
+ *     background-repeat: repeat-y;
+ *     background-attachment: fixed;
+ *   }
+ * </PRE>
+ * @version $Revision: 1.3 $
+ */
+public class CssBackgroundAttachmentATSC extends CssProperty
+    implements CssBackgroundConstants {
+
+    int attachment;
+
+    private static int[] hash_values;
+
+    /**
+     * Create a new CssBackgroundAttachmentATSC
+     */
+    public CssBackgroundAttachmentATSC() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new CssBackgroundAttachmentATSC
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBackgroundAttachmentATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+
+	CssValue val = expression.getValue();
+
+	if (val instanceof CssIdent) {
+	    int hash = val.hashCode();
+	    for (int i =0; i < ATTACHMENT.length; i++)
+		if (hash_values[i] == hash) {
+		    attachment = i;
+		    expression.next();
+		    return;
+		}
+	}
+
+	throw new InvalidParamException("value", expression.getValue(),
+					getPropertyName(), ac);
+    }
+
+    public CssBackgroundAttachmentATSC(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return ATTACHMENT[attachment];
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return attachment == 2;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return ATTACHMENT[attachment];
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "background-attachment";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBackgroundATSC cssBackground = ((ATSCStyle) style).cssBackgroundATSC;
+	if (cssBackground.attachment != null)
+	    style.addRedefinitionWarning(ac, this);
+	cssBackground.attachment = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ATSCStyle) style).getBackgroundAttachmentATSC();
+	} else {
+	    return ((ATSCStyle) style).cssBackgroundATSC.attachment;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBackgroundAttachmentATSC &&
+		attachment == ((CssBackgroundAttachmentATSC) property).attachment);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return attachment == 0;
+    }
+
+    static {
+	hash_values = new int[ATTACHMENT.length];
+	for (int i = 0; i < ATTACHMENT.length; i++)
+	    hash_values[i] = ATTACHMENT[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/CssBackgroundColorATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,171 @@
+//
+// $Id: CssBackgroundColorATSC.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.atsc;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'background-color'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;color&gt; | transparent<BR>
+ *   <EM>Initial:</EM> transparent<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   This property sets the background color of an element.
+ *   <PRE>
+ *   H1 { background-color: #F00 }
+ *   </PRE>
+ * @version $Revision: 1.3 $
+ */
+public class CssBackgroundColorATSC extends CssProperty {
+
+    CssValue color;
+
+    static CssIdent transparent = new CssIdent("transparent");
+
+    /**
+     * Create a new CssBackgroundColorATSC
+     */
+    public CssBackgroundColorATSC() {
+	color = transparent;
+    }
+
+    /**
+     * Create a new CssBackgroundColorATSC
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBackgroundColorATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val instanceof org.w3c.css.values.ATSCColor ||
+		val instanceof org.w3c.css.values.CssColor) {
+	    color = val;
+	    expression.next();
+	} else if (val instanceof CssIdent) {
+	    if (val.equals(transparent)) {
+		color = transparent;
+		expression.next();
+	    } else if (val.equals(inherit)) {
+		color = inherit;
+		expression.next();
+	    } else {
+		color = new org.w3c.css.values.ATSCColor(ac, (String) val.get());
+		expression.next();
+	    }
+	} else {
+	    throw new InvalidParamException("value", val.toString(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssBackgroundColorATSC(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return color;
+    }
+
+    /**
+     * Returns the color
+     */
+    public final CssValue getColor() {
+	return color;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return color.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return color.toString();
+    }
+
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBackgroundATSC cssBackground = ((ATSCStyle) style).cssBackgroundATSC;
+	if (cssBackground.color != null)
+	    style.addRedefinitionWarning(ac, this);
+	cssBackground.color = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ATSCStyle) style).getBackgroundColorATSC();
+	} else {
+	    return ((ATSCStyle) style).cssBackgroundATSC.color;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBackgroundColorATSC &&
+		color.equals( ((CssBackgroundColorATSC) property).color));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "background-color";
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return color == transparent;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/CssBackgroundImageATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,160 @@
+//
+// $Id: CssBackgroundImageATSC.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.atsc;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssURL;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'background-image'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;url&gt; | none<BR>
+ *   <EM>Initial:</EM> none<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P> This property sets the background image of an element. When setting a
+ *   background image, one should also set a background color that will be used
+ *   when the image is unavailable. When the image is available, it is overlaid
+ *   on top of the background color.
+ *   <PRE>
+ *   BODY { background-image: url(marble.gif) }
+ *   P { background-image: none }
+ *   </PRE>
+ * @version $Revision: 1.3 $ */
+public class CssBackgroundImageATSC extends CssProperty {
+
+    CssValue url;
+
+    private static CssIdent none = new CssIdent("none");
+
+    /**
+     * Create a new CssBackgroundImageATSC
+     */
+    public CssBackgroundImageATSC() {
+	url = none;
+    }
+
+    /**
+     * Creates a new CssBackgroundImageATSC
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBackgroundImageATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+
+	CssValue val = expression.getValue();
+	if (val instanceof CssURL) {
+	    url = val;
+	    expression.next();
+	} else if (val.equals(inherit)) {
+	    url = inherit;
+	    expression.next();
+	} else if (val.equals(none)) {
+	    url = none;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssBackgroundImageATSC(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return url;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return url.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return url.toString();
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "background-image";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBackgroundATSC cssBackground = ((ATSCStyle) style).cssBackgroundATSC;
+	if (cssBackground.image != null)
+	    style.addRedefinitionWarning(ac, this);
+	cssBackground.image = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ATSCStyle) style).getBackgroundImageATSC();
+	} else {
+	    return ((ATSCStyle) style).cssBackgroundATSC.image;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBackgroundImageATSC &&
+		url.equals(((CssBackgroundImageATSC) property).url));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return url == none;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/CssBackgroundPositionATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,402 @@
+//
+// $Id: CssBackgroundPositionATSC.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.atsc;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssBackgroundAttachment;
+import org.w3c.css.properties.css1.CssBackgroundConstants;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssLength;
+import org.w3c.css.values.CssNumber;
+//import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'background-position'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> [&lt;percentage&gt; | &lt;length&gt;]{1,2} | [top | center
+ *   | bottom] || [left | center | right]<BR>
+ *   <EM>Initial:</EM> 0% 0%<BR>
+ *   <EM>Applies to:</EM> block-level and replaced elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> refer to the size of the element itself<BR>
+ *   <P> If a background image has been specified, the value of
+ *   'background-position' specifies its initial position.
+ *   <P> With a value pair of '0% 0%', the upper left corner of the image is
+ *   placed in the upper left corner of the box that surrounds the content of
+ *   the element (i.e., not the box that surrounds the padding, border or
+ *   margin). A value pair of '100% 100%' places the lower right corner of the
+ *   image in the lower right corner of the element. With a value pair of '14%
+ *   84%', the point 14% across and 84% down the image is to be placed at the
+ *   point 14% across and 84% down the element.
+ *   <P> With a value pair of '2cm 2cm', the upper left corner of the image is
+ *   placed 2cm to the right and 2cm below the upper left corner of the element.
+ *   <P> If only one percentage or length value is given, it sets the horizontal
+ *   position only, the vertical position will be 50%. If two values are given,
+ *   the horizontal position comes first. Combinations of length and percentage
+ *   values are allowed, e.g. '50% 2cm'. Negative positions are allowed.
+ *   <P> One can also use keyword values to indicate the position of the
+ *   background image. Keywords cannot be combined with percentage values, or
+ *   length values.  The possible combinations of keywords and their
+ *   interpretations are as follows:
+
+ *   <UL>
+ *     <LI>
+ *       'top left' and 'left top' both mean the same as '0% 0%'.
+ *     <LI>
+ *       'top', 'top center' and 'center top' mean the same as '50% 0%'.
+ *     <LI>
+ *       'right top' and 'top right' mean the same as '100% 0%'.
+ *     <LI>
+ *       'left', 'left center' and 'center left' mean the same as '0% 50%'.
+ *     <LI>
+ *       'center' and 'center center' mean the same as '50% 50%'.
+ *     <LI>
+ *       'right', 'right center' and 'center right' mean the same as '100% 50%'.
+ *     <LI>
+ *       'bottom left' and 'left bottom' mean the same as '0% 100%'.
+ *     <LI>
+ *       'bottom', 'bottom center' and 'center bottom' mean the same as '50% 100%'.
+ *     <LI>
+ *       'bottom right' and 'right bottom' mean the same as '100% 100%'.
+ *   </UL>
+ *   <P>
+ *   examples:
+ *   <PRE>
+ *   BODY { background: url(banner.jpeg) right top }    / * 100%   0% * /
+ *   BODY { background: url(banner.jpeg) top center }   / *  50%   0% * /
+ *   BODY { background: url(banner.jpeg) center }       / *  50%  50% * /
+ *   BODY { background: url(banner.jpeg) bottom }       / *  50% 100% * /
+ *  </PRE>
+ *   <P>
+ *   If the background image is fixed with regard to the canvas (see the
+ *   'background-attachment' property above), the image is placed relative to
+ *   the canvas instead of the element. E.g.:
+ *   <PRE>
+ *   BODY {
+ *     background-image: url(logo.png);
+ *     background-attachment: fixed;
+ *     background-position: 100% 100%;
+ *   }
+ *  </PRE>
+ *   <P>
+ *   In the example above, the image is placed in the lower right corner of the
+ *   canvas.
+ * @version $Revision: 1.3 $
+ * @see CssBackgroundAttachment
+ */
+public class CssBackgroundPositionATSC extends CssProperty
+        implements CssBackgroundConstants, CssOperator {
+
+    CssValue first;
+    CssValue second;
+
+    /**
+     * Create a new CssBackgroundPositionATSC
+     */
+    public CssBackgroundPositionATSC() {
+	first = DefaultValue0;
+	second = DefaultValue0;
+    }
+
+    /**
+     * Creates a new CssBackgroundPositionATSC
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBackgroundPositionATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	if(check && expression.getCount() > 2) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	CssValue val = expression.getValue();
+	char op  = expression.getOperator();
+
+	if (op != SPACE)
+	    throw new  InvalidParamException("operator",
+					     ((new Character(op)).toString()),
+					     ac);
+
+	if (val.equals(inherit)) {
+	    if(expression.getCount() > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    first = inherit;
+	    second = inherit;
+	    expression.next();
+	    return;
+	}
+
+	CssValue next = expression.getNextValue();
+
+	if(val instanceof CssIdent) {
+	    int index1 = IndexOfIdent((String) val.get());
+	    // two keywords
+	    if(next instanceof CssIdent) {
+		int index2 = IndexOfIdent((String) next.get());
+		// one is vertical, the other is vertical
+		// or the two are 'center'
+		if((isHorizontal(index1) && isVertical(index2)) ||
+			(isHorizontal(index2) && isVertical(index1))) {
+		    first = val;
+		    second = next;
+		}
+		// both are horizontal or vertical but not 'center'
+		else if(check){
+		    throw new InvalidParamException("incompatible",
+			    val, next, ac);
+		}
+		else {
+		    first = val;
+		}
+	    }
+	    // a keyword and a percentage/length
+	    else if(next instanceof CssLength || next instanceof CssPercentage
+		    || next instanceof CssNumber) {
+		if(next instanceof CssNumber) {
+		    next = ((CssNumber) next).getLength();
+		}
+		if(isHorizontal(index1)) {
+		    first = val;
+		    second = next;
+		}
+		// if the keyword is the first value, it can only be an
+		// horizontal one
+		else {
+		    throw new InvalidParamException("incompatible",
+			    val, next, ac);
+		}
+	    }
+	    // only one value
+	    else if(next == null) {
+		first = val;
+	    }
+	    // the second value is invalid
+	    else if(check) {
+		throw new InvalidParamException("value", next,
+			getPropertyName(), ac);
+	    }
+	    else {
+		first = val;
+	    }
+	}
+	else if(val instanceof CssLength || val instanceof CssPercentage ||
+		val instanceof CssNumber) {
+	    if(val instanceof CssNumber) {
+		val = ((CssNumber) val).getLength();
+	    }
+	    // a percentage/length and an keyword
+	    if(next instanceof CssIdent) {
+		int index = IndexOfIdent((String) next.get());
+		// the keyword must be a vertical one
+		if(isVertical(index)) {
+		    first = val;
+		    second = next;
+		}
+		else if(check) {
+		    throw new InvalidParamException("incompatible",
+			    val, next, ac);
+		}
+		else {
+		    first = val;
+		}
+	    }
+	    else if(next instanceof CssLength || next instanceof CssPercentage
+		    || next instanceof CssNumber) {
+		if(next instanceof CssNumber) {
+		    next = ((CssNumber) next).getLength();
+		}
+		first = val;
+		second = next;
+	    }
+	    else if(next == null || !check) {
+		first = val;
+	    }
+	    else {
+		throw new InvalidParamException("incompatible", val, next, ac);
+	    }
+	}
+	else if(check){
+	    throw new InvalidParamException("value", expression.getValue(),
+		    getPropertyName(), ac);
+	}
+
+	// we only move the cursor if we found valid values
+	if(first != null) {
+	    expression.next();
+	}
+	if(second != null) {
+	    expression.next();
+	}
+    }
+
+    public CssBackgroundPositionATSC(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    private boolean isHorizontal(int index) {
+	return index == POSITION_LEFT || index == POSITION_RIGHT ||
+		index == POSITION_CENTER;
+    }
+
+    private boolean isVertical(int index) {
+	return index == POSITION_TOP || index == POSITION_BOTTOM ||
+	index == POSITION_CENTER;
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return first;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "background-position";
+    }
+
+    /**
+     * Returns the horizontal value of the position
+     */
+    public CssValue getHorizontalPosition() {
+	return first;
+    }
+
+    /**
+     * Returns the vertical value of the position
+     */
+    public CssValue getVerticalPosition() {
+	return second;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return first == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (first == inherit) {
+	    return inherit.toString();
+	} else {
+	    String ret = "";
+	    if (first != null) {
+		ret += first;
+	    }
+	    if (second != null) {
+		if (!ret.equals("")) {
+		    ret += " ";
+		}
+		ret += second;
+	    }
+
+	    return ret;
+	}
+    }
+/*
+    private void getPercentageFromIdent(int first, int second) {
+	this.first = DefaultValue50;
+	this.second = DefaultValue50;
+	if (first == POSITION_LEFT || second == POSITION_LEFT)
+	    this.first = DefaultValue0;
+	if (first == POSITION_RIGHT || second == POSITION_RIGHT)
+	    this.first = DefaultValue100;
+	if (first == POSITION_TOP || second == POSITION_TOP)
+	    this.second = DefaultValue0;
+	if (first == POSITION_BOTTOM || second == POSITION_BOTTOM)
+	    this.second = DefaultValue100;
+    }
+*/
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBackgroundATSC cssBackground = ((ATSCStyle) style).cssBackgroundATSC;
+	if (cssBackground.position != null)
+	    style.addRedefinitionWarning(ac, this);
+	cssBackground.position = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ATSCStyle) style).getBackgroundPositionATSC();
+	} else {
+	    return ((ATSCStyle) style).cssBackgroundATSC.position;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBackgroundPositionATSC &&
+		first.equals(((CssBackgroundPositionATSC) property).first)
+		&& second.equals(((CssBackgroundPositionATSC) property).second));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return first.equals(DefaultValue0) && second.equals(DefaultValue0);
+    }
+
+    private int IndexOfIdent(String ident) throws InvalidParamException {
+	int hash = ident.hashCode();
+	for (int i = 0; i < POSITION.length; i++)
+	    if (hash_values[i] == hash)
+		return i;
+
+	return -1;
+    }
+
+    private static int[] hash_values;
+
+//    private static int INVALID = -1;
+    private static CssPercentage DefaultValue0 = new CssPercentage(0);
+//    private static CssPercentage DefaultValue50 = new CssPercentage(50);
+//    private static CssPercentage DefaultValue100 = new CssPercentage(100);
+
+    static {
+	hash_values = new int[POSITION.length];
+	for (int i = 0; i < POSITION.length; i++)
+	    hash_values[i] = POSITION[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/CssBackgroundRepeatATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,177 @@
+//
+// $Id: CssBackgroundRepeatATSC.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.atsc;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssBackgroundConstants;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *   <H4>
+ *     <A NAME="background-repeat">5.3.4 &nbsp;&nbsp; 'background-repeat'</A>
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> repeat | repeat-x | repeat-y | no-repeat<BR>
+ *   <EM>Initial:</EM> repeat<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   If a background image is specified, the value of 'background-repeat' determines
+ *   how/if the image is repeated.
+ *   <P>
+ *   A value of 'repeat' means that the image is repeated both horizontally and
+ *   vertically. The 'repeat-x' ('repeat-y') value makes the image repeat horizontally
+ *   (vertically), to create a single band of images from one side to the other.
+ *   With a value of 'no-repeat', the image is not repeated.
+ *   <PRE>
+ *   BODY {
+ *     background: red url(pendant.gif);
+ *     background-repeat: repeat-y;
+ *   }
+ *  </PRE>
+ *   <P>
+ *   In the example above, the image will only be repeated vertically.
+ * @version $Revision: 1.3 $
+ */
+public class CssBackgroundRepeatATSC extends CssProperty implements CssBackgroundConstants {
+
+    int repeat;
+
+    private static int[] hash_values;
+
+    /**
+     * Create a new CssBackgroundRepeatATSC
+     */
+    public CssBackgroundRepeatATSC() {
+	repeat = 0;
+    }
+
+    /**
+     * Set the value of the property
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssBackgroundRepeatATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	setByUser();
+
+	if (val instanceof CssIdent) {
+	    int hash = val.hashCode();
+	    for (int i =0; i < REPEAT.length; i++) {
+		if (hash_values[i] == hash) {
+		    repeat = i;
+		    expression.next();
+		    return;
+		}
+	    }
+	}
+
+
+	throw new InvalidParamException("value", expression.getValue(),
+					getPropertyName(), ac);
+    }
+
+    public CssBackgroundRepeatATSC(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return REPEAT[repeat];
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return repeat == 4;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return REPEAT[repeat];
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "background-repeat";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBackgroundATSC cssBackground = ((ATSCStyle) style).cssBackgroundATSC;
+	if (cssBackground.repeat != null)
+	    style.addRedefinitionWarning(ac, this);
+	cssBackground.repeat = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ATSCStyle) style).getBackgroundRepeatATSC();
+	} else {
+	    return ((ATSCStyle) style).cssBackgroundATSC.repeat;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBackgroundRepeatATSC &&
+		repeat == ((CssBackgroundRepeatATSC) property).repeat);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return repeat == 0;
+    }
+
+    static {
+	hash_values = new int[REPEAT.length];
+	for (int i = 0; i < REPEAT.length; i++)
+	    hash_values[i] = REPEAT[i].hashCode();
+    }
+}
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/CssBorderATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,363 @@
+//
+// $Id: CssBorderATSC.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.atsc;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderATSC extends CssProperty {
+
+    CssBorderTopATSC top;
+    CssBorderRightATSC right;
+    CssBorderBottomATSC bottom;
+    CssBorderLeftATSC left;
+
+    /**
+     * Create a new CssBorderFaceATSC
+     */
+    public CssBorderATSC() {
+	top = new CssBorderTopATSC();
+	right = new CssBorderRightATSC();
+	bottom = new CssBorderBottomATSC();
+	left = new CssBorderLeftATSC();
+    }
+
+    /**
+     * Create a new CssBorderFaceATSC
+     *
+     * @param value The value for this property
+     * @exception InvalidParamException The value is incorrect
+     */
+    public CssBorderATSC(ApplContext ac, CssExpression value, boolean check)
+    	throws InvalidParamException {
+
+	if(check && value.getCount() > 3) {
+	     throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = value.getValue();
+
+	setByUser();
+
+	top = new CssBorderTopATSC(ac, value);
+
+	if (val == value.getValue()) {
+	    throw new InvalidParamException("value",
+					    value.getValue(),
+					    getPropertyName(), ac);
+	}
+	right = new CssBorderRightATSC();
+	bottom = new CssBorderBottomATSC();
+	left = new CssBorderLeftATSC();
+
+	CssBorderTopWidthATSC w = top.width;
+	CssBorderTopStyleATSC s = top.style;
+	CssBorderTopColorATSC c = top.color;
+
+	if(w != null) {
+	    right.width  =
+		new CssBorderRightWidthATSC((CssBorderFaceWidthATSC) w.get());
+	    left.width =
+		new CssBorderLeftWidthATSC((CssBorderFaceWidthATSC) w.get());
+	    bottom.width =
+		new CssBorderBottomWidthATSC((CssBorderFaceWidthATSC) w.get());
+	}
+	if(s != null) {
+	    right.style =
+		new CssBorderRightStyleATSC((CssBorderFaceStyleATSC) s.get());
+	    left.style =
+		new CssBorderLeftStyleATSC((CssBorderFaceStyleATSC) s.get());
+	    bottom.style =
+		new CssBorderBottomStyleATSC((CssBorderFaceStyleATSC) s.get());
+	}
+	if(c != null) {
+	    right.color =
+		new CssBorderRightColorATSC((CssBorderFaceColorATSC) c.get());
+	    left.color =
+		new CssBorderLeftColorATSC((CssBorderFaceColorATSC) c.get());
+	    bottom.color =
+		new CssBorderBottomColorATSC((CssBorderFaceColorATSC) c.get());
+	}
+    }
+
+    public CssBorderATSC(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return top.get();
+    }
+
+    /**
+     * Returns the top property
+     */
+    public CssBorderTopATSC getTop() {
+	return top;
+    }
+
+    /**
+     * Returns the right property
+     */
+    public CssBorderRightATSC getRight() {
+	return right;
+    }
+
+    /**
+     * Returns the bottom property
+     */
+    public CssBorderBottomATSC getBottom() {
+	return bottom;
+    }
+
+    /**
+     * Returns the left property
+     */
+    public CssBorderLeftATSC getLeft() {
+	return left;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if(top != null) {
+	    return top.toString();
+	}
+	return "";
+    }
+
+    public boolean equals(CssProperty property) {
+	return false; // FIXME
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border";
+    }
+
+    /**
+     * Set this property to be important.
+     * Overrides this method for a macro
+     */
+    public void setImportant() {
+	if(top != null) {
+	    top.setImportant();
+	}
+	if(right != null) {
+	    right.setImportant();
+	}
+	if(left != null) {
+	    left.setImportant();
+	}
+	if(bottom != null) {
+	    bottom.setImportant();
+	}
+    }
+
+    /**
+     * Returns true if this property is important.
+     * Overrides this method for a macro
+     */
+    public boolean getImportant() {
+	return (top.getImportant() &&
+		right.getImportant() &&
+		left.getImportant() &&
+		bottom.getImportant());
+    }
+
+    /**
+     * Print this property.
+     *
+     * @param printer The printer.
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	int printMacro = 0;
+
+	if ((top.width != null && bottom.width != null &&
+	     right.width != null && left.width != null) &&
+	    ((top.width.getImportant() && bottom.width.getImportant() &&
+	      right.width.getImportant() && left.width.getImportant()) ||
+	     (!top.width.getImportant() && !bottom.width.getImportant() &&
+	      !right.width.getImportant() && !left.width.getImportant()))) {
+	    CssBorderWidthATSC width = new CssBorderWidthATSC(top.width, bottom.width,
+						      right.width, left.width);
+	    if (top.getImportant()) {
+		width.setImportant();
+	    }
+	    printMacro = 1;
+	    width.print(printer);
+	}
+	if ((top.style != null && bottom.style != null &&
+	     right.style != null && left.style != null) &&
+	    ((top.style.getImportant() && bottom.style.getImportant() &&
+	      right.style.getImportant() && left.style.getImportant()) ||
+	     (!top.style.getImportant() && !bottom.style.getImportant() &&
+	      !right.style.getImportant() && !left.style.getImportant()))) {
+	    CssBorderStyleATSC style = new CssBorderStyleATSC(top.style, bottom.style,
+						      right.style, left.style);
+	    if (top.getImportant()) {
+		style.setImportant();
+	    }
+	    printMacro |= 2;
+	    style.print(printer);
+	}
+	if ((top.color != null && bottom.color != null &&
+	     right.color != null && left.color != null) &&
+	    ((top.color.getImportant() && bottom.color.getImportant() &&
+	      right.color.getImportant() && left.color.getImportant()) ||
+	     (!top.color.getImportant() && !bottom.color.getImportant() &&
+	      !right.color.getImportant() && !left.color.getImportant()))) {
+	    CssBorderColorATSC color = new CssBorderColorATSC(top.color, bottom.color,
+						      right.color, left.color);
+	    if (top.getImportant()) {
+		color.setImportant();
+	    }
+	    printMacro |= 4;
+	    color.print(printer);
+	}
+
+	if (printMacro == 0) {
+	    top.print(printer);
+	    right.print(printer);
+	    bottom.print(printer);
+	    left.print(printer);
+	} else {
+	    if ((printMacro & 1) == 0) {
+		if (top.width != null) top.width.print(printer);
+		if (right.width != null) right.width.print(printer);
+		if (bottom.width != null) bottom.width.print(printer);
+		if (left.width != null) left.width.print(printer);
+	    }
+	    if ((printMacro & 2) == 0) {
+		if (top.style != null) top.style.print(printer);
+		if (right.style != null) right.style.print(printer);
+		if (bottom.style != null) bottom.style.print(printer);
+		if (left.style != null) left.style.print(printer);
+	    }
+	    if ((printMacro & 4) == 0) {
+		if (top.color != null) top.color.print(printer);
+		if (right.color != null) right.color.print(printer);
+		if (bottom.color != null) bottom.color.print(printer);
+		if (left.color != null) left.color.print(printer);
+	    }
+	}
+
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors selector) {
+	super.setSelectors(selector);
+	if (top != null) {
+	    top.setSelectors(selector);
+	}
+	if (right != null) {
+	    right.setSelectors(selector);
+	}
+	if (bottom != null) {
+	    bottom.setSelectors(selector);
+	}
+	if (left != null) {
+	    left.setSelectors(selector);
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if(top != null) {
+	    top.addToStyle(ac, style);
+	}
+	if(right != null) {
+	    right.addToStyle(ac, style);
+	}
+	if(left != null) {
+	    left.addToStyle(ac, style);
+	}
+	if(bottom != null) {
+	    bottom.addToStyle(ac, style);
+	}
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ATSCStyle) style).getBorderATSC();
+	} else {
+	    return ((ATSCStyle) style).cssBorderATSC;
+	}
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	super.setInfo(line, source);
+	if(top != null) {
+	    top.setInfo(line, source);
+	}
+	if(right != null) {
+	    right.setInfo(line, source);
+	}
+	if(left != null) {
+	    left.setInfo(line, source);
+	}
+	if(bottom != null) {
+	    bottom.setInfo(line, source);
+	}
+    }
+
+    void check() {
+	if(top != null) {
+	    top.check();
+	}
+	if(bottom != null) {
+	    bottom.check();
+	}
+	if(right != null) {
+	    right.check();
+	}
+	if(left != null) {
+	    left.check();
+	}
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/CssBorderBottomATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,346 @@
+//
+// $Id: CssBorderBottomATSC.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.atsc;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'border-bottom'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;border-bottom-width&gt; || &lt;border-style&gt; ||
+ *   &lt;color&gt;<BR>
+ *   <EM>Initial:</EM> not defined for shorthand properties<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   This is a shorthand property for setting the width, style and color of an
+ *   element's bottom border.
+ *   <PRE>
+ *   H1 { border-bottom: thick solid red }
+ * </PRE>
+ *   <P>
+ *   The above rule will set the width, style and color of the border below the
+ *   H1 element. Omitted values will be set to their initial values:
+ *   <PRE>
+ *   H1 { border-bottom: thick solid }
+ * </PRE>
+ *   <P>
+ *   Since the color value is omitted in the example above, the border color will
+ *   be the same as the 'color' value of the element itself.
+ *   <P>
+ *   Note that while the 'border-style' property accepts up to four values, this
+ *   property only accepts one style value.
+ *
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderBottomATSC extends CssProperty implements CssOperator {
+
+    CssBorderBottomWidthATSC width;
+    CssBorderBottomStyleATSC style;
+    CssBorderBottomColorATSC color;
+
+    /**
+     * Create a new CssBorderFaceATSC
+     */
+    public CssBorderBottomATSC() {
+    }
+
+    /**
+     * Create a new CssBorderFace
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssBorderBottomATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	CssValue val = null;
+	char op = SPACE;
+	boolean find = true;
+
+	if(check && expression.getCount() > 3) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	boolean manyValues = (expression.getCount() > 1);
+
+	setByUser();
+
+	while (find) {
+	    find = false;
+	    val = expression.getValue();
+	    op = expression.getOperator();
+	    if (val == null)
+		break;
+
+	    // if there are many values, we can't have inherit as one of them
+	    if(manyValues && val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", null, null, ac);
+	    }
+
+	    if (op != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(op)).toString()),
+						ac);
+	    if (width == null) {
+		try {
+		    width = new CssBorderBottomWidthATSC(ac, expression);
+		    find = true;
+		} catch(InvalidParamException e){
+		    // nothing to do, style will test this value
+		}
+	    }
+	    if (!find && style == null) {
+		try {
+		    style = new CssBorderBottomStyleATSC(ac, expression);
+		    find = true;
+		} catch(InvalidParamException e){
+		    // nothing to do, color will test this value
+		}
+	    }
+	    if (!find && color == null) {
+		// throws an exception if the value is not valid
+		color = new CssBorderBottomColorATSC(ac, expression);
+		find = true;
+	    }
+	}
+    }
+
+    public CssBorderBottomATSC(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return width;
+    }
+
+    /**
+     * Returns the color property
+     */
+    public CssValue getColor() {
+	if (color != null) {
+	    return color.getColor();
+	} else {
+	    return null;
+	}
+    }
+
+    /**
+     * Returns the width property
+     */
+    public CssValue getWidth() {
+	if (width != null) {
+	    return width.getValue();
+	} else {
+	    return null;
+	}
+    }
+
+    /**
+     * Returns the style property
+     */
+    public String getStyle() {
+	if (style != null) {
+	    return style.getStyle();
+	} else {
+	    return null;
+	}
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	String ret = "";
+	if(width != null) {
+	    ret += width;
+	}
+	if(style != null) {
+	    if(!ret.equals("")) {
+		ret += " ";
+	    }
+	    ret += style;
+	}
+	if(color != null) {
+	    if(!ret.equals("")) {
+		ret += " ";
+	    }
+	    ret += color;
+	}
+	return ret;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-bottom";
+    }
+
+    /**
+     * Set this property to be important.
+     * Overrides this method for a macro
+     */
+    public void setImportant() {
+	if(width != null) {
+	    width.setImportant();
+	}
+	if(style != null) {
+	    style.setImportant();
+	}
+	if(color != null) {
+	    color.setImportant();
+	}
+    }
+
+    /**
+     * Returns true if this property is important.
+     * Overrides this method for a macro
+     */
+    public boolean getImportant() {
+	return ((width == null || width.getImportant()) &&
+		(style == null || style.getImportant()) &&
+		(color == null || color.getImportant()));
+    }
+
+    /**
+     * Print this property.
+     *
+     * @param printer The printer.
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	if ((width != null && style != null &&
+	     color != null) &&
+	    (getImportant() ||
+	     (!width.getImportant() &&
+	      !style.getImportant() &&
+	      !color.getImportant()))) {
+	    printer.print(this);
+	} else {
+	    if (width != null)
+		width.print(printer);
+	    if (style != null)
+		style.print(printer);
+	    if (color != null)
+		color.print(printer);
+	}
+
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors selector) {
+	super.setSelectors(selector);
+	if (width != null) {
+	    width.setSelectors(selector);
+	}
+	if (style != null) {
+	    style.setSelectors(selector);
+	}
+	if (color != null) {
+	    color.setSelectors(selector);
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if(width != null) {
+	    width.addToStyle(ac, style);
+	}
+	if(this.style != null) {
+	    this.style.addToStyle(ac, style);
+	}
+	if(color != null) {
+	    color.addToStyle(ac, style);
+	}
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ATSCStyle) style).getBorderRightATSC();
+	} else {
+	    return ((ATSCStyle) style).cssBorderATSC.getRight();
+	}
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	super.setInfo(line, source);
+	if(width != null) {
+	    width.setInfo(line, source);
+	}
+	if(style != null) {
+	    style.setInfo(line, source);
+	}
+	if(color != null) {
+	    color.setInfo(line, source);
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	if (property instanceof CssBorderBottomATSC) {
+	    CssBorderBottomATSC bottom = (CssBorderBottomATSC) property;
+	    return (width.equals(bottom.width) && style.equals(bottom.style)
+		    && color.equals(bottom.color));
+	} else {
+	    return false;
+	}
+    }
+
+    void check() {
+	if ((style != null)
+	    && (style.face.value == 0)) {
+	    if (width != null) {
+		width.face.value = new CssLength();
+	    }
+	}
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/CssBorderBottomColorATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,142 @@
+//
+// $Id: CssBorderBottomColorATSC.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.atsc;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+/**
+ * Be careful, this is not a CSS1 property !
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderBottomColorATSC extends CssProperty {
+
+    CssBorderFaceColorATSC face;
+
+    /**
+     * Create a new CssBorderBottomColorATSC
+     */
+    public CssBorderBottomColorATSC() {
+	face = new CssBorderFaceColorATSC();
+    }
+
+    /**
+     * Create a new CssBorderBottomColor with an another CssBorderFaceColor
+     *
+     * @param another An another face.
+     */
+    public CssBorderBottomColorATSC(CssBorderFaceColorATSC another) {
+
+	setByUser();
+
+	face = another;
+    }
+
+    /**
+     * Create a new CssBorderBottomColor
+     *
+     * @param expression The expression for this property.
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderBottomColorATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+
+	face = new CssBorderFaceColorATSC(ac, expression);
+    }
+
+    public CssBorderBottomColorATSC(ApplContext ac, CssExpression expression)
+    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return face;
+    }
+
+    /**
+     * Returns the color of this property
+     */
+    public CssValue getColor() {
+	return face.getColor();
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return face.toString();
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-bottom-color";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBorderBottomATSC bottom = ((ATSCStyle) style).cssBorderATSC.bottom;
+	if (bottom.color != null)
+	    style.addRedefinitionWarning(ac, this);
+	bottom.color = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ATSCStyle) style).getBorderBottomColorATSC();
+	} else {
+	    return ((ATSCStyle) style).cssBorderATSC.getBottom().color;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderBottomColorATSC && face.equals(((CssBorderBottomColorATSC) property).face));
+    }
+
+    /**
+     * Print this property.
+     *
+     * @param printer The printer.
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	if (!face.isDefault())
+	    printer.print(this);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/CssBorderBottomStyleATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,126 @@
+//
+// $Id: CssBorderBottomStyleATSC.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.atsc;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+/**
+ * Be careful, this is not a CSS1 property !
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderBottomStyleATSC extends CssProperty {
+
+    CssBorderFaceStyleATSC face;
+
+    /**
+     * Create a new CssBorderBottomStyleATSC
+     */
+    public CssBorderBottomStyleATSC() {
+	face = new CssBorderFaceStyleATSC();
+    }
+
+    /**
+     * Create a new CssBorderBottomStyleATSC with an another CssBorderFaceStyleATSC
+     * @param another The another side.
+     */
+    public CssBorderBottomStyleATSC(CssBorderFaceStyleATSC another) {
+	setByUser();
+
+	face = another;
+    }
+
+    /**
+     * Create a new CssBorderBottomStyle eith an expression
+     *
+     * @param expression The expression for this property.
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderBottomStyleATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	face = new CssBorderFaceStyleATSC(ac, expression);
+    }
+
+    public CssBorderBottomStyleATSC(ApplContext ac, CssExpression expression)
+    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return face;
+    }
+
+    /**
+     * Returns the value
+     */
+    public String getStyle() {
+	return face.getStyle();
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return face.toString();
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-bottom-style";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBorderBottomATSC bottom = ((ATSCStyle) style).cssBorderATSC.bottom;
+	if (bottom.style != null)
+	    style.addRedefinitionWarning(ac, this);
+	bottom.style = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ATSCStyle) style).getBorderBottomStyleATSC();
+	} else {
+	    return ((ATSCStyle) style).cssBorderATSC.getBottom().style;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderBottomStyleATSC && face.equals(((CssBorderBottomStyleATSC) property).face));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/CssBorderBottomWidthATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,154 @@
+//
+// $Id: CssBorderBottomWidthATSC.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.atsc;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *      &nbsp;&nbsp; 'border-bottom-width'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> thin | medium | thick | &lt;length&gt;<BR>
+ *   <EM>Initial:</EM> 'medium'<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P> This property sets the width of an element's bottom border. The width
+ *   of the keyword values are UA dependent, but the following holds: 'thin'
+ *   &lt;= 'medium' &lt;= 'thick'.
+ *   <P>
+ *   The keyword widths are constant throughout a document:
+ *   <PRE>
+ *   H1 { border: solid thick red }
+ *   P  { border: solid thick blue }
+ * </PRE>
+ *   <P>
+ *   In the example above, 'H1' and 'P' elements will have the same border width
+ *   regardless of font size. To achieve relative widths, the 'em' unit can be
+ *   used:
+ *   <PRE>
+ *   H1 { border: solid 0.5em }
+ * </PRE>
+ *   <P>
+ *   Border widths cannot be negative.
+ * @version $Revision: 1.3 $ */
+public class CssBorderBottomWidthATSC extends CssProperty {
+
+    CssBorderFaceWidthATSC face;
+
+    /**
+     * Create a new CssBorderBottomWidth
+     */
+    public CssBorderBottomWidthATSC() {
+	face = new CssBorderFaceWidthATSC();
+    }
+
+    /**
+     * Create a new CssBorderBottomWidth with an another CssBorderFaceWidth
+     *
+     * @param another An another face.
+     */
+    public CssBorderBottomWidthATSC(CssBorderFaceWidthATSC another) {
+	setByUser();
+
+	face = another;
+    }
+
+    /**
+     * Create a new CssBorderBottomWidth
+     *
+     * @param expression The expression for this property.
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderBottomWidthATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	face = new CssBorderFaceWidthATSC(ac, expression);
+    }
+
+    public CssBorderBottomWidthATSC(ApplContext ac, CssExpression expression)
+    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return face;
+    }
+
+    /**
+     * Return the value of this property
+     */
+    public CssValue getValue() {
+	return face.getValue();
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return face.toString();
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-bottom-width";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBorderBottomATSC bottom = ((ATSCStyle) style).cssBorderATSC.bottom;
+	if (bottom.width != null)
+	    style.addRedefinitionWarning(ac, this);
+	bottom.width = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ATSCStyle) style).getBorderBottomWidthATSC();
+	} else {
+	    return ((ATSCStyle) style).cssBorderATSC.getBottom().width;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderBottomWidthATSC &&
+		face.equals(((CssBorderBottomWidthATSC) property).face));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/CssBorderColorATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,368 @@
+//
+// $Id: CssBorderColorATSC.java,v 1.4 2006-04-19 11:28:05 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 org.w3c.css.properties.atsc;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssOperator;
+//import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *      &nbsp;&nbsp; 'border-color'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;color&gt;{1,4}<BR>
+ *   <EM>Initial:</EM> the value of the 'color' property<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   The 'border-color' property sets the color of the four borders. 'border-color'
+ *   can have from one to four values, and the values are set on the different
+ *   sides as for 'border-width' above.
+ *   <P>
+ *   If no color value is specified, the value of the 'color' property of the
+ *   element itself will take its place:
+ *   <PRE>
+ *   P {
+ *     color: black;
+ *     background: white;
+ *     border: solid;
+ *   }
+ * </PRE>
+ *   <P>
+ *   In the above example, the border will be a solid black line.
+ *
+ * @version $Revision: 1.4 $
+ */
+public class CssBorderColorATSC extends CssProperty implements CssOperator {
+
+    CssBorderTopColorATSC top;
+    CssBorderBottomColorATSC bottom;
+    CssBorderRightColorATSC right;
+    CssBorderLeftColorATSC left;
+
+    //private static CssIdent transparent = new CssIdent("transparent");
+
+    /**
+     * Create a new CssBorderColorATSC with all four sides
+     */
+    public CssBorderColorATSC(CssBorderTopColorATSC top,
+			  CssBorderBottomColorATSC bottom,
+			  CssBorderRightColorATSC right,
+			  CssBorderLeftColorATSC left) {
+	this.top = top;
+	this.bottom = bottom;
+	this.left = left;
+	this.right = right;
+    }
+
+    /**
+     * Create a new CssBorderATSC
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderColorATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+
+	switch (expression.getCount()) {
+	case 1:
+	    /*
+	    CssValue val = expression.getValue();
+	    if (val.equals(transparent)) {
+		top = new CssBorderTopColorATSC();
+		top.face.face = transparent;
+		expression.next();
+	    } else if (val.equals(inherit)) {
+		top = new CssBorderTopColorATSC();
+		top.face.face = inherit;
+		expression.next();
+	    } else{*/
+	    top = new CssBorderTopColorATSC(ac, expression);
+	    /*bottom = new CssBorderBottomColorATSC((CssBorderFaceColorATSC) top.get());
+	    right = new CssBorderRightColorATSC((CssBorderFaceColorATSC) top.get());
+	    left = new CssBorderLeftColorATSC((CssBorderFaceColorATSC) top.get());*/
+	    break;
+	case 2:
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(expression.getOperator())).toString()),
+						ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    top = new CssBorderTopColorATSC(ac, expression);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    right = new CssBorderRightColorATSC(ac, expression);
+	    /*bottom = new CssBorderBottomColorATSC((CssBorderFaceColorATSC) top.get());
+	    left = new CssBorderLeftColorATSC((CssBorderFaceColorATSC) right.get());*/
+	    break;
+	case 3:
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(expression.getOperator())).toString()),
+						ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    top = new CssBorderTopColorATSC(ac, expression);
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(expression.getOperator())).toString()), ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    right = new CssBorderRightColorATSC(ac, expression);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    bottom = new CssBorderBottomColorATSC(ac, expression);
+	    //left = new CssBorderLeftColorATSC((CssBorderFaceColorATSC) right.get());
+	    break;
+	case 4:
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(expression.getOperator())).toString()),
+						ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    top = new CssBorderTopColorATSC(ac, expression);
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(expression.getOperator())).toString()),
+						ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    right = new CssBorderRightColorATSC(ac, expression);
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(expression.getOperator())).toString()),
+						ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    bottom = new CssBorderBottomColorATSC(ac, expression);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    left = new CssBorderLeftColorATSC(ac, expression);
+	    break;
+	default:
+	    if(check) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	}
+    }
+
+    public CssBorderColorATSC(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return top;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-color";
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+        String result = "";
+        // top should never be null
+        if(top != null) result += top;
+        if(right != null) result += " " + right;
+        if(bottom != null) result += " " + bottom;
+        if(left != null) result += " " + left;
+        return result;
+	/*if (right.face.equals(left.face)) {
+	    if (top.face.equals(bottom.face)) {
+		if (top.face.equals(right.face)) {
+		    return top.toString();
+		} else {
+		    return top + " " + right;
+		}
+	    } else {
+		return top + " " + right + " " + bottom;
+	    }
+	} else {
+	    return top + " " + right + " " + bottom + " " + left;
+	}*/
+    }
+
+    /**
+     * Set this property to be important.
+     * Overrides this method for a macro
+     */
+    public void setImportant() {
+	if(top != null) {
+	    top.setImportant();
+	}
+	if(right != null) {
+	    right.setImportant();
+	}
+	if(left != null) {
+	    left.setImportant();
+	}
+	if(bottom != null) {
+	    bottom.setImportant();
+	}
+    }
+
+    /**
+     * Returns true if this property is important.
+     * Overrides this method for a macro
+     */
+    public boolean getImportant() {
+	return ((top == null || top.getImportant()) &&
+		(right == null || right.getImportant()) &&
+		(left == null || left.getImportant()) &&
+		(bottom == null || bottom.getImportant()));
+    }
+
+    /**
+     * Print this property.
+     *
+     * @param printer The printer.
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	if ((top != null && right != null &&
+	     left != null && bottom != null) &&
+	    (!top.face.isDefault() && !right.face.isDefault() &&
+	     !left.face.isDefault() && !bottom.face.isDefault()) &&
+	    (getImportant() ||
+	     (!top.getImportant() &&
+	      !right.getImportant() &&
+	      !left.getImportant() &&
+	      !bottom.getImportant()))) {
+	    printer.print(this);
+	} else {
+	    if (top != null)
+		top.print(printer);
+	    if (right != null)
+		right.print(printer);
+	    if (left != null)
+		left.print(printer);
+	    if (bottom != null)
+		bottom.print(printer);
+	}
+
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors selector) {
+	super.setSelectors(selector);
+	if (top != null) {
+	    top.setSelectors(selector);
+	}
+	if (right != null) {
+	    right.setSelectors(selector);
+	}
+	if (bottom != null) {
+	    bottom.setSelectors(selector);
+	}
+	if (left != null) {
+	    left.setSelectors(selector);
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if(top != null) {
+	    top.addToStyle(ac, style);
+	}
+	if(right != null) {
+	    right.addToStyle(ac, style);
+	}
+	if(left != null) {
+	    left.addToStyle(ac, style);
+	}
+	if(bottom != null) {
+	    bottom.addToStyle(ac, style);
+	}
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	throw new IllegalStateException("Can't invoke this method on the property " +
+					getPropertyName());
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	super.setInfo(line, source);
+	if(top != null) {
+	    top.setInfo(line, source);
+	}
+	if(right != null) {
+	    right.setInfo(line, source);
+	}
+	if(left != null) {
+	    left.setInfo(line, source);
+	}
+	if(bottom != null) {
+	    bottom.setInfo(line, source);
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/CssBorderFaceColorATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,114 @@
+//
+// $Id: CssBorderFaceColorATSC.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.atsc;
+
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssColor;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssIdent;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderFaceColorATSC {
+
+    CssValue face;
+
+    /**
+     * Create a new CssBorderFaceColor
+     */
+    public CssBorderFaceColorATSC() {
+	face = new org.w3c.css.values.ATSCColor();
+    }
+
+    /**
+     * Create a new CssBorderFaceColor with a color property.
+     *
+     * @param color A color property
+     */
+    public CssBorderFaceColorATSC(ATSCColor color) {
+	face = color.color;
+    }
+
+    /**
+     * Create a new CssBorderFaceColor with an another CssBorderFaceColor
+     *
+     * @param another An another face.
+     */
+    public CssBorderFaceColorATSC(CssBorderFaceColorATSC another) {
+	face = another.face;
+    }
+
+    /**
+     * Create a new CssBorderFaceColor with an expression
+     *
+     * @param expression The expression for this property.
+     * @exception InvalidParamException color is not a color
+     */
+    public CssBorderFaceColorATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	if (val instanceof org.w3c.css.values.ATSCColor ||
+		val instanceof CssColor) {
+	    face = val;
+	} else if (val.equals(CssProperty.inherit)) {
+	    face = CssProperty.inherit;
+	} else if (val instanceof CssIdent) {
+	    face = new org.w3c.css.values.ATSCColor(ac, (String) val.get());
+	} else {
+	    throw new InvalidParamException("value", val.toString(),
+					    "border-color", ac);
+	}
+	expression.next();
+    }
+
+    public CssBorderFaceColorATSC(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the internal color
+     */
+    public CssValue getColor() {
+	return face;
+    }
+
+    /**
+     * Is the value of this face is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false; // @@ FIXME face.isDefault();
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return face.toString();
+    }
+
+    /**
+     * Compares two faces for equality.
+     *
+     * @param value The another faces.
+     */
+    public boolean equals(CssBorderFaceColorATSC color) {
+	return this.face.equals(color.face);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/CssBorderFaceStyleATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,115 @@
+//
+// $Id: CssBorderFaceStyleATSC.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.atsc;
+
+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;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderFaceStyleATSC {
+
+    int value;
+
+    private static String[] BORDERSTYLE = {
+	"none", "hidden", "dotted", "dashed", "solid", "double", "groove",
+	"ridge", "inset", "outset", "inherit" };
+
+    private static int[] hash_values;
+
+    /**
+     * Create a new CssBorderFaceStyleATSC
+     */
+    public CssBorderFaceStyleATSC() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new CssBorderFaceStyleATSC with an another CssBorderFaceStyle
+     *
+     * @param another An another side.
+     */
+    public CssBorderFaceStyleATSC(CssBorderFaceStyleATSC another) {
+	value = another.value;
+    }
+
+    /**
+     * Create a new CssBorderFaceStyleATSC
+     *
+     * @param expression The expression for this face
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssBorderFaceStyleATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	if (val instanceof CssIdent) {
+	    int hash = val.hashCode();
+	    for (int i = 0; i < BORDERSTYLE.length; i++)
+		if (hash_values[i] == hash) {
+		    value = i;
+		    expression.next();
+		    return;
+		}
+	}
+
+	throw new InvalidParamException("value", val.toString(), "style", ac);
+    }
+
+    public CssBorderFaceStyleATSC(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == (BORDERSTYLE.length - 1);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return BORDERSTYLE[value];
+    }
+
+    /**
+     * Returns the value
+     */
+    public String getStyle() {
+	return BORDERSTYLE[value];
+    }
+
+    /**
+     * Compares two side for equality.
+     *
+     * @param value The another side.
+     */
+    public boolean equals(CssBorderFaceStyleATSC style) {
+	return value == style.value;
+    }
+
+    static {
+	hash_values = new int[BORDERSTYLE.length];
+	for (int i=0; i<BORDERSTYLE.length; i++)
+	    hash_values[i] = BORDERSTYLE[i].hashCode();
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/CssBorderFaceWidthATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,115 @@
+//
+// $Id: CssBorderFaceWidthATSC.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.atsc;
+
+import org.w3c.css.properties.css1.CssProperty;
+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.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderFaceWidthATSC {
+
+    CssValue value;
+
+    /**
+     * Create a new CssBorderFaceWidthATSC
+     */
+    public CssBorderFaceWidthATSC() {
+	value = medium;
+    }
+
+    /**
+     * Create a new CssBorderFaceWidthATSC from an another CssBorderFaceWidthATSC
+     *
+     * @param another The another side.
+     */
+    public CssBorderFaceWidthATSC(CssBorderFaceWidthATSC another) {
+	value = another.value;
+    }
+
+    /**
+     * Create a new CssBorderFaceWidth
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderFaceWidthATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	if (val instanceof CssLength) {
+	    float f = ((Float) val.get()).floatValue();
+	    if (f >= 0)
+		this.value = val;
+	    else
+		throw new InvalidParamException("negative-value", val.toString(), ac);
+	} else if (val instanceof CssNumber) {
+	    value = ((CssNumber) val).getLength();
+	} else if (val.equals(thin)) {
+	    value = thin;
+	} else if (val.equals(medium)) {
+	    value = medium;
+	} else if (val.equals(thick)) {
+	    value = thick;
+	} else if (val.equals(CssProperty.inherit)) {
+	    value = CssProperty.inherit;
+	} else {
+	    throw new InvalidParamException("value", val.toString(), "width", ac);
+	}
+
+	expression.next();
+    }
+
+    public CssBorderFaceWidthATSC(ApplContext ac, CssExpression expression)
+    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the internal value
+     */
+    public CssValue getValue() {
+	return value;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Compares two sides for equality.
+     *
+     * @param value The another side.
+     */
+    public boolean equals(CssBorderFaceWidthATSC another) {
+	return value.equals(another.value);
+    }
+
+    private static CssIdent thin = new CssIdent("thin");
+    private static CssIdent medium = new CssIdent("medium");
+    private static CssIdent thick = new CssIdent("thick");
+
+}
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/CssBorderLeftATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,348 @@
+//
+// $Id: CssBorderLeftATSC.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.atsc;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'border-left'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;border-left-width&gt; || &lt;border-style&gt; ||
+ *   &lt;color&gt;<BR>
+ *   <EM>Initial:</EM> not defined for shorthand properties<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   This is a shorthand property for setting the width, style and color of an
+ *   element's left border.
+ *   <PRE>
+ *   H1 { border-bottom: thick solid red }
+ * </PRE>
+ *   <P>
+ *   The above rule will set the width, style and color of the border below the
+ *   H1 element. Omitted values will be set to their initial values:
+ *   <PRE>
+ *   H1 { border-bottom: thick solid }
+ * </PRE>
+ *   <P>
+ *   Since the color value is omitted in the example above, the border color will
+ *   be the same as the 'color' value of the element itself.
+ *   <P>
+ *   Note that while the 'border-style' property accepts up to four values, this
+ *   property only accepts one style value.
+ *
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderLeftATSC extends CssProperty implements CssOperator {
+
+    CssBorderLeftWidthATSC width;
+    CssBorderLeftStyleATSC style;
+    CssBorderLeftColorATSC color;
+
+    /**
+     * Create a new CssBorderLeftATSC
+     */
+    public CssBorderLeftATSC() {
+    }
+
+    /**
+     * Create a new CssBorderLeftATSC
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssBorderLeftATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	CssValue val = null;
+	char op = SPACE;
+	boolean find = true;
+
+	if(check && expression.getCount() > 3) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	boolean manyValues = (expression.getCount() > 1);
+
+	setByUser();
+
+	while (find) {
+	    find = false;
+	    val = expression.getValue();
+	    op = expression.getOperator();
+	    if (val == null)
+		break;
+
+	    // if there are many values, we can't have inherit as one of them
+	    if(manyValues && val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", null, null, ac);
+	    }
+
+	    if (op != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(op)).toString()),
+						ac);
+	    if (width == null) {
+		try {
+		    width = new CssBorderLeftWidthATSC(ac, expression);
+		    find = true;
+		} catch(InvalidParamException e){
+		    // nothing to do, style will test this value
+		}
+	    }
+	    if (!find && style == null) {
+		try {
+		    style = new CssBorderLeftStyleATSC(ac, expression);
+		    find = true;
+		} catch(InvalidParamException e){
+		    // nothing to do, color will test this value
+		}
+	    }
+	    if (!find && color == null) {
+		// throws an exception if the value is not valid
+		color = new CssBorderLeftColorATSC(ac, expression);
+		find = true;
+	    }
+	}
+    }
+
+    public CssBorderLeftATSC(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return width;
+    }
+
+    /**
+     * Returns the color property
+     */
+    public CssValue getColor() {
+	if (color != null) {
+	    return color.getColor();
+	} else {
+	    return null;
+	}
+    }
+
+    /**
+     * Returns the width property
+     */
+    public CssValue getWidth() {
+	if (width != null) {
+	    return width.getValue();
+	} else {
+	    return null;
+	}
+    }
+
+    /**
+     * Returns the style property
+     */
+    public String getStyle() {
+	if (style != null) {
+	    return style.getStyle();
+	} else {
+	    return null;
+	}
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	String ret = "";
+	if(width != null) {
+	    ret += width;
+	}
+	if(style != null) {
+	    if(!ret.equals("")) {
+		ret += " ";
+	    }
+	    ret += style;
+	}
+	if(color != null) {
+	    if(!ret.equals("")) {
+		ret += " ";
+	    }
+	    ret += color;
+	}
+	return ret;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-left";
+    }
+
+    /**
+     * Set this property to be important.
+     * Overrides this method for a macro
+     */
+    public void setImportant() {
+	if(width != null) {
+	    width.setImportant();
+	}
+	if(style != null) {
+	    style.setImportant();
+	}
+	if(color != null) {
+	    color.setImportant();
+	}
+    }
+
+    /**
+     * Returns true if this property is important.
+     * Overrides this method for a macro
+     */
+    public boolean getImportant() {
+	return ((width == null || width.getImportant()) &&
+		(style == null || style.getImportant()) &&
+		(color == null || color.getImportant()));
+    }
+
+
+    /**
+     * Print this property.
+     *
+     * @param printer The printer.
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	if ((width != null && style != null &&
+	     color != null) &&
+	    (getImportant() ||
+	     (!width.getImportant() &&
+	      !style.getImportant() &&
+	      !color.getImportant()))) {
+	    printer.print(this);
+	} else {
+	    if (width != null)
+		width.print(printer);
+	    if (style != null)
+		style.print(printer);
+	    if (color != null)
+		color.print(printer);
+	}
+
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors selector) {
+	super.setSelectors(selector);
+	if (width != null) {
+	    width.setSelectors(selector);
+	}
+	if (style != null) {
+	    style.setSelectors(selector);
+	}
+	if (color != null) {
+	    color.setSelectors(selector);
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if(width != null) {
+	    width.addToStyle(ac, style);
+	}
+	if(this.style != null) {
+	    this.style.addToStyle(ac, style);
+	}
+	if(color != null) {
+	    color.addToStyle(ac, style);
+	}
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ATSCStyle) style).getBorderLeftATSC();
+	} else {
+	    return ((ATSCStyle) style).cssBorderATSC.getLeft();
+	}
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	super.setInfo(line, source);
+	if(width != null) {
+	    width.setInfo(line, source);
+	}
+	if(style != null) {
+	    style.setInfo(line, source);
+	}
+	if(color != null) {
+	    color.setInfo(line, source);
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	if (property instanceof CssBorderLeftATSC) {
+	    CssBorderLeftATSC left = (CssBorderLeftATSC) property;
+	    return (width.equals(left.width) && style.equals(left.style)
+		    && color.equals(left.color));
+	} else {
+	    return false;
+	}
+    }
+
+    void check() {
+	if ((style != null)
+	    && (style.face.value == 0)) {
+	    if (width != null) {
+		width.face.value = new CssLength();
+	    }
+	}
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/CssBorderLeftColorATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,139 @@
+//
+// $Id: CssBorderLeftColorATSC.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.atsc;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+/**
+ * Be careful, this is not a CSS1 property !
+ *
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderLeftColorATSC extends CssProperty {
+
+    CssBorderFaceColorATSC face;
+
+    /**
+     * Create a new CssBorderLeftColorATSC
+     */
+    public CssBorderLeftColorATSC() {
+	face = new CssBorderFaceColorATSC();
+    }
+
+    /**
+     * Create a new CssBorderLeftColorATSC with an another CssBorderFaceColorATSC
+     * @param another The another side.
+     */
+    public CssBorderLeftColorATSC(CssBorderFaceColorATSC another) {
+
+	setByUser();
+
+	face = another;
+    }
+
+    /**
+     * Create a new CssBorderLeftColorATSC
+     *
+     * @param expression The expression for this property.
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderLeftColorATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	face = new CssBorderFaceColorATSC(ac, expression);
+    }
+
+    public CssBorderLeftColorATSC(ApplContext ac, CssExpression expression)
+    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return face;
+    }
+
+    /**
+     * Returns the color of this property
+     */
+    public CssValue getColor() {
+	return face.getColor();
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return face.toString();
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-left-color";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBorderLeftATSC left = ((ATSCStyle) style).cssBorderATSC.left;
+	if (left.color != null)
+	    style.addRedefinitionWarning(ac, this);
+	left.color = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ATSCStyle) style).getBorderLeftColorATSC();
+	} else {
+	    return ((ATSCStyle) style).cssBorderATSC.getLeft().color;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderLeftColorATSC && face.equals(((CssBorderLeftColorATSC) property).face));
+    }
+
+    /**
+     * Print this property
+     *
+     * @param printer The printer.
+     */
+    public void print(CssPrinterStyle printer) {
+	if (!face.isDefault())
+	    printer.print(this);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/CssBorderLeftStyleATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,127 @@
+//
+// $Id: CssBorderLeftStyleATSC.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.atsc;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+/**
+ * Be careful, this is not a CSS1 property !
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderLeftStyleATSC extends CssProperty {
+
+    CssBorderFaceStyleATSC face;
+
+    /**
+     * Create a new CssBorderLeftStyleATSC
+     */
+    public CssBorderLeftStyleATSC() {
+	face = new CssBorderFaceStyleATSC();
+    }
+
+    /**
+     * Create a new CssBorderLeftStyleATSC with an another CssBorderFaceStyleATSC
+     *
+     * @param another The another side.
+     */
+    public CssBorderLeftStyleATSC(CssBorderFaceStyleATSC another) {
+	setByUser();
+
+	face = another;
+    }
+
+    /**
+     * Create a new CssBorderLeftStyleATSC
+     *
+     * @param expression The expression for this property.
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderLeftStyleATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	face = new CssBorderFaceStyleATSC(ac, expression);
+    }
+
+    public CssBorderLeftStyleATSC(ApplContext ac, CssExpression expression)
+    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return face;
+    }
+
+    /**
+     * Returns the value
+     */
+    public String getStyle() {
+	return face.getStyle();
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return face.toString();
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-left-style";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBorderLeftATSC left = ((ATSCStyle) style).cssBorderATSC.left;
+	if (left.style != null)
+	    style.addRedefinitionWarning(ac, this);
+	left.style = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ATSCStyle) style).getBorderLeftStyleATSC();
+	} else {
+	    return ((ATSCStyle) style).cssBorderATSC.getLeft().style;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderLeftStyleATSC && face.equals(((CssBorderLeftStyleATSC) property).face));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/CssBorderLeftWidthATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,156 @@
+//
+// $Id: CssBorderLeftWidthATSC.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.atsc;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *      &nbsp;&nbsp; 'border-left-width'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> thin | medium | thick | &lt;length&gt;<BR>
+ *   <EM>Initial:</EM> 'medium'<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   This property sets the width of an element's left border. The width of the
+ *   keyword values are UA dependent, but the following holds: 'thin' &lt;= 'medium'
+ *   &lt;= 'thick'.
+ *   <P>
+ *   The keyword widths are constant throughout a document:
+ *   <PRE>
+ *   H1 { border: solid thick red }
+ *   P  { border: solid thick blue }
+ * </PRE>
+ *   <P>
+ *   In the example above, 'H1' and 'P' elements will have the same border width
+ *   regardless of font size. To achieve relative widths, the 'em' unit can be
+ *   used:
+ *   <PRE>
+ *   H1 { border: solid 0.5em }
+ * </PRE>
+ *   <P>
+ *   Border widths cannot be negative.
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderLeftWidthATSC extends CssProperty {
+
+    CssBorderFaceWidthATSC face;
+
+    /**
+     * Create a new CssBorderLeftWidthATSC
+     */
+    public CssBorderLeftWidthATSC() {
+	face = new CssBorderFaceWidthATSC();
+    }
+
+    /**
+     * Create a new CssBorderLeftWidthATSC with an another CssBorderFaceWidthATSC
+     *
+     * @param another The another side.
+     */
+    public CssBorderLeftWidthATSC(CssBorderFaceWidthATSC another) {
+	setByUser();
+
+	face = another;
+    }
+
+    /**
+     * Create a new CssBorderLeftWidthATSC
+     *
+     * @param expression The expression for this property.
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderLeftWidthATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	face = new CssBorderFaceWidthATSC(ac, expression);
+    }
+
+    public CssBorderLeftWidthATSC(ApplContext ac, CssExpression expression)
+    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return face;
+    }
+
+    /**
+     * Return the value of this property
+     */
+    public CssValue getValue() {
+	return face.getValue();
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return face.toString();
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-left-width";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBorderLeftATSC left = ((ATSCStyle) style).cssBorderATSC.left;
+	if (left.width != null)
+	    style.addRedefinitionWarning(ac, this);
+	left.width = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ATSCStyle) style).getBorderLeftWidthATSC();
+	} else {
+	    return ((ATSCStyle) style).cssBorderATSC.getLeft().width;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderLeftWidthATSC &&
+		face.equals(((CssBorderLeftWidthATSC) property).face));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/CssBorderRightATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,400 @@
+//
+// $Id: CssBorderRightATSC.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.atsc;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+//import org.w3c.css.properties.CssBorderRightColorCSS2;
+//import org.w3c.css.properties.CssBorderRightStyleCSS2;
+//import org.w3c.css.properties.CssBorderRightWidthCSS2;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'border-right'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;border-right-width&gt; || &lt;border-style&gt; ||
+ *   &lt;color&gt;<BR>
+ *   <EM>Initial:</EM> not defined for shorthand properties<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   This is a shorthand property for setting the width, style and color of an
+ *   element's right border.
+ *   <PRE>
+ *   H1 { border-bottom: thick solid red }
+ * </PRE>
+ *   <P>
+ *   The above rule will set the width, style and color of the border below the
+ *   H1 element. Omitted values will be set to their initial values:
+ *   <PRE>
+ *   H1 { border-bottom: thick solid }
+ * </PRE>
+ *   <P>
+ *   Since the color value is omitted in the example above, the border color will
+ *   be the same as the 'color' value of the element itself.
+ *   <P>
+ *   Note that while the 'border-style' property accepts up to four values, this
+ *   property only accepts one style value.
+ *
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderRightATSC extends CssProperty implements CssOperator {
+
+    CssBorderRightWidthATSC width;
+    CssBorderRightStyleATSC style;
+    CssBorderRightColorATSC color;
+
+    /**
+     * Create a new CssBorderFaceATSC
+     */
+    public CssBorderRightATSC() {
+    }
+
+    /**
+     * Create a new CssBorderFaceATSC
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssBorderRightATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	CssValue val = null;
+	char op = SPACE;
+	boolean find = true;
+
+	if(check && expression.getCount() > 3) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	boolean manyValues = (expression.getCount() > 1);
+
+	setByUser();
+
+	while (find) {
+	    find = false;
+	    val = expression.getValue();
+	    op = expression.getOperator();
+	    if (val == null)
+		break;
+
+	    // if there are many values, we can't have inherit as one of them
+	    if(manyValues && val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", null, null, ac);
+	    }
+
+	    if (op != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(op)).toString()),
+						ac);
+	    if (width == null) {
+		try {
+		    width = new CssBorderRightWidthATSC(ac, expression);
+		    find = true;
+		} catch(InvalidParamException e){
+		    // nothing to do, style will test this value
+		}
+	    }
+	    if (!find && style == null) {
+		try {
+		    style = new CssBorderRightStyleATSC(ac, expression);
+		    find = true;
+		} catch(InvalidParamException e){
+		    // nothing to do, color will test this value
+		}
+	    }
+	    if (!find && color == null) {
+		// throws an exception if the value is not valid
+		color = new CssBorderRightColorATSC(ac, expression);
+		find = true;
+	    }
+	}
+	/*
+	CssValue val = null;
+	char op = SPACE;
+	boolean find = true;
+
+	setByUser();
+	while (find) {
+	    find = false;
+	    val = expression.getValue();
+	    op = expression.getOperator();
+
+	    if (val == null)
+		break;
+
+	    if (op != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(op)).toString()),
+			ac);
+
+	    if (width == null) {
+		try {
+		    width = new CssBorderRightWidthATSC(ac, expression);
+		    find = true;
+		} catch (InvalidParamException e) {
+		}
+	    }
+	    if (!find && style == null) {
+		try {
+		    style = new CssBorderRightStyleATSC(ac, expression);
+		    find = true;
+		}
+		catch (InvalidParamException e) {
+		}
+	    }
+	    if (!find && color == null) {
+		try {
+		    color = new CssBorderRightColorATSC(ac, expression);
+		    find = true;
+		}
+		catch (InvalidParamException e) {
+		}
+	    }
+	}
+
+	if (width == null)
+	    width = new CssBorderRightWidthATSC();
+	if (style == null)
+	    style = new CssBorderRightStyleATSC();
+	if (color == null)
+	    color = new CssBorderRightColorATSC();*/
+    }
+
+    public CssBorderRightATSC(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return width;
+    }
+
+    /**
+     * Returns the color property
+     */
+    public CssValue getColor() {
+	if (color != null) {
+	    return color.getColor();
+	} else {
+	    return null;
+	}
+    }
+
+    /**
+     * Returns the width property
+     */
+    public CssValue getWidth() {
+	if (width != null) {
+	    return width.getValue();
+	} else {
+	    return null;
+	}
+    }
+
+    /**
+     * Returns the style property
+     */
+    public String getStyle() {
+	if (style != null) {
+	    return style.getStyle();
+	} else {
+	    return null;
+	}
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	String ret = "";
+	if(width != null) {
+	    ret += width;
+	}
+	if(style != null) {
+	    if(!ret.equals("")) {
+		ret += " ";
+	    }
+	    ret += style;
+	}
+	if(color != null) {
+	    if(!ret.equals("")) {
+		ret += " ";
+	    }
+	    ret += color;
+	}
+	return ret;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-right";
+    }
+
+    /**
+     * Set this property to be important.
+     * Overrides this method for a macro
+     */
+    public void setImportant() {
+	if(width != null) {
+	    width.setImportant();
+	}
+	if(style != null) {
+	    style.setImportant();
+	}
+	if(color != null) {
+	    color.setImportant();
+	}
+    }
+
+    /**
+     * Returns true if this property is important.
+     * Overrides this method for a macro
+     */
+    public boolean getImportant() {
+	return ((width == null || width.getImportant()) &&
+		(style == null || style.getImportant()) &&
+		(color == null || color.getImportant()));
+    }
+
+    /**
+     * Print this property.
+     *
+     * @param printer The printer.
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	if ((width != null && style != null &&
+	     color != null) &&
+	    (getImportant() ||
+	     (!width.getImportant() &&
+	      !style.getImportant() &&
+	      !color.getImportant()))) {
+	    printer.print(this);
+	} else {
+	    if (width != null)
+		width.print(printer);
+	    if (style != null)
+		style.print(printer);
+	    if (color != null)
+		color.print(printer);
+	}
+
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors selector) {
+	super.setSelectors(selector);
+	if (width != null) {
+	    width.setSelectors(selector);
+	}
+	if (style != null) {
+	    style.setSelectors(selector);
+	}
+	if (color != null) {
+	    color.setSelectors(selector);
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if(width != null) {
+	    width.addToStyle(ac, style);
+	}
+	if(this.style != null) {
+	    this.style.addToStyle(ac, style);
+	}
+	if(color != null) {
+	    color.addToStyle(ac, style);
+	}
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ATSCStyle) style).getBorderRightATSC();
+	} else {
+	    return ((ATSCStyle) style).cssBorderATSC.getRight();
+	}
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	super.setInfo(line, source);
+	if(width != null) {
+	    width.setInfo(line, source);
+	}
+	if(style != null) {
+	    style.setInfo(line, source);
+	}
+	if(color != null) {
+	    color.setInfo(line, source);
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	if (property instanceof CssBorderRightATSC) {
+	    CssBorderRightATSC right = (CssBorderRightATSC) property;
+	    return (width.equals(right.width) &&
+		    style.equals(right.style) && color.equals(right.color));
+	} else {
+	    return false;
+	}
+    }
+
+    void check() {
+	if ((style != null)
+	    && (style.face.value == 0)) {
+	    if (width != null) {
+		width.face.value = new CssLength();
+	    }
+	}
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/CssBorderRightColorATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,140 @@
+//
+// $Id: CssBorderRightColorATSC.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.atsc;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+/**
+ * Be careful, this is not a CSS1 property !
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderRightColorATSC extends CssProperty {
+
+    CssBorderFaceColorATSC face;
+
+    /**
+     * Create a new CssBorderRightColorATSC
+     */
+    public CssBorderRightColorATSC() {
+	face = new CssBorderFaceColorATSC();
+    }
+
+    /**
+     * Create a new CssBorderRightColorATSC with an another CssBorderFaceColorATSC
+     *
+     * @param another The another side.
+     */
+    public CssBorderRightColorATSC(CssBorderFaceColorATSC another) {
+
+	setByUser();
+
+	face = another;
+    }
+
+    /**
+     * Create a new CssBorderRightColorATSC
+     *
+     * @param expression The expression for this property.
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderRightColorATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	face = new CssBorderFaceColorATSC(ac, expression);
+    }
+
+    public CssBorderRightColorATSC(ApplContext ac, CssExpression expression)
+    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return face;
+    }
+
+    /**
+     * Returns the color of this property
+     */
+    public CssValue getColor() {
+	return face.getColor();
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return face.toString();
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-right-color";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBorderRightATSC right = ((ATSCStyle) style).cssBorderATSC.right;
+	if (right.color != null)
+	    style.addRedefinitionWarning(ac, this);
+	right.color = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ATSCStyle) style).getBorderRightColorATSC();
+	} else {
+	    return ((ATSCStyle) style).cssBorderATSC.getRight().color;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderRightColorATSC &&
+		face.equals(((CssBorderRightColorATSC) property).face));
+    }
+
+    /**
+     * Print this property.
+     *
+     * @param printer The printer.
+     */
+    public void print(CssPrinterStyle printer) {
+	if (!face.isDefault())
+	    printer.print(this);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/CssBorderRightStyleATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,130 @@
+//
+// $Id: CssBorderRightStyleATSC.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.atsc;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+/**
+ * Be careful, this is not a CSS1 property !
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderRightStyleATSC extends CssProperty {
+
+    CssBorderFaceStyleATSC face;
+
+    /**
+     * Create a new CssBorderRightStyleATSC
+     */
+    public CssBorderRightStyleATSC() {
+	setByUser();
+
+	face = new CssBorderFaceStyleATSC();
+    }
+
+    /**
+     * Create a new CssBorderRightStyle with an another CssBorderFaceStyle
+     *
+     * @param another The another side.
+     */
+    public CssBorderRightStyleATSC(CssBorderFaceStyleATSC another) {
+	setByUser();
+
+	face = another;
+    }
+
+    /**
+     * Create a new CssBorderRightStyleATSC
+     *
+     * @param expression The expression for this property.
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderRightStyleATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	face = new CssBorderFaceStyleATSC(ac, expression);
+    }
+
+    public CssBorderRightStyleATSC(ApplContext ac, CssExpression expression)
+    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return face;
+    }
+
+    /**
+     * Returns the value
+     */
+    public String getStyle() {
+	return face.getStyle();
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return face.toString();
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-right-style";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBorderRightATSC right = ((ATSCStyle) style).cssBorderATSC.right;
+	if (right.style != null)
+	    style.addRedefinitionWarning(ac, this);
+	right.style = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ATSCStyle) style).getBorderRightStyleATSC();
+	} else {
+	    return ((ATSCStyle) style).cssBorderATSC.getRight().style;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderRightStyleATSC &&
+		face.equals(((CssBorderRightStyleATSC) property).face));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/CssBorderRightWidthATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,157 @@
+//
+// $Id: CssBorderRightWidthATSC.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.atsc;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *      &nbsp;&nbsp; 'border-right-width'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> thin | medium | thick | &lt;length&gt;<BR>
+ *   <EM>Initial:</EM> 'medium'<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P> This property sets the width of an element's right border. The width of
+ *   the keyword values are UA dependent, but the following holds: 'thin' &lt;=
+ *   'medium' &lt;= 'thick'.
+ *   <P>
+ *   The keyword widths are constant throughout a document:
+ *   <PRE>
+ *   H1 { border: solid thick red }
+ *   P  { border: solid thick blue }
+ * </PRE>
+ *   <P>
+ *   In the example above, 'H1' and 'P' elements will have the same border width
+ *   regardless of font size. To achieve relative widths, the 'em' unit can be
+ *   used:
+ *   <PRE>
+ *   H1 { border: solid 0.5em }
+ * </PRE>
+ *   <P>
+ *   Border widths cannot be negative.
+ *
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderRightWidthATSC extends CssProperty {
+
+    CssBorderFaceWidthATSC face;
+
+    /**
+     * Create a new CssBorderRightWidth
+     */
+    public CssBorderRightWidthATSC() {
+	face = new CssBorderFaceWidthATSC();
+    }
+
+    /**
+     * Create a new CssBorderRightWidthATSC with an another CssBorderFaceWidthATSC
+     *
+     * @param another The another side.
+     */
+    public CssBorderRightWidthATSC(CssBorderFaceWidthATSC another) {
+	setByUser();
+
+	face = another;
+    }
+
+    /**
+     * Create a new CssBorderRightWidthATSC
+     *
+     * @param expression The expression for this property.
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderRightWidthATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+
+	face = new CssBorderFaceWidthATSC(ac, expression);
+    }
+
+    public CssBorderRightWidthATSC(ApplContext ac, CssExpression expression)
+    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return face;
+    }
+
+    /**
+     * Return the value of this property
+     */
+    public CssValue getValue() {
+	return face.getValue();
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return face.toString();
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-right-width";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBorderRightATSC right = ((ATSCStyle) style).cssBorderATSC.right;
+	if (right.width != null)
+	    style.addRedefinitionWarning(ac, this);
+	right.width = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ATSCStyle) style).getBorderRightWidthATSC();
+	} else {
+	    return ((ATSCStyle) style).cssBorderATSC.getRight().width;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderRightWidthATSC &&
+		face.equals(((CssBorderRightWidthATSC) property).face));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/CssBorderStyleATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,370 @@
+//
+// $Id: CssBorderStyleATSC.java,v 1.4 2006-04-19 11:28:05 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 org.w3c.css.properties.atsc;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssOperator;
+
+/**
+ *   <H4>
+ *      &nbsp;&nbsp; 'border-style'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> none | dotted | dashed | solid | double | groove | ridge
+ *   | inset | outset<BR>
+ *   <EM>Initial:</EM> none<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   The 'border-style' property sets the style of the four borders. It can have
+ *   from one to four values, and the values are set on the different sides as
+ *   for 'border-width' above.
+ *   <PRE>
+ *   #xy34 { border-style: solid dotted }
+ * </PRE>
+ *   <P>
+ *   In the above example, the horizontal borders will be 'solid' and the vertical
+ *   borders will be 'dotted'.
+ *   <P>
+ *   Since the initial value of the border styles is 'none', no borders will be
+ *   visible unless the border style is set.
+ *   <P>
+ *   The border styles mean:
+ *   <DL>
+ *     <DT>
+ *       none
+ *     <DD>
+ *       no border is drawn (regardless of the 'border-width' value)
+ *     <DT>
+ *       dotted
+ *     <DD>
+ *       the border is a dotted line drawn on top of the background of the element
+ *     <DT>
+ *       dashed
+ *     <DD>
+ *       the border is a dashed line drawn on top of the background of the element
+ *     <DT>
+ *       solid
+ *     <DD>
+ *       the border is a solid line
+ *     <DT>
+ *       double
+ *     <DD> the border is a double line drawn on top of the background of the
+ *     element.  The sum of the two single lines and the space between equals
+ *     the &lt;border-width&gt; value.
+ *     <DT>
+ *       groove
+ *     <DD>
+ *       a 3D groove is drawn in colors based on the &lt;color&gt; value.
+ *     <DT>
+ *       ridge
+ *     <DD>
+ *       a 3D ridge is drawn in colors based on the &lt;color&gt; value.
+ *     <DT>
+ *       inset
+ *     <DD>
+ *       a 3D inset is drawn in colors based on the &lt;color&gt; value.
+ *     <DT>
+ *       outset
+ *     <DD>
+ *       a 3D outset is drawn in colors based on the &lt;color&gt; value.
+ *   </DL>
+ *   <P>
+ *   <EM>CSS1 core:</EM> UAs may interpret all of 'dotted', 'dashed', 'double',
+ *   'groove', 'ridge', 'inset' and 'outset' as 'solid'.
+ *
+ * @version $Revision: 1.4 $
+ */
+public class CssBorderStyleATSC extends CssProperty implements CssOperator {
+
+    CssBorderTopStyleATSC top;
+    CssBorderBottomStyleATSC bottom;
+    CssBorderRightStyleATSC right;
+    CssBorderLeftStyleATSC left;
+
+    /**
+     * Create a new CssBorderStyleATSC
+     */
+    public CssBorderStyleATSC(CssBorderTopStyleATSC top,
+	    CssBorderBottomStyleATSC bottom,
+	    CssBorderRightStyleATSC right,
+	    CssBorderLeftStyleATSC left) {
+	this.top = top;
+	this.bottom = bottom;
+	this.left = left;
+	this.right = right;
+    }
+
+    /**
+     * Create a new CssBorderStyleATSC
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderStyleATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+
+	switch (expression.getCount()) {
+	case 1:
+	    top = new CssBorderTopStyleATSC(ac, expression);
+	    /*bottom = new CssBorderBottomStyleATSC((CssBorderFaceStyleATSC) top.get());
+	    right = new CssBorderRightStyleATSC((CssBorderFaceStyleATSC) top.get());
+	    left = new CssBorderLeftStyleATSC((CssBorderFaceStyleATSC) top.get());*/
+	    break;
+	case 2:
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(expression.getOperator())).toString()),
+			ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    top = new CssBorderTopStyleATSC(ac, expression);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    right = new CssBorderRightStyleATSC(ac, expression);
+	    /*bottom = new CssBorderBottomStyleATSC((CssBorderFaceStyleATSC) top.get());
+	    left = new CssBorderLeftStyleATSC((CssBorderFaceStyleATSC) right.get());*/
+	    break;
+	case 3:
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(expression.getOperator())).toString()),
+			ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    top = new CssBorderTopStyleATSC(ac, expression);
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(expression.getOperator())).toString()),
+			ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    right = new CssBorderRightStyleATSC(ac, expression);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    bottom = new CssBorderBottomStyleATSC(ac, expression);
+	    //left = new CssBorderLeftStyleATSC((CssBorderFaceStyleATSC) right.get());
+	    break;
+	case 4:
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(expression.getOperator())).toString()),
+			ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    top = new CssBorderTopStyleATSC(ac, expression);
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(expression.getOperator())).toString()),
+			ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    right = new CssBorderRightStyleATSC(ac, expression);
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(expression.getOperator())).toString()),
+			ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    bottom = new CssBorderBottomStyleATSC(ac, expression);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    left = new CssBorderLeftStyleATSC(ac, expression);
+	    break;
+	default:
+	    if(check) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	}
+    }
+
+    public CssBorderStyleATSC(ApplContext ac, CssExpression expression)
+    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return top;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-style";
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+        String result = "";
+        // top should never be null
+        if(top != null) result += top;
+        if(right != null) result += " " + right;
+        if(bottom != null) result += " " + bottom;
+        if(left != null) result += " " + left;
+        return result;
+	/*if (right.face.equals(left.face)) {
+	    if (top.face.equals(bottom.face)) {
+		if (top.face.equals(right.face)) {
+		    return top.toString();
+		} else {
+		    return top + " " + right;
+		}
+	    } else {
+		return top + " " + right + " " + bottom;
+	    }
+	} else {
+	    return top + " " + right + " " + bottom + " " + left;
+	}*/
+    }
+
+    /**
+     * Set this property to be important.
+     * Overrides this method for a macro
+     */
+    public void setImportant() {
+	if(top != null) top.setImportant();
+	if(right != null) right.setImportant();
+	if(left != null) left.setImportant();
+	if(bottom != null) bottom.setImportant();
+    }
+
+    /**
+     * Returns true if this property is important.
+     * Overrides this method for a macro
+     */
+    public boolean getImportant() {
+	return ((top == null || top.getImportant()) &&
+		(right == null || right.getImportant()) &&
+		(left == null || left.getImportant()) &&
+		(bottom == null || bottom.getImportant()));
+    }
+
+    /**
+     * Print this property.
+     *
+     * @param printer The printer.
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	if ((top != null && right != null &&
+		left != null && bottom != null) &&
+		(getImportant() ||
+			(!top.getImportant() &&
+				!right.getImportant() &&
+				!left.getImportant() &&
+				!bottom.getImportant()))) {
+	    printer.print(this);
+	} else {
+	    if (top != null)
+		top.print(printer);
+	    if (right != null)
+		right.print(printer);
+	    if (left != null)
+		left.print(printer);
+	    if (bottom != null)
+		bottom.print(printer);
+	}
+
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors selector) {
+	super.setSelectors(selector);
+	if (top != null) {
+	    top.setSelectors(selector);
+	}
+	if (right != null) {
+	    right.setSelectors(selector);
+	}
+	if (bottom != null) {
+	    bottom.setSelectors(selector);
+	}
+	if (left != null) {
+	    left.setSelectors(selector);
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if(top != null) top.addToStyle(ac, style);
+	if(right != null) right.addToStyle(ac, style);
+	if(left != null) left.addToStyle(ac, style);
+	if(bottom != null) bottom.addToStyle(ac, style);
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	throw new IllegalStateException("Can't invoke this method on the property " +
+		getPropertyName());
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	super.setInfo(line, source);
+	if(top != null) top.setInfo(line, source);
+	if(right != null) right.setInfo(line, source);
+	if(left != null) left.setInfo(line, source);
+	if(bottom != null) bottom.setInfo(line, source);
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/CssBorderTopATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,347 @@
+//
+// $Id: CssBorderTopATSC.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.atsc;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'border-top'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;border-top-width&gt; || &lt;border-style&gt; ||
+ *   &lt;color&gt;<BR>
+ *   <EM>Initial:</EM> not defined for shorthand properties<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   This is a shorthand property for setting the width, style and color of an
+ *   element's top border.
+ *   <PRE>
+ *   H1 { border-bottom: thick solid red }
+ * </PRE>
+ *   <P>
+ *   The above rule will set the width, style and color of the border below the
+ *   H1 element. Omitted values will be set to their initial values:
+ *   <PRE>
+ *   H1 { border-bottom: thick solid }
+ * </PRE>
+ *   <P>
+ *   Since the color value is omitted in the example above, the border color will
+ *   be the same as the 'color' value of the element itself.
+ *   <P>
+ *   Note that while the 'border-style' property accepts up to four values, this
+ *   property only accepts one style value.
+ *
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderTopATSC extends CssProperty implements CssOperator {
+
+    CssBorderTopWidthATSC width;
+    CssBorderTopStyleATSC style;
+    CssBorderTopColorATSC color;
+
+    /**
+     * Create a new CssBorderFaceATSC
+     */
+    public CssBorderTopATSC() {
+    }
+
+    /**
+     * Create a new CssBorderFaceATSC
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssBorderTopATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	CssValue val = null;
+	char op = SPACE;
+	boolean find = true;
+
+	if(check && expression.getCount() > 3) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	boolean manyValues = (expression.getCount() > 1);
+
+	setByUser();
+
+	while (find) {
+	    find = false;
+	    val = expression.getValue();
+	    op = expression.getOperator();
+	    if (val == null)
+		break;
+
+	    // if there are many values, we can't have inherit as one of them
+	    if(manyValues && val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", null, null, ac);
+	    }
+
+	    if (op != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(op)).toString()),
+						ac);
+	    if (width == null) {
+		try {
+		    width = new CssBorderTopWidthATSC(ac, expression);
+		    find = true;
+		} catch(InvalidParamException e){
+		    // nothing to do, style will test this value
+		}
+	    }
+	    if (!find && style == null) {
+		try {
+		    style = new CssBorderTopStyleATSC(ac, expression);
+		    find = true;
+		} catch(InvalidParamException e){
+		    // nothing to do, color will test this value
+		}
+	    }
+	    if (!find && color == null) {
+		// throws an exception if the value is not valid
+		color = new CssBorderTopColorATSC(ac, expression);
+		find = true;
+	    }
+	}
+    }
+
+    public CssBorderTopATSC(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return width;
+    }
+
+    /**
+     * Returns the color property
+     */
+    public CssValue getColor() {
+	if (color != null) {
+	    return color.getColor();
+	} else {
+	    return null;
+	}
+    }
+
+    /**
+     * Returns the width property
+     */
+    public CssValue getWidth() {
+	if (width != null) {
+	    return width.getValue();
+	} else {
+	    return null;
+	}
+    }
+
+    /**
+     * Returns the style property
+     */
+    public String getStyle() {
+	if (style != null) {
+	    return style.getStyle();
+	} else {
+	    return null;
+	}
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	String ret = "";
+	if(width != null) {
+	    ret += width;
+	}
+	if(style != null) {
+	    if(!ret.equals("")) {
+		ret += " ";
+	    }
+	    ret += style;
+	}
+	if(color != null) {
+	    if(!ret.equals("")) {
+		ret += " ";
+	    }
+	    ret += color;
+	}
+	return ret;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-top";
+    }
+
+    /**
+     * Set this property to be important.
+     * Overrides this method for a macro
+     */
+    public void setImportant() {
+	if(width != null) {
+	    width.setImportant();
+	}
+	if(style != null) {
+	    style.setImportant();
+	}
+	if(color != null) {
+	    color.setImportant();
+	}
+    }
+
+    /**
+     * Returns true if this property is important.
+     * Overrides this method for a macro
+     */
+    public boolean getImportant() {
+	return ((width == null || width.getImportant()) &&
+		(style == null || style.getImportant()) &&
+		(color == null || color.getImportant()));
+    }
+
+    /**
+     * Print this property.
+     *
+     * @param printer The printer.
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	if ((width != null && style != null &&
+	     color != null) &&
+	    (getImportant() ||
+	     (!width.getImportant() &&
+	      !style.getImportant() &&
+	      !color.getImportant()))) {
+	    printer.print(this);
+	} else {
+	    if (width != null)
+		width.print(printer);
+	    if (style != null)
+		style.print(printer);
+	    if (color != null)
+		color.print(printer);
+	}
+
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if(width != null) {
+	    width.addToStyle(ac, style);
+	}
+	if(this.style != null) {
+	    this.style.addToStyle(ac, style);
+	}
+	if(color != null) {
+	    color.addToStyle(ac, style);
+	}
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ATSCStyle) style).getBorderTopATSC();
+	} else {
+	    return ((ATSCStyle) style).cssBorderATSC.getTop();
+	}
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	super.setInfo(line, source);
+	if(width != null) {
+	    width.setInfo(line, source);
+	}
+	if(style != null) {
+	    style.setInfo(line, source);
+	}
+	if(color != null) {
+	    color.setInfo(line, source);
+	}
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors selector) {
+	super.setSelectors(selector);
+	if (width != null) {
+	    width.setSelectors(selector);
+	}
+	if (style != null) {
+	    style.setSelectors(selector);
+	}
+	if (color != null) {
+	    color.setSelectors(selector);
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	if (property instanceof CssBorderTopATSC) {
+	    CssBorderTopATSC top = (CssBorderTopATSC) property;
+	    return (width.equals(top.width)
+		    && style.equals(top.style) && color.equals(top.color));
+	} else {
+	    return false;
+	}
+    }
+
+    void check() {
+	if ((style != null)
+	    && (style.face.value == 0)) {
+	    if (width != null) {
+		width.face.value = new CssLength();
+	    }
+	}
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/CssBorderTopColorATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,144 @@
+//
+// $Id: CssBorderTopColorATSC.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.atsc;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+/**
+ * Be careful, this is not a CSS1 property !
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderTopColorATSC extends CssProperty {
+
+    CssBorderFaceColorATSC face;
+
+    /**
+     * Create a new CssBorderTopColorATSC
+     */
+    public CssBorderTopColorATSC() {
+	face = new CssBorderFaceColorATSC();
+    }
+
+    /**
+     * Create a new CssBorderTopColorATSC with an another CssBorderFaceColorATSC
+     * @param another The another side.
+     */
+    public CssBorderTopColorATSC(CssBorderFaceColorATSC another) {
+	setByUser();
+
+	face = another;
+    }
+
+    /**
+     * Create a new CssBorderTopColorATSC
+     *
+     * @param expression The expression fir this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderTopColorATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	face = new CssBorderFaceColorATSC(ac, expression);
+    }
+
+    public CssBorderTopColorATSC(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return face;
+    }
+
+    /**
+     * Returns the color
+     */
+    public CssValue getColor() {
+	if (face != null) {
+	    return face.getColor();
+	} else {
+	    return null;
+	}
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return face.toString();
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-top-color";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBorderTopATSC top = ((ATSCStyle) style).cssBorderATSC.top;
+	if (top.color != null)
+	    style.addRedefinitionWarning(ac, this);
+	top.color = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ATSCStyle) style).getBorderTopColorATSC();
+	} else {
+	    return ((ATSCStyle) style).cssBorderATSC.getTop().color;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderTopColorATSC &&
+		face.equals(((CssBorderTopColorATSC) property).face));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     *
+     * @see #print(CssPrinterStyle)
+     */
+    public void print(CssPrinterStyle printer) {
+	if (!face.isDefault())
+	    printer.print(this);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/CssBorderTopStyleATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,128 @@
+//
+// $Id: CssBorderTopStyleATSC.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.atsc;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+/**
+ * Be careful, this is not a CSS1 property !
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderTopStyleATSC extends CssProperty {
+
+    CssBorderFaceStyleATSC face;
+
+    /**
+     * Create a new CssBorderTopStyleATSC
+     */
+    public CssBorderTopStyleATSC() {
+	face = new CssBorderFaceStyleATSC();
+    }
+
+    /**
+     * Create a new CssBorderTopStyleATSC with an another CssBorderFaceStyleATSC
+     *
+     * @param another The another side.
+     */
+    public CssBorderTopStyleATSC(CssBorderFaceStyleATSC another) {
+	setByUser();
+
+	face = another;
+    }
+
+    /**
+     * Create a new CssBorderTopStyleATSC
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderTopStyleATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	face = new CssBorderFaceStyleATSC(ac, expression);
+    }
+
+    public CssBorderTopStyleATSC(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return face;
+    }
+
+    /**
+     * Returns the value
+     */
+    public String getStyle() {
+	return face.getStyle();
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return face.toString();
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-top-style";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBorderTopATSC top = ((ATSCStyle) style).cssBorderATSC.getTop();
+	if (top.getStyle() != null)
+	    style.addRedefinitionWarning(ac, this);
+	top.style = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ATSCStyle) style).getBorderTopStyleATSC();
+	} else {
+	    return ((ATSCStyle) style).cssBorderATSC.getTop().style;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderTopStyleATSC &&
+		face.equals(((CssBorderTopStyleATSC) property).face));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/CssBorderTopWidthATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,158 @@
+//
+// $Id: CssBorderTopWidthATSC.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.atsc;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'border-top-width'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> thin | medium | thick | &lt;length&gt;<BR>
+ *   <EM>Initial:</EM> 'medium'<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   This property sets the width of an element's top border. The width of the
+ *   keyword values are UA dependent, but the following holds: 'thin' &lt;= 'medium'
+ *   &lt;= 'thick'.
+ *   <P>
+ *   The keyword widths are constant throughout a document:
+ *   <PRE>
+ *   H1 { border: solid thick red }
+ *   P  { border: solid thick blue }
+ * </PRE>
+ *   <P>
+ *   In the example above, 'H1' and 'P' elements will have the same border width
+ *   regardless of font size. To achieve relative widths, the 'em' unit can be
+ *   used:
+ *   <PRE>
+ *   H1 { border: solid 0.5em }
+ * </PRE>
+ *   <P>
+ *   Border widths cannot be negative.
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderTopWidthATSC extends CssProperty {
+
+    CssBorderFaceWidthATSC face;
+
+    /**
+     * Create a new CssBorderTopWidth
+     */
+    public CssBorderTopWidthATSC() {
+	face = new CssBorderFaceWidthATSC();
+    }
+
+    /**
+     * Create a new CssBorderTopWidth with an another CssBorderFaceWidth
+     *
+     * @param another The another side.
+     */
+    public CssBorderTopWidthATSC(CssBorderFaceWidthATSC another) {
+	setByUser();
+
+	face = another;
+    }
+
+    /**
+     * Create a new CssBorderTopWidthATSC
+     *
+     * @param expression The expression for this property.
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderTopWidthATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	face = new CssBorderFaceWidthATSC(ac, expression);
+    }
+
+    public CssBorderTopWidthATSC(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return face;
+    }
+
+    /**
+     * Return the value of this property
+     */
+    public CssValue getValue() {
+	return face.getValue();
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return face.toString();
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-top-width";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBorderTopATSC top = ((ATSCStyle) style).cssBorderATSC.top;
+
+	if (top.width != null) {
+	    style.addRedefinitionWarning(ac, this);
+	}
+	top.width = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ATSCStyle) style).getBorderTopWidthATSC();
+	} else {
+	    return ((ATSCStyle) style).cssBorderATSC.getTop().width;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderTopWidthATSC &&
+		face.equals(((CssBorderTopWidthATSC) property).face));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/CssBorderWidthATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,362 @@
+//
+// $Id: CssBorderWidthATSC.java,v 1.4 2006-04-19 11:28:05 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 org.w3c.css.properties.atsc;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssOperator;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'border-width'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> [thin | medium | thick | &lt;length&gt;]{1,4}<BR>
+ *   <EM>Initial:</EM> not defined for shorthand properties<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   This property is a shorthand property for setting 'border-width-top',
+ *   'border-width-right', 'border-width-bottom' and 'border-width-left' at the
+ *   same place in the style sheet.
+ *   <P>
+ *   There can be from one to four values, with the following interpretation:
+ *   <UL>
+ *     <LI>
+ *       one value: all four border widths are set to that value
+ *     <LI>
+ *       two values: top and bottom border widths are set to the first value, right
+ *       and left are set to the second
+ *     <LI>
+ *       three values: top is set to the first, right and left are set to the second,
+ *       bottom is set to the third
+ *     <LI>
+ *       four values: top, right, bottom and left, respectively
+ *   </UL>
+ *   <P>
+ *   In the examples below, the comments indicate the resulting widths of the
+ *   top, right, bottom and left borders:
+ *   <PRE>
+ *   H1 { border-width: thin }                   / * thin thin thin thin * /
+ *   H1 { border-width: thin thick }             / * thin thick thin thick * /
+ *   H1 { border-width: thin thick medium }      / * thin thick medium thin * /
+ *   H1 { border-width: thin thick medium 12cm } / * thin thick medium 12cm * /
+ * </PRE>
+ *   <P>
+ *   Border widths cannot be negative.
+ * @version $Revision: 1.4 $
+ */
+public class CssBorderWidthATSC extends CssProperty implements CssOperator {
+
+    CssBorderTopWidthATSC top;
+    CssBorderBottomWidthATSC bottom;
+    CssBorderRightWidthATSC right;
+    CssBorderLeftWidthATSC left;
+
+    /**
+     * Create a new CssBorderWidthATSC
+     */
+    public CssBorderWidthATSC(CssBorderTopWidthATSC top,
+			  CssBorderBottomWidthATSC bottom,
+			  CssBorderRightWidthATSC right,
+			  CssBorderLeftWidthATSC left) {
+	this.top = top;
+	this.bottom = bottom;
+	this.left = left;
+	this.right = right;
+    }
+
+    /**
+     * Create a new CssBorderATSC
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderWidthATSC(ApplContext ac, CssExpression expression,
+	    boolean check)  throws InvalidParamException {
+
+	setByUser();
+	switch (expression.getCount()) {
+	case 1:
+	    top = new CssBorderTopWidthATSC(ac, expression);
+	    /*bottom = new CssBorderBottomWidthATSC((CssBorderFaceWidthATSC) top.get());
+	    right = new CssBorderRightWidthATSC((CssBorderFaceWidthATSC) top.get());
+	    left = new CssBorderLeftWidthATSC((CssBorderFaceWidthATSC) top.get());*/
+	    break;
+	case 2:
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(expression.getOperator())).toString()),
+						ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    top = new CssBorderTopWidthATSC(ac, expression);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    right = new CssBorderRightWidthATSC(ac, expression);
+	    /*bottom = new CssBorderBottomWidthATSC((CssBorderFaceWidthATSC) top.get());
+	    left = new CssBorderLeftWidthATSC((CssBorderFaceWidthATSC) right.get());*/
+	    break;
+	case 3:
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(expression.getOperator())).toString()),
+						ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    top = new CssBorderTopWidthATSC(ac, expression);
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(expression.getOperator())).toString()),
+						ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    right = new CssBorderRightWidthATSC(ac, expression);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    bottom = new CssBorderBottomWidthATSC(ac, expression);
+	    //left = new CssBorderLeftWidthATSC((CssBorderFaceWidthATSC) right.get());
+	    break;
+	case 4:
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(expression.getOperator())).toString()),
+						ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    top = new CssBorderTopWidthATSC(ac, expression);
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(expression.getOperator())).toString()),
+						ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    right = new CssBorderRightWidthATSC(ac, expression);
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(expression.getOperator())).toString()),
+						ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    bottom = new CssBorderBottomWidthATSC(ac, expression);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    left = new CssBorderLeftWidthATSC(ac, expression);
+	    break;
+	default:
+	    if(check) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	}
+    }
+
+    public CssBorderWidthATSC(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return top;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-width";
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+        String result = "";
+        // top should never be null
+        if(top != null) result += top;
+        if(right != null) result += " " + right;
+        if(bottom != null) result += " " + bottom;
+        if(left != null) result += " " + left;
+        return result;
+	/*if (right.face.equals(left.face)) {
+	    if (top.face.equals(bottom.face)) {
+		if (top.face.equals(right.face)) {
+		    return top.toString();
+		} else {
+		    return top + " " + right;
+		}
+	    } else {
+		return top + " " + right + " " + bottom;
+	    }
+	} else {
+	    return top + " " + right + " " + bottom + " " + left;
+	}*/
+    }
+
+    /**
+     * Set this property to be important.
+     * Overrides this method for a macro
+     */
+    public void setImportant() {
+	if(top != null) {
+	    top.setImportant();
+	}
+	if(right != null) {
+	    right.setImportant();
+	}
+	if(left != null) {
+	    left.setImportant();
+	}
+	if(bottom != null) {
+	    bottom.setImportant();
+	}
+    }
+
+    /**
+     * Returns true if this property is important.
+     * Overrides this method for a macro
+     */
+    public boolean getImportant() {
+	return ((top == null || top.getImportant()) &&
+		(right == null || right.getImportant()) &&
+		(left == null || left.getImportant()) &&
+		(bottom == null || bottom.getImportant()));
+    }
+
+    /**
+     * Print this property.
+     *
+     * @param printer The printer.
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	if ((top != null && right != null &&
+	     left != null && bottom != null) &&
+	    (getImportant() ||
+	     (!top.getImportant() &&
+	      !right.getImportant() &&
+	      !left.getImportant() &&
+	      !bottom.getImportant()))) {
+	    printer.print(this);
+	} else {
+	    if (top != null)
+		top.print(printer);
+	    if (right != null)
+		right.print(printer);
+	    if (left != null)
+		left.print(printer);
+	    if (bottom != null)
+		bottom.print(printer);
+	}
+
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors selector) {
+	super.setSelectors(selector);
+	if (top != null) {
+	    top.setSelectors(selector);
+	}
+	if (right != null) {
+	    right.setSelectors(selector);
+	}
+	if (bottom != null) {
+	    bottom.setSelectors(selector);
+	}
+	if (left != null) {
+	    left.setSelectors(selector);
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if(top != null) {
+	    top.addToStyle(ac, style);
+	}
+	if(right != null) {
+	    right.addToStyle(ac, style);
+	}
+	if(left != null) {
+	    left.addToStyle(ac, style);
+	}
+	if(bottom != null) {
+	    bottom.addToStyle(ac, style);
+	}
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	throw new IllegalStateException("Can't invoke this method on the property " +
+					getPropertyName());
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	super.setInfo(line, source);
+	if(top != null) {
+	    top.setInfo(line, source);
+	}
+	if(right != null) {
+	    right.setInfo(line, source);
+	}
+	if(left != null) {
+	    left.setInfo(line, source);
+	}
+	if(bottom != null) {
+	    bottom.setInfo(line, source);
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/DefinitionSrcATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,130 @@
+//
+// $Id: DefinitionSrcATSC.java,v 1.2 2005-09-14 15:14:18 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 org.w3c.css.properties.atsc;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssURL;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class DefinitionSrcATSC extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new DefinitionSrcATSC
+     */
+    public DefinitionSrcATSC() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new DefinitionSrcATSC
+     *
+     * @param expression the unicode em
+     * @exception InvalidParamException values are incorrect
+     */
+    public DefinitionSrcATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() >1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	setByUser();
+
+	ac.getFrame().addWarning("atsc", val.toString());
+
+	if (val instanceof CssURL) {
+	    value = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public DefinitionSrcATSC(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "definition-src";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	ATSCStyle style0 = (ATSCStyle) style;
+	if (style0.definitionSrcATSC != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.definitionSrcATSC = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ATSCStyle) style).getDefinitionSrcATSC();
+	} else {
+	    return ((ATSCStyle) style).definitionSrcATSC;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @@TODO
+	return false;
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/DescentATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,130 @@
+//
+// $Id: DescentATSC.java,v 1.2 2005-09-14 15:14:18 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 org.w3c.css.properties.atsc;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class DescentATSC extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new DescentATSC
+     */
+    public DescentATSC() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new DescentATSC
+     *
+     * @param expression the unicode em
+     * @exception InvalidParamException values are incorrect
+     */
+    public DescentATSC(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+
+	if(check && expression.getCount() >1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	setByUser();
+
+	ac.getFrame().addWarning("atsc", val.toString());
+
+	if (val instanceof CssNumber) {
+	    value = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public DescentATSC(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "descent";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	ATSCStyle style0 = (ATSCStyle) style;
+	if (style0.descentATSC != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.descentATSC = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ATSCStyle) style).getDescentATSC();
+	} else {
+	    return ((ATSCStyle) style).descentATSC;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @@TODO
+	return false;
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/MathlineATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,130 @@
+//
+// $Id: MathlineATSC.java,v 1.2 2005-09-14 15:14:18 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 org.w3c.css.properties.atsc;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class MathlineATSC extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new MathlineATSC
+     */
+    public MathlineATSC() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new MathlineATSC
+     *
+     * @param expression the unicode em
+     * @exception InvalidParamException values are incorrect
+     */
+    public MathlineATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	setByUser();
+
+	ac.getFrame().addWarning("atsc", val.toString());
+
+	if (val instanceof CssNumber) {
+	    value = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public MathlineATSC(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "mathline";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	ATSCStyle style0 = (ATSCStyle) style;
+	if (style0.mathlineATSC != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.mathlineATSC = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ATSCStyle) style).getMathlineATSC();
+	} else {
+	    return ((ATSCStyle) style).mathlineATSC;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @@TODO
+	return false;
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/Panose1ATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,153 @@
+//
+// $Id: Panose1ATSC.java,v 1.2 2005-09-14 15:14:18 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 org.w3c.css.properties.atsc;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class Panose1ATSC extends CssProperty {
+
+    CssValue[] value = new CssValue[10];
+
+    /**
+     * Create a new Panose1ATSC
+     */
+    public Panose1ATSC() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new Panose1ATSC
+     *
+     * @param expression the unicode em
+     * @exception InvalidParamException values are incorrect
+     */
+    public Panose1ATSC(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+	CssValue val;
+	char op;
+	int i = 0;
+	setByUser();
+
+	boolean manyValues = expression.getCount() > 1;
+
+	{
+	    val = expression.getValue();
+	    ac.getFrame().addWarning("atsc", val.toString());
+	}
+
+	do {
+	    val = expression.getValue();
+	    op = expression.getOperator();
+
+	    if(manyValues && val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+
+	    if (val instanceof CssNumber) {
+		value[i++] = val;
+		expression.next();
+	    } else {
+		throw new InvalidParamException("value", expression.getValue(),
+						getPropertyName(), ac);
+	    }
+	} while (!expression.end()
+		 && (op == CssOperator.SPACE)
+		 && (i < 10));
+
+	if (i != 10) {
+	    throw new InvalidParamException("few-value",
+					    getPropertyName(), ac);
+	}
+    }
+
+    public Panose1ATSC(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value[0];
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	String ret = "";
+	for (int i = 0; i < 10; i++) {
+	    ret += " " + value[i];
+	}
+	return ret.substring(1);
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "panose-1";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	ATSCStyle style0 = (ATSCStyle) style;
+	if (style0.panose1ATSC != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.panose1ATSC = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ATSCStyle) style).getPanose1ATSC();
+	} else {
+	    return ((ATSCStyle) style).panose1ATSC;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @@TODO
+	return false;
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/SlopeATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,130 @@
+//
+// $Id: SlopeATSC.java,v 1.2 2005-09-14 15:14:18 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 org.w3c.css.properties.atsc;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class SlopeATSC extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new SlopeATSC
+     */
+    public SlopeATSC() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new SlopeATSC
+     *
+     * @param expression the unicode em
+     * @exception InvalidParamException values are incorrect
+     */
+    public SlopeATSC(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	setByUser();
+
+	ac.getFrame().addWarning("atsc", val.toString());
+
+	if (val instanceof CssNumber) {
+	    value = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public SlopeATSC(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "slope";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	ATSCStyle style0 = (ATSCStyle) style;
+	if (style0.slopeATSC != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.slopeATSC = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ATSCStyle) style).getSlopeATSC();
+	} else {
+	    return ((ATSCStyle) style).slopeATSC;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @@TODO
+	return false;
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/SrcATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,234 @@
+//
+// $Id: SrcATSC.java,v 1.2 2005-09-14 15:14:18 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 org.w3c.css.properties.atsc;
+import java.util.Vector;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssFunction;
+import org.w3c.css.values.CssIdent;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssString;
+import org.w3c.css.values.CssURL;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.2 $
+ */
+public class SrcATSC extends CssProperty
+        implements CssOperator {
+
+    Vector values = new Vector();
+
+    /**
+     * Create a new SrcATSC
+     */
+    public SrcATSC() {
+    }
+
+    /**
+     * Create a new SrcATSC
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public SrcATSC(ApplContext ac, CssExpression expression, boolean check)
+	    throws InvalidParamException {
+	CssValue val;
+	char op;
+
+	boolean manyValues = expression.getCount() > 1;
+
+	setByUser();
+	do {
+	    val = expression.getValue();
+	    op = expression.getOperator();
+
+	    if(manyValues && val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+
+	    if (val instanceof CssURL) {
+		values.addElement(val);
+		expression.next();
+		if (!expression.end() && (op == SPACE)
+		    && (expression.getValue() instanceof CssFunction)) {
+		    val = expression.getValue();
+		    // @@ HACK
+		    values.addElement(" ");
+		    values.addElement(recognizeFormat(ac, (CssFunction) val));
+		    op = expression.getOperator();
+		    expression.next();
+		}
+	    } else if (val instanceof CssFunction) {
+		// add warning for ATSC
+		ac.getFrame().addWarning("atsc", val.toString());
+		values.addElement(recognizeFontFaceName(ac, (CssFunction) val));
+		expression.next();
+	    } else {
+		throw new InvalidParamException("value",
+						val.toString(),
+						getPropertyName(), ac);
+	    }
+	    // @@HACK
+	    values.addElement(", ");
+	} while (op == COMMA);
+    }
+
+    public SrcATSC(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return null;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "src";
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	String ret = "";
+	int i = 0;
+	while (i != (values.size() - 1)) {
+	    ret += values.elementAt(i++);
+	}
+	return ret;
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	ATSCStyle style0 = (ATSCStyle) style;
+	if (style0.srcATSC != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.srcATSC = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ATSCStyle) style).getSrcATSC();
+	} else {
+	    return ((ATSCStyle) style).srcATSC;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return false;
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+    private CssFunction recognizeFormat(ApplContext ac, CssFunction val)
+	    throws InvalidParamException {
+	if (val.getName().equals("format")) {
+	    CssExpression params = val.getParameters();
+	    char op;
+	    params.starts();
+	    do {
+		op = params.getOperator();
+		if (params.getValue() instanceof CssString) {
+		    // nothing
+		} else {
+		    throw new InvalidParamException("format",
+						    val,
+						    getPropertyName(), ac);
+		}
+		params.next();
+	    } while (op == COMMA);
+	    if (!params.end()) {
+		throw new InvalidParamException("format",
+						val,
+						getPropertyName(), ac);
+	    }
+	    params.starts();
+	    return val;
+	} else {
+	    throw new InvalidParamException("format",
+					    val,
+					    getPropertyName(), ac);
+	}
+    }
+
+    private CssFunction recognizeFontFaceName(ApplContext ac, CssFunction func)
+	    throws InvalidParamException {
+	if (func.getName().equals("local")) {
+	    CssExpression params = func.getParameters();
+	    char op;
+	    params.starts();
+
+	    if (params.getValue() instanceof CssString) {
+		if (params.getCount() == 1) {
+		    return func;
+		} else {
+		    throw new InvalidParamException("local",
+						    func,
+						    getPropertyName(), ac);
+		}
+	    }
+
+	    do {
+		op = params.getOperator();
+		if (params.getValue() instanceof CssIdent) {
+		    // nothing
+		} else {
+		    throw new InvalidParamException("local",
+						    func,
+						    getPropertyName(), ac);
+		}
+		params.next();
+	    } while (op == COMMA);
+	    if (!params.end()) {
+		throw new InvalidParamException("local",
+						func,
+						getPropertyName(), ac);
+	    }
+	    params.starts();
+	    return func;
+	} else {
+	    throw new InvalidParamException("local",
+					    func,
+					    getPropertyName(), ac);
+	}
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/StemhATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,130 @@
+//
+// $Id: StemhATSC.java,v 1.2 2005-09-14 15:14:18 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 org.w3c.css.properties.atsc;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class StemhATSC extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new Stemh
+     */
+    public StemhATSC() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new StemhATSC
+     *
+     * @param expression the unicode em
+     * @exception InvalidParamException values are incorrect
+     */
+    public StemhATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	setByUser();
+
+	ac.getFrame().addWarning("atsc", val.toString());
+
+	if (val instanceof CssNumber) {
+	    value = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public StemhATSC(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "stemh";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	ATSCStyle style0 = (ATSCStyle) style;
+	if (style0.stemhATSC != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.stemhATSC = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ATSCStyle) style).getStemhATSC();
+	} else {
+	    return ((ATSCStyle) style).stemhATSC;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @@TODO
+	return false;
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/StemvATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,130 @@
+//
+// $Id: StemvATSC.java,v 1.2 2005-09-14 15:14:18 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 org.w3c.css.properties.atsc;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class StemvATSC extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new StemvATSC
+     */
+    public StemvATSC() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new StemvATSC
+     *
+     * @param expression the unicode em
+     * @exception InvalidParamException values are incorrect
+     */
+    public StemvATSC(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	setByUser();
+
+	ac.getFrame().addWarning("atsc", val.toString());
+
+	if (val instanceof CssNumber) {
+	    value = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public StemvATSC(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "stemv";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	ATSCStyle style0 = (ATSCStyle) style;
+	if (style0.stemvATSC != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.stemvATSC = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ATSCStyle) style).getStemvATSC();
+	} else {
+	    return ((ATSCStyle) style).stemvATSC;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @@TODO
+	return false;
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/ToplineATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,130 @@
+//
+// $Id: ToplineATSC.java,v 1.2 2005-09-14 15:14:18 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 org.w3c.css.properties.atsc;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class ToplineATSC extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new ToplineATSC
+     */
+    public ToplineATSC() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new ToplineATSC
+     *
+     * @param expression the unicode em
+     * @exception InvalidParamException values are incorrect
+     */
+    public ToplineATSC(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	setByUser();
+
+	ac.getFrame().addWarning("atsc", val.toString());
+
+	if (val instanceof CssNumber) {
+	    value = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public ToplineATSC(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "topline";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	ATSCStyle style0 = (ATSCStyle) style;
+	if (style0.toplineATSC != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.toplineATSC = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ATSCStyle) style).getToplineATSC();
+	} else {
+	    return ((ATSCStyle) style).toplineATSC;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @@TODO
+	return false;
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/UnitsPerEmATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,130 @@
+//
+// $Id: UnitsPerEmATSC.java,v 1.2 2005-09-14 15:14:18 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 org.w3c.css.properties.atsc;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class UnitsPerEmATSC extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new UnitsPerEmATSC
+     */
+    public UnitsPerEmATSC() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new UnitsPerEmATSC
+     *
+     * @param expression the unicode em
+     * @exception InvalidParamException values are incorrect
+     */
+    public UnitsPerEmATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	setByUser();
+
+	ac.getFrame().addWarning("atsc", val.toString());
+
+	if (val instanceof CssNumber) {
+	    value = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public UnitsPerEmATSC(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "units-per-em";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	ATSCStyle style0 = (ATSCStyle) style;
+	if (style0.unitsPerEmATSC != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.unitsPerEmATSC = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ATSCStyle) style).getUnitsPerEmATSC();
+	} else {
+	    return ((ATSCStyle) style).unitsPerEmATSC;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @@TODO
+	return false;
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/WidthsATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,172 @@
+//
+// $Id: WidthsATSC.java,v 1.2 2005-09-14 15:14:18 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 org.w3c.css.properties.atsc;
+
+import java.util.Vector;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssUnicodeRange;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class WidthsATSC extends CssProperty implements CssOperator {
+
+    Vector values = new Vector();
+
+    /**
+     * Create a new WidthsATSC
+     */
+    public WidthsATSC() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new WidthsATSC
+     *
+     * @param expression the unicode em
+     * @exception InvalidParamException values are incorrect
+     */
+    public WidthsATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	boolean manyValues = expression.getCount() > 1;
+
+	CssValue val;
+	char op;
+	//int i = 0;
+	setByUser();
+	{
+	    val = expression.getValue();
+	    ac.getFrame().addWarning("atsc", val.toString());
+	}
+
+	do {
+	    val = expression.getValue();
+	    op = expression.getOperator();
+
+	    if(manyValues && val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+
+	    if (val instanceof CssUnicodeRange) {
+		values.addElement(val);
+		if (op != SPACE) {
+		    throw new InvalidParamException("operator",
+						    new Character(op),
+						    getPropertyName(), ac);
+		}
+		if (expression.end()) {
+		    throw new InvalidParamException("few-value",
+						    getPropertyName(), ac);
+		}
+		expression.next();
+	    }
+	    do {
+		op = expression.getOperator();
+		val = expression.getValue();
+		if (val instanceof CssNumber) {
+		    values.addElement(" ");
+		    values.addElement(val);
+		} else {
+		    throw new InvalidParamException("value",
+						    val,
+						    getPropertyName(), ac);
+		}
+		expression.next();
+	    } while ((op == SPACE) && !expression.end());
+	    values.addElement(", ");
+	} while (op == CssOperator.COMMA);
+
+    }
+
+    public WidthsATSC(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return values.elementAt(0);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	String ret = "";
+	int i = 0;
+	while (i < (values.size() - 2)) {
+	    ret += values.elementAt(i);
+	    i++;
+	}
+	return ret;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "widths";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	ATSCStyle style0 = (ATSCStyle) style;
+	if (style0.widthsATSC != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.widthsATSC = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ATSCStyle) style).getWidthsATSC();
+	} else {
+	    return ((ATSCStyle) style).widthsATSC;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @@TODO
+	return false;
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/atsc/XHeightATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,130 @@
+//
+// $Id: XHeightATSC.java,v 1.2 2005-09-14 15:14:18 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 org.w3c.css.properties.atsc;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class XHeightATSC extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new XHeightATSC
+     */
+    public XHeightATSC() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new XHeightATSC
+     *
+     * @param expression the unicode em
+     * @exception InvalidParamException values are incorrect
+     */
+    public XHeightATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	setByUser();
+
+	ac.getFrame().addWarning("atsc", val.toString());
+
+	if (val instanceof CssNumber) {
+	    value = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public XHeightATSC(ApplContext ac, CssExpression expression)
+    	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "x-height";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	ATSCStyle style0 = (ATSCStyle) style;
+	if (style0.xHeightATSC != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.xHeightATSC = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ATSCStyle) style).getXHeightATSC();
+	} else {
+	    return ((ATSCStyle) style).xHeightATSC;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @@TODO
+	return false;
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/aural/ACSSDefault.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,23 @@
+style: org.w3c.css.properties.aural.ACssStyle
+properties: AuralProperties.properties
+extended-parser: true
+
+volume.inherited:	true
+speak.inherited:        true
+pause.inherited:	false
+pause-after.inherited:	false
+pause-before.inherited:	false
+cue.inherited:		false
+cue-after.inherited:	false
+cue-before.inherited:	false
+play-during.inherited:	false
+azimuth.inherited:      true
+elevation.inherited:    true
+speech-rate.inherited:	true
+voice-family.inherited:	true
+pitch.inherited:	true
+pitch-range.inherited:	true
+stress.inherited:       true
+richness.inherited:     true
+speak-punctuation.inherited: true
+speak-numeral.inherited: true
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/aural/ACssAzimuth.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,261 @@
+//
+// $Id: ACssAzimuth.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.aural;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssAngle;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssIdent;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ *
+ * @version $Revision: 1.3 $
+ */
+public class ACssAzimuth extends ACssProperty {
+
+    CssValue value;
+
+    boolean isBehind;
+
+    private static int[] hash_values;
+
+    private static String[] AZIMUTH = { "left-side", "far-left", "left",
+					"center-left", "center", "center-right",
+					"right", "far-right", "right-side" };
+
+    private static CssIdent defaultIdentValue = new CssIdent(AZIMUTH[4]);
+    private static CssIdent behind = new CssIdent("behind");
+    private static CssIdent leftwards = new CssIdent("leftwards");
+    private static CssIdent rightwards = new CssIdent("rightwards");
+
+    /**
+     * Create a new ACssAzimuth
+     */
+    public ACssAzimuth() {
+	value = defaultIdentValue;
+    }
+
+    /**
+     * Creates a new ACssAzimuth
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Expressions are incorrect
+     */
+    public ACssAzimuth(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+
+	this();
+
+	if(check && expression.getCount() > 2) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	int index;
+
+	setByUser();
+
+	if (val.equals(leftwards)) {
+	    if(check && expression.getCount() > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    value = leftwards;
+	    expression.next();
+	    return;
+	} if (val.equals(inherit)) {
+	    if(expression.getCount() > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    value = inherit;
+	    expression.next();
+	    return;
+	} else if (val.equals(rightwards)) {
+	    if(check && expression.getCount() > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    value = rightwards;
+	    expression.next();
+	    return;
+	} else if (val.equals(behind)) {
+	    isBehind = true;
+	    expression.next();
+	    CssValue valnext = expression.getValue();
+	    if (valnext == null) {
+		// behind == behind center
+		value = null;
+		return;
+	    } else if (valnext instanceof CssIdent) {
+		value = checkIdent(ac, (CssIdent) valnext);
+		expression.next();
+		return;
+	    }
+	} else if (val instanceof CssIdent) {
+	    expression.next();
+	    CssValue valnext = expression.getValue();
+	    if (valnext == null) {
+		// left
+		value = checkIdent(ac, (CssIdent) val);
+		return;
+	    } else if (valnext.equals(behind)) {
+		// left behind
+		value = checkIdent(ac, (CssIdent) val);
+		isBehind = true;
+		expression.next();
+		return;
+	    }
+	} else if (val instanceof CssAngle) {
+	    if(check && expression.getCount() > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    CssAngle angle = (CssAngle) val;
+	    if (!angle.isDegree()) {
+		throw new InvalidParamException("degree", null, ac);
+	    }
+	    value = val;
+	    expression.next();
+	    return;
+	} else if (val instanceof CssNumber) {
+	    if(check && expression.getCount() > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    value = ((CssNumber) val).getAngle();
+	    expression.next();
+	    return;
+	}
+
+	throw new InvalidParamException("value",
+					expression.getValue().toString(),
+					getPropertyName(), ac);
+    }
+
+    public ACssAzimuth(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "azimuth";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value is equals to inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (isBehind) {
+	    if (value != null) {
+		return behind.toString() + " " + value.toString();
+	    } else {
+		return behind.toString();
+	    }
+	} else {
+	    return value.toString();
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((ACssStyle) style).acssAzimuth != null)
+	    style.addRedefinitionWarning(ac, this);
+	((ACssStyle) style).acssAzimuth = this;
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param property The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof ACssAzimuth &&
+		value.equals(((ACssAzimuth) property).value));
+    }
+
+    private CssIdent checkIdent(ApplContext ac, CssIdent ident)
+	throws InvalidParamException {
+
+	int hash = ident.hashCode();
+
+	for (int i = 0; i < AZIMUTH.length; i++) {
+	    if (hash_values[i] == hash) {
+		return ident;
+	    }
+	}
+	throw new InvalidParamException("value",
+					ident.toString(),
+					getPropertyName(), ac);
+    }
+
+    /** @deprecated */
+    private Float ValueOfIdent(ApplContext ac, CssIdent ident, boolean b)
+	throws InvalidParamException {
+
+	int hash = ident.hashCode();
+
+	for (int i = 0; i < AZIMUTH.length; i++) {
+	    if (hash_values[i] == hash) {
+		if (b) {
+		    return ACssProperties.getValue(this,
+						   behind.toString() + "." + AZIMUTH[i]);
+		} else {
+		    return ACssProperties.getValue(this, AZIMUTH[i]);
+		}
+	    }
+	}
+
+	throw new InvalidParamException("value",
+					ident.toString(),
+					getPropertyName(), ac);
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ACssStyle) style).getAzimuth();
+	} else {
+	    return ((ACssStyle) style).acssAzimuth;
+	}
+    }
+
+    static {
+	hash_values = new int[AZIMUTH.length];
+	for (int i = 0; i < AZIMUTH.length; i++)
+	    hash_values[i] = AZIMUTH[i].hashCode();
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/aural/ACssCue.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,234 @@
+//
+// $Id: ACssCue.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.aural;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssOperator;
+
+
+/**
+ * &nbsp;&nbsp;  'cue'
+ *
+ * <P>
+ * <EM>Value: </EM> &lt;'cue-before'&gt; || &lt;'cue-before'&gt;<BR>
+ * <EM>Initial:</EM> none<BR>
+ * <EM>Applies to:</EM> all elements<BR>
+ * <EM>Inherited:</EM> no<BR>
+ * <EM>Percentage values:</EM> NA
+ *
+ * <P>Auditory icons are another way to distinguish semantic
+ * elements. Sounds may be played before, and/or after the element to
+ * delimit it. The same sound can be used both before and after, using the
+ * shorthand 'cue' property.
+ *
+ * <p> Examples:
+ * <PRE>
+ *   A {cue-before: url(bell.aiff); cue-after: url(dong.wav) }
+ *   H1 {cue-before: url(pop.au); cue-after: url(pop.au) }
+ *   H1 {cue: url(pop.au) }  / * same as previous * /
+ * </pre>
+ *
+ * <p class=comment>The <tt>:before</tt> and <tt>:after</tt>
+ * pseudo-elements (see frostings document) could be used to generate
+ * this content, rather than using two special-purpose properties. This
+ * would be more general.</p>
+ *
+ * @version $Revision: 1.3 $
+ */
+public class ACssCue extends ACssProperty implements CssOperator {
+
+    ACssCueBefore cueBefore;
+    ACssCueAfter cueAfter;
+
+    boolean same;
+
+    /**
+     * Create a new ACssCue
+     */
+    public ACssCue() {
+    }
+
+    /**
+     * Create a new ACssCue
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public ACssCue(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+	switch (expression.getCount()) {
+	case 1:
+	    same = true;
+	    cueBefore = new ACssCueBefore(ac, expression);
+	    cueAfter = new ACssCueAfter(cueBefore);
+	    break;
+	case 2:
+	    if (expression.getOperator() != SPACE) {
+		throw new InvalidParamException("operator",
+			(new Character(expression.getOperator()).toString()),
+			ac);
+	    }
+	    if(check && expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    cueBefore = new ACssCueBefore(ac, expression);
+	    if(check && expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    cueAfter = new ACssCueAfter(ac, expression);
+	    break;
+	default:
+	    if(check) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	}
+    }
+
+    public ACssCue(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return cueBefore;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "cue";
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	// cueBefore and cueAfter must be not null !
+	if (same) {
+	    return cueBefore.toString();
+	} else {
+	    return cueBefore + " " + cueAfter;
+	}
+    }
+
+    /**
+     * Set this property to be important.
+     * Overrides this method for a macro
+     */
+    public void setImportant() {
+	super.setImportant();
+	cueBefore.setImportant();
+	cueAfter.setImportant();
+    }
+
+    /**
+     * Returns true if this property is important.
+     * Overrides this method for a macro
+     */
+    public boolean getImportant() {
+	return ((cueAfter == null || cueAfter.getImportant()) &&
+		(cueBefore == null || cueBefore.getImportant()));
+    }
+
+    /**
+     * Print this property.
+     *
+     * @param printer The printer.
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	if ((cueBefore != null && cueAfter != null) &&
+	    (getImportant() ||
+	     (!cueBefore.getImportant() &&
+	      !cueAfter.getImportant()))) {
+	    printer.print(this);
+	} else {
+	    if (cueBefore != null)
+		cueBefore.print(printer);
+	    if (cueAfter != null && !same)
+		cueAfter.print(printer);
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	// cueBefore and cueAfter can't be null ...
+	((ACssStyle) style).acssCue.same = same;
+	cueBefore.addToStyle(ac, style);
+	cueAfter.addToStyle(ac, style);
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	super.setInfo(line, source);
+	// cueBefore and cueAfter can't be null ...
+	cueBefore.setInfo(line, source);
+	cueAfter.setInfo(line, source);
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors selector) {
+	super.setSelectors(selector);
+	if (cueBefore != null) {
+	    cueBefore.setSelectors(selector);
+	}
+	if (cueAfter != null) {
+	    cueAfter.setSelectors(selector);
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return false; // ????
+    }
+
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ACssStyle) style).getCue();
+	} else {
+	    return ((ACssStyle) style).acssCue;
+	}
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/aural/ACssCueAfter.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,177 @@
+//
+// $Id: ACssCueAfter.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.aural;
+
+import java.io.IOException;
+import java.net.URL;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.HTTPURL;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssIdent;
+import org.w3c.css.values.CssURL;
+import org.w3c.css.values.CssValue;
+
+/**
+ * &nbsp;&nbsp;  'cue-after'
+ *
+ * <P>
+ * <EM>Value: </EM> &lt;url&gt; | none<BR>
+ * <EM>Initial:</EM> none<BR>
+ * <EM>Applies to:</EM> all elements<BR>
+ * <EM>Inherited:</EM> no<BR>
+ * <EM>Percentage values:</EM> NA
+ *
+ * <P>Auditory icons are another way to distinguish semantic
+ * elements. Sounds may be played before, and/or after the element to
+ * delimit it. The same sound can be used both before and after, using the
+ * shorthand 'cue' property.
+ *
+ * <p> Examples:
+ * <PRE>
+ *   A {cue-before: url(bell.aiff); cue-after: url(dong.wav) }
+ *   H1 {cue-before: url(pop.au); cue-after: url(pop.au) }
+ *   H1 {cue: url(pop.au) }  / * same as previous * /
+ * </pre>
+ *
+ * <p class=comment>The <tt>:before</tt> and <tt>:after</tt>
+ * pseudo-elements (see frostings document) could be used to generate
+ * this content, rather than using two special-purpose properties. This
+ * would be more general.</p>
+ *
+ * @version $Revision: 1.3 $
+ */
+public class ACssCueAfter extends ACssProperty {
+
+    CssValue value;
+
+    private URL url;
+    private static CssIdent none = new CssIdent("none");
+
+    /**
+     * Create a new ACssCueAfter
+     */
+    public ACssCueAfter() {
+	value = none;
+    }
+
+    /**
+     * Create a new ACssCueAfter
+     */
+    public ACssCueAfter(ACssCueBefore cueBefore) {
+	value = cueBefore.value;
+    }
+
+    /**
+     * Creates a new ACssCueAfter
+     * @param value the value of the size
+     * @exception InvalidParamException The value is incorrect
+     */
+    public ACssCueAfter(ApplContext ac, CssExpression value, boolean check)
+    	throws InvalidParamException {
+
+	if(check && value.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = value.getValue();
+
+	if (val instanceof CssURL) {
+	    this.value = val;
+	    value.next();
+	    return;
+	} else if (val.equals(inherit)) {
+	    this.value = inherit;
+	    value.next();
+	    return;
+	} else if (val.equals(none)) {
+	    this.value = none;
+	    value.next();
+	    return;
+	}
+
+	throw new InvalidParamException("value", val.toString(),
+					getPropertyName(), ac);
+    }
+
+    public ACssCueAfter(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	if (value == none)
+	    return null;
+	else
+	    return value;
+    }
+
+
+    /**
+     * Returns some usable value of this property...
+     */
+    public URL getValue() throws IOException { // vm
+	if (value == none)
+	    return null;
+	else {
+	    if (url == null) {
+		url = HTTPURL.getURL(new URL(sourceFile), (String) value.get());
+	    }
+	    return url;
+	}
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value is equals to inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "cue-after";
+    }
+
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	ACssCue acssCue = ((ACssStyle) style).acssCue;
+	if (acssCue.cueAfter != null)
+	    style.addRedefinitionWarning(ac, this);
+	acssCue.cueAfter = this;
+    }
+
+    public boolean equals(CssProperty property) {
+	return (property instanceof ACssCueAfter && value.equals(((ACssCueAfter) property).value));
+    }
+
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ACssStyle) style).getCueAfter();
+	} else {
+	    return ((ACssStyle) style).acssCue.cueAfter;
+	}
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/aural/ACssCueBefore.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,176 @@
+//
+// $Id: ACssCueBefore.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.aural;
+
+import java.io.IOException;
+import java.net.URL;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.HTTPURL;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssIdent;
+import org.w3c.css.values.CssURL;
+import org.w3c.css.values.CssValue;
+
+/**
+ * &nbsp;&nbsp;  'cue-before'
+ *
+ * <P>
+ * <EM>Value: </EM> &lt;url&gt; | none<BR>
+ * <EM>Initial:</EM> none<BR>
+ * <EM>Applies to:</EM> all elements<BR>
+ * <EM>Inherited:</EM> no<BR>
+ * <EM>Percentage values:</EM> NA
+ *
+ * <P>Auditory icons are another way to distinguish semantic
+ * elements. Sounds may be played before, and/or after the element to
+ * delimit it. The same sound can be used both before and after, using the
+ * shorthand 'cue' property.
+ *
+ * <p> Examples:
+ * <PRE>
+ *   A {cue-before: url(bell.aiff); cue-after: url(dong.wav) }
+ *   H1 {cue-before: url(pop.au); cue-after: url(pop.au) }
+ *   H1 {cue: url(pop.au) }  / * same as previous * /
+ * </pre>
+ *
+ * <p class=comment>The <tt>:before</tt> and <tt>:after</tt>
+ * pseudo-elements (see frostings document) could be used to generate
+ * this content, rather than using two special-purpose properties. This
+ * would be more general.</p>
+ *
+ * @version $Revision: 1.3 $
+ */
+public class ACssCueBefore extends ACssProperty {
+
+    CssValue value;
+
+    private URL url;
+    private static CssIdent none = new CssIdent("none");
+
+    /**
+     * Create a new ACssCueBefore
+     */
+    public ACssCueBefore() {
+	// Initial is User Agent Specific
+	value = none;
+    }
+
+    /**
+     * Create a new ACssCueBefore
+     */
+    public ACssCueBefore(ACssCueAfter cueBefore) {
+	value = cueBefore.value;
+    }
+
+    /**
+     * Creates a new ACssCueBefore
+     * @param value the value of the size
+     * @exception InvalidParamException The value is incorrect
+     */
+    public ACssCueBefore(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	if (val instanceof CssURL) {
+	    value = val;
+	    expression.next();
+	    return;
+	} else if (val.equals(inherit)) {
+	    value = inherit;
+	    expression.next();
+	    return;
+	} else if (val.equals(none)) {
+	    value = none;
+	    expression.next();
+	    return;
+	}
+
+	throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+    }
+
+    public ACssCueBefore(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	if (value == none)
+	    return null;
+	else
+	    return value;
+    }
+
+    /**
+     * Returns some usable value of this property...
+     */
+    public URL getValue() throws IOException { // vm
+	if (value == none)
+	    return null;
+	else {
+	    if (url == null) {
+		url = HTTPURL.getURL(new URL(sourceFile), (String) value.get());
+	    }
+	    return url;
+	}
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value is equals to inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "cue-before";
+    }
+
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	ACssCue acssCue = ((ACssStyle) style).acssCue;
+	if (acssCue.cueBefore != null)
+	    style.addRedefinitionWarning(ac, this);
+	acssCue.cueBefore = this;
+    }
+
+    public boolean equals(CssProperty property) {
+	return (property instanceof ACssCueBefore && value.equals(((ACssCueBefore) property).value));
+    }
+
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ACssStyle) style).getCueBefore();
+	} else {
+	    return ((ACssStyle) style).acssCue.cueBefore;
+	}
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/aural/ACssElevation.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,171 @@
+//
+// $Id: ACssElevation.java,v 1.4 2005-09-14 15:14:18 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 org.w3c.css.properties.aural;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssAngle;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssIdent;
+import org.w3c.css.values.CssValue;
+
+
+/**
+ *
+ * @version $Revision: 1.4 $
+ */
+public class ACssElevation extends ACssProperty {
+
+    CssValue value;
+
+    private static int[] hash_values;
+
+    private static String[] ELEVATION = { "below", "level", "above",
+					  "highter", "lower" };
+
+
+    private static CssValue defaultValue = new CssIdent(ELEVATION[1]);
+    /**
+     * Create a new ACssElevation
+     */
+    public ACssElevation() {
+	value = defaultValue;
+    }
+
+    /**
+     * Creates a new ACssElevation
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public ACssElevation(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	this();
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	//int index;
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	    expression.next();
+	    return;
+	} else if (val instanceof CssIdent) {
+	    value = checkIdent(ac, (CssIdent) val);
+	    expression.next();
+	    return;
+	} else if (val instanceof CssAngle) {
+	    float v = ((CssAngle) val).getDegree();
+	    if (v > 90 && v < 270) {
+		throw new InvalidParamException("elevation.range", null, ac);
+	    }
+	    value = val;
+	    expression.next();
+	    return;
+	}
+
+	throw new InvalidParamException("value",
+					expression.getValue().toString(),
+					getPropertyName(), ac);
+    }
+
+    public ACssElevation(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "elevation";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value is equals to inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((ACssStyle) style).acssElevation != null)
+	    style.addRedefinitionWarning(ac, this);
+	((ACssStyle) style).acssElevation = this;
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param property The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof ACssElevation &&
+		value.equals(((ACssElevation) property).value));
+    }
+
+    private CssIdent checkIdent(ApplContext ac, CssIdent ident)
+	throws InvalidParamException {
+	int hash = ident.hashCode();
+	for (int i = 0; i < ELEVATION.length; i++) {
+	    if (hash_values[i] == hash) {
+		return ident;
+	    }
+	}
+
+	throw new InvalidParamException("value", ident.toString(),
+					getPropertyName(), ac);
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ACssStyle) style).getElevation();
+	} else {
+	    return ((ACssStyle) style).acssElevation;
+	}
+    }
+
+    static {
+	hash_values = new int[ELEVATION.length];
+	for (int i = 0; i < ELEVATION.length; i++)
+	    hash_values[i] = ELEVATION[i].hashCode();
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/aural/ACssInterpretAs.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,177 @@
+//
+// $Id: ACssInterpretAs.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.aural;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssDate;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssIdent;
+import org.w3c.css.values.CssTime;
+import org.w3c.css.values.CssValue;
+
+/**
+
+ *
+ * @version $Revision: 1.3 $
+ */
+public class ACssInterpretAs extends ACssProperty {
+
+    CssValue value;
+
+    private static CssTime defaultValue;
+
+	private static String[] interpretas = { "currency", "measure", "telephone", "address", "name", "net" };
+
+    /**
+     * Create a new ACssInterpretAs
+     */
+    public ACssInterpretAs() {
+	// Initial is User Agent Specific
+	if (defaultValue == null) {
+	    defaultValue = new CssTime(ACssProperties.getValue(this, "default"));
+	}
+	value = defaultValue;
+    }
+
+    /**
+     * Creates a new ACssInterpretAs
+     *
+     * @param expression the expression of the size
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public ACssInterpretAs(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	    expression.next();
+	    return;
+	} else if (val instanceof CssTime) {
+	    float num = ((Float) val.get()).floatValue();
+	    if (num < 0) {
+		throw new InvalidParamException("negative-value",
+			val.toString(), ac);
+	    }
+	    value = val;
+	    expression.next();
+	    return;
+	} else if (val instanceof CssDate) {
+	    value = val;
+	    expression.next();
+	    return;
+	} else if (val instanceof CssIdent) {
+	    for (int i=0; i < interpretas.length; i++) {
+		if (val.toString().equals(interpretas[i])) {
+		    value = val;
+		    expression.next();
+		    return;
+		}
+	    }
+	}
+
+	throw new InvalidParamException("value", val.toString(),
+		getPropertyName(), ac);
+    }
+
+    public ACssInterpretAs(ApplContext ac, CssExpression expression)
+    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns some usable value of this property...
+     */
+    public int getValue() { // vm
+	return ((Float) value.get()).intValue();
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value is equals to inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (value != null)
+	    return value.toString();
+	else
+	    return null;
+    }
+
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "interpret-as";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((ACssStyle) style).acssInterpretAs != null)
+	    style.addRedefinitionWarning(ac, this);
+	((ACssStyle) style).acssInterpretAs = this;
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	if (value != null) {
+	    return (property instanceof ACssInterpretAs &&
+		    value.equals(((ACssInterpretAs) property).value));
+	} else {
+	    return false;
+	}
+    }
+
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ACssStyle) style).getInterpretAs();
+	} else {
+	    return ((ACssStyle) style).acssInterpretAs;
+	}
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/aural/ACssPause.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,255 @@
+//
+// $Id: ACssPause.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.aural;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+
+/**
+ *  &nbsp;&nbsp; 'pause'
+ *
+ * <P>
+ * <EM>Value: </EM>[&lt;timee&gt; | &lt;percentage&gt; ]{1,2};<BR>
+ * <EM>Initial:</EM> UA specific<BR>
+ * <EM>Applies to:</EM> all elements<BR>
+ * <EM>Inherited:</EM> no<BR>
+ * <EM>Percentage values:</EM> NA<BR>
+ *
+ * <P>The 'pause' property is a shorthand for setting 'pause-before' and
+ * 'pause-after'.  If two values are given, the first value is
+ * pause-before and the second is pause-after. If only one value is
+ * given, it applies to both properties.
+ *
+ *
+ * <P>
+ * Examples:
+ * <PRE>
+ *   H1 { pause: 20ms } /* pause-before: 20ms; pause-after: 20ms * /
+ *   H2 { pause: 30ms 40ms } /* pause-before: 30ms; pause-after: 40ms * /
+ *   H3 { pause-after: 10ms } /* pause-before: ?; pause-after: 10ms * /
+ * </PRE>
+ *
+ *
+ * @version $Revision: 1.3 $
+ */
+public class ACssPause extends ACssProperty implements CssOperator {
+
+    ACssPauseBefore pauseBefore;
+    ACssPauseAfter pauseAfter;
+
+    boolean same;
+
+    /**
+     * Create a new ACssPause
+     */
+    public ACssPause() {
+    }
+
+    /**
+     * Create a new ACssPause
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public ACssPause(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+	CssValue val = expression.getValue();
+
+	if (val.equals(inherit)) {
+	    if(expression.getCount() > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    this.same = true;
+	    pauseBefore = new ACssPauseBefore(ac, expression);
+	    pauseAfter = new ACssPauseAfter(pauseBefore);
+	    return;
+	}
+
+	switch (expression.getCount()) {
+	case 1:
+	    this.same = true;
+	    pauseBefore = new ACssPauseBefore(ac, expression);
+	    pauseAfter = new ACssPauseAfter(pauseBefore);
+	    break;
+	case 2:
+	    if (expression.getOperator() != SPACE) {
+		throw new InvalidParamException("operator",
+						(new Character(expression.getOperator()).toString()),
+						ac);
+	    }
+	    pauseBefore = new ACssPauseBefore(ac, expression);
+	    pauseAfter = new ACssPauseAfter(ac, expression);
+	    break;
+	default:
+	    if(check) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	}
+    }
+
+    public ACssPause(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return pauseBefore;
+    }
+
+    /**
+     * Get the before property
+     */
+    public ACssPauseBefore getBefore() {
+	return pauseBefore;
+    }
+
+    /**
+     * Get the after property
+     */
+    public ACssPauseAfter getAfter() {
+	return pauseAfter;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "pause";
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	// pauseBefore and pauseAfter must be not null !
+	if (same) {
+	    return pauseBefore.toString();
+	} else {
+	    return pauseBefore + " " + pauseAfter;
+	}
+    }
+
+    /**
+     * Set this property to be important.
+     * Overrides this method for a macro
+     */
+    public void setImportant() {
+	super.setImportant();
+	pauseBefore.setImportant();
+	pauseAfter.setImportant();
+    }
+
+    /**
+     * Returns true if this property is important.
+     * Overrides this method for a macro
+     */
+    public boolean getImportant() {
+	return ((pauseAfter == null || pauseAfter.getImportant()) &&
+		(pauseBefore == null || pauseBefore.getImportant()));
+    }
+
+    /**
+     * Print this property.
+     *
+     * @param printer The printer.
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	if ((pauseBefore != null && pauseAfter != null) &&
+	    (getImportant() ||
+	     (!pauseBefore.getImportant() &&
+	      !pauseAfter.getImportant()))) {
+	    printer.print(this);
+	} else {
+	if (pauseBefore != null) {
+		pauseBefore.print(printer);
+	    }
+	    if (pauseAfter != null && !same) {
+		pauseAfter.print(printer);
+	    }
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	// pauseBefore and pauseAfter can't be null ...
+	((ACssStyle) style).acssPause.same = same;
+	pauseBefore.addToStyle(ac, style);
+	pauseAfter.addToStyle(ac, style);
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	super.setInfo(line, source);
+	// pauseBefore and pauseAfter can't be null ...
+	pauseBefore.setInfo(line, source);
+	pauseAfter.setInfo(line, source);
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return false; // @FIXME
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors selector) {
+	super.setSelectors(selector);
+	if (pauseBefore != null) {
+	    pauseBefore.setSelectors(selector);
+	}
+	if (pauseAfter != null) {
+	    pauseAfter.setSelectors(selector);
+	}
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ACssStyle) style).getPause();
+	} else {
+	    return ((ACssStyle) style).acssPause;
+	}
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/aural/ACssPauseAfter.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,188 @@
+//
+// $Id: ACssPauseAfter.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.aural;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssTime;
+import org.w3c.css.values.CssValue;
+
+/**
+ * &nbsp;&nbsp;  'pause-after'
+ *
+ * <P>
+ * <EM>Value: </EM>&lt;time&gt;  | &lt;percentage&gt;<BR>
+ * <EM>Initial:</EM> UA specific<BR>
+ * <EM>Applies to:</EM> all elements<BR>
+ * <EM>Inherited:</EM> no<BR>
+ * <EM>Percentage values:</EM> NA<BR>
+ *
+ * <P>This property specifies the pause after an element is spoken. Values are
+ * specified the same way as 'pause-before'.
+ *
+ * @version $Revision: 1.3 $
+ */
+public class ACssPauseAfter extends ACssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new ACssPauseAfter
+     */
+    public ACssPauseAfter() {
+	// Initial is User Agent Specific
+	if (defaultValue == null) {
+	    defaultValue = new CssTime(ACssProperties.getValue(this, "default"));
+	}
+	value = defaultValue;
+    }
+
+    /**
+     * Create a new ACssPauseAfter
+     */
+    public ACssPauseAfter(ACssPauseBefore pauseBefore) {
+	value = pauseBefore.value;
+    }
+
+    /**
+     * Creates a new ACssPauseAfter
+     *
+     * @param expression the expression of the size
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public ACssPauseAfter(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+	if (val.equals(inherit)) {
+	    value = inherit;
+	    expression.next();
+	    return;
+	} else if (val instanceof CssPercentage) {
+	    float num = ((Float) val.get()).floatValue();
+	    if (num < 0)
+		throw new InvalidParamException("negative-value", val.toString(),
+						ac);
+	    value = val;
+	    expression.next();
+	    return;
+	} else if (val instanceof CssTime) {
+	    float num = ((Float) val.get()).floatValue();
+	    if (num < 0) {
+		throw new InvalidParamException("negative-value", val.toString(),
+						ac);
+	    }
+	    value = val;
+	    expression.next();
+	    return;
+	} else if (val instanceof CssNumber) {
+	    value = ((CssNumber) val).getTime();
+	    expression.next();
+	}
+
+	throw new InvalidParamException("value", val.toString(), getPropertyName(),
+					ac);
+    }
+
+    public ACssPauseAfter(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns some usable value of this property...
+     */
+    public int getValue() { // vm
+	return ((Float) value.get()).intValue();
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value is equals to inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (value != null)
+	    return value.toString();
+	else
+	    return null;
+    }
+
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "pause-after";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	ACssPause acssPause = ((ACssStyle) style).acssPause;
+	if (acssPause.pauseAfter != null)
+	    style.addRedefinitionWarning(ac, this);
+	acssPause.pauseAfter = this;
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	if (value != null)
+	    return (property instanceof ACssPauseAfter &&
+		    value.equals(((ACssPauseAfter) property).value));
+	else
+	    return false;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ACssStyle) style).getPauseAfter();
+	} else {
+	    return ((ACssStyle) style).acssPause.pauseAfter;
+	}
+    }
+
+    private static CssTime defaultValue;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/aural/ACssPauseBefore.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,193 @@
+//
+// $Id: ACssPauseBefore.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.aural;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssTime;
+import org.w3c.css.values.CssValue;
+
+/**
+ * &nbsp;&nbsp; 'pause-before'
+ *
+ * <P>
+ * <EM>Value: </EM>&lt;time&gt; | &lt;percentage&gt;<BR>
+ * <EM>Initial:</EM> UA specific<BR>
+ * <EM>Applies to:</EM> all elements<BR>
+ * <EM>Inherited:</EM> no<BR>
+ * <EM>Percentage values:</EM> NA<BR>
+ *
+ * <P>This property specifies the pause before an element is spoken. It
+ * may be given in an absolute units (seconds, milliseconds) or as a
+ * relative value - in which case it is relative to the reciprocal of the
+ * 'speed' property: if speed is 120 words per minute (ie a word takes
+ * half a second, 500 milliseconds) then a pause-before of 100% means a
+ * pause of 500 ms and a pause-before of 20% means 100ms.
+ *
+ * <p>Using relative units gives more robust stylesheets in the face of
+ * large changes in speed and is recommended practice.
+ *
+ * @version $Revision: 1.3 $
+ */
+public class ACssPauseBefore extends ACssProperty {
+
+    CssValue value;
+
+    private static CssTime defaultValue;
+
+    /**
+     * Create a new ACssPauseBefore
+     */
+    public ACssPauseBefore() {
+	// Initial is User Agent Specific
+	if (defaultValue == null) {
+	    defaultValue = new CssTime(ACssProperties.getValue(this, "default"));
+	}
+	value = defaultValue;
+    }
+
+    /**
+     * Creates a new ACssPauseBefore
+     *
+     * @param expression the expression of the size
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public ACssPauseBefore(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	    expression.next();
+	    return;
+	} else if (val instanceof CssPercentage) {
+	    float num = ((Float) val.get()).floatValue();
+	    if (num < 0) {
+		throw new InvalidParamException("negative-value",
+						val.toString(), ac);
+	    }
+	    value = val;
+	    expression.next();
+	    return;
+	} else if (val instanceof CssTime) {
+	    float num = ((Float) val.get()).floatValue();
+	    if (num < 0) {
+		throw new InvalidParamException("negative-value",
+						val.toString(), ac);
+	    }
+	    value = val;
+	    expression.next();
+	    return;
+	} else if (val instanceof CssNumber) {
+	    value = ((CssNumber) val).getTime();
+	    expression.next();
+	}
+
+	throw new InvalidParamException("value", val.toString(),
+					getPropertyName(), ac);
+    }
+
+    public ACssPauseBefore(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns some usable value of this property...
+     */
+    public int getValue() { // vm
+	return ((Float) value.get()).intValue();
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value is equals to inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (value != null)
+	    return value.toString();
+	else
+	    return null;
+    }
+
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "pause-before";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	ACssPause acssPause = ((ACssStyle) style).acssPause;
+	if (acssPause.pauseBefore != null)
+	    style.addRedefinitionWarning(ac, this);
+	acssPause.pauseBefore = this;
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	if (value != null) {
+	    return (property instanceof ACssPauseBefore &&
+		    value.equals(((ACssPauseBefore) property).value));
+	} else {
+	    return false;
+	}
+    }
+
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ACssStyle) style).getPauseBefore();
+	} else {
+	    return ((ACssStyle) style).acssPause.pauseBefore;
+	}
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/aural/ACssPhonemes.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,150 @@
+//
+// $Id: ACssPhonemes.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.aural;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssString;
+import org.w3c.css.values.CssValue;
+
+/**
+
+ *
+ * @version $Revision: 1.3 $
+ */
+public class ACssPhonemes extends ACssProperty {
+
+    CssValue value;
+
+
+    /**
+     * Create a new ACssPhonemes
+     */
+    public ACssPhonemes() {
+    }
+
+    /**
+     * Creates a new ACssPhonemes
+     *
+     * @param expression the expression of the size
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public ACssPhonemes(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	    expression.next();
+	    return;
+	} else if (val instanceof CssString) {
+	    value = val;
+	    expression.next();
+	    return;
+	}
+
+	throw new InvalidParamException("value", val.toString(),
+					getPropertyName(), ac);
+    }
+
+    public ACssPhonemes(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns some usable value of this property...
+     */
+    public int getValue() { // vm
+		return 0;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value is equals to inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (value != null)
+	    return value.toString();
+	else
+	    return null;
+    }
+
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "phonemes";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((ACssStyle) style).acssPhonemes != null)
+	    style.addRedefinitionWarning(ac, this);
+	((ACssStyle) style).acssPhonemes = this;
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	if (value != null) {
+	    return (property instanceof ACssPhonemes &&
+		    value.equals(((ACssPhonemes) property).value));
+	} else {
+	    return false;
+	}
+    }
+
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ACssStyle) style).getPhonemes();
+	} else {
+	    return ((ACssStyle) style).acssPhonemes;
+	}
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/aural/ACssPitch.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,173 @@
+//
+// $Id: ACssPitch.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.aural;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssFrequency;
+import org.w3c.css.values.CssIdent;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  &nbsp;&nbsp; 'pitch' <span>(or 'average pitch'
+ * ?, what is the relationship with voice-family?)</span>
+ *
+ * <P>
+ * <EM>Value: </EM>&lt;hertz&gt; | x-low | low | medium | high | x-high<BR>
+ * <EM>Initial:</EM> medium<BR>
+ * <EM>Applies to:</EM> all elements<BR>
+ * <EM>Inherited:</EM> yes<BR>
+ * <EM>Percentage values:</EM> NA
+ *
+ * <p>Specifies the average pitch of the speaking voice in hertz (Hz).
+ *
+ * @version $Revision: 1.3 $
+ */
+public class ACssPitch extends ACssProperty {
+
+    CssValue value;
+
+
+    private static int[] hash_values;
+
+    private static String[] PITCH = { "x-low", "low", "medium",
+				      "high", "x-high" };
+
+    private static CssIdent defaultValue = new CssIdent(PITCH[2]);
+
+    /**
+     * Create a new ACssPitch
+     */
+    public ACssPitch() {
+	value = defaultValue;
+    }
+
+    /**
+     * Creates a new ACssPitch
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public ACssPitch(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	this();
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    val = inherit;
+	} else if (val instanceof CssIdent) {
+	    value = checkIdent(ac,(CssIdent) val);
+	} else if (val instanceof CssFrequency) {
+	    value = val;
+	} else {
+	    throw new InvalidParamException("value",
+					    expression.getValue().toString(),
+					    getPropertyName(), ac);
+	}
+
+	expression.next();
+    }
+
+    public ACssPitch(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+
+    /**
+     * Returns some usable value of this property...
+     */
+    public int getValue() { // vm
+	return ((Float) value.get()).intValue();
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "pitch";
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((ACssStyle) style).acssPitch != null)
+	    style.addRedefinitionWarning(ac, this);
+	((ACssStyle) style).acssPitch = this;
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param property The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof ACssPitch &&
+		value.equals(((ACssPitch) property).value));
+    }
+
+    private CssIdent checkIdent(ApplContext ac, CssIdent ident) throws InvalidParamException {
+	int hash = ident.hashCode();
+	for (int i = 0; i < PITCH.length; i++) {
+	    if (hash_values[i] == hash) {
+		return ident;
+	    }
+	}
+
+	throw new InvalidParamException("value",
+					ident.toString(),
+					getPropertyName(), ac);
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ACssStyle) style).getPitch();
+	} else {
+	    return ((ACssStyle) style).acssPitch;
+	}
+    }
+
+    static {
+	hash_values = new int[PITCH.length];
+	for (int i = 0; i < PITCH.length; i++)
+	    hash_values[i] = PITCH[i].hashCode();
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/aural/ACssPitchRange.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,156 @@
+//
+// $Id: ACssPitchRange.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.aural;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+
+/**
+ * <H3> &nbsp;&nbsp; 'pitch-range' <span class="notes">(could be
+ * combined with 'pitch' ?) or 'inflection'</span></H3>
+ *
+ * <P>
+ * <EM>Value: </EM>&lt;number&gt;|inherit<BR>
+ * <em>Initial:</EM>50%<BR>
+ * <EM>Applies to:</EM> all elements<BR>
+ * <EM>Inherited:</EM> yes<BR>
+ * <EM>Percentage values:</EM> relative to..
+ *
+ * <p>Specifies variation in average pitch. A pitch range of 0% produces
+ * a flat, monotonic voice. A pitch range of 50% produces normal
+ * inflection.  Pitch ranges greater than 50% produce animated voices.
+ *
+ *
+ * @version $Revision: 1.3 $
+ */
+public class ACssPitchRange extends ACssProperty {
+
+    CssValue value;
+
+    static CssValue DefaultValue = new CssNumber(null, 50);
+
+    /**
+     * Create a new ACssPitchRange
+     */
+    public ACssPitchRange() {
+	value = DefaultValue;
+    }
+
+    /**
+     * Creates a new ACssPitchRange
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public ACssPitchRange(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	this();
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	int index;
+
+	setByUser();
+	if (val.equals(inherit)) {
+	    value = inherit;
+	    expression.next();
+	    return;
+	} else if (val instanceof CssNumber) {
+	    float f = ((CssNumber) val).getValue();
+	    if ((f < 0) || (f > 100)) {
+		throw new InvalidParamException("range", null, ac);
+	    }
+	    value = val;
+	    expression.next();
+	    return;
+	}
+
+	throw new InvalidParamException("value",
+					expression.getValue().toString(),
+					getPropertyName(), ac);
+    }
+
+    public ACssPitchRange(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "pitch-range";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value is equals to inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((ACssStyle) style).acssPitchRange != null)
+	    style.addRedefinitionWarning(ac, this);
+	((ACssStyle) style).acssPitchRange = this;
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param property The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof ACssPitchRange &&
+		value.equals(((ACssPitchRange) property).value));
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ACssStyle) style).getPitchRange();
+	} else {
+	    return ((ACssStyle) style).acssPitchRange;
+	}
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/aural/ACssPlayDuring.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,324 @@
+//
+// $Id: ACssPlayDuring.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.aural;
+
+import java.io.IOException;
+import java.net.URL;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssOperator;
+import org.w3c.css.values.CssURL;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  &nbsp;&nbsp;'play-during'
+ *
+ * <P>
+ * <EM>Value: </EM> &lt;url&gt; mix? repeat? | auto | none<BR>
+ * <EM>Initial:</EM> auto<BR>
+ * <EM>Applies to:</EM> all elements<BR>
+ * <EM>Inherited:</EM> no<BR>
+ * <EM>Percentage values:</EM> NA
+ *
+ * <p>Similar to the cue-before and cue-after properties, this indicates
+ * sound to be played during an element as a background (ie the sound is
+ * mixed in with the speech).
+ *
+ * <p>The optional 'mix' keyword means the sound inherited from the parent
+ * element's play-during property continues to play and the current
+ * element sound (pointed to by the URL) is mixed with it. If mix is not
+ * specified, the sound replaces the sound of the parent element.
+ *
+ * <p>The optional 'repeat' keyword means the sound will repeat if it is
+ * too short to fill the entire duration of the element. Without this
+ * keyword, the sound plays once and then stops. Thuis is similar to the
+ * background repeat properties in CSS1. If the sound is too long for the
+ * element, it is clipped once the element is spoken.
+ *
+ * <p>Auto
+ * means that the sound of the parent element continues to play
+ * (it is not restarted, which would have been the case if
+ * this property inherited)and none means that there is silence -
+ * the sound of the parent element (if any) is silent for the current
+ * element and continues after the current element.
+ *
+ * <!-- cut for now <p class=comment>What happens with mixed-mode
+ * rendering if an element is displayed onscreen rather than being
+ * spoken, yet has a play-during property? Do we need a property that
+ * switches between visual, aural, and other modes on a per-element
+ * basis? Need synchronised multimedia feedback on this.  --> <!-- volume
+ * wrt speech?? fade in and out? -->
+ *
+ *
+ * <p> Examples:
+ * <PRE>
+ *   BLOCKQUOTE.sad {play-during: url(violins.aiff) }
+ *   BLOCKQUOTE Q {play-during: url(harp.wav) mix}
+ *   SPAN.quiet {play-during: none }
+ * </pre>
+ *
+ * <p><b>Note:</b> If a stereo icon is dereferenced the central point of
+ * the stereo pair should be placed at the azimuth for that element and
+ * the left and right channels should be placed to either side of this
+ * position.
+ *
+ * @version $Revision: 1.3 $
+ */
+public class ACssPlayDuring extends ACssProperty implements CssOperator {
+
+    CssValue value;
+    boolean mix;
+    boolean repeat;
+
+    private URL url;
+
+    private static CssIdent NONE = new CssIdent("none");
+    private static CssIdent AUTO = new CssIdent("auto");
+    private static CssIdent MIX = new CssIdent("mix");
+    private static CssIdent REPEAT = new CssIdent("repeat");
+
+    /**
+     * Create a new ACssPlayDuring
+     */
+    public ACssPlayDuring() {
+	value = AUTO;
+    }
+
+    /**
+     * Creates a new ACssPlayDuring
+     * @param expression the expression of the size
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public ACssPlayDuring(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	int valuesNb = expression.getCount();
+
+	if(check && valuesNb > 3) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	if (val instanceof CssURL) {
+	    this.value = val;
+	    if (valuesNb == 3) {
+		if (expression.getOperator() != SPACE) {
+		    throw new InvalidParamException("operator",
+			    (new Character(expression.getOperator()).toString()),
+			    ac);
+		}
+		expression.next();
+		if (expression.getOperator() != SPACE) {
+		    throw new InvalidParamException("operator",
+			    (new Character(expression.getOperator()).toString()),
+			    ac);
+		}
+		val = expression.getValue();
+		if (!val.equals(MIX) && !val.equals(REPEAT)) {
+		    throw new InvalidParamException("few-value",
+			    getPropertyName(), ac);
+		}
+		else if(!val.equals(MIX)) {
+		    mix = true;
+		}
+		else { // val = REPEAT
+		    repeat = true;
+		}
+		expression.next();
+		val = expression.getValue();
+		if (mix && val.equals(REPEAT)) {
+		    repeat = true;
+		}
+		else if(repeat && val.equals(MIX)) {
+		    mix = true;
+		}
+		else {
+		    throw new InvalidParamException("unrecognize", ac);
+		}
+	    } else if (valuesNb == 2) {
+		if (expression.getOperator() != SPACE) {
+		    throw new InvalidParamException("operator",
+			    (new Character(expression.getOperator()).toString()),
+			    ac);
+		}
+		expression.next();
+		val = expression.getValue();
+		if (val.equals(MIX)) {
+		    mix = true;
+		} else if (val.equals(REPEAT)) {
+		    repeat = true;
+		} else {
+		    throw new InvalidParamException("unrecognize", ac);
+		}
+	    }
+	    expression.next();
+	    return;
+	} else if (val.equals(inherit)) {
+	    if(check && valuesNb > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    this.value = inherit;
+	    expression.next();
+	    return;
+	} else if (val.equals(NONE)) {
+	    if(check && valuesNb > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    this.value = NONE;
+	    expression.next();
+	    return;
+	} else if (val.equals(AUTO)) {
+	    if(check && valuesNb > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    this.value = AUTO;
+	    expression.next();
+	    return;
+	}
+
+	throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+    }
+
+    public ACssPlayDuring(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns some usable value of this property...
+     */
+    public URL getValue() throws IOException { // vm
+	if (value == NONE || value == AUTO || value == inherit)
+	    return null;
+	else {
+	    if (url == null) {
+		url = new URL((String) value.get());
+	    }
+	    return url;
+	}
+    }
+
+    /**
+     * The optional 'mix' keyword means the sound inherited from the parent
+     * element's play-during property continues to play and the current
+     * element sound (pointed to by the URL) is mixed with it. If mix is not
+     * specified, the sound replaces the sound of the parent element.
+     */
+    public boolean isMix() {
+	return mix;
+    }
+
+    /**
+     * The optional 'repeat' keyword means the sound will repeat if it is
+     * too short to fill the entire duration of the element. Without this
+     * keyword, the sound plays once and then stops. Thuis is similar to the
+     * background repeat properties in CSS1. If the sound is too long for the
+     * element, it is clipped once the element is spoken.
+     */
+    public boolean isRepeat() {
+	return repeat;
+    }
+
+    /**
+     * 'auto' means that the sound of the parent element continues to play
+     * (it is not restarted, which would have been the case if
+     * this property inherited).
+     */
+    public boolean isAuto() {
+	return value == AUTO;
+    }
+
+    /**
+     * 'none' means that there is silence.
+     * the sound of the parent element (if any) is silent for the current
+     * element and continues after the current element.
+     */
+    public boolean isNone() {
+	return value == NONE;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value is equals to inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (value == NONE || value == AUTO || value == inherit) {
+	    return value.toString();
+	} else {
+	    String ret = value.toString();
+	    if (mix)
+		ret += " mix";
+	    if (repeat)
+		ret += " repeat";
+	    return ret;
+	}
+    }
+
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "play-during";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((ACssStyle) style).acssPlayDuring != null)
+	    style.addRedefinitionWarning(ac, this);
+	((ACssStyle) style).acssPlayDuring = this;
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param property The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof ACssPlayDuring &&
+		value.equals(((ACssPlayDuring) property).value));
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ACssStyle) style).getPlayDuring();
+	} else {
+	    return ((ACssStyle) style).acssPlayDuring;
+	}
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/aural/ACssProperties.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,75 @@
+//
+// $Id: ACssProperties.java,v 1.2 2005-09-14 15:14:18 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 org.w3c.css.properties.aural;
+
+import java.net.URL;
+
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.Utf8Properties;
+
+/**
+ * @version $Revision: 1.2 $
+ */
+public class ACssProperties {
+    public static Utf8Properties properties;
+
+    public static Utf8Properties UAproperties;
+
+    public static Float getValue(CssProperty property, String prop) {
+	String value = UAproperties.getProperty(property.getPropertyName()
+		+ "." + prop);
+	if (value == null) {
+	    System.err.println("Can't find value for "
+		    + property.getPropertyName() + "." + prop);
+	    return null;
+	} else {
+	    try {
+		return Float.valueOf(value);
+	    } catch (NumberFormatException e) {
+		System.err.println(e);
+		System.err.println("Only float value are valid in properties");
+		return null;
+	    }
+	}
+    }
+
+    public static String getString(CssProperty property, String prop) {
+	return properties.getProperty(property.getPropertyName() + "." + prop);
+    }
+
+    public static boolean getInheritance(CssProperty property) {
+	return getString(property, "inherited").equals("true");
+    }
+
+    static {
+	UAproperties = new Utf8Properties();
+	try {
+	    URL url = ACssProperties.class
+	    .getResource("AuralDefault.properties");
+	    java.io.InputStream f = url.openStream();
+	    UAproperties.load(f);
+	    f.close();
+	} catch (Exception e) {
+	    System.err
+	    .println("CSS.ACSSProperties.ACssProperties: couldn't load UA properties ");
+	    System.err.println("  " + e.toString());
+	}
+
+	properties = new Utf8Properties();
+	try {
+	    URL url = ACssProperties.class
+	    .getResource("ACSSDefault.properties");
+	    java.io.InputStream f = url.openStream();
+	    properties.load(f);
+	    f.close();
+	} catch (Exception e) {
+	    System.err
+	    .println("CSS.ACSSProperties.ACssProperties: couldn't load properties ");
+	    System.err.println("  " + e.toString());
+	}
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/aural/ACssProperty.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,24 @@
+//
+// $Id: ACssProperty.java,v 1.2 2005-09-08 12:23:33 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 org.w3c.css.properties.aural;
+
+import org.w3c.css.properties.css1.CssProperty;
+
+/**
+ * @version $Revision: 1.2 $
+ */
+public abstract class ACssProperty extends CssProperty {
+
+  /**
+   * Returns true if the property is inherited
+   */
+  public boolean Inherited() {
+    return ACssProperties.getInheritance(this);
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/aural/ACssRichness.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,154 @@
+//
+// $Id: ACssRichness.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.aural;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+
+/**
+ * <H3> &nbsp;&nbsp 'richness' ('brightness' ?)</H3>
+ * <P>
+ * <EM>Value: </EM>&lt;number&gt;|inherit<BR>
+ * <em>Initial:</EM> 50%<BR>
+ * <EM>Applies to:</EM> all elements<BR>
+ * <EM>Inherited:</EM> yes<BR>
+ * <EM>Percentage values:</EM> Relative to...
+ *
+ * <P>Specifies the richness (brightness) of the speaking voice. The
+ * effect of increasing richness is to produce a voice that
+ * <em>carries</em> --reducing richness produces a soft, mellifluous
+ * voice.
+ *
+ * @version $Revision: 1.3 $
+ */
+public class ACssRichness extends ACssProperty {
+
+    CssValue value;
+
+    static CssValue DefaultValue = new CssNumber(null, 50);
+
+    /**
+     * Create a new ACssRichness
+     */
+    public ACssRichness() {
+	value = DefaultValue;
+    }
+
+    /**
+     * Creates a new ACssRichness
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public ACssRichness(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	this();
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	int index;
+
+	setByUser();
+	if (val.equals(inherit)) {
+	    value = inherit;
+	    expression.next();
+	    return;
+	} else if (val instanceof CssNumber) {
+	    float f = ((CssNumber) val).getValue();
+	    if ((f < 0) || (f > 100)) {
+		throw new InvalidParamException("range", null, ac);
+	    }
+	    value = val;
+	    expression.next();
+	    return;
+	}
+
+	throw new InvalidParamException("value",
+					expression.getValue().toString(),
+					getPropertyName(), ac);
+    }
+
+    public ACssRichness(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "richness";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value is equals to inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((ACssStyle) style).acssRichness != null)
+	    style.addRedefinitionWarning(ac, this);
+	((ACssStyle) style).acssRichness = this;
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param property The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof ACssRichness &&
+		value.equals(((ACssRichness) property).value));
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ACssStyle) style).getRichness();
+	} else {
+	    return ((ACssStyle) style).acssRichness;
+	}
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/aural/ACssSpeak.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,161 @@
+//
+// $Id: ACssSpeak.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.aural;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+
+/**
+ *  &nbsp;&nbsp; 'speak'
+ *
+ * @version $Revision: 1.3 $
+ */
+public class ACssSpeak extends ACssProperty {
+
+    CssValue value;
+
+    private static int[] hash_values;
+
+    private static String[] SPEAK = { "normal", "none", "spell-out" };
+
+    private static CssIdent defaultValue = new CssIdent(SPEAK[1]);
+
+    /**
+     * Create a new ACssSpeak
+     */
+    public ACssSpeak() {
+	value = defaultValue;
+    }
+
+    /**
+     * Creates a new ACssSpeak
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public ACssSpeak(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+	this();
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	int index;
+
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	} else if (val instanceof CssIdent) {
+	    value = checkIdent(ac, (CssIdent) val);
+	} else {
+	    throw new InvalidParamException("value",
+					    expression.getValue().toString(),
+					    getPropertyName(), ac);
+	}
+
+	expression.next();
+    }
+
+    public ACssSpeak(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "speak";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value is equals to inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((ACssStyle) style).acssSpeak != null)
+	    style.addRedefinitionWarning(ac, this);
+	((ACssStyle) style).acssSpeak = this;
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param property The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof ACssSpeak &&
+		value.equals(((ACssSpeak) property).value));
+    }
+
+    private CssIdent checkIdent(ApplContext ac, CssIdent ident)
+	throws InvalidParamException {
+
+	int hash = ident.hashCode();
+	for (int i = 0; i < SPEAK.length; i++) {
+	    if (hash_values[i] == hash) {
+		return ident;
+	    }
+	}
+
+	throw new InvalidParamException("value", ident.toString(),
+					getPropertyName(), ac);
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ACssStyle) style).getSpeak();
+	} else {
+	    return ((ACssStyle) style).acssSpeak;
+	}
+    }
+
+    static {
+	hash_values = new int[SPEAK.length];
+	for (int i = 0; i < SPEAK.length; i++)
+	    hash_values[i] = SPEAK[i].hashCode();
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/aural/ACssSpeakCSS3.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,160 @@
+//
+// $Id: ACssSpeakCSS3.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.aural;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  &nbsp;&nbsp; 'speak'
+ *
+ * @version $Revision: 1.3 $
+ */
+public class ACssSpeakCSS3 extends CssProperty {
+
+    CssValue value;
+
+    private static int[] hash_values;
+
+    private static String[] SPEAK = { "normal", "none", "spell-out", "digits", "literal-punctuation", "no-punctuation", "inherit" };
+
+    private static CssIdent defaultValue = new CssIdent(SPEAK[1]);
+
+    /**
+     * Create a new ACssSpeakCSS3
+     */
+    public ACssSpeakCSS3() {
+	value = defaultValue;
+    }
+
+    /**
+     * Creates a new ACssSpeakCSS3
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public ACssSpeakCSS3(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	this();
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	int index;
+
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	} else if (val instanceof CssIdent) {
+	    value = checkIdent(ac, (CssIdent) val);
+	} else {
+	    throw new InvalidParamException("value",
+					    expression.getValue().toString(),
+					    getPropertyName(), ac);
+	}
+
+	expression.next();
+    }
+
+    public ACssSpeakCSS3(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+		return "speak";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value is equals to inherit
+     */
+    public boolean isSoftlyInherited() {
+		return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+		return value.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((ACssStyle) style).acssSpeakCSS3 != null)
+	    style.addRedefinitionWarning(ac, this);
+	((ACssStyle) style).acssSpeakCSS3 = this;
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param property The other property.
+     */
+    public boolean equals(CssProperty property) {
+		return (property instanceof ACssSpeakCSS3 &&
+			value.equals(((ACssSpeakCSS3) property).value));
+    }
+
+    private CssIdent checkIdent(ApplContext ac, CssIdent ident)
+	throws InvalidParamException {
+
+		int hash = ident.hashCode();
+		for (int i = 0; i < SPEAK.length; i++) {
+		    if (hash_values[i] == hash) {
+				return ident;
+		    }
+		}
+
+		throw new InvalidParamException("value", ident.toString(),
+					getPropertyName(), ac);
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ACssStyle) style).getSpeakCSS3();
+	} else {
+	    return ((ACssStyle) style).acssSpeakCSS3;
+	}
+    }
+
+    static {
+	hash_values = new int[SPEAK.length];
+	for (int i = 0; i < SPEAK.length; i++)
+	    hash_values[i] = SPEAK[i].hashCode();
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/aural/ACssSpeakDate.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,152 @@
+//
+// $Id: ACssSpeakDate.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.aural;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ * <H3>&nbsp;&nbsp 'speak-date'</H3>
+ * <P>
+ * <EM>Value: </EM> myd | dmy | ymd <BR>
+ * <EM>Initial:</EM> (Browser-specific)<BR>
+ * <EM>Applies to:</EM> all elements<BR>
+ * <EM>Inherited:</EM> yes<BR>
+ * <EM>Percentage values:</EM> NA
+ *
+ * <p>This is a request about how any
+ * dates should be spoken. month-day-year is common in the USA, while
+ * day-month-year is common in Europe and year-month-day is also used.
+
+ * <p class=comment>This would be most useful when combined with a new
+ * HTML tag used to identify dates, such as this theoretical example:
+ *
+ * <pre>
+ *    &lt;p&gt;The campaign started on &lt;date value="1874-oct-21"&gt;
+ *    the twenty-first of that month&lt;/date&gt; and finished
+ *    &lt;date value="1874-oct-28"&gt;a week later&lt;/date&gt;
+ * </pre>
+ *
+ *
+ * @version $Revision: 1.3 $
+ */
+public class ACssSpeakDate extends ACssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new ACssSpeakDate
+     */
+    public ACssSpeakDate() {
+	value = myd; // browser specific
+    }
+
+    /**
+     * Creates a new ACssSpeakDate
+     *
+     * @param expression the expression of the size
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public ACssSpeakDate(ApplContext ac, CssExpression expression, boolean check)
+    throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	if (val.equals(dmy)) {
+	    value = dmy;
+	    expression.next();
+	    return;
+	} else if (val.equals(ymd)) {
+	    value = ymd;
+	    expression.next();
+	    return;
+	} else if (val.equals(myd)) {
+	    value = myd;
+	    expression.next();
+	    return;
+	}
+
+	throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+    }
+
+    public ACssSpeakDate(ApplContext ac, CssExpression expression)
+    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "speak-date";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((ACssStyle) style).acssSpeakDate != null)
+	    ((ACssStyle) style).addRedefinitionWarning(ac, this);
+	((ACssStyle) style).acssSpeakDate = this;
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof ACssSpeakDate &&
+		value.equals(((ACssSpeakDate) property).value));
+    }
+
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ACssStyle) style).getSpeakDate();
+	} else {
+	    return ((ACssStyle) style).acssSpeakDate;
+	}
+    }
+
+    private static CssIdent myd = new CssIdent("myd");
+    private static CssIdent dmy = new CssIdent("dmy");
+    private static CssIdent ymd = new CssIdent("ymd");
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/aural/ACssSpeakNumeral.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,152 @@
+//
+// $Id: ACssSpeakNumeral.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.aural;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ * <H3> &nbsp;&nbsp 'speak-numeral'</H3>
+ * <P>
+ * <EM>Value: </EM> digits | continous | none<BR>
+ * <EM>Initial:</EM> none<BR>
+ * <EM>Applies to:</EM> all elements<BR>
+ * <EM>Inherited:</EM> yes<BR>
+ * <EM>Percentage values:</EM> NA
+ *
+ *
+ * @version $Revision: 1.3 $
+ */
+public class ACssSpeakNumeral extends ACssProperty {
+
+    CssValue value;
+
+    private static CssIdent none = new CssIdent("none");
+    private static CssIdent digits = new CssIdent("digits");
+    private static CssIdent continuous = new CssIdent("continuous");
+
+    /**
+     * Create a new ACssSpeakNumeral
+     */
+    public ACssSpeakNumeral() {
+	value = none;
+    }
+
+    /**
+     * Creates a new ACssSpeakNumeral
+     *
+     * @param expression the expression of the size
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public ACssSpeakNumeral(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	    expression.next();
+	    return;
+	} else if (val.equals(none)) {
+	    value = none;
+	    expression.next();
+	    return;
+	} else if (val.equals(continuous)) {
+	    value = continuous;
+	    expression.next();
+	    return;
+	} else if (val.equals(digits)) {
+	    value = digits;
+	    expression.next();
+	    return;
+	}
+
+	throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+    }
+
+    public ACssSpeakNumeral(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value is equals to inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "speak-numeral";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((ACssStyle) style).acssSpeakNumeral != null)
+	    ((ACssStyle) style).addRedefinitionWarning(ac, this);
+	((ACssStyle) style).acssSpeakNumeral = this;
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof ACssSpeakNumeral &&
+		value.equals(((ACssSpeakNumeral) property).value));
+    }
+
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ACssStyle) style).getSpeakNumeral();
+	} else {
+	    return ((ACssStyle) style).acssSpeakNumeral;
+	}
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/aural/ACssSpeakPunctuation.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,154 @@
+//
+// $Id: ACssSpeakPunctuation.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.aural;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ * <H3> &nbsp;&nbsp 'speak-punctuation'</H3>
+ *
+ * <P>
+ * <EM>Value: </EM> code | none <BR>
+ * <EM>Initial:</EM> none<BR>
+ * <EM>Applies to:</EM> all elements<BR>
+ * <EM>Inherited:</EM> yes<BR>
+ * <EM>Percentage values:</EM> NA
+ *
+ * <p>'code' indicates that punctuation such as semicolons, braces, and
+ * so on are to be spoken literally. The default value of 'none' means
+ * that punctuation is not spoken but instead is rendered naturally as
+ * various pauses.
+ *
+ * @version $Revision: 1.3 $
+ */
+public class ACssSpeakPunctuation extends ACssProperty {
+
+    CssValue value;
+
+    private static CssIdent none = new CssIdent("none");
+    private static CssIdent code = new CssIdent("code");
+
+    /**
+     * Create a new ACssSpeakPunctuation
+     */
+    public ACssSpeakPunctuation() {
+	value = none;
+    }
+
+    /**
+     * Creates a new ACssSpeakPunctuation
+     *
+     * @param expression the expression of the size
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public ACssSpeakPunctuation(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	    expression.next();
+	    return;
+	} else if (val.equals(code)) {
+	    value = code;
+	    expression.next();
+	    return;
+	} else if (val.equals(none)) {
+	    value = none;
+	    expression.next();
+	    return;
+	}
+
+	throw new InvalidParamException("value",
+					val.toString(),
+					getPropertyName(), ac);
+    }
+
+    public ACssSpeakPunctuation(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value is equals to inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "speak-punctuation";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((ACssStyle) style).acssSpeakPunctuation != null)
+	    ((ACssStyle) style).addRedefinitionWarning(ac, this);
+	((ACssStyle) style).acssSpeakPunctuation = this;
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof ACssSpeakPunctuation &&
+		value.equals(((ACssSpeakPunctuation) property).value));
+    }
+
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ACssStyle) style).getSpeakPunctuation();
+	} else {
+	    return ((ACssStyle) style).acssSpeakPunctuation;
+	}
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/aural/ACssSpeakTime.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,136 @@
+//
+// $Id: ACssSpeakTime.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.aural;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ * <H3> &nbsp;&nbsp 'speak-time'</H3>
+ * <P>
+ * <EM>Value: </EM> 24 | 12 | none<BR>
+ * <EM>Initial:</EM> none<BR>
+ * <EM>Applies to:</EM> all elements<BR>
+ * <EM>Inherited:</EM> yes<BR>
+ * <EM>Percentage values:</EM> NA
+ *
+ * @version $Revision: 1.3 $
+ */
+public class ACssSpeakTime extends ACssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new ACssSpeakTime
+     */
+    public ACssSpeakTime() {
+	value = none;
+    }
+
+    /**
+     * Creates a new ACssSpeakTime
+     *
+     * @param expression the expression of the size
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public ACssSpeakTime(ApplContext ac, CssExpression expression, boolean check)
+    throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	if (val.equals(none)) {
+	    value = none;
+	    expression.next();
+	    return;
+	} else if (val instanceof CssNumber) {
+	    float v = ((Float) val.get()).floatValue();
+	    if (v == 12 || v == 24) {
+		value = val;
+		expression.next();
+		return;
+	    }
+	}
+
+	throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+    }
+
+    public ACssSpeakTime(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "speak-time";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((ACssStyle) style).acssSpeakTime != null)
+	    ((ACssStyle) style).addRedefinitionWarning(ac, this);
+	((ACssStyle) style).acssSpeakTime = this;
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof ACssSpeakTime &&
+		value.equals(((ACssSpeakTime) property).value));
+    }
+
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ACssStyle) style).getSpeakTime();
+	} else {
+	    return ((ACssStyle) style).acssSpeakTime;
+	}
+    }
+
+    private static CssIdent none = new CssIdent("none");
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/aural/ACssSpeechRate.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,175 @@
+//
+// $Id: ACssSpeechRate.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.aural;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  &nbsp;&nbsp; 'speech-rate'
+ *
+ * <P>
+ * <EM>Value:</EM> &lt;words-per-minute&gt; | x-slow | slow | medium |
+ * fast | x-fast | faster | slower<BR>
+ * <EM>Initial:</EM> medium<BR>
+ * <EM>Applies to:</EM> all elements<BR>
+ * <EM>Inherited:</EM> yes<BR>
+ * <EM>Percentage values:</EM> NA
+ *
+ * <P>Specifies the speaking rate. Note that both absolute and relative
+ * keyword values are allowed. (compare with font-weight').
+ *
+ *
+ * @version $Revision: 1.3 $
+ * @see org.w3c.css.properties.css1.CssFontWeight
+ */
+public class ACssSpeechRate extends ACssProperty {
+
+    CssValue value;
+
+    private static int[] hash_values;
+
+    private static String[] SPEECHRATE = { "x-slow", "slow", "medium",
+					   "fast", "x-fast", "faster",
+					   "slower" };
+    private static CssIdent defaultValue = new CssIdent(SPEECHRATE[2]);
+
+    /**
+     * Create a new ACssSpeechRate
+     */
+    public ACssSpeechRate() {
+	value = defaultValue;
+    }
+
+    /**
+     * Creates a new ACssSpeechRate
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Expressions are incorrect
+     */
+    public ACssSpeechRate(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	this();
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	int index;
+
+	setByUser();
+	if (val.equals(inherit)) {
+	    value = inherit;
+	} else if (val instanceof CssIdent) {
+	    value = checkIdent(ac, (CssIdent) val);
+	} else if (val instanceof CssNumber) {
+	    value = val;
+	} else {
+	    throw new InvalidParamException("value",
+					    expression.getValue().toString(),
+					    getPropertyName(), ac);
+	}
+	expression.next();
+    }
+
+    public ACssSpeechRate(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "speech-rate";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value is equals to inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((ACssStyle) style).acssSpeechRate != null)
+	    style.addRedefinitionWarning(ac, this);
+	((ACssStyle) style).acssSpeechRate = this;
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param property The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof ACssSpeechRate &&
+		value.equals(((ACssSpeechRate) property).value));
+    }
+
+    private CssIdent checkIdent(ApplContext ac, CssIdent ident) throws InvalidParamException {
+	int hash = ident.hashCode();
+	for (int i = 0; i < SPEECHRATE.length; i++) {
+	    if (hash_values[i] == hash) {
+		return ident;
+	    }
+	}
+
+	throw new InvalidParamException("value",
+					ident.toString(),
+					getPropertyName(), ac);
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ACssStyle) style).getSpeechRate();
+	} else {
+	    return ((ACssStyle) style).acssSpeechRate;
+	}
+    }
+
+    static {
+	hash_values = new int[SPEECHRATE.length];
+	for (int i = 0; i < SPEECHRATE.length; i++)
+	    hash_values[i] = SPEECHRATE[i].hashCode();
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/aural/ACssStress.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,167 @@
+//
+// $Id: ACssStress.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.aural;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+
+/**
+ * <H3> &nbsp;&nbsp; 'stress'</H3>
+ *
+ * <P>
+ * <EM>Value: </EM>&lt;number&gt;|inherit<BR>
+ * <em>Initial:</EM> 50%<BR>
+ * <EM>Applies to:</EM> all elements<BR>
+ * <EM>Inherited:</EM> yes<BR>
+ * <EM>Percentage values:</EM> Relative to...
+ *
+ *
+ * <p>Specifies the level of stress (assertiveness or emphasis) of the
+ * speaking voice.  English is a <strong>stressed</strong> language, and
+ * different parts of a sentence are assigned primary, secondary or
+ * tertiary stress. The value of property 'stress' controls the amount of
+ * inflection that results from these stress markers.
+ *
+ * <P>Increasing the value of this property results in the speech being
+ * more strongly inflected.  It is in a sense dual to property
+ * <em>:pitch-range</em> and is provided to allow developers to exploit
+ * higher-end auditory displays.
+ *
+ * <p class=comment>Combine 'pitch-range' and 'stress' into one property
+ * 'inflection'?</p>
+ *
+ *
+ * @version $Revision: 1.3 $
+ */
+public class ACssStress extends ACssProperty {
+
+    CssValue value;
+
+    static CssValue DefaultValue = new CssNumber(null, 50);
+
+    /**
+     * Create a new ACssStress
+     */
+    public ACssStress() {
+	value = DefaultValue;
+    }
+
+    /**
+     * Creates a new ACssStress
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public ACssStress(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	this();
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	int index;
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	    expression.next();
+	    return;
+	} else if (val instanceof CssNumber) {
+	    float f = ((CssNumber) val).getValue();
+	    if ((f < 0) || (f > 100)) {
+		throw new InvalidParamException("range", null, ac);
+	    }
+	    value = val;
+	    expression.next();
+	    return;
+	}
+
+	throw new InvalidParamException("value",
+					expression.getValue().toString(),
+					getPropertyName(), ac);
+    }
+
+    public ACssStress(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "stress";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value is equals to inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((ACssStyle) style).acssStress != null) {
+	    style.addRedefinitionWarning(ac, this);
+	}
+	((ACssStyle) style).acssStress = this;
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param property The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof ACssStress &&
+		value.equals(((ACssStress) property).value));
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ACssStyle) style).getStress();
+	} else {
+	    return ((ACssStyle) style).acssStress;
+	}
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/aural/ACssStyle.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,462 @@
+//
+// $Id: ACssStyle.java,v 1.5 2008-03-28 16:36:45 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 org.w3c.css.properties.aural;
+
+import java.util.Enumeration;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.properties.css1.Css1Style;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.Warning;
+import org.w3c.css.util.Warnings;
+import org.w3c.css.values.CssPercentage;
+
+/**
+ * @version $Revision: 1.5 $
+ */
+public class ACssStyle extends Css1Style {
+
+  ACssVolume acssVolume;
+  ACssPause  acssPause = new ACssPause(); // it's a macro
+  ACssCue  acssCue = new ACssCue(); // it's a macro
+  ACssAzimuth acssAzimuth;
+  ACssElevation acssElevation;
+  ACssSpeechRate acssSpeechRate;
+  ACssVoiceFamily acssVoiceFamily;
+  ACssPitch acssPitch;
+  ACssPitchRange acssPitchRange;
+  ACssPlayDuring acssPlayDuring;
+
+  ACssStress acssStress;
+  ACssRichness acssRichness;
+
+  ACssSpeakPunctuation acssSpeakPunctuation;
+  ACssSpeakDate    acssSpeakDate;
+  ACssSpeakNumeral acssSpeakNumeral;
+  ACssSpeakTime    acssSpeakTime;
+  ACssSpeak        acssSpeak;
+
+  ACssSpeakCSS3    acssSpeakCSS3;
+  ACssVoiceVolume  acssVoiceVolume;
+  ACssVoiceBalance acssVoiceBalance;
+  ACssVoiceFamilyCSS3 acssVoiceFamilyCSS3;
+  ACssVoiceRate    acssVoiceRate;
+  ACssVoicePitchRange acssVoicePitchRange;
+  ACssVoiceStress  acssVoiceStress;
+  ACssVoiceDuration acssVoiceDuration;
+  ACssInterpretAs  acssInterpretAs;
+  ACssPhonemes 	   acssPhonemes;
+
+  /**
+   * Get the volume
+   */
+  public ACssVolume getVolume() {
+    if (acssVolume == null) {
+      acssVolume = (ACssVolume) style.CascadingOrder(new ACssVolume(), style, selector);
+    }
+    return acssVolume;
+  }
+
+  /**
+   * Get the pause after
+   */
+  public ACssPauseAfter getPauseAfter() {
+    if (acssPause.pauseAfter == null) {
+      acssPause.pauseAfter = (ACssPauseAfter) style.CascadingOrder(new ACssPauseAfter(), style, selector);
+    }
+    return acssPause.pauseAfter;
+  }
+
+  /**
+   * Get the pause before
+   */
+  public ACssPauseBefore getPauseBefore() {
+    if (acssPause.pauseBefore == null) {
+      acssPause.pauseBefore = (ACssPauseBefore) style.CascadingOrder(new ACssPauseBefore(), style, selector);
+    }
+    return acssPause.pauseBefore;
+  }
+
+  /**
+   * Get the pause
+   */
+  public ACssPause getPause() {
+    if (acssPause.pauseAfter == null) {
+      acssPause.pauseAfter = getPauseAfter();
+    }
+    if (acssPause.pauseBefore == null) {
+      acssPause.pauseBefore = getPauseBefore();
+    }
+    return acssPause;
+  }
+
+  /**
+   * Get the azimuth
+   */
+  public ACssAzimuth getAzimuth() {
+    if (acssAzimuth == null) {
+      acssAzimuth =
+	(ACssAzimuth) style.CascadingOrder(new ACssAzimuth(),
+					   style, selector);
+    }
+    return acssAzimuth;
+  }
+
+  /**
+   * Get the elevation
+   */
+  public ACssElevation getElevation() {
+    if (acssElevation == null) {
+      acssElevation =
+	(ACssElevation) style.CascadingOrder(new ACssElevation(),
+					     style, selector);
+    }
+    return acssElevation;
+  }
+
+  /**
+   * Get the speech rate
+   */
+  public ACssSpeechRate getSpeechRate() {
+    if (acssSpeechRate == null) {
+      acssSpeechRate = (ACssSpeechRate) style.CascadingOrder(new ACssSpeechRate(), style, selector);
+    }
+    return acssSpeechRate;
+  }
+
+  /**
+   * Get the voice family
+   */
+  public ACssVoiceFamily getVoiceFamily() {
+    if (acssVoiceFamily == null) {
+      acssVoiceFamily = (ACssVoiceFamily) style.CascadingOrder(new ACssVoiceFamily(), style, selector);
+    }
+    return acssVoiceFamily;
+  }
+
+  /**
+   * Get the pitch
+   */
+  public ACssPitch getPitch() {
+    if (acssPitch == null) {
+      acssPitch = (ACssPitch) style.CascadingOrder(new ACssPitch(), style, selector);
+    }
+    return acssPitch;
+  }
+
+  /**
+   * Get the pitch
+   */
+  public ACssPitchRange getPitchRange() {
+    if (acssPitchRange == null) {
+      acssPitchRange = (ACssPitchRange) style.CascadingOrder(new ACssPitchRange(), style, selector);
+    }
+    return acssPitchRange;
+  }
+
+  /**
+   * Get the cue after
+   */
+  public ACssCueAfter getCueAfter() {
+    if (acssCue.cueAfter == null) {
+      acssCue.cueAfter = (ACssCueAfter) style.CascadingOrder(new ACssCueAfter(), style, selector);
+    }
+    return acssCue.cueAfter;
+  }
+
+  /**
+   * Get the cue before
+   */
+  public ACssCueBefore getCueBefore() {
+    if (acssCue.cueBefore == null) {
+      acssCue.cueBefore = (ACssCueBefore) style.CascadingOrder(new ACssCueBefore(), style, selector);
+    }
+    return acssCue.cueBefore;
+  }
+
+  /**
+   * Get the cue
+   */
+  public ACssCue getCue() {
+    if (acssCue.cueAfter == null) {
+      acssCue.cueAfter = getCueAfter();
+    }
+    if (acssCue.cueBefore == null) {
+      acssCue.cueBefore = getCueBefore();
+    }
+    return acssCue;
+  }
+
+  /**
+   * Get the play during
+   */
+  public ACssPlayDuring getPlayDuring() {
+    if (acssPlayDuring == null) {
+      acssPlayDuring =
+	(ACssPlayDuring) style.CascadingOrder(new ACssPlayDuring(),
+					      style, selector);
+    }
+    return acssPlayDuring;
+  }
+
+  /**
+   * Get the stress
+   */
+  public ACssStress getStress() {
+    if (acssStress == null) {
+      acssStress =
+	(ACssStress) style.CascadingOrder(new ACssStress(),
+					    style, selector);
+    }
+    return acssStress;
+  }
+
+  /**
+   * Get the richness
+   */
+  public ACssRichness getRichness() {
+    if (acssRichness == null) {
+      acssRichness =
+	(ACssRichness) style.CascadingOrder(new ACssRichness(),
+					    style, selector);
+    }
+    return acssRichness;
+  }
+
+  /**
+   * Get the speak punctuation
+   */
+  public ACssSpeakPunctuation getSpeakPunctuation() {
+    if (acssSpeakPunctuation == null) {
+      acssSpeakPunctuation =
+	(ACssSpeakPunctuation) style.CascadingOrder(new ACssSpeakPunctuation(),
+						    style, selector);
+    }
+    return acssSpeakPunctuation;
+  }
+
+  /**
+   * Get the speak date
+   */
+  public ACssSpeakDate getSpeakDate() {
+    if (acssSpeakDate == null) {
+      acssSpeakDate =
+	(ACssSpeakDate) style.CascadingOrder(new ACssSpeakDate(), style, selector);
+    }
+    return acssSpeakDate;
+  }
+
+  /**
+   * Get the speak numeral
+   */
+  public ACssSpeakNumeral getSpeakNumeral() {
+    if (acssSpeakNumeral == null) {
+      acssSpeakNumeral =
+	(ACssSpeakNumeral) style.CascadingOrder(new ACssSpeakNumeral(), style, selector);
+    }
+    return acssSpeakNumeral;
+  }
+
+  /**
+   * Get the speak time
+   */
+  public ACssSpeakTime getSpeakTime() {
+    if (acssSpeakTime == null) {
+      acssSpeakTime =
+	(ACssSpeakTime) style.CascadingOrder(new ACssSpeakTime(), style, selector);
+    }
+    return acssSpeakTime;
+  }
+
+  /**
+   * Get the speak
+   */
+  public ACssSpeak getSpeak() {
+    if (acssSpeak == null) {
+      acssSpeak =
+	(ACssSpeak) style.CascadingOrder(new ACssSpeak(), style, selector);
+    }
+    return acssSpeak;
+  }
+
+  public ACssSpeakCSS3 getSpeakCSS3() {
+    if (acssSpeakCSS3 == null) {
+      acssSpeakCSS3 =
+	(ACssSpeakCSS3) style.CascadingOrder(new ACssSpeakCSS3(), style, selector);
+    }
+    return acssSpeakCSS3;
+  }
+
+  public ACssVoiceVolume getVoiceVolume() {
+    if (acssVoiceVolume == null) {
+      acssVoiceVolume =
+	(ACssVoiceVolume) style.CascadingOrder(new ACssVoiceVolume(), style, selector);
+    }
+    return acssVoiceVolume;
+  }
+
+  public ACssVoiceBalance getVoiceBalance() {
+    if (acssVoiceBalance == null) {
+      acssVoiceBalance =
+	(ACssVoiceBalance) style.CascadingOrder(new ACssVoiceBalance(), style, selector);
+    }
+    return acssVoiceBalance;
+  }
+
+  public ACssVoiceFamilyCSS3 getVoiceFamilyCSS3() {
+    if (acssVoiceFamilyCSS3 == null) {
+      acssVoiceFamilyCSS3 =
+	(ACssVoiceFamilyCSS3) style.CascadingOrder(new ACssVoiceFamilyCSS3(), style, selector);
+    }
+    return acssVoiceFamilyCSS3;
+  }
+
+  public ACssVoiceRate getVoiceRate() {
+    if (acssVoiceRate == null) {
+      acssVoiceRate =
+	(ACssVoiceRate) style.CascadingOrder(new ACssVoiceRate(), style, selector);
+    }
+    return acssVoiceRate;
+  }
+
+  public ACssVoicePitchRange getVoicePitchRange() {
+    if (acssVoicePitchRange == null) {
+      acssVoicePitchRange =
+	(ACssVoicePitchRange) style.CascadingOrder(new ACssVoicePitchRange(), style, selector);
+    }
+    return acssVoicePitchRange;
+  }
+
+  public ACssVoiceStress getVoiceStress() {
+    if (acssVoiceStress == null) {
+      acssVoiceStress =
+	(ACssVoiceStress) style.CascadingOrder(new ACssVoiceStress(), style, selector);
+    }
+    return acssVoiceStress;
+  }
+
+  public ACssVoiceDuration getVoiceDuration() {
+    if (acssVoiceDuration == null) {
+      acssVoiceDuration =
+	(ACssVoiceDuration) style.CascadingOrder(new ACssVoiceDuration(), style, selector);
+    }
+    return acssVoiceDuration;
+  }
+
+  public ACssInterpretAs getInterpretAs() {
+    if (acssInterpretAs == null) {
+      acssInterpretAs =
+	(ACssInterpretAs) style.CascadingOrder(new ACssInterpretAs(), style, selector);
+    }
+    return acssInterpretAs;
+  }
+
+  public ACssPhonemes getPhonemes() {
+    if (acssPhonemes == null) {
+      acssPhonemes =
+	(ACssPhonemes) style.CascadingOrder(new ACssPhonemes(), style, selector);
+    }
+    return acssPhonemes;
+  }
+
+  public void print(CssPrinterStyle printer) {
+    super.print(printer);
+    if (acssVolume != null)
+      acssVolume.print(printer);
+    if (acssPlayDuring != null)
+      acssPlayDuring.print(printer);
+    acssPause.print(printer); // don't test null: it's a macro.
+    if (acssAzimuth != null)
+      acssAzimuth.print(printer);
+    if (acssElevation != null)
+      acssElevation.print(printer);
+    if (acssSpeechRate != null)
+      acssSpeechRate.print(printer);
+    if (acssVoiceFamily != null)
+      acssVoiceFamily.print(printer);
+    if (acssPitch != null)
+      acssPitch.print(printer);
+    if (acssPitchRange != null)
+      acssPitchRange.print(printer);
+    acssCue.print(printer); // don't test null: it's a macro.
+    if (acssStress != null)
+      acssStress.print(printer);
+    if (acssRichness != null)
+      acssRichness.print(printer);
+    if (acssSpeakPunctuation != null)
+      acssSpeakPunctuation.print(printer);
+    if (acssSpeakDate != null)
+      acssSpeakDate.print(printer);
+    if (acssSpeakNumeral != null)
+      acssSpeakNumeral.print(printer);
+    if (acssSpeakTime != null)
+      acssSpeakTime.print(printer);
+    if (acssSpeak != null)
+      acssSpeak.print(printer);
+    if (acssSpeakCSS3 != null)
+	  acssSpeakCSS3.print(printer);
+	if (acssVoiceVolume != null)
+	  acssVoiceVolume.print(printer);
+	if (acssVoiceBalance != null)
+	  acssVoiceBalance.print(printer);
+	if (acssVoiceFamilyCSS3 != null)
+	  acssVoiceFamilyCSS3.print(printer);
+	if (acssVoiceRate != null)
+	  acssVoiceRate.print(printer);
+	if (acssVoicePitchRange != null)
+	  acssVoicePitchRange.print(printer);
+	if (acssVoiceStress != null)
+	  acssVoiceStress.print(printer);
+	if (acssVoiceDuration != null)
+	  acssVoiceDuration.print(printer);
+	if (acssInterpretAs != null)
+	  acssInterpretAs.print(printer);
+	if (acssPhonemes != null)
+	  acssPhonemes.print(printer);
+
+  }
+
+  /**
+   * Find conflicts in this Style
+   *
+   * @param warnings For warnings reports.
+   * @param allSelectors All contexts is the entire style sheet.
+   */
+  public void findConflicts(ApplContext ac, Warnings warnings,
+	  CssSelectors selector, CssSelectors[] allSelectors) {
+    super.findConflicts(ac, warnings, selector, allSelectors);
+    if (acssVoiceFamily != null) {
+	if (!acssVoiceFamily.containsGenericFamily()) {
+	    warnings.addWarning(new Warning(acssVoiceFamily,
+		    "no-generic-family", 2, ac));
+	}
+	if (acssVoiceFamily.withSpace) {
+	    warnings.addWarning(new Warning(acssVoiceFamily,
+		    "with-space", 1, ac));
+	}
+    }
+
+    if ((acssPause.getBefore() != null) &&
+	!acssPause.getBefore().isSoftlyInherited() &&
+	!(acssPause.getBefore().get() instanceof CssPercentage)) {
+      // Using relative units gives more robust stylesheets
+	warnings.addWarning(new Warning(acssPause.getBefore(),
+		"relative", 2, ac));
+    }
+    if ((acssPause.getAfter() != null) &&
+	!acssPause.getAfter().isSoftlyInherited() &&
+	!(acssPause.getAfter().get() instanceof CssPercentage)) {
+	// Using relative units gives more robust stylesheets
+	warnings.addWarning(new Warning(acssPause.getAfter(),
+		"relative", 2, ac));
+    }
+
+
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/aural/ACssVoiceBalance.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,197 @@
+//
+// $Id: ACssVoiceBalance.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.aural;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssNumber;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+
+/**
+ *
+ * @version $Revision: 1.3 $
+ */
+public class ACssVoiceBalance extends ACssProperty {
+
+    CssValue value;
+
+    private static int[] hash_values;
+
+    private static String[] VOLUME = { "left", "center", "right", "inherit" };
+
+    private static CssIdent defaultValue = new CssIdent(VOLUME[3]);
+
+    /**
+     * Create a new ACssVoiceBalance
+     */
+    public ACssVoiceBalance() {
+	value = defaultValue;
+    }
+
+    /**
+     * Creates a new ACssVoiceBalance
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public ACssVoiceBalance(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	this();
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	int index;
+
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	} else if (val instanceof CssIdent) {
+	    value = checkIdent(ac, (CssIdent) val);
+	} else if (val instanceof CssNumber) {
+	    CssNumber num = (CssNumber) val;
+	    int i = (int) num.getValue();
+	    if (i < 0) {
+		value = new CssNumber(ac, 0);
+	    } else if (i > 100) {
+		value = new CssNumber(ac, 100);
+	    } else {
+		value = val;
+	    }
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value",
+					    expression.getValue().toString(),
+					    getPropertyName(), ac);
+	}
+
+	expression.next();
+    }
+
+    public ACssVoiceBalance(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value is equals to inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns some usable value of this property...
+     *
+     * @deprecated
+     */
+    public float getValue() { // vm
+	return ((CssNumber) value).getValue();
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "voice-balance";
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((ACssStyle) style).acssVoiceBalance != null)
+	    style.addRedefinitionWarning(ac, this);
+	((ACssStyle) style).acssVoiceBalance = this;
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param property The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof ACssVoiceBalance &&
+		value.equals(((ACssVoiceBalance) property).value));
+    }
+
+    private CssIdent checkIdent(ApplContext ac, CssIdent ident)
+	throws InvalidParamException {
+
+	int hash = ident.hashCode();
+	for (int i = 0; i < VOLUME.length; i++) {
+	    if (hash_values[i] == hash) {
+		return ident;
+	    }
+	}
+
+	throw new InvalidParamException("value", ident.toString(),
+					getPropertyName(), ac);
+    }
+
+    /** @deprecated */
+    private CssPercentage ValueOfIdent(ApplContext ac, CssIdent ident)
+	throws InvalidParamException {
+
+	int hash = ident.hashCode();
+	for (int i = 0; i < VOLUME.length; i++) {
+	    if (hash_values[i] == hash) {
+		return new CssPercentage(ACssProperties.getValue(this, VOLUME[i]));
+	    }
+	}
+
+	throw new InvalidParamException("value", ident.toString(),
+					getPropertyName(), ac);
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ACssStyle) style).getVoiceBalance();
+	} else {
+	    return ((ACssStyle) style).acssVoiceBalance;
+	}
+    }
+
+    static {
+	hash_values = new int[VOLUME.length];
+	for (int i = 0; i < VOLUME.length; i++)
+	    hash_values[i] = VOLUME[i].hashCode();
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/aural/ACssVoiceDuration.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,178 @@
+//
+// $Id: ACssVoiceDuration.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.aural;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssTime;
+import org.w3c.css.values.CssValue;
+
+/**
+ * &nbsp;&nbsp; 'pause-before'
+ *
+ * <P>
+ * <EM>Value: </EM>&lt;time&gt; | &lt;percentage&gt;<BR>
+ * <EM>Initial:</EM> UA specific<BR>
+ * <EM>Applies to:</EM> all elements<BR>
+ * <EM>Inherited:</EM> no<BR>
+ * <EM>Percentage values:</EM> NA<BR>
+ *
+ * <P>This property specifies the pause before an element is spoken. It
+ * may be given in an absolute units (seconds, milliseconds) or as a
+ * relative value - in which case it is relative to the reciprocal of the
+ * 'speed' property: if speed is 120 words per minute (ie a word takes
+ * half a second, 500 milliseconds) then a pause-before of 100% means a
+ * pause of 500 ms and a pause-before of 20% means 100ms.
+ *
+ * <p>Using relative units gives more robust stylesheets in the face of
+ * large changes in speed and is recommended practice.
+ *
+ * @version $Revision: 1.3 $
+ */
+public class ACssVoiceDuration extends ACssProperty {
+
+    CssValue value;
+
+    private static CssTime defaultValue;
+
+    /**
+     * Create a new ACssVoiceDuration
+     */
+    public ACssVoiceDuration() {
+	// Initial is User Agent Specific
+	if (defaultValue == null) {
+	    defaultValue = new CssTime(ACssProperties.getValue(this, "default"));
+	}
+	value = defaultValue;
+    }
+
+    /**
+     * Creates a new ACssVoiceDuration
+     *
+     * @param expression the expression of the size
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public ACssVoiceDuration(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	    expression.next();
+	    return;
+	} else if (val instanceof CssTime) {
+	    float num = ((Float) val.get()).floatValue();
+	    if (num < 0) {
+		throw new InvalidParamException("negative-value",
+						val.toString(), ac);
+	    }
+	    value = val;
+	    expression.next();
+	    return;
+	}
+
+	throw new InvalidParamException("value", val.toString(),
+					getPropertyName(), ac);
+    }
+
+    public ACssVoiceDuration(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns some usable value of this property...
+     */
+    public int getValue() { // vm
+	return ((Float) value.get()).intValue();
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value is equals to inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (value != null)
+	    return value.toString();
+	else
+	    return null;
+    }
+
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "voice-duration";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((ACssStyle) style).acssVoiceDuration != null)
+	    style.addRedefinitionWarning(ac, this);
+	((ACssStyle) style).acssVoiceDuration = this;
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	if (value != null) {
+	    return (property instanceof ACssVoiceDuration &&
+		    value.equals(((ACssVoiceDuration) property).value));
+	} else {
+	    return false;
+	}
+    }
+
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ACssStyle) style).getVoiceDuration();
+	} else {
+	    return ((ACssStyle) style).acssVoiceDuration;
+	}
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/aural/ACssVoiceFamily.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,299 @@
+//
+// $Id: ACssVoiceFamily.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.aural;
+
+import java.util.Enumeration;
+import java.util.Vector;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.util.Util;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssIdent;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssString;
+import org.w3c.css.values.CssValue;
+
+/**
+ * <H3>5.2 &nbsp;&nbsp;   'voice-family'</H3>
+ * <P>
+ * <EM>Value:</EM>  [[&lt;specific-voice&gt; | &lt;generic-voice&gt;],]*
+ * [&lt;specific-voice&gt; | &lt;generic-voice&gt;]<BR>
+ * <EM>Initial:</EM> UA <BR>
+ * <EM>Applies to:</EM> all elements<BR>
+ * <EM>Inherited:</EM> yes<BR>
+ * <EM>Percentage values:</EM> NA
+ *
+ * <P>The value is a prioritized list of voice family names (compare
+ * with '<a
+ * href="/pub/WWW/TR/REC-CSS1##font-family">font-family</a>'. Suggested
+ * genric families: male, female, child.
+ *
+ * <P>Examples of specific voice families are: comedian, trinoids, carlos, lisa
+ *
+ * <p>Examples
+ *
+ * <pre>
+ *   H1 { voice-family: announcer, male }
+ *   P.part.romeo {  voice-family: romeo, male }
+ *   P.part.juliet { voice-family: juliet, female }
+ * </pre>
+ *
+ * <p class=comment>Should the properties of these family names be
+ * described, using an @-rule, to allow better client-side matching (like
+ * fonts). If so, what are the values that describe these voice families
+ * in a way that is independent of speech synthesizer?
+ *
+ * @version $Revision: 1.3 $
+ */
+public class ACssVoiceFamily extends ACssProperty implements CssOperator {
+
+    Vector family_name = new Vector();
+    boolean inheritValue;
+
+    static String[] genericFamily = { "male", "female", "child" };
+
+    static int[] genericFamilyHash;
+
+    boolean withSpace = false;
+
+    /**
+     * Create a new ACssVoiceFamily
+     */
+    public ACssVoiceFamily() {
+	// depends on user agent
+    }
+
+    /**
+     * Create a new ACssVoiceFamily
+     * @param value the voice name
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public ACssVoiceFamily(ApplContext ac, CssExpression value, boolean check)
+    	throws InvalidParamException {
+	boolean family = true;
+	CssValue val = value.getValue();
+	char op;
+	//@@ and if name is already in the vector ?
+
+	setByUser();
+	if (val.equals(inherit)) {
+	    if(value.getCount() > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    inheritValue = true;
+	    return;
+	}
+
+	while (family) {
+	    val = value.getValue();
+	    op = value.getOperator();
+
+	    if ((op != COMMA) && (op != SPACE)) {
+		throw new InvalidParamException("operator",
+						(new Character(op)).toString(), ac);
+	    }
+
+	    if(val != null && val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+
+	    if (val instanceof CssString) {
+		String familyName = null;
+		if (op == COMMA) { // "helvetica", "roman"
+		    familyName = trimToOneSpace(val.toString());
+		    value.next();
+		} else { // "helvetica" CssValue
+		    familyName = trimToOneSpace(val.toString());
+		    family = false;
+		    value.next();
+		}
+		if (familyName.length() > 2) {
+		    String tmp = familyName.substring(1, familyName.length()-1);
+		    for (int i = 0; i < genericFamily.length; i++) {
+			if (genericFamily[i].equals(tmp)) {
+			    throw new InvalidParamException("generic-family.quote",
+				    genericFamily[i],
+				    getPropertyName(),
+				    ac);
+			}
+		    }
+		}
+		family_name.addElement(familyName);
+	    } else if (val instanceof CssIdent) {
+		if (op == COMMA) {
+		    family_name.addElement(val.toString());
+		    value.next();
+		} else {
+		    CssValue next = value.getNextValue();
+
+		    if (next != null && next instanceof CssIdent) {
+			// @@ null and instanceof
+			CssIdent New = new CssIdent(val.get()
+						    + " " + next.get());
+			withSpace = true;
+			value.remove();
+			op = value.getOperator();
+			value.remove();
+			value.insert(New);
+			value.setCurrentOperator(op);
+		    } else {
+			family_name.addElement(val.toString());
+			value.next();
+			family = false;
+		    }
+		}
+	    } else {
+		throw new InvalidParamException("value", val.toString(),
+						getPropertyName(), ac);
+	    }
+	}
+
+    }
+
+    public ACssVoiceFamily(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns all voices name
+     */
+    public Enumeration elements() {
+	return family_name.elements();
+    }
+
+    /**
+     * Returns the size
+     */
+    public int size() {
+	return family_name.size();
+    }
+
+    /**
+     * Returns the voice (null if no voice)
+     */
+    public Object get() {
+	if (family_name.size() == 0) {
+	    return null;
+	}
+	return family_name.firstElement();
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value is equals to inherit
+     */
+    public boolean isSoftlyInherited() {
+	return inheritValue;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (inheritValue) {
+	    return inherit.toString();
+	} else {
+
+	    String r = "";
+	    for (Enumeration e = elements(); e.hasMoreElements();)
+		//		r += ", " + e.nextElement().toString();
+		r += ", " + e.nextElement().toString();
+	    if (r.length() < 3) {
+		return null;
+	    }
+	    return r.substring(2);
+	}
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "voice-family";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((ACssStyle) style).acssVoiceFamily != null)
+	    style.addRedefinitionWarning(ac, this);
+	((ACssStyle) style).acssVoiceFamily = this;
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return false; //@@ FIXME
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ACssStyle) style).getVoiceFamily();
+	} else {
+	    return ((ACssStyle) style).acssVoiceFamily;
+	}
+    }
+
+    private static String trimToOneSpace(String name) {
+	int count = name.length();
+	char[] dst = new char[count];
+	char[] src = new char[count];
+	int index = -1;
+
+	name.getChars(0, count, src, 0);
+	for(int i=0; i < count; i++)
+	    if ( i == 0 || ! Util.isWhiteSpace(src[i]) ||
+		 ( Util.isWhiteSpace(src[i]) && !Util.isWhiteSpace(dst[index]) ) )
+		dst[++index] = src[i];
+
+	return new String(dst, 0, index+1);
+    }
+
+    /**
+     * Returns true if this property contains a generic family name
+     */
+    public boolean containsGenericFamily() {
+	if (family_name.size() == 0) {
+	    return true;
+	} else {
+	    for (Enumeration e = family_name.elements();
+		 e.hasMoreElements();) {
+		int hash = ((String) e.nextElement()).toLowerCase().hashCode();
+		for (int i = 0; i < genericFamilyHash.length; i++) {
+		    if (hash == genericFamilyHash[i])
+			return true;
+		}
+	    }
+	    return false;
+	}
+    }
+
+
+    static {
+	genericFamilyHash = new int[genericFamily.length];
+	for (int i = 0; i < genericFamily.length; i++) {
+	    genericFamilyHash[i] = genericFamily[i].hashCode();
+	}
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/aural/ACssVoiceFamilyCSS3.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,361 @@
+//
+// $Id: ACssVoiceFamilyCSS3.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.aural;
+
+import java.util.Enumeration;
+import java.util.Vector;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.util.Util;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssIdent;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssString;
+import org.w3c.css.values.CssValue;
+
+/**
+ * <H3>5.2 &nbsp;&nbsp;   'voice-family'</H3>
+ * <P>
+ * <EM>Value:</EM>  [[&lt;specific-voice&gt; | &lt;generic-voice&gt;],]*
+ * [&lt;specific-voice&gt; | &lt;generic-voice&gt;]<BR>
+ * <EM>Initial:</EM> UA <BR>
+ * <EM>Applies to:</EM> all elements<BR>
+ * <EM>Inherited:</EM> yes<BR>
+ * <EM>Percentage values:</EM> NA
+ *
+ * <P>The value is a prioritized list of voice family names (compare
+ * with '<a
+ * href="/pub/WWW/TR/REC-CSS1##font-family">font-family</a>'. Suggested
+ * genric families: male, female, child.
+ *
+ * <P>Examples of specific voice families are: comedian, trinoids, carlos, lisa
+ *
+ * <p>Examples
+ *
+ * <pre>
+ *   H1 { voice-family: announcer, male }
+ *   P.part.romeo {  voice-family: romeo, male }
+ *   P.part.juliet { voice-family: juliet, female }
+ * </pre>
+ *
+ * <p class=comment>Should the properties of these family names be
+ * described, using an @-rule, to allow better client-side matching (like
+ * fonts). If so, what are the values that describe these voice families
+ * in a way that is independent of speech synthesizer?
+ *
+ * @version $Revision: 1.3 $
+ */
+public class ACssVoiceFamilyCSS3 extends ACssProperty implements CssOperator {
+
+    Vector family_name = new Vector();
+    boolean inheritValue;
+
+    static String[] genericFamily = { "male", "female" };
+    static String[] age = { "child", "young", "old" };
+
+    static int[] genericFamilyHash;
+
+    boolean withSpace = false;
+
+    /**
+     * Create a new ACssVoiceFamilyCSS3
+     */
+    public ACssVoiceFamilyCSS3() {
+	// depends on user agent
+    }
+
+    /**
+     * Create a new ACssVoiceFamilyCSS3
+     * @param value the voice name
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public ACssVoiceFamilyCSS3(ApplContext ac, CssExpression value,
+	    boolean check) throws InvalidParamException {
+	boolean family = true;
+	CssValue val = value.getValue();
+	char op;
+	//@@ and if name is already in the vector ?
+
+	setByUser();
+	if (val.equals(inherit)) {
+	    if(check && value.getCount() > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    inheritValue = true;
+	    return;
+	}
+
+	while (family) {
+	    val = value.getValue();
+	    op = value.getOperator();
+
+	    if ((op != COMMA) && (op != SPACE)) {
+			throw new InvalidParamException("operator",
+						(new Character(op)).toString(), ac);
+	    }
+
+	    if(val != null && val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+
+	    if (val instanceof CssString) {								//specific voice
+			String familyName = null;
+			if (op == COMMA) { // "helvetica", "roman"
+			    familyName = trimToOneSpace(val.toString());
+			    value.next();
+			} else { // "helvetica" CssValue
+			    familyName = trimToOneSpace(val.toString());
+			    family = false;
+			    value.next();
+			}
+			if (familyName.length() > 2) {
+			    String tmp = familyName.substring(1, familyName.length()-1);
+			    for (int i = 0; i < genericFamily.length; i++) {
+					if (genericFamily[i].equals(tmp)) {
+					    throw new InvalidParamException("generic-family.quote",
+								    genericFamily[i],
+								    getPropertyName(),
+								    ac);
+					}
+			    }
+			}
+
+			family_name.addElement(familyName);
+
+	    } else if (val instanceof CssIdent) {
+			if (op == COMMA) {												//specific voice
+			    family_name.addElement(val.toString());
+			    value.next();
+			} else {														//AGE or generic voice, optionally followed by a number
+		    	String familydesc = null;
+
+		    	int valuecount = value.getCount();
+
+		    	if (val != null && val instanceof CssIdent) {
+					// @@ null and instanceof
+
+					boolean ageok = false;
+					for (int i=0; i < age.length; i++) {					//age optional
+						if (age[i].equals(val.toString())) {
+							familydesc = age[i];
+							ageok = true;
+							break;
+						}
+					}
+
+					if (ageok) {
+						value.next();
+						val = value.getValue();
+    					op = value.getOperator();
+					}
+
+					if (op == SPACE) {
+
+						boolean genericfamok = false;
+						for (int i=0; i < genericFamily.length; i++) {			// generic voice (male or female)
+							if (genericFamily[i].equals(val.toString())) {
+								familydesc += " " + genericFamily[i];
+								genericfamok = true;
+								break;
+							}
+						}
+
+						if (!genericfamok) {
+							family_name.addElement(val.toString());
+							family = false;
+							break;
+						}
+
+						// optional number
+
+						if (op == SPACE && !value.end()) {
+
+							val = value.getNextValue();
+							op = value.getOperator();
+
+							if (val != null) {
+								try {
+									Integer tmp = new Integer(val.toString());
+									familydesc += " " + val.toString();
+								} catch (NumberFormatException e) {
+									throw new InvalidParamException("value", val.toString(),
+											getPropertyName(), ac);
+								}
+
+								if (op != COMMA) {
+									family = false;
+								}
+							} else {
+								family = false;
+							}
+						} else {
+							family = false;
+						}
+
+					} else {
+						throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+					}
+
+					family_name.addElement(familydesc);
+
+		    	} else {
+					family_name.addElement(val.toString());					//specific voice
+					value.next();
+					family = false;
+		    	}
+			}
+	    } else {
+			throw new InvalidParamException("value", val.toString(),
+						getPropertyName(), ac);
+	    }
+	}
+
+    }
+
+    public ACssVoiceFamilyCSS3(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns all voices name
+     */
+    public Enumeration elements() {
+	return family_name.elements();
+    }
+
+    /**
+     * Returns the size
+     */
+    public int size() {
+	return family_name.size();
+    }
+
+    /**
+     * Returns the voice (null if no voice)
+     */
+    public Object get() {
+	if (family_name.size() == 0) {
+	    return null;
+	}
+	return family_name.firstElement();
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value is equals to inherit
+     */
+    public boolean isSoftlyInherited() {
+	return inheritValue;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (inheritValue) {
+	    return inherit.toString();
+	} else {
+
+	    String r = "";
+	    for (Enumeration e = elements(); e.hasMoreElements();)
+		//		r += ", " + e.nextElement().toString();
+		r += ", " + e.nextElement().toString();
+	    if (r.length() < 3) {
+		return null;
+	    }
+	    return r.substring(2);
+	}
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "voice-family";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((ACssStyle) style).acssVoiceFamilyCSS3 != null)
+	    style.addRedefinitionWarning(ac, this);
+	((ACssStyle) style).acssVoiceFamilyCSS3 = this;
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return false; //@@ FIXME
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ACssStyle) style).getVoiceFamilyCSS3();
+	} else {
+	    return ((ACssStyle) style).acssVoiceFamilyCSS3;
+	}
+    }
+
+    private static String trimToOneSpace(String name) {
+	int count = name.length();
+	char[] dst = new char[count];
+	char[] src = new char[count];
+	int index = -1;
+
+	name.getChars(0, count, src, 0);
+	for(int i=0; i < count; i++)
+	    if ( i == 0 || ! Util.isWhiteSpace(src[i]) ||
+		 ( Util.isWhiteSpace(src[i]) && !Util.isWhiteSpace(dst[index]) ) )
+		dst[++index] = src[i];
+
+	return new String(dst, 0, index+1);
+    }
+
+    /**
+     * Returns true if this property contains a generic family name
+     */
+    public boolean containsGenericFamily() {
+	if (family_name.size() == 0) {
+	    return true;
+	} else {
+	    for (Enumeration e = family_name.elements();
+		 e.hasMoreElements();) {
+		int hash = ((String) e.nextElement()).toLowerCase().hashCode();
+		for (int i = 0; i < genericFamilyHash.length; i++) {
+		    if (hash == genericFamilyHash[i])
+			return true;
+		}
+	    }
+	    return false;
+	}
+    }
+
+
+    static {
+	genericFamilyHash = new int[genericFamily.length];
+	for (int i = 0; i < genericFamily.length; i++) {
+	    genericFamilyHash[i] = genericFamily[i].hashCode();
+	}
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/aural/ACssVoicePitchRange.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,172 @@
+//
+// $Id: ACssVoicePitchRange.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.aural;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssFrequency;
+import org.w3c.css.values.CssIdent;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  &nbsp;&nbsp; 'pitch' <span>(or 'average pitch'
+ * ?, what is the relationship with voice-family?)</span>
+ *
+ * <P>
+ * <EM>Value: </EM>&lt;hertz&gt; | x-low | low | medium | high | x-high<BR>
+ * <EM>Initial:</EM> medium<BR>
+ * <EM>Applies to:</EM> all elements<BR>
+ * <EM>Inherited:</EM> yes<BR>
+ * <EM>Percentage values:</EM> NA
+ *
+ * <p>Specifies the average pitch of the speaking voice in hertz (Hz).
+ *
+ * @version $Revision: 1.3 $
+ */
+public class ACssVoicePitchRange extends ACssProperty {
+
+    CssValue value;
+
+
+    private static int[] hash_values;
+
+    private static String[] PITCH = { "low", "medium", "high" };
+
+    private static CssIdent defaultValue = new CssIdent(PITCH[2]);
+
+    /**
+     * Create a new ACssVoicePitchRange
+     */
+    public ACssVoicePitchRange() {
+	value = defaultValue;
+    }
+
+    /**
+     * Creates a new ACssVoicePitchRange
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public ACssVoicePitchRange(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	this();
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    val = inherit;
+	} else if (val instanceof CssIdent) {
+	    value = checkIdent(ac,(CssIdent) val);
+	} else if (val instanceof CssFrequency) {
+	    value = val;
+	} else {
+	    throw new InvalidParamException("value",
+					    expression.getValue().toString(),
+					    getPropertyName(), ac);
+	}
+
+	expression.next();
+    }
+
+    public ACssVoicePitchRange(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+
+    /**
+     * Returns some usable value of this property...
+     */
+    public int getValue() { // vm
+	return ((Float) value.get()).intValue();
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "voice-pitch-range";
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((ACssStyle) style).acssVoicePitchRange != null)
+	    style.addRedefinitionWarning(ac, this);
+	((ACssStyle) style).acssVoicePitchRange = this;
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param property The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof ACssVoicePitchRange &&
+		value.equals(((ACssVoicePitchRange) property).value));
+    }
+
+    private CssIdent checkIdent(ApplContext ac, CssIdent ident) throws InvalidParamException {
+	int hash = ident.hashCode();
+	for (int i = 0; i < PITCH.length; i++) {
+	    if (hash_values[i] == hash) {
+		return ident;
+	    }
+	}
+
+	throw new InvalidParamException("value",
+					ident.toString(),
+					getPropertyName(), ac);
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ACssStyle) style).getVoicePitchRange();
+	} else {
+	    return ((ACssStyle) style).acssVoicePitchRange;
+	}
+    }
+
+    static {
+	hash_values = new int[PITCH.length];
+	for (int i = 0; i < PITCH.length; i++)
+	    hash_values[i] = PITCH[i].hashCode();
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/aural/ACssVoiceRate.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,173 @@
+//
+// $Id: ACssVoiceRate.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.aural;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  &nbsp;&nbsp; 'voice-rate'
+ *
+ * <P>
+ * <EM>Value:</EM> &lt;words-per-minute&gt; | x-slow | slow | medium |
+ * fast | x-fast <BR>
+ * <EM>Initial:</EM> medium<BR>
+ * <EM>Applies to:</EM> all elements<BR>
+ * <EM>Inherited:</EM> yes<BR>
+ * <EM>Percentage values:</EM> NA
+ *
+ * <P>Specifies the speaking rate. Note that both absolute and relative
+ * keyword values are allowed. (compare with font-weight').
+ *
+ *
+ * @version $Revision: 1.3 $
+ */
+public class ACssVoiceRate extends ACssProperty {
+
+    CssValue value;
+
+    private static int[] hash_values;
+
+    private static String[] SPEECHRATE = { "x-slow", "slow", "medium",
+					   "fast", "x-fast" };
+    private static CssIdent defaultValue = new CssIdent(SPEECHRATE[2]);
+
+    /**
+     * Create a new ACssVoiceRate
+     */
+    public ACssVoiceRate() {
+	value = defaultValue;
+    }
+
+    /**
+     * Creates a new ACssVoiceRate
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Expressions are incorrect
+     */
+    public ACssVoiceRate(ApplContext ac, CssExpression expression, boolean check)
+	    throws InvalidParamException {
+	this();
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	int index;
+
+	setByUser();
+	if (val.equals(inherit)) {
+	    value = inherit;
+	} else if (val instanceof CssIdent) {
+	    value = checkIdent(ac, (CssIdent) val);
+	} else if (val instanceof CssNumber) {
+	    value = val;
+	} else {
+	    throw new InvalidParamException("value",
+					    expression.getValue().toString(),
+					    getPropertyName(), ac);
+	}
+	expression.next();
+    }
+
+    public ACssVoiceRate(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "voice-rate";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value is equals to inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((ACssStyle) style).acssVoiceRate != null)
+	    style.addRedefinitionWarning(ac, this);
+	((ACssStyle) style).acssVoiceRate = this;
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param property The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof ACssVoiceRate &&
+		value.equals(((ACssVoiceRate) property).value));
+    }
+
+    private CssIdent checkIdent(ApplContext ac, CssIdent ident) throws InvalidParamException {
+	int hash = ident.hashCode();
+	for (int i = 0; i < SPEECHRATE.length; i++) {
+	    if (hash_values[i] == hash) {
+		return ident;
+	    }
+	}
+
+	throw new InvalidParamException("value",
+					ident.toString(),
+					getPropertyName(), ac);
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ACssStyle) style).getVoiceRate();
+	} else {
+	    return ((ACssStyle) style).acssVoiceRate;
+	}
+    }
+
+    static {
+	hash_values = new int[SPEECHRATE.length];
+	for (int i = 0; i < SPEECHRATE.length; i++)
+	    hash_values[i] = SPEECHRATE[i].hashCode();
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/aural/ACssVoiceStress.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,158 @@
+//
+// $Id: ACssVoiceStress.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.aural;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public class ACssVoiceStress extends ACssProperty {
+
+    CssValue value;
+
+    private static int[] hash_values;
+
+    private static String[] STRESS = { "strong", "moderate", "none", "reduced" };
+    private static CssIdent defaultValue = new CssIdent(STRESS[2]);
+
+    /**
+     * Create a new ACssVoiceStress
+     */
+    public ACssVoiceStress() {
+	value = defaultValue;
+    }
+
+    /**
+     * Creates a new ACssVoiceStress
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Expressions are incorrect
+     */
+    public ACssVoiceStress(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	this();
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	int index;
+
+	setByUser();
+	if (val.equals(inherit)) {
+	    value = inherit;
+	} else if (val instanceof CssIdent) {
+	    value = checkIdent(ac, (CssIdent) val);
+	} else if (val instanceof CssNumber) {
+	    value = val;
+	} else {
+	    throw new InvalidParamException("value",
+					    expression.getValue().toString(),
+					    getPropertyName(), ac);
+	}
+	expression.next();
+    }
+
+    public ACssVoiceStress(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "voice-stress";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value is equals to inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((ACssStyle) style).acssVoiceStress != null)
+	    style.addRedefinitionWarning(ac, this);
+	((ACssStyle) style).acssVoiceStress = this;
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param property The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof ACssVoiceStress &&
+		value.equals(((ACssVoiceStress) property).value));
+    }
+
+    private CssIdent checkIdent(ApplContext ac, CssIdent ident) throws InvalidParamException {
+	int hash = ident.hashCode();
+	for (int i = 0; i < STRESS.length; i++) {
+	    if (hash_values[i] == hash) {
+		return ident;
+	    }
+	}
+
+	throw new InvalidParamException("value",
+					ident.toString(),
+					getPropertyName(), ac);
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ACssStyle) style).getVoiceStress();
+	} else {
+	    return ((ACssStyle) style).acssVoiceStress;
+	}
+    }
+
+    static {
+	hash_values = new int[STRESS.length];
+	for (int i = 0; i < STRESS.length; i++)
+	    hash_values[i] = STRESS[i].hashCode();
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/aural/ACssVoiceVolume.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,278 @@
+//
+// $Id: ACssVoiceVolume.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.aural;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssNumber;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+
+/**
+ *  &nbsp;&nbsp; 'volume'
+ *
+ * <P>
+ * <EM>Value:</EM> &lt;percentage&gt; | silent | x-soft | soft | medium | loud | x-loud<br>
+ * <EM>Initial:</EM> medium<BR>
+ * <EM>Applies to:</EM> all elements<BR>
+ * <EM>Inherited:</EM> yes<BR>
+ * <EM>Percentage values:</EM> relative to user-specified mapping
+ *
+ * <P>The legal range of percentage values is 0% to 100%. Note that '0%'
+ * <strong>does not mean the same as "silent"</strong>. 0% represents the
+ * <em>minimum audible</em> volume level and 100% corresponds to the
+ * <em>maximum comfortable</em> level. There is a fixed mapping between
+ * keyword values and percentages:
+ *
+ * <UL>
+ * <li>'silent' = no sound at all, the element is  spoken silently
+ * <LI>'x-soft' = '0%'
+ * <LI>'soft' = '25%'
+ * <LI>'medium' = '50%'
+ * <LI>'loud' = '75%'
+ * <LI>'x-loud' = '100%'
+ * </UL>
+ *
+ * <P>VoiceVolume refers to the median volume of the waveform. In other words,
+ * a highly inflected voice at a volume of 50 might peak well above
+ * that. The overall values are likely to be human adjustable
+ * for comfort, for example with a physical volume control (which would
+ * increase both the 0% and 100% values proportionately); what this
+ * property does is adjust the dynamic range.
+ *
+ *
+ * <p>The UA <em>should</em> allow the values corresponding to 0% and
+ * 100% to be set by the listener. No one setting is universally
+ * applicable; suitable values depend on the equipment in use (speakers,
+ * headphones), the environment (in car, home theater, library) and
+ * personal preferences. Some examples:
+ *
+ * <ul><li>A browser for in-car use has a setting for when there is lots
+ * of background noise. 0% would map to a fairly high level and 100% to a
+ * quite high level. The speech is easily audible over the road noise but
+ * the overall dynamic range is compressed. Plusher cars with better
+ * insulation allow a wider dynamic range.
+ *
+ *
+ * <li>Another speech browser is being used in the home, late at night,
+ * (don't annoy the neighbors) or in a shared study room. 0% is set to
+ * a very quiet level and 100% to a fairly quiet level, too. As with the first
+ * example, there is a low slope; the dynamic range is reduced. The
+ * actual volumes are low here, wheras they were high in the first
+ * example.
+ *
+ * <li>In a quiet and isolated house, an expensive hi-fi home theatre
+ * setup. 0% is set fairly low and 100% to quite high; there is wide
+ * dynamic range.
+ * </ul>
+ *
+ * <p>The same authors stylesheet could be used in all cases, simply by
+ * mapping the 0 and 100 points suitably at the client side.
+ *
+ * <p>If an element has a volume of silent, it is spoken silently. It
+ * takes up the same time as if it had been spoken, including any pause
+ * before and after the element, but no sound is generated. This may be
+ * used in language teaching applications, for example. A pause is
+ * gdenerated for the pupil to speak the element themselves. <b>Note:</b>
+ * the value is inherited so child elements will also be silent.  Child
+ * elements may however set the volume to a non-silent value and will
+ * then be spoken.
+ *
+ * <p>To inhibit the speaking of an element and all it's children so that
+ * it takes no time at all (for example, to get the effect of collapsing
+ * and expanding lists) use the CSS1 property 'display'
+ *
+ * <pre>display: none</pre>
+ *
+ * <p>When using the rule <tt>display: none</tt> the element takes up
+ * <em>no time</em>; it is not represented as a pause the length of the
+ * spoken text.
+ *
+ * @version $Revision: 1.3 $
+ */
+public class ACssVoiceVolume extends ACssProperty {
+
+    CssValue value;
+
+    private static int[] hash_values;
+
+    private static String[] VOLUME = { "silent", "x-soft", "soft",
+				       "medium", "loud", "x-loud", "louder", "softer", "inherit" };
+
+    private static CssIdent defaultValue = new CssIdent(VOLUME[3]);
+
+    /**
+     * Create a new ACssVoiceVolume
+     */
+    public ACssVoiceVolume() {
+	value = defaultValue;
+    }
+
+    /**
+     * Creates a new ACssVoiceVolume
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public ACssVoiceVolume(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	this();
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	int index;
+
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	} else if (val instanceof CssIdent) {
+	    value = checkIdent(ac, (CssIdent) val);
+	} else if (val instanceof CssPercentage) {
+	    value = val;
+	} else if (val instanceof CssNumber) {
+	    CssNumber num = (CssNumber) val;
+	    int i = (int) num.getValue();
+	    if (i < 0) {
+		value = new CssNumber(ac, 0);
+	    } else if (i > 100) {
+		value = new CssNumber(ac, 100);
+	    } else {
+		value = val;
+	    }
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value",
+					    expression.getValue().toString(),
+					    getPropertyName(), ac);
+	}
+
+	expression.next();
+    }
+
+    public ACssVoiceVolume(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value is equals to inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns some usable value of this property...
+     *
+     * @deprecated
+     */
+    public float getValue() { // vm
+	return ((CssNumber) value).getValue();
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "voice-volume";
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((ACssStyle) style).acssVoiceVolume != null)
+	    style.addRedefinitionWarning(ac, this);
+	((ACssStyle) style).acssVoiceVolume = this;
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param property The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof ACssVoiceVolume &&
+		value.equals(((ACssVoiceVolume) property).value));
+    }
+
+    private CssIdent checkIdent(ApplContext ac, CssIdent ident)
+	throws InvalidParamException {
+
+	int hash = ident.hashCode();
+	for (int i = 0; i < VOLUME.length; i++) {
+	    if (hash_values[i] == hash) {
+		return ident;
+	    }
+	}
+
+	throw new InvalidParamException("value", ident.toString(),
+					getPropertyName(), ac);
+    }
+
+    /** @deprecated */
+    private CssPercentage ValueOfIdent(ApplContext ac, CssIdent ident)
+	throws InvalidParamException {
+
+	int hash = ident.hashCode();
+	for (int i = 0; i < VOLUME.length; i++) {
+	    if (hash_values[i] == hash) {
+		return new CssPercentage(ACssProperties.getValue(this, VOLUME[i]));
+	    }
+	}
+
+	throw new InvalidParamException("value", ident.toString(),
+					getPropertyName(), ac);
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ACssStyle) style).getVoiceVolume();
+	} else {
+	    return ((ACssStyle) style).acssVoiceVolume;
+	}
+    }
+
+    static {
+	hash_values = new int[VOLUME.length];
+	for (int i = 0; i < VOLUME.length; i++)
+	    hash_values[i] = VOLUME[i].hashCode();
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/aural/ACssVolume.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,290 @@
+//
+// $Id: ACssVolume.java,v 1.3 2005-09-14 15:14:18 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 org.w3c.css.properties.aural;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssNumber;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+
+/**
+ *  &nbsp;&nbsp; 'volume'
+ *
+ * <P>
+ * <EM>Value:</EM> &lt;percentage&gt; | silent | x-soft | soft | medium | loud | x-loud<br>
+ * <EM>Initial:</EM> medium<BR>
+ * <EM>Applies to:</EM> all elements<BR>
+ * <EM>Inherited:</EM> yes<BR>
+ * <EM>Percentage values:</EM> relative to user-specified mapping
+ *
+ * <P>The legal range of percentage values is 0% to 100%. Note that '0%'
+ * <strong>does not mean the same as "silent"</strong>. 0% represents the
+ * <em>minimum audible</em> volume level and 100% corresponds to the
+ * <em>maximum comfortable</em> level. There is a fixed mapping between
+ * keyword values and percentages:
+ *
+ * <UL>
+ * <li>'silent' = no sound at all, the element is  spoken silently
+ * <LI>'x-soft' = '0%'
+ * <LI>'soft' = '25%'
+ * <LI>'medium' = '50%'
+ * <LI>'loud' = '75%'
+ * <LI>'x-loud' = '100%'
+ * </UL>
+ *
+ * <P>Volume refers to the median volume of the waveform. In other words,
+ * a highly inflected voice at a volume of 50 might peak well above
+ * that. The overall values are likely to be human adjustable
+ * for comfort, for example with a physical volume control (which would
+ * increase both the 0% and 100% values proportionately); what this
+ * property does is adjust the dynamic range.
+ *
+ *
+ * <p>The UA <em>should</em> allow the values corresponding to 0% and
+ * 100% to be set by the listener. No one setting is universally
+ * applicable; suitable values depend on the equipment in use (speakers,
+ * headphones), the environment (in car, home theater, library) and
+ * personal preferences. Some examples:
+ *
+ * <ul><li>A browser for in-car use has a setting for when there is lots
+ * of background noise. 0% would map to a fairly high level and 100% to a
+ * quite high level. The speech is easily audible over the road noise but
+ * the overall dynamic range is compressed. Plusher cars with better
+ * insulation allow a wider dynamic range.
+ *
+ *
+ * <li>Another speech browser is being used in the home, late at night,
+ * (don't annoy the neighbors) or in a shared study room. 0% is set to
+ * a very quiet level and 100% to a fairly quiet level, too. As with the first
+ * example, there is a low slope; the dynamic range is reduced. The
+ * actual volumes are low here, wheras they were high in the first
+ * example.
+ *
+ * <li>In a quiet and isolated house, an expensive hi-fi home theatre
+ * setup. 0% is set fairly low and 100% to quite high; there is wide
+ * dynamic range.
+ * </ul>
+ *
+ * <p>The same authors stylesheet could be used in all cases, simply by
+ * mapping the 0 and 100 points suitably at the client side.
+ *
+ * <p>If an element has a volume of silent, it is spoken silently. It
+ * takes up the same time as if it had been spoken, including any pause
+ * before and after the element, but no sound is generated. This may be
+ * used in language teaching applications, for example. A pause is
+ * gdenerated for the pupil to speak the element themselves. <b>Note:</b>
+ * the value is inherited so child elements will also be silent.  Child
+ * elements may however set the volume to a non-silent value and will
+ * then be spoken.
+ *
+ * <p>To inhibit the speaking of an element and all it's children so that
+ * it takes no time at all (for example, to get the effect of collapsing
+ * and expanding lists) use the CSS1 property 'display'
+ *
+ * <pre>display: none</pre>
+ *
+ * <p>When using the rule <tt>display: none</tt> the element takes up
+ * <em>no time</em>; it is not represented as a pause the length of the
+ * spoken text.
+ *
+ * @version $Revision: 1.3 $
+ */
+public class ACssVolume extends ACssProperty {
+
+    CssValue value;
+
+    private static int[] hash_values;
+
+    private static String[] VOLUME = { "silent", "x-soft", "soft",
+				       "medium", "loud", "x-loud" };
+
+    private static CssIdent defaultValue = new CssIdent(VOLUME[3]);
+
+    /**
+     * Create a new ACssVolume
+     */
+    public ACssVolume() {
+	value = defaultValue;
+    }
+
+    /**
+     * Creates a new ACssVolume
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public ACssVolume(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+	this();
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	//int index;
+
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	} else if (val instanceof CssIdent) {
+	    value = checkIdent(ac, (CssIdent) val);
+	} else if (val instanceof CssPercentage) {
+	    value = val;
+
+	    /*
+	     can't do the clipping here. see specs
+
+	     float v = ((Float) ((CssPercentage) val).get()).floatValue();
+	     if (v < 0 || v > 100) {
+	     // clipped
+	     value = new CssPercentage((v<0)?0:100);
+	     } else {
+	     value = (CssPercentage) val;
+	     }
+	    */
+	} else if (val instanceof CssNumber) {
+	    CssNumber num = (CssNumber) val;
+	    int i = (int) num.getValue();
+	    if (i < 0) {
+		value = new CssNumber(ac, 0);
+	    } else if (i > 100) {
+		value = new CssNumber(ac, 100);
+	    } else {
+		value = val;
+	    }
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value",
+					    expression.getValue().toString(),
+					    getPropertyName(), ac);
+	}
+
+	expression.next();
+    }
+
+    public ACssVolume(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value is equals to inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns some usable value of this property...
+     *
+     * @deprecated
+     */
+    public float getValue() { // vm
+	return ((CssNumber) value).getValue();
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "volume";
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((ACssStyle) style).acssVolume != null)
+	    style.addRedefinitionWarning(ac, this);
+	((ACssStyle) style).acssVolume = this;
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param property The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof ACssVolume &&
+		value.equals(((ACssVolume) property).value));
+    }
+
+    private CssIdent checkIdent(ApplContext ac, CssIdent ident)
+	throws InvalidParamException {
+
+	int hash = ident.hashCode();
+	for (int i = 0; i < VOLUME.length; i++) {
+	    if (hash_values[i] == hash) {
+		return ident;
+	    }
+	}
+
+	throw new InvalidParamException("value", ident.toString(),
+					getPropertyName(), ac);
+    }
+
+    /** @deprecated */
+    private CssPercentage ValueOfIdent(ApplContext ac, CssIdent ident)
+	throws InvalidParamException {
+
+	int hash = ident.hashCode();
+	for (int i = 0; i < VOLUME.length; i++) {
+	    if (hash_values[i] == hash) {
+		return new CssPercentage(ACssProperties.getValue(this, VOLUME[i]));
+	    }
+	}
+
+	throw new InvalidParamException("value", ident.toString(),
+					getPropertyName(), ac);
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((ACssStyle) style).getVolume();
+	} else {
+	    return ((ACssStyle) style).acssVolume;
+	}
+    }
+
+    static {
+	hash_values = new int[VOLUME.length];
+	for (int i = 0; i < VOLUME.length; i++)
+	    hash_values[i] = VOLUME[i].hashCode();
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/aural/AuralDefault.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,56 @@
+# User agent specific
+pause-after.default:  0
+pause-before.default: 0
+
+# Volume :
+volume.silent: -1
+volume.x-soft: 0
+volume.soft:   25
+volume.medium: 50
+volume.loud:   75
+volume.x-loud: 100
+
+# azimuth
+azimuth.left-side: 270
+azimuth.behind.left-side: 270
+azimuth.far-left:  300
+azimuth.behind.far-left:  240
+azimuth.left:      320
+azimuth.behind.left:      220
+azimuth.center-left: 340
+azimuth.behind.center-left: 200
+azimuth.center:     0
+azimuth.behind.center:     180
+azimuth.center-right: 20
+azimuth.behind.center-right: 140
+azimuth.right:      40
+azimuth.behind.right:     120
+azimuth.far-right:  60
+azimuth.behind.far-right: 90
+azimuth.left-side:  90
+azimuth.behind.left-side: 90
+azimuth.leftwards:  20
+azimuth.rightwards: 20
+
+# elevation (funny values !)
+elevation.below:  10
+elevation.level:  30
+elevation.above:  50
+elevation.higher: 70
+elevation.lower:  90
+
+# speech-rate
+speech-rate.medium: 150
+speech-rate.x-slow: 50
+speech-rate.slow:   100
+speech-rate.fast:   200
+speech-rate.x-fast: 250
+speech-rate.faster: -1
+speech-rate.slower: -2
+
+# pitch
+pitch.x-low:  56 
+pitch.low:    85
+pitch.medium: 113
+pitch.high:   170
+pitch.x-high: 226
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/aural/Makefile	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,214 @@
+SRCS = ACssPauseAfter.java ACssProperty.java\
+ACssCue.java ACssPauseBefore.java ACssSpeechRate.java\
+ACssCueAfter.java ACssPitch.java ACssStyle.java\
+ACssCueBefore.java ACssPlayDuring.java ACssVoiceFamily.java\
+ACssPause.java ACssProperties.java ACssVolume.java\
+ACssSpeakPunctuation.java ACssSpeakDate.java\
+ACssSpeakNumeral.java ACssSpeakTime.java\
+ACssRichness.java ACssStress.java\
+ACssPitchRange.java ACssElevation.java\
+ACssAzimuth.java
+
+OBJS = $(SRCS:.java=.class)
+
+PACKAGE = org.w3c.css.aural
+JAVAC = javac
+JAVADOC = javadoc
+JAVADOCFLAGS = -version -d docs -protected
+JAVACFLAGS = 
+MAKEDEPEND = jmakedepend
+
+.SUFFIXES: .class .java
+.java.class:; $(JAVAC) $(JAVACFLAGS) $<
+
+all: $(OBJS)
+
+javadoc:; $(JAVADOC) $(JAVADOCFLAGS) $(PACKAGE)
+
+clean:; -rm -f $(OBJS) *~ core
+
+depend:; $(MAKEDEPEND) $(SRCS)
+
+# DO NOT DELETE THIS LINE -- make depend depends on it.
+ACssPitchRange.class:: ACssPitchRange.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssNumber.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.properties/CssProperty.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+ACssProperty.class:: ACssProperty.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.properties/CssProperty.class
+ACssCueBefore.class:: ACssCueBefore.java\
+	/usr/local/java11/bin/../lib/classes.zip\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssURL.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.properties/CssProperty.class
+ACssSpeakDate.class:: ACssSpeakDate.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.properties/CssProperty.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+ACssPitch.class:: ACssPitch.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssFrequency.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.properties/CssProperty.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+ACssRichness.class:: ACssRichness.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssNumber.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.properties/CssProperty.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+ACssPauseBefore.class:: ACssPauseBefore.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssNumber.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssTime.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssPercentage.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.properties/CssProperty.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+ACssSpeechRate.class:: ACssSpeechRate.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssNumber.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.properties/CssProperty.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+ACssStyle.class:: ACssStyle.java\
+	/usr/local/java11/bin/../lib/classes.zip\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/Warnings.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/Warning.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.properties/Css1Style.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssPercentage.class
+ACssPlayDuring.class:: ACssPlayDuring.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssURL.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssOperator.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.properties/CssProperty.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class\
+	/usr/local/java11/bin/../lib/classes.zip
+ACssProperties.class:: ACssProperties.java\
+	/usr/local/java11/bin/../lib/classes.zip\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.properties/CssProperty.class
+ACssSpeakPunctuation.class:: ACssSpeakPunctuation.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.properties/CssProperty.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+ACssPauseAfter.class:: ACssPauseAfter.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssTime.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssNumber.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssPercentage.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.properties/CssProperty.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+ACssStress.class:: ACssStress.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssNumber.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.properties/CssProperty.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+ACssCueAfter.class:: ACssCueAfter.java\
+	/usr/local/java11/bin/../lib/classes.zip\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssURL.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.properties/CssProperty.class
+ACssAzimuth.class:: ACssAzimuth.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssNumber.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssAngle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.properties/CssProperty.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+ACssElevation.class:: ACssElevation.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssNumber.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssAngle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.properties/CssProperty.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+ACssVoiceFamily.class:: ACssVoiceFamily.java\
+	/usr/local/java11/bin/../lib/classes.zip\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.properties/CssProperty.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssOperator.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssString.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/Util.class
+ACssSpeakNumeral.class:: ACssSpeakNumeral.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.properties/CssProperty.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+ACssCue.class:: ACssCue.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssSelectors.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssOperator.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.properties/CssProperty.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+ACssVolume.class:: ACssVolume.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssNumber.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssPercentage.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.properties/CssProperty.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+ACssPause.class:: ACssPause.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssSelectors.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssOperator.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.properties/CssProperty.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+ACssSpeakTime.class:: ACssSpeakTime.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssNumber.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.properties/CssProperty.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CSS1Default.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,88 @@
+# inherited : true if this property is inherited ...
+
+background.inherited:		false
+background-attachment.inherited:false
+
+color.inherited:		 true
+background-color.inherited:	 false
+background-image.inherited:	 false
+background-position.inherited:	 false
+background-attachment.inherited: false
+background-repeat.inherited:	 false
+background.inherited:	         false
+font.inherited:			 true
+font-family.inherited:		 true
+font-size.inherited:		 true
+font-style.inherited:		 true
+font-variant.inherited:		 true
+font-weight.inherited:		 true
+font-stretch.inherited:		 true
+font-size-adjust.inherited:	 true
+text-ident.inherited:		 true
+text-align.inherited:		 true
+text-decoration.inherited:	 false
+text-shadow.inherited:	         false
+letter-spacing.inherited:	 true
+word-spacing.inherited:		 true
+text-transform.inherited:	 true
+white-space.inherited:		 true
+margin.inherited:		false
+margin-bottom.inherited:	false
+margin-left.inherited:		false
+margin-right.inherited:		false
+margin-top.inherited:		false
+padding.inherited:		false
+padding-bottom.inherited:	false
+padding-left.inherited:		false
+padding-right.inherited:	false
+padding-top.inherited:		false
+display.inherited:		false
+position.inherited:		false
+z-index.inherited:		false
+direction.inherited:		true
+unicode-bidi.inherited:		false
+vertical-align.inherited:	false
+width.inherited:		false
+min-width.inherited:		false
+max-width.inherited:		false
+min-height.inherited:		false
+max-height.inherited:		false
+clear.inherited:		false
+float.inherited:		false
+height.inherited:		false
+list-style.inherited:		true
+list-style-image.inherited:	true
+list-style-position.inherited:	true
+list-style-type.inherited:	true
+
+border.inherited:		false
+border-bottom.inherited:	false
+border-bottom-color.inherited:	false
+border-bottom-style.inherited:	false
+border-bottom-width.inherited:	false
+border-color.inherited:		false
+border-left.inherited:		false
+border-left-color.inherited:	false
+border-left-style.inherited:	false
+border-left-width.inherited:	false
+border-right.inherited:		false
+border-right-color.inherited:	false
+border-right-style.inherited:	false
+border-right-width.inherited:	false
+border-style.inherited:		false
+border-top.inherited:		false
+border-top-color.inherited:	false
+border-top-style.inherited:	false
+border-top-width.inherited:	false
+border-width.inherited:		false
+line-height.inherited:		true
+
+content.inherited:		false
+quotes.inherited:		true
+content.inherited:		false
+counter-reset.inherited:        false
+counter-increment.inherited:    false
+content.inherited:		false
+marker-offset.inherited:        false
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/Css1Style.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,3099 @@
+//
+// $Id: Css1Style.java,v 1.17 2009-04-06 13:41:42 ot 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 org.w3c.css.properties.css1;
+
+import java.util.Enumeration;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+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 org.w3c.css.values.CssLength;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssTypes;
+import org.w3c.css.values.CssValue;
+
+/**
+ * The Css1Style main class.
+ */
+public class Css1Style extends CssStyle {
+
+    /** Font properties */
+    protected CssFont cssFont = new CssFont();
+    protected CssFontCSS2 cssFontCSS2 = new CssFontCSS2();
+    protected CssFontCSS1 cssFontCSS1 = new CssFontCSS1();
+    protected CssFontStretch cssFontStretch;
+    protected CssFontStretchCSS2 cssFontStretchCSS2;
+    protected CssFontStretchCSS1 cssFontStretchCSS1;
+    protected CssFontSizeAdjust cssFontSizeAdjust;
+    protected CssFontSizeAdjustCSS2 cssFontSizeAdjustCSS2;
+
+    /* Color and Background properties */
+    /** Color property */
+    protected CssColor cssColor;
+    protected CssColorCSS2 cssColorCSS2;
+    protected CssColorCSS1 cssColorCSS1;
+    /** background properties */
+    protected CssBackground cssBackground = new CssBackground();
+    protected CssBackgroundCSS2 cssBackgroundCSS2 = new CssBackgroundCSS2();
+    protected CssBackgroundCSS1 cssBackgroundCSS1 = new CssBackgroundCSS1();
+    protected CssBackgroundMob cssBackgroundMob = new CssBackgroundMob();
+
+    /* Text properties */
+    /** word-spacing property */
+    protected CssWordSpacing cssWordSpacing;
+    /** letter-spacing property */
+    protected CssLetterSpacing cssLetterSpacing;
+    /** text-decoration property */
+    protected CssTextDecoration cssTextDecoration;
+    protected CssTextDecorationMob cssTextDecorationMob;
+    /** vertical-align property */
+    protected CssVerticalAlign cssVerticalAlign;
+    protected CssVerticalAlignCSS1 cssVerticalAlignCSS1;
+    protected CssVerticalAlignMob cssVerticalAlignMob;
+    /** text-transform property */
+    protected CssTextTransform cssTextTransform;
+    /** text-align property */
+    protected CssTextAlign cssTextAlign;
+    protected CssTextAlignMob cssTextAlignMob;
+    /** text-ident property */
+    protected CssTextIndent cssTextIndent;
+    protected CssTextIndentMob cssTextIndentMob;
+    /** text-shadow property */
+    protected CssTextShadow cssTextShadow;
+    protected CssTextShadowATSC cssTextShadowATSC;
+    // line-heigth : see cssFont
+
+    /* Box properties */
+    /** margin properties */
+    protected CssMargin cssMargin = new CssMargin();
+    /** padding properties */
+    protected CssPadding cssPadding = new CssPadding();
+    /** border properties */
+    protected CssBorder cssBorder = new CssBorder();
+    protected CssBorderCSS2 cssBorderCSS2 = new CssBorderCSS2();
+    protected CssBorderCSS1 cssBorderCSS1 = new CssBorderCSS1();
+    /** width property */
+    protected CssWidth cssWidth;
+    protected CssWidthMob cssWidthMob;
+
+    /** min-width property */
+    protected CssMinWidth cssMinWidth;
+    protected CssMinWidthATSC cssMinWidthATSC;
+    /** max-width property */
+    protected CssMaxWidth cssMaxWidth;
+    protected CssMaxWidthATSC cssMaxWidthATSC;
+
+    /** min-height property */
+    protected CssMinHeight cssMinHeight;
+    protected CssMinHeightATSC cssMinHeightATSC;
+    /** max-height property */
+    protected CssMaxHeight cssMaxHeight;
+    protected CssMaxHeightATSC cssMaxHeightATSC;
+
+    /** height property */
+    protected CssHeight cssHeight;
+    protected CssHeightMob cssHeightMob;
+    /** float property */
+    protected CssFloat cssFloat;
+    /** clear property */
+    protected CssClear cssClear;
+
+
+    /* Classification properties */
+    /** display property */
+    protected CssDisplay cssDisplay;
+    protected CssDisplayCSS2 cssDisplayCSS2;
+    protected CssDisplayCSS1 cssDisplayCSS1;
+    /** position property */
+    protected CssPosition cssPosition;
+
+    /** top property */
+    protected CssTop cssTop;
+    /** left property */
+    protected CssLeft cssLeft;
+    /** right property */
+    protected CssRight cssRight;
+    /** bottom property */
+    protected CssBottom cssBottom;
+
+    /** z-index property */
+    protected CssZIndex cssZIndex;
+
+    /** direction property */
+    protected CssDirection cssDirection;
+    protected CssDirectionATSC cssDirectionATSC;
+
+    /** unicode-bidi property */
+    protected CssUnicodeBidi cssUnicodeBidi;
+    protected CssUnicodeBidiATSC cssUnicodeBidiATSC;
+
+    /** white-space property */
+    protected CssWhiteSpace cssWhiteSpace;
+    /** list-style properties */
+    protected CssListStyle cssListStyle = new CssListStyle();
+    protected CssListStyleCSS2 cssListStyleCSS2 = new CssListStyleCSS2();
+    protected CssListStyleCSS1 cssListStyleCSS1 = new CssListStyleCSS1();
+
+    /** overflow property */
+    protected CssOverflow cssOverflow;
+
+    /** clip property */
+    protected CssClip cssClip;
+
+    /** visibility property */
+    protected CssVisibility cssVisibility;
+
+    /** content property */
+    protected CssContentCSS2 cssContentCSS2;
+    protected CssContent cssContent;
+    /** quotes property */
+    protected CssQuotes cssQuotes;
+    protected CssQuotesATSC cssQuotesATSC;
+    /** counter-reset property */
+    protected CssCounterReset cssCounterReset;
+    /** counter-increment property */
+    protected CssCounterIncrement cssCounterIncrement;
+    /** marker-offset property */
+    protected CssMarkerOffset cssMarkerOffset;
+    protected CssMarkerOffsetATSC cssMarkerOffsetATSC;
+
+    /**TV property */
+    protected CssListStyleTypeTV cssListStyleTypeTV;
+    /**TV property */
+    protected CssListStyleTV cssListStyleTV;
+    /**TV property */
+    protected CssPositionTV cssPositionTV;
+    /**TV property */
+    protected CssTextAlignTV cssTextAlignTV;
+    /**TV property */
+    protected CssTextDecorationTV cssTextDecorationTV;
+    /**TV property */
+    protected CssVerticalAlignTV cssVerticalAlignTV;
+
+    /*
+     * Font Properties
+     */
+
+    /**
+     * Get the font-style property
+     */
+    public final CssFontStyle getFontStyle() {
+	if (cssFont.fontStyle == null) {
+	    cssFont.fontStyle =
+		(CssFontStyle) style.CascadingOrder(new CssFontStyle(),
+			style, selector);
+	}
+	return cssFont.fontStyle;
+    }
+
+    public final CssFontStyleCSS2 getFontStyleCSS2() {
+	if (cssFontCSS2.fontStyle == null) {
+	    cssFontCSS2.fontStyle =
+		(CssFontStyleCSS2) style.CascadingOrder(new CssFontStyleCSS2(),
+			style, selector);
+	}
+	return cssFontCSS2.fontStyle;
+    }
+
+    public final CssFontStyleCSS1 getFontStyleCSS1() {
+	if (cssFontCSS1.fontStyle == null) {
+	    cssFontCSS1.fontStyle =
+		(CssFontStyleCSS1) style.CascadingOrder(new CssFontStyleCSS1(),
+			style, selector);
+	}
+	return cssFontCSS1.fontStyle;
+    }
+
+    /**
+     * Get the font-variant property
+     */
+    public final CssFontVariant getFontVariant() {
+	if (cssFont.fontVariant == null) {
+	    cssFont.fontVariant =
+		(CssFontVariant) style.CascadingOrder(new CssFontVariant(),
+			style, selector);
+	}
+	return cssFont.fontVariant;
+    }
+
+    public final CssFontVariantCSS2 getFontVariantCSS2() {
+	if (cssFontCSS2.fontVariant == null) {
+	    cssFontCSS2.fontVariant =
+		(CssFontVariantCSS2) style.CascadingOrder(new CssFontVariantCSS2(),
+			style, selector);
+	}
+	return cssFontCSS2.fontVariant;
+    }
+
+    public final CssFontVariantCSS1 getFontVariantCSS1() {
+	if (cssFontCSS1.fontVariant == null) {
+	    cssFontCSS1.fontVariant =
+		(CssFontVariantCSS1) style.CascadingOrder(new CssFontVariantCSS1(),
+			style, selector);
+	}
+	return cssFontCSS1.fontVariant;
+    }
+
+    /**
+     * Get the font-weight property
+     */
+    public final CssFontWeightCSS2 getFontWeightCSS2() {
+	if (cssFontCSS2.fontWeight == null) {
+	    cssFontCSS2.fontWeight =
+		(CssFontWeightCSS2) style.CascadingOrder(new CssFontWeightCSS2(),
+			style, selector);
+	}
+	return cssFontCSS2.fontWeight;
+    }
+
+    public final CssFontWeight getFontWeight() {
+	if (cssFont.fontWeight == null) {
+	    cssFont.fontWeight =
+		(CssFontWeight) style.CascadingOrder(new CssFontWeight(),
+			style, selector);
+	}
+	return cssFont.fontWeight;
+    }
+
+    public final CssFontWeightCSS1 getFontWeightCSS1() {
+	if (cssFontCSS1.fontWeight == null) {
+	    cssFontCSS1.fontWeight =
+		(CssFontWeightCSS1) style.CascadingOrder(new CssFontWeightCSS1(),
+			style, selector);
+	}
+	return cssFontCSS1.fontWeight;
+    }
+
+    /**
+     * Get the font-stretch property
+     */
+    public final CssFontStretch getFontStretch() {
+	if (cssFontStretch == null) {
+	    cssFontStretch =
+		(CssFontStretch) style.CascadingOrder(new CssFontStretch(),
+			style, selector);
+	}
+	return cssFontStretch;
+    }
+
+    public final CssFontStretchCSS2 getFontStretchCSS2() {
+	if (cssFontStretchCSS2 == null) {
+	    cssFontStretchCSS2 =
+		(CssFontStretchCSS2) style.CascadingOrder(new CssFontStretchCSS2(),
+			style, selector);
+	}
+	return cssFontStretchCSS2;
+    }
+
+    public final CssFontStretchCSS1 getFontStretchCSS1() {
+	if (cssFontStretchCSS1 == null) {
+	    cssFontStretchCSS1 =
+		(CssFontStretchCSS1) style.CascadingOrder(new CssFontStretchCSS1(),
+			style, selector);
+	}
+	return cssFontStretchCSS1;
+    }
+
+    /**
+     * Get the font-size property
+     */
+    public final CssFontSizeCSS2 getFontSizeCSS2() {
+	if (cssFontCSS2.fontSize == null) {
+	    cssFontCSS2.fontSize =
+		(CssFontSizeCSS2) style.CascadingOrder(new CssFontSizeCSS2(),
+			style, selector);
+	}
+	return cssFontCSS2.fontSize;
+    }
+
+    public final CssFontSize getFontSize() {
+	if (cssFont.fontSize == null) {
+	    cssFont.fontSize =
+		(CssFontSize) style.CascadingOrder(new CssFontSize(),
+			style, selector);
+	}
+	return cssFont.fontSize;
+    }
+
+    public final CssFontSizeCSS1 getFontSizeCSS1() {
+	if (cssFontCSS1.fontSize == null) {
+	    cssFontCSS1.fontSize =
+		(CssFontSizeCSS1) style.CascadingOrder(new CssFontSizeCSS1(),
+			style, selector);
+	}
+	return cssFontCSS1.fontSize;
+    }
+
+    /**
+     * Get the font-size-adjust property
+     */
+    public final CssFontSizeAdjustCSS2 getFontSizeAdjustCSS2() {
+	if (cssFontSizeAdjustCSS2 == null) {
+	    cssFontSizeAdjustCSS2 =
+		(CssFontSizeAdjustCSS2) style.CascadingOrder(
+			new CssFontSizeAdjustCSS2(),
+			style, selector);
+	}
+	return cssFontSizeAdjustCSS2;
+    }
+
+    public final CssFontSizeAdjust getFontSizeAdjust() {
+	if (cssFontSizeAdjust == null) {
+	    cssFontSizeAdjust =
+		(CssFontSizeAdjust) style.CascadingOrder(
+			new CssFontSizeAdjust(),
+			style, selector);
+	}
+	return cssFontSizeAdjust;
+    }
+
+    /**
+     * Get the font-family property
+     */
+    public final CssFontFamily getFontFamily() {
+	if (cssFont.fontFamily == null) {
+	    cssFont.fontFamily =
+		(CssFontFamily) style.CascadingOrder(new CssFontFamily(),
+			style, selector);
+	}
+	return cssFont.fontFamily;
+    }
+
+    public final CssFontFamilyCSS2 getFontFamilyCSS2() {
+	if (cssFontCSS2.fontFamily == null) {
+	    cssFontCSS2.fontFamily =
+		(CssFontFamilyCSS2) style.CascadingOrder(new CssFontFamilyCSS2(),
+			style, selector);
+	}
+	return cssFontCSS2.fontFamily;
+    }
+
+    public final CssFontFamilyCSS1 getFontFamilyCSS1() {
+	if (cssFontCSS1.fontFamily == null) {
+	    cssFontCSS1.fontFamily =
+		(CssFontFamilyCSS1) style.CascadingOrder(new CssFontFamilyCSS1(),
+			style, selector);
+	}
+	return cssFontCSS1.fontFamily;
+    }
+
+    /**
+     * Get the font property
+     */
+    public final CssFont getFont() {
+	if (cssFont.value != null) {
+	    // nothing
+	} else {
+	    if (cssFont.fontStyle == null) {
+		cssFont.fontStyle = getFontStyle();
+	    }
+	    if (cssFont.fontVariant == null) {
+		cssFont.fontVariant = getFontVariant();
+	    }
+	    if (cssFont.fontWeight == null) {
+		cssFont.fontWeight = getFontWeight();
+	    }
+	    if (cssFont.fontSize == null) {
+		cssFont.fontSize = getFontSize();
+	    }
+	    if (cssFont.lineHeight == null) {
+		cssFont.lineHeight = getLineHeight();
+	    }
+	    if (cssFont.fontFamily == null) {
+		cssFont.fontFamily = getFontFamily();
+	    }
+	}
+	return cssFont;
+    }
+
+    public final CssFontCSS2 getFontCSS2() {
+	if (cssFontCSS2.value != null) {
+	    // nothing
+	} else {
+	    if (cssFontCSS2.fontStyle == null) {
+		cssFontCSS2.fontStyle = getFontStyleCSS2();
+	    }
+	    if (cssFontCSS2.fontVariant == null) {
+		cssFontCSS2.fontVariant = getFontVariantCSS2();
+	    }
+	    if (cssFontCSS2.fontWeight == null) {
+		cssFontCSS2.fontWeight = getFontWeightCSS2();
+	    }
+	    if (cssFontCSS2.fontSize == null) {
+		cssFontCSS2.fontSize = getFontSizeCSS2();
+	    }
+	    if (cssFontCSS2.lineHeight == null) {
+		cssFontCSS2.lineHeight = getLineHeightCSS2();
+	    }
+	    if (cssFontCSS2.fontFamily == null) {
+		cssFontCSS2.fontFamily = getFontFamilyCSS2();
+	    }
+	}
+	return cssFontCSS2;
+    }
+
+    public final CssFontCSS1 getFontCSS1() {
+	if (cssFontCSS1.value != null) {
+	    // nothing
+	} else {
+	    if (cssFontCSS1.fontStyle == null) {
+		cssFontCSS1.fontStyle = getFontStyleCSS1();
+	    }
+	    if (cssFontCSS1.fontVariant == null) {
+		cssFontCSS1.fontVariant = getFontVariantCSS1();
+	    }
+	    if (cssFontCSS1.fontWeight == null) {
+		cssFontCSS1.fontWeight = getFontWeightCSS1();
+	    }
+	    if (cssFontCSS1.fontSize == null) {
+		cssFontCSS1.fontSize = getFontSizeCSS1();
+	    }
+	    if (cssFontCSS1.lineHeight == null) {
+		cssFontCSS1.lineHeight = getLineHeightCSS1();
+	    }
+	    if (cssFontCSS1.fontFamily == null) {
+		cssFontCSS1.fontFamily = getFontFamilyCSS1();
+	    }
+	}
+	return cssFontCSS1;
+    }
+
+    /*
+     * Color and Background properties
+     */
+
+    /**
+     * Get the color property
+     */
+    public final CssColor getColor() {
+	if (cssColor == null) {
+	    cssColor = (CssColor)
+	    style.CascadingOrder(new CssColor(), style, selector);
+	}
+	return cssColor;
+    }
+
+    public final CssColorCSS2 getColorCSS2() {
+	if (cssColorCSS2 == null) {
+	    cssColorCSS2 = (CssColorCSS2)
+	    style.CascadingOrder(new CssColorCSS2(), style, selector);
+	}
+	return cssColorCSS2;
+    }
+
+    public final CssColorCSS1 getColorCSS1() {
+	if (cssColorCSS1 == null) {
+	    cssColorCSS1 = (CssColorCSS1)
+	    style.CascadingOrder(new CssColorCSS1(), style, selector);
+	}
+	return cssColorCSS1;
+    }
+
+    /**
+     * Get the background-color property
+     */
+    public final CssBackgroundColor getBackgroundColor() {
+	if (cssBackground.color == null) {
+	    cssBackground.color =
+		(CssBackgroundColor) style.CascadingOrder(new CssBackgroundColor(),
+			style, selector);
+	}
+	return cssBackground.color;
+    }
+
+    public final CssBackgroundColorCSS2 getBackgroundColorCSS2() {
+	if (cssBackgroundCSS2.color == null) {
+	    cssBackgroundCSS2.color =
+		(CssBackgroundColorCSS2) style.CascadingOrder(
+			new CssBackgroundColorCSS2(),
+			style, selector);
+	}
+	return cssBackgroundCSS2.color;
+    }
+
+    public final CssBackgroundColorCSS1 getBackgroundColorCSS1() {
+	if (cssBackgroundCSS1.color == null) {
+	    cssBackgroundCSS1.color =
+		(CssBackgroundColorCSS1) style.CascadingOrder(
+			new CssBackgroundColorCSS1(),
+			style, selector);
+	}
+	return cssBackgroundCSS1.color;
+    }
+
+    public final CssBackgroundColorMob getBackgroundColorMob() {
+	if (cssBackgroundMob.color == null) {
+	    cssBackgroundMob.color =
+		(CssBackgroundColorMob) style.CascadingOrder(
+			new CssBackgroundColorMob(),
+			style, selector);
+	}
+	return cssBackgroundMob.color;
+    }
+
+    /**
+     * Get the background-image property
+     */
+    public final CssBackgroundImage getBackgroundImage() {
+	if (cssBackground.image == null) {
+	    cssBackground.image =
+		(CssBackgroundImage) style.CascadingOrder(new CssBackgroundImage(),
+			style, selector);
+	}
+	return cssBackground.image;
+    }
+
+    public final CssBackgroundImageCSS2 getBackgroundImageCSS2() {
+	if (cssBackgroundCSS2.image == null) {
+	    cssBackgroundCSS2.image =
+		(CssBackgroundImageCSS2) style.CascadingOrder(new CssBackgroundImageCSS2(),
+			style, selector);
+	}
+	return cssBackgroundCSS2.image;
+    }
+
+    public final CssBackgroundImageCSS1 getBackgroundImageCSS1() {
+	if (cssBackgroundCSS1.image == null) {
+	    cssBackgroundCSS1.image =
+		(CssBackgroundImageCSS1) style.CascadingOrder(new CssBackgroundImageCSS1(),
+			style, selector);
+	}
+	return cssBackgroundCSS1.image;
+    }
+
+    public final CssBackgroundImageMob getBackgroundImageMob() {
+	if (cssBackgroundMob.image == null) {
+	    cssBackgroundMob.image =
+		(CssBackgroundImageMob) style.CascadingOrder(new CssBackgroundImageMob(),
+			style, selector);
+	}
+	return cssBackgroundMob.image;
+    }
+
+    /**
+     * Get the background-repeat property
+     */
+    public final CssBackgroundRepeat getBackgroundRepeat() {
+	if (cssBackground.repeat == null) {
+	    cssBackground.repeat =
+		(CssBackgroundRepeat) style.CascadingOrder(new CssBackgroundRepeat(),
+			style, selector);
+	}
+	return cssBackground.repeat;
+    }
+
+    public final CssBackgroundRepeatCSS2 getBackgroundRepeatCSS2() {
+	if (cssBackgroundCSS2.repeat == null) {
+	    cssBackgroundCSS2.repeat =
+		(CssBackgroundRepeatCSS2) style.CascadingOrder(new CssBackgroundRepeatCSS2(),
+			style, selector);
+	}
+	return cssBackgroundCSS2.repeat;
+    }
+
+    public final CssBackgroundRepeatCSS1 getBackgroundRepeatCSS1() {
+	if (cssBackgroundCSS1.repeat == null) {
+	    cssBackgroundCSS1.repeat =
+		(CssBackgroundRepeatCSS1) style.CascadingOrder(new CssBackgroundRepeatCSS1(),
+			style, selector);
+	}
+	return cssBackgroundCSS1.repeat;
+    }
+
+    public final CssBackgroundRepeatMob getBackgroundRepeatMob() {
+	if (cssBackgroundMob.repeat == null) {
+	    cssBackgroundMob.repeat =
+		(CssBackgroundRepeatMob) style.CascadingOrder(new CssBackgroundRepeatMob(),
+			style, selector);
+	}
+	return cssBackgroundMob.repeat;
+    }
+
+    /**
+     * Get the background-attachment property
+     */
+    public final CssBackgroundAttachment getBackgroundAttachment() {
+	if (cssBackground.attachment == null) {
+	    cssBackground.attachment =
+		(CssBackgroundAttachment) style.CascadingOrder(new CssBackgroundAttachment(),
+			style, selector);
+	}
+	return cssBackground.attachment;
+    }
+
+    public final CssBackgroundAttachmentCSS2 getBackgroundAttachmentCSS2() {
+	if (cssBackgroundCSS2.attachment == null) {
+	    cssBackgroundCSS2.attachment =
+		(CssBackgroundAttachmentCSS2) style.CascadingOrder(new CssBackgroundAttachmentCSS2(),
+			style, selector);
+	}
+	return cssBackgroundCSS2.attachment;
+    }
+
+    public final CssBackgroundAttachmentCSS1 getBackgroundAttachmentCSS1() {
+	if (cssBackgroundCSS1.attachment == null) {
+	    cssBackgroundCSS1.attachment =
+		(CssBackgroundAttachmentCSS1) style.CascadingOrder(new CssBackgroundAttachmentCSS1(),
+			style, selector);
+	}
+	return cssBackgroundCSS1.attachment;
+    }
+
+    public final CssBackgroundAttachmentMob getBackgroundAttachmentMob() {
+	if (cssBackgroundMob.attachment == null) {
+	    cssBackgroundMob.attachment =
+		(CssBackgroundAttachmentMob) style.CascadingOrder(new CssBackgroundAttachmentMob(),
+			style, selector);
+	}
+	return cssBackgroundMob.attachment;
+    }
+
+    /**
+     * Get the background-position property
+     */
+    public final CssBackgroundPosition getBackgroundPosition() {
+	if (cssBackground.position == null) {
+	    cssBackground.position =
+		(CssBackgroundPosition) style.CascadingOrder(new CssBackgroundPosition(),
+			style, selector);
+	}
+	return cssBackground.position;
+    }
+
+    public final CssBackgroundPositionCSS2 getBackgroundPositionCSS2() {
+	if (cssBackgroundCSS2.position == null) {
+	    cssBackgroundCSS2.position =
+		(CssBackgroundPositionCSS2) style.CascadingOrder(new CssBackgroundPositionCSS2(),
+			style, selector);
+	}
+	return cssBackgroundCSS2.position;
+    }
+
+    public final CssBackgroundPositionCSS1 getBackgroundPositionCSS1() {
+	if (cssBackgroundCSS1.position == null) {
+	    cssBackgroundCSS1.position =
+		(CssBackgroundPositionCSS1) style.CascadingOrder(new CssBackgroundPositionCSS1(),
+			style, selector);
+	}
+	return cssBackgroundCSS1.position;
+    }
+
+    public final CssBackgroundPositionMob getBackgroundPositionMob() {
+	if (cssBackgroundMob.position == null) {
+	    cssBackgroundMob.position =
+		(CssBackgroundPositionMob) style.CascadingOrder(new CssBackgroundPositionMob(),
+			style, selector);
+	}
+	return cssBackgroundMob.position;
+    }
+
+    /**
+     * Get the background property
+     */
+    public final CssBackground getBackground() {
+	if (cssBackground.getColor() == null) {
+	    cssBackground.color = getBackgroundColor();
+	}
+	if (cssBackground.image == null) {
+	    cssBackground.image = getBackgroundImage();
+	}
+	if (cssBackground.repeat == null) {
+	    cssBackground.repeat = getBackgroundRepeat();
+	}
+	if (cssBackground.attachment == null) {
+	    cssBackground.attachment = getBackgroundAttachment();
+	}
+	if (cssBackground.position == null) {
+	    cssBackground.position = getBackgroundPosition();
+	}
+	return cssBackground;
+    }
+
+    public final CssBackgroundCSS2 getBackgroundCSS2() {
+	if (cssBackgroundCSS2.getColor() == null) {
+	    cssBackgroundCSS2.color = getBackgroundColorCSS2();
+	}
+	if (cssBackgroundCSS2.image == null) {
+	    cssBackgroundCSS2.image = getBackgroundImageCSS2();
+	}
+	if (cssBackgroundCSS2.repeat == null) {
+	    cssBackgroundCSS2.repeat = getBackgroundRepeatCSS2();
+	}
+	if (cssBackgroundCSS2.attachment == null) {
+	    cssBackgroundCSS2.attachment = getBackgroundAttachmentCSS2();
+	}
+	if (cssBackgroundCSS2.position == null) {
+	    cssBackgroundCSS2.position = getBackgroundPositionCSS2();
+	}
+	return cssBackgroundCSS2;
+    }
+
+    public final CssBackgroundCSS1 getBackgroundCSS1() {
+	if (cssBackgroundCSS1.getColor() == null) {
+	    cssBackgroundCSS1.color = getBackgroundColorCSS1();
+	}
+	if (cssBackgroundCSS1.image == null) {
+	    cssBackgroundCSS1.image = getBackgroundImageCSS1();
+	}
+	if (cssBackgroundCSS1.repeat == null) {
+	    cssBackgroundCSS1.repeat = getBackgroundRepeatCSS1();
+	}
+	if (cssBackgroundCSS1.attachment == null) {
+	    cssBackgroundCSS1.attachment = getBackgroundAttachmentCSS1();
+	}
+	if (cssBackgroundCSS1.position == null) {
+	    cssBackgroundCSS1.position = getBackgroundPositionCSS1();
+	}
+	return cssBackgroundCSS1;
+    }
+
+    public final CssBackgroundMob getBackgroundMob() {
+	if (cssBackgroundMob.getColor() == null) {
+	    cssBackgroundMob.color = getBackgroundColorMob();
+	}
+	if (cssBackgroundMob.image == null) {
+	    cssBackgroundMob.image = getBackgroundImageMob();
+	}
+	if (cssBackgroundMob.repeat == null) {
+	    cssBackgroundMob.repeat = getBackgroundRepeatMob();
+	}
+	if (cssBackgroundMob.attachment == null) {
+	    cssBackgroundMob.attachment = getBackgroundAttachmentMob();
+	}
+	if (cssBackgroundMob.position == null) {
+	    cssBackgroundMob.position = getBackgroundPositionMob();
+	}
+	return cssBackgroundMob;
+    }
+
+    /*
+     * Text properties
+     */
+
+    /**
+     * Get the word-spacing property
+     */
+    public final CssWordSpacing getWordSpacing() {
+	if (cssWordSpacing == null) {
+	    cssWordSpacing =
+		(CssWordSpacing) style.CascadingOrder(new CssWordSpacing(),
+			style, selector);
+	}
+	return cssWordSpacing;
+    }
+
+    /**
+     * Get the letter-spacing property
+     */
+    public final CssLetterSpacing getLetterSpacing() {
+	if (cssLetterSpacing == null) {
+	    cssLetterSpacing =
+		(CssLetterSpacing) style.CascadingOrder(new CssLetterSpacing(),
+			style, selector);
+	}
+	return cssLetterSpacing;
+    }
+
+    /**
+     * Get the text-decoration property
+     */
+    public final CssTextDecoration getTextDecoration() {
+	if (cssTextDecoration == null) {
+	    cssTextDecoration =
+		(CssTextDecoration) style.CascadingOrder(new CssTextDecoration(),
+			style, selector);
+	}
+	return cssTextDecoration;
+    }
+
+    public final CssTextDecorationMob getTextDecorationMob() {
+	if (cssTextDecorationMob == null) {
+	    cssTextDecorationMob =
+		(CssTextDecorationMob) style.CascadingOrder(new CssTextDecorationMob(),
+			style, selector);
+	}
+	return cssTextDecorationMob;
+    }
+
+    /**
+     * Get the vertical-align property
+     */
+    public final CssVerticalAlign getVerticalAlign() {
+	if (cssVerticalAlign == null) {
+	    cssVerticalAlign =
+		(CssVerticalAlign) style.CascadingOrder(new CssVerticalAlign(),
+			style, selector);
+	}
+	return cssVerticalAlign;
+    }
+
+    public final CssVerticalAlignMob getVerticalAlignMob() {
+	if (cssVerticalAlignMob == null) {
+	    cssVerticalAlignMob =
+		(CssVerticalAlignMob) style.CascadingOrder(new CssVerticalAlignMob(),
+			style, selector);
+	}
+	return cssVerticalAlignMob;
+    }
+
+    public final CssVerticalAlignCSS1 getVerticalAlignCSS1() {
+	if (cssVerticalAlignCSS1 == null) {
+	    cssVerticalAlignCSS1 =
+		(CssVerticalAlignCSS1) style.CascadingOrder(new CssVerticalAlignCSS1(),
+			style, selector);
+	}
+	return cssVerticalAlignCSS1;
+    }
+
+    /**
+     * Get the text-transform property
+     */
+    public final CssTextTransform getTextTransform() {
+	if (cssTextTransform == null) {
+	    cssTextTransform =
+		(CssTextTransform) style.CascadingOrder(new CssTextTransform(),
+			style, selector);
+	}
+	return cssTextTransform;
+    }
+
+    /**
+     * Get the text-align property
+     */
+    public final CssTextAlign getTextAlign() {
+	if (cssTextAlign == null) {
+	    cssTextAlign =
+		(CssTextAlign) style.CascadingOrder(new CssTextAlign(),
+			style, selector);
+	}
+	return cssTextAlign;
+    }
+
+    public final CssTextAlignMob getTextAlignMob() {
+	if (cssTextAlignMob == null) {
+	    cssTextAlignMob =
+		(CssTextAlignMob) style.CascadingOrder(new CssTextAlignMob(),
+			style, selector);
+	}
+	return cssTextAlignMob;
+    }
+
+    /**
+     * Get the text-indent property
+     */
+    public final CssTextIndent getTextIndent() {
+	if (cssTextIndent == null) {
+	    cssTextIndent =
+		(CssTextIndent) style.CascadingOrder(new CssTextIndent(),
+			style, selector);
+	}
+	return cssTextIndent;
+    }
+
+    public final CssTextIndentMob getTextIndentMob() {
+	if (cssTextIndentMob == null) {
+	    cssTextIndentMob =
+		(CssTextIndentMob) style.CascadingOrder(new CssTextIndentMob(),
+			style, selector);
+	}
+	return cssTextIndentMob;
+    }
+
+    /**
+     * Get the text-shadow property
+     */
+    public final CssTextShadow getTextShadow() {
+	if (cssTextShadow == null) {
+	    cssTextShadow =
+		(CssTextShadow) style.CascadingOrder(new CssTextShadow(),
+			style, selector);
+	}
+	return cssTextShadow;
+    }
+
+    public final CssTextShadowATSC getTextShadowATSC() {
+	if (cssTextShadowATSC == null) {
+	    cssTextShadowATSC =
+		(CssTextShadowATSC) style.CascadingOrder(new CssTextShadowATSC(),
+			style, selector);
+	}
+	return cssTextShadowATSC;
+    }
+
+    /**
+     * Get the line-height property
+     */
+    public final CssLineHeight getLineHeight() {
+	if (cssFont.lineHeight == null) {
+	    cssFont.lineHeight =
+		(CssLineHeight) style.CascadingOrder(new CssLineHeight(),
+			style, selector);
+	}
+	return cssFont.lineHeight;
+    }
+
+    public final CssLineHeightCSS2 getLineHeightCSS2() {
+	if (cssFontCSS2.lineHeight == null) {
+	    cssFontCSS2.lineHeight =
+		(CssLineHeightCSS2) style.CascadingOrder(new CssLineHeightCSS2(),
+			style, selector);
+	}
+	return cssFontCSS2.lineHeight;
+    }
+
+    public final CssLineHeightCSS1 getLineHeightCSS1() {
+	if (cssFontCSS1.lineHeight == null) {
+	    cssFontCSS1.lineHeight =
+		(CssLineHeightCSS1) style.CascadingOrder(new CssLineHeightCSS1(),
+			style, selector);
+	}
+	return cssFontCSS1.lineHeight;
+    }
+
+    /*
+     * Box properties
+     */
+
+    /**
+     * Get the margin-top property
+     */
+    public final CssMarginTop getMarginTop() {
+	if (cssMargin.top == null) {
+	    cssMargin.top =
+		(CssMarginTop) style.CascadingOrder(new CssMarginTop(),
+			style, selector);
+	}
+	return cssMargin.top;
+    }
+
+    /**
+     * Get the margin-right property
+     */
+    public final CssMarginRight getMarginRight() {
+	if (cssMargin.right == null) {
+	    cssMargin.right =
+		(CssMarginRight) style.CascadingOrder(new CssMarginRight(),
+			style, selector);
+	}
+	return cssMargin.right;
+    }
+
+    /**
+     * Get the margin-bottom property
+     */
+    public final CssMarginBottom getMarginBottom() {
+	if (cssMargin.bottom == null) {
+	    cssMargin.bottom =
+		(CssMarginBottom) style.CascadingOrder(new CssMarginBottom(),
+			style, selector);
+	}
+	return cssMargin.bottom;
+    }
+
+    /**
+     * Get the margin-left property
+     */
+    public final CssMarginLeft getMarginLeft() {
+	if (cssMargin.left == null) {
+	    cssMargin.left =
+		(CssMarginLeft) style.CascadingOrder(new CssMarginLeft(),
+			style, selector);
+	}
+	return cssMargin.left;
+    }
+
+    /**
+     * Get the margin property
+     */
+    public final CssMargin getMargin() {
+	if (cssMargin.top == null)
+	    cssMargin.top = getMarginTop();
+	if (cssMargin.right == null)
+	    cssMargin.right = getMarginRight();
+	if (cssMargin.bottom == null)
+	    cssMargin.bottom = getMarginBottom();
+	if (cssMargin.left == null)
+	    cssMargin.left = getMarginLeft();
+	return cssMargin;
+    }
+
+    /**
+     * Get the padding-top property
+     */
+    public final CssPaddingTop getPaddingTop() {
+	if (cssPadding.top == null) {
+	    cssPadding.top =
+		(CssPaddingTop) style.CascadingOrder(new CssPaddingTop(),
+			style, selector);
+	}
+	return cssPadding.top;
+    }
+
+    /**
+     * Get the padding-right property
+     */
+    public final CssPaddingRight getPaddingRight() {
+	if (cssPadding.right == null) {
+	    cssPadding.right =
+		(CssPaddingRight) style.CascadingOrder(new CssPaddingRight(),
+			style, selector);
+	}
+	return cssPadding.right;
+    }
+
+    /**
+     * Get the padding-bottom property
+     */
+    public final CssPaddingBottom getPaddingBottom() {
+	if (cssPadding.bottom == null) {
+	    cssPadding.bottom =
+		(CssPaddingBottom) style.CascadingOrder(new CssPaddingBottom(),
+			style, selector);
+	}
+	return cssPadding.bottom;
+    }
+
+    /**
+     * Get the padding-left property
+     */
+    public final CssPaddingLeft getPaddingLeft() {
+	if (cssPadding.left == null) {
+	    cssPadding.left =
+		(CssPaddingLeft) style.CascadingOrder(new CssPaddingLeft(),
+			style, selector);
+	}
+	return cssPadding.left;
+    }
+
+    /**
+     * Get the padding property
+     */
+    public final CssPadding getPadding() {
+	if (cssPadding.top == null)
+	    cssPadding.top = getPaddingTop();
+	if (cssPadding.right == null)
+	    cssPadding.right = getPaddingRight();
+	if (cssPadding.bottom == null)
+	    cssPadding.bottom = getPaddingBottom();
+	if (cssPadding.left == null)
+	    cssPadding.left = getPaddingLeft();
+	return cssPadding;
+    }
+
+    /**
+     * Get the border-top-width property
+     */
+    public final CssBorderTopWidth getBorderTopWidth() {
+	if (cssBorder.getTop().getWidth() == null) {
+	    cssBorder.getTop().width =
+		(CssBorderTopWidth) style.CascadingOrder(new CssBorderTopWidth(),
+			style, selector);
+	}
+	return cssBorder.getTop().width;
+    }
+
+    public final CssBorderTopWidthCSS2 getBorderTopWidthCSS2() {
+	if (cssBorderCSS2.getTop().getWidth() == null) {
+	    cssBorderCSS2.getTop().width =
+		(CssBorderTopWidthCSS2) style.CascadingOrder(new CssBorderTopWidthCSS2(),
+			style, selector);
+	}
+	return cssBorderCSS2.getTop().width;
+    }
+
+    public final CssBorderTopWidthCSS1 getBorderTopWidthCSS1() {
+	if (cssBorderCSS1.getTop().getWidth() == null) {
+	    cssBorderCSS1.getTop().width =
+		(CssBorderTopWidthCSS1) style.CascadingOrder(new CssBorderTopWidthCSS1(),
+			style, selector);
+	}
+	return cssBorderCSS1.getTop().width;
+    }
+
+    /**
+     * Get the border-top-style property
+     */
+    public final CssBorderTopStyle getBorderTopStyle() {
+	if (cssBorder.getTop().getStyle() == null) {
+	    cssBorder.getTop().style =
+		(CssBorderTopStyle) style.CascadingOrder(new CssBorderTopStyle(),
+			style, selector);
+	}
+	return cssBorder.getTop().style;
+    }
+
+    public final CssBorderTopStyleCSS2 getBorderTopStyleCSS2() {
+	if (cssBorderCSS2.getTop().getStyle() == null) {
+	    cssBorderCSS2.getTop().style =
+		(CssBorderTopStyleCSS2) style.CascadingOrder(new CssBorderTopStyleCSS2(),
+			style, selector);
+	}
+	return cssBorderCSS2.getTop().style;
+    }
+
+    public final CssBorderTopStyleCSS1 getBorderTopStyleCSS1() {
+	if (cssBorderCSS1.getTop().getStyle() == null) {
+	    cssBorderCSS1.getTop().style =
+		(CssBorderTopStyleCSS1) style.CascadingOrder(new CssBorderTopStyleCSS1(),
+			style, selector);
+	}
+	return cssBorderCSS1.getTop().style;
+    }
+
+    /**
+     * Get the border-top-color property
+     */
+    public final CssBorderTopColorCSS2 getBorderTopColorCSS2() {
+	if (cssBorderCSS2.getTop().getColor() == null) {
+	    cssBorderCSS2.getTop().color =
+		(CssBorderTopColorCSS2) style.CascadingOrder(new CssBorderTopColorCSS2(),
+			style, selector);
+	}
+	return cssBorderCSS2.getTop().color;
+    }
+
+    public final CssBorderTopColor getBorderTopColor() {
+	if (cssBorder.getTop().getColor() == null) {
+	    cssBorder.getTop().color =
+		(CssBorderTopColor) style.CascadingOrder(new CssBorderTopColor(),
+			style, selector);
+	}
+	return cssBorder.getTop().color;
+    }
+
+    public final CssBorderTopColorCSS1 getBorderTopColorCSS1() {
+	if (cssBorderCSS1.getTop().getColor() == null) {
+	    cssBorderCSS1.getTop().color =
+		(CssBorderTopColorCSS1) style.CascadingOrder(new CssBorderTopColorCSS1(),
+			style, selector);
+	}
+	return cssBorderCSS1.getTop().color;
+    }
+
+    /**
+     * Get the border-right-width property
+     */
+    public final CssBorderRightWidth getBorderRightWidth() {
+	if (cssBorder.getRight().getWidth() == null) {
+	    cssBorder.getRight().width =
+		(CssBorderRightWidth) style.CascadingOrder(new CssBorderRightWidth(),
+			style, selector);
+	}
+	return cssBorder.getRight().width;
+    }
+
+    public final CssBorderRightWidthCSS2 getBorderRightWidthCSS2() {
+	if (cssBorderCSS2.getRight().getWidth() == null) {
+	    cssBorderCSS2.getRight().width =
+		(CssBorderRightWidthCSS2) style.CascadingOrder(new CssBorderRightWidthCSS2(),
+			style, selector);
+	}
+	return cssBorderCSS2.getRight().width;
+    }
+
+    public final CssBorderRightWidthCSS1 getBorderRightWidthCSS1() {
+	if (cssBorderCSS1.getRight().getWidth() == null) {
+	    cssBorderCSS1.getRight().width =
+		(CssBorderRightWidthCSS1) style.CascadingOrder(new CssBorderRightWidthCSS1(),
+			style, selector);
+	}
+	return cssBorderCSS1.getRight().width;
+    }
+
+    /**
+     * Get the border-right-style property
+     */
+    public final CssBorderRightStyle getBorderRightStyle() {
+	if (cssBorder.getRight().getStyle() == null) {
+	    cssBorder.getRight().style =
+		(CssBorderRightStyle) style.CascadingOrder(new CssBorderRightStyle(),
+			style, selector);
+	}
+	return cssBorder.getRight().style;
+    }
+
+    public final CssBorderRightStyleCSS2 getBorderRightStyleCSS2() {
+	if (cssBorderCSS2.getRight().getStyle() == null) {
+	    cssBorderCSS2.getRight().style =
+		(CssBorderRightStyleCSS2) style.CascadingOrder(new CssBorderRightStyleCSS2(),
+			style, selector);
+	}
+	return cssBorderCSS2.getRight().style;
+    }
+
+    public final CssBorderRightStyleCSS1 getBorderRightStyleCSS1() {
+	if (cssBorderCSS1.getRight().getStyle() == null) {
+	    cssBorderCSS1.getRight().style =
+		(CssBorderRightStyleCSS1) style.CascadingOrder(new CssBorderRightStyleCSS1(),
+			style, selector);
+	}
+	return cssBorderCSS1.getRight().style;
+    }
+
+    /**
+     * Get the border-right-color property
+     */
+    public final CssBorderRightColor getBorderRightColor() {
+	if (cssBorder.getRight().getColor() == null) {
+	    cssBorder.getRight().color =
+		(CssBorderRightColor) style.CascadingOrder(new CssBorderRightColor(),
+			style, selector);
+	}
+	return cssBorder.getRight().color;
+    }
+
+    public final CssBorderRightColorCSS2 getBorderRightColorCSS2() {
+	if (cssBorderCSS2.getRight().getColor() == null) {
+	    cssBorderCSS2.getRight().color =
+		(CssBorderRightColorCSS2) style.CascadingOrder(new CssBorderRightColorCSS2(),
+			style, selector);
+	}
+	return cssBorderCSS2.getRight().color;
+    }
+
+    public final CssBorderRightColorCSS1 getBorderRightColorCSS1() {
+	if (cssBorderCSS1.getRight().getColor() == null) {
+	    cssBorderCSS1.getRight().color =
+		(CssBorderRightColorCSS1) style.CascadingOrder(new CssBorderRightColorCSS1(),
+			style, selector);
+	}
+	return cssBorderCSS1.getRight().color;
+    }
+
+    /**
+     * Get the border-bottom-width property
+     */
+    public final CssBorderBottomWidth getBorderBottomWidth() {
+	if (cssBorder.getBottom().getWidth() == null) {
+	    cssBorder.getBottom().width =
+		(CssBorderBottomWidth) style.CascadingOrder(new CssBorderBottomWidth(),
+			style, selector);
+	}
+	return cssBorder.getBottom().width;
+    }
+
+    public final CssBorderBottomWidthCSS2 getBorderBottomWidthCSS2() {
+	if (cssBorderCSS2.getBottom().getWidth() == null) {
+	    cssBorderCSS2.getBottom().width =
+		(CssBorderBottomWidthCSS2) style.CascadingOrder(new CssBorderBottomWidthCSS2(),
+			style, selector);
+	}
+	return cssBorderCSS2.getBottom().width;
+    }
+
+    public final CssBorderBottomWidthCSS1 getBorderBottomWidthCSS1() {
+	if (cssBorderCSS1.getBottom().getWidth() == null) {
+	    cssBorderCSS1.getBottom().width =
+		(CssBorderBottomWidthCSS1) style.CascadingOrder(new CssBorderBottomWidthCSS1(),
+			style, selector);
+	}
+	return cssBorderCSS1.getBottom().width;
+    }
+
+    /**
+     * Get the border-bottom-style property
+     */
+    public final CssBorderBottomStyle getBorderBottomStyle() {
+	if (cssBorder.getBottom().getStyle() == null) {
+	    cssBorder.getBottom().style =
+		(CssBorderBottomStyle) style.CascadingOrder(new CssBorderBottomStyle(),
+			style, selector);
+	}
+	return cssBorder.getBottom().style;
+    }
+
+    public final CssBorderBottomStyleCSS2 getBorderBottomStyleCSS2() {
+	if (cssBorderCSS2.getBottom().getStyle() == null) {
+	    cssBorderCSS2.getBottom().style =
+		(CssBorderBottomStyleCSS2) style.CascadingOrder(new CssBorderBottomStyleCSS2(),
+			style, selector);
+	}
+	return cssBorderCSS2.getBottom().style;
+    }
+
+    public final CssBorderBottomStyleCSS1 getBorderBottomStyleCSS1() {
+	if (cssBorderCSS1.getBottom().getStyle() == null) {
+	    cssBorderCSS1.getBottom().style =
+		(CssBorderBottomStyleCSS1) style.CascadingOrder(new CssBorderBottomStyleCSS1(),
+			style, selector);
+	}
+	return cssBorderCSS1.getBottom().style;
+    }
+
+    /**
+     * Get the border-bottom-color property
+     */
+    public final CssBorderBottomColor getBorderBottomColor() {
+	if (cssBorder.getBottom().getColor() == null) {
+	    cssBorder.getBottom().color =
+		(CssBorderBottomColor) style.CascadingOrder(new CssBorderBottomColor(),
+			style, selector);
+	}
+	return cssBorder.getBottom().color;
+    }
+
+    public final CssBorderBottomColorCSS2 getBorderBottomColorCSS2() {
+	if (cssBorderCSS2.getBottom().getColor() == null) {
+	    cssBorderCSS2.getBottom().color =
+		(CssBorderBottomColorCSS2) style.CascadingOrder(new CssBorderBottomColorCSS2(),
+			style, selector);
+	}
+	return cssBorderCSS2.getBottom().color;
+    }
+
+    public final CssBorderBottomColorCSS1 getBorderBottomColorCSS1() {
+	if (cssBorderCSS1.getBottom().getColor() == null) {
+	    cssBorderCSS1.getBottom().color =
+		(CssBorderBottomColorCSS1) style.CascadingOrder(new CssBorderBottomColorCSS1(),
+			style, selector);
+	}
+	return cssBorderCSS1.getBottom().color;
+    }
+
+    /**
+     * Get the border-left-width property
+     */
+    public final CssBorderLeftWidth getBorderLeftWidth() {
+	if (cssBorder.getLeft().getWidth() == null) {
+	    cssBorder.getLeft().width =
+		(CssBorderLeftWidth) style.CascadingOrder(new CssBorderLeftWidth(),
+			style, selector);
+	}
+	return cssBorder.getLeft().width;
+    }
+
+    public final CssBorderLeftWidthCSS2 getBorderLeftWidthCSS2() {
+	if (cssBorderCSS2.getLeft().getWidth() == null) {
+	    cssBorderCSS2.getLeft().width =
+		(CssBorderLeftWidthCSS2) style.CascadingOrder(new CssBorderLeftWidthCSS2(),
+			style, selector);
+	}
+	return cssBorderCSS2.getLeft().width;
+    }
+
+    public final CssBorderLeftWidthCSS1 getBorderLeftWidthCSS1() {
+	if (cssBorderCSS1.getLeft().getWidth() == null) {
+	    cssBorderCSS1.getLeft().width =
+		(CssBorderLeftWidthCSS1) style.CascadingOrder(new CssBorderLeftWidthCSS1(),
+			style, selector);
+	}
+	return cssBorderCSS1.getLeft().width;
+    }
+
+    /**
+     * Get the border-left-style property
+     */
+    public final CssBorderLeftStyle getBorderLeftStyle() {
+	if (cssBorder.getLeft().getStyle() == null) {
+	    cssBorder.getLeft().style =
+		(CssBorderLeftStyle) style.CascadingOrder(new CssBorderLeftStyle(),
+			style, selector);
+	}
+	return cssBorder.getLeft().style;
+    }
+
+    public final CssBorderLeftStyleCSS2 getBorderLeftStyleCSS2() {
+	if (cssBorderCSS2.getLeft().getStyle() == null) {
+	    cssBorderCSS2.getLeft().style =
+		(CssBorderLeftStyleCSS2) style.CascadingOrder(new CssBorderLeftStyleCSS2(),
+			style, selector);
+	}
+	return cssBorderCSS2.getLeft().style;
+    }
+
+    public final CssBorderLeftStyleCSS1 getBorderLeftStyleCSS1() {
+	if (cssBorderCSS1.getLeft().getStyle() == null) {
+	    cssBorderCSS1.getLeft().style =
+		(CssBorderLeftStyleCSS1) style.CascadingOrder(new CssBorderLeftStyleCSS1(),
+			style, selector);
+	}
+	return cssBorderCSS1.getLeft().style;
+    }
+
+    /**
+     * Get the border-left-color property
+     */
+    public final CssBorderLeftColor getBorderLeftColor() {
+	if (cssBorder.getLeft().getColor() == null) {
+	    cssBorder.getLeft().color =
+		(CssBorderLeftColor) style.CascadingOrder(new CssBorderLeftColor(),
+			style, selector);
+	}
+	return cssBorder.getLeft().color;
+    }
+
+    public final CssBorderLeftColorCSS2 getBorderLeftColorCSS2() {
+	if (cssBorderCSS2.getLeft().getColor() == null) {
+	    cssBorderCSS2.getLeft().color =
+		(CssBorderLeftColorCSS2) style.CascadingOrder(new CssBorderLeftColorCSS2(),
+			style, selector);
+	}
+	return cssBorderCSS2.getLeft().color;
+    }
+
+    public final CssBorderLeftColorCSS1 getBorderLeftColorCSS1() {
+	if (cssBorderCSS1.getLeft().getColor() == null) {
+	    cssBorderCSS1.getLeft().color =
+		(CssBorderLeftColorCSS1) style.CascadingOrder(new CssBorderLeftColorCSS1(),
+			style, selector);
+	}
+	return cssBorderCSS1.getLeft().color;
+    }
+
+    /**
+     * Get the border-top property
+     */
+    public final CssBorderTop getBorderTop() {
+	if (cssBorder.getTop().getWidth() == null) {
+	    cssBorder.getTop().width = getBorderTopWidth();
+	}
+	if (cssBorder.getTop().getStyle() == null) {
+	    cssBorder.getTop().style = getBorderTopStyle();
+	}
+	if (cssBorder.getTop().getColor() == null) {
+	    cssBorder.getTop().color = getBorderTopColor();
+	}
+	return cssBorder.getTop();
+    }
+
+    public final CssBorderTopCSS2 getBorderTopCSS2() {
+	if (cssBorderCSS2.getTop().getWidth() == null) {
+	    cssBorderCSS2.getTop().width = getBorderTopWidthCSS2();
+	}
+	if (cssBorderCSS2.getTop().getStyle() == null) {
+	    cssBorderCSS2.getTop().style = getBorderTopStyleCSS2();
+	}
+	if (cssBorderCSS2.getTop().getColor() == null) {
+	    cssBorderCSS2.getTop().color = getBorderTopColorCSS2();
+	}
+	return cssBorderCSS2.getTop();
+    }
+
+    public final CssBorderTopCSS1 getBorderTopCSS1() {
+	if (cssBorderCSS1.getTop().getWidth() == null) {
+	    cssBorderCSS1.getTop().width = getBorderTopWidthCSS1();
+	}
+	if (cssBorderCSS1.getTop().getStyle() == null) {
+	    cssBorderCSS1.getTop().style = getBorderTopStyleCSS1();
+	}
+	if (cssBorderCSS1.getTop().getColor() == null) {
+	    cssBorderCSS1.getTop().color = getBorderTopColorCSS1();
+	}
+	return cssBorderCSS1.getTop();
+    }
+
+    /**
+     * Get the border-right property
+     */
+    public final CssBorderRight getBorderRight() {
+	if (cssBorder.getRight().getWidth() == null) {
+	    cssBorder.getRight().width = getBorderRightWidth();
+	}
+	if (cssBorder.getRight().getStyle() == null) {
+	    cssBorder.getRight().style = getBorderRightStyle();
+	}
+	if (cssBorder.getRight().getColor() == null) {
+	    cssBorder.getRight().color = getBorderRightColor();
+	}
+	return cssBorder.getRight();
+    }
+
+    public final CssBorderRightCSS2 getBorderRightCSS2() {
+	if (cssBorderCSS2.getRight().getWidth() == null) {
+	    cssBorderCSS2.getRight().width = getBorderRightWidthCSS2();
+	}
+	if (cssBorderCSS2.getRight().getStyle() == null) {
+	    cssBorderCSS2.getRight().style = getBorderRightStyleCSS2();
+	}
+	if (cssBorderCSS2.getRight().getColor() == null) {
+	    cssBorderCSS2.getRight().color = getBorderRightColorCSS2();
+	}
+	return cssBorderCSS2.getRight();
+    }
+
+    public final CssBorderRightCSS1 getBorderRightCSS1() {
+	if (cssBorderCSS1.getRight().getWidth() == null) {
+	    cssBorderCSS1.getRight().width = getBorderRightWidthCSS1();
+	}
+	if (cssBorderCSS1.getRight().getStyle() == null) {
+	    cssBorderCSS1.getRight().style = getBorderRightStyleCSS1();
+	}
+	if (cssBorderCSS1.getRight().getColor() == null) {
+	    cssBorderCSS1.getRight().color = getBorderRightColorCSS1();
+	}
+	return cssBorderCSS1.getRight();
+    }
+
+    /**
+     * Get the border-bottom property
+     */
+    public final CssBorderBottom getBorderBottom() {
+	if (cssBorder.getBottom().getWidth() == null) {
+	    cssBorder.getBottom().width = getBorderBottomWidth();
+	}
+	if (cssBorder.getBottom().getStyle() == null) {
+	    cssBorder.getBottom().style = getBorderBottomStyle();
+	}
+	if (cssBorder.getBottom().getColor() == null) {
+	    cssBorder.getBottom().color = getBorderBottomColor();
+	}
+	return cssBorder.getBottom();
+    }
+
+    public final CssBorderBottomCSS2 getBorderBottomCSS2() {
+	if (cssBorderCSS2.getBottom().getWidth() == null) {
+	    cssBorderCSS2.getBottom().width = getBorderBottomWidthCSS2();
+	}
+	if (cssBorderCSS2.getBottom().getStyle() == null) {
+	    cssBorderCSS2.getBottom().style = getBorderBottomStyleCSS2();
+	}
+	if (cssBorderCSS2.getBottom().getColor() == null) {
+	    cssBorderCSS2.getBottom().color = getBorderBottomColorCSS2();
+	}
+	return cssBorderCSS2.getBottom();
+    }
+
+    public final CssBorderBottomCSS1 getBorderBottomCSS1() {
+	if (cssBorderCSS1.getBottom().getWidth() == null) {
+	    cssBorderCSS1.getBottom().width = getBorderBottomWidthCSS1();
+	}
+	if (cssBorderCSS1.getBottom().getStyle() == null) {
+	    cssBorderCSS1.getBottom().style = getBorderBottomStyleCSS1();
+	}
+	if (cssBorderCSS1.getBottom().getColor() == null) {
+	    cssBorderCSS1.getBottom().color = getBorderBottomColorCSS1();
+	}
+	return cssBorderCSS1.getBottom();
+    }
+
+    /**
+     * Get the border-left property
+     */
+    public final CssBorderLeft getBorderLeft() {
+	if (cssBorder.getLeft().getWidth() == null) {
+	    cssBorder.getLeft().width = getBorderLeftWidth();
+	}
+	if (cssBorder.getLeft().getStyle() == null) {
+	    cssBorder.getLeft().style = getBorderLeftStyle();
+	}
+	if (cssBorder.getLeft().getColor() == null) {
+	    cssBorder.getLeft().color = getBorderLeftColor();
+	}
+	return cssBorder.getLeft();
+    }
+
+    public final CssBorderLeftCSS2 getBorderLeftCSS2() {
+	if (cssBorderCSS2.getLeft().getWidth() == null) {
+	    cssBorderCSS2.getLeft().width = getBorderLeftWidthCSS2();
+	}
+	if (cssBorderCSS2.getLeft().getStyle() == null) {
+	    cssBorderCSS2.getLeft().style = getBorderLeftStyleCSS2();
+	}
+	if (cssBorderCSS2.getLeft().getColor() == null) {
+	    cssBorderCSS2.getLeft().color = getBorderLeftColorCSS2();
+	}
+	return cssBorderCSS2.getLeft();
+    }
+
+    public final CssBorderLeftCSS1 getBorderLeftCSS1() {
+	if (cssBorderCSS1.getLeft().getWidth() == null) {
+	    cssBorderCSS1.getLeft().width = getBorderLeftWidthCSS1();
+	}
+	if (cssBorderCSS1.getLeft().getStyle() == null) {
+	    cssBorderCSS1.getLeft().style = getBorderLeftStyleCSS1();
+	}
+	if (cssBorderCSS1.getLeft().getColor() == null) {
+	    cssBorderCSS1.getLeft().color = getBorderLeftColorCSS1();
+	}
+	return cssBorderCSS1.getLeft();
+    }
+
+    /**
+     * Get the border property
+     */
+    public final CssBorder getBorder() {
+	getBorderTop();
+	getBorderRight();
+	getBorderBottom();
+	getBorderLeft();
+	return cssBorder;
+    }
+
+    public final CssBorderCSS2 getBorderCSS2() {
+	getBorderTopCSS2();
+	getBorderRightCSS2();
+	getBorderBottomCSS2();
+	getBorderLeftCSS2();
+	return cssBorderCSS2;
+    }
+
+    public final CssBorderCSS1 getBorderCSS1() {
+	getBorderTopCSS1();
+	getBorderRightCSS1();
+	getBorderBottomCSS1();
+	getBorderLeftCSS1();
+	return cssBorderCSS1;
+    }
+
+    /**
+     * Get the border-width property
+     */
+    public final CssBorderWidth getBorderWidth() {
+	// WARNING invalid fields in this property ....
+	return new CssBorderWidth(getBorderTopWidth(),
+		getBorderBottomWidth(),
+		getBorderRightWidth(),
+		getBorderLeftWidth());
+    }
+
+    public final CssBorderWidthCSS2 getBorderWidthCSS2() {
+	// WARNING invalid fields in this property ....
+	return new CssBorderWidthCSS2(getBorderTopWidthCSS2(),
+		getBorderBottomWidthCSS2(),
+		getBorderRightWidthCSS2(),
+		getBorderLeftWidthCSS2());
+    }
+
+    public final CssBorderWidthCSS1 getBorderWidthCSS1() {
+	// WARNING invalid fields in this property ....
+	return new CssBorderWidthCSS1(getBorderTopWidthCSS1(),
+		getBorderBottomWidthCSS1(),
+		getBorderRightWidthCSS1(),
+		getBorderLeftWidthCSS1());
+    }
+
+    /**
+     * Get the border-style property
+     */
+    public final CssBorderStyle getBorderStyle() {
+	// WARNING invalid fields in this property ....
+	return new CssBorderStyle(getBorderTopStyle(),
+		getBorderBottomStyle(),
+		getBorderRightStyle(),
+		getBorderLeftStyle());
+    }
+
+    public final CssBorderStyleCSS2 getBorderStyleCSS2() {
+	// WARNING invalid fields in this property ....
+	return new CssBorderStyleCSS2(getBorderTopStyleCSS2(),
+		getBorderBottomStyleCSS2(),
+		getBorderRightStyleCSS2(),
+		getBorderLeftStyleCSS2());
+    }
+
+    public final CssBorderStyleCSS1 getBorderStyleCSS1() {
+	// WARNING invalid fields in this property ....
+	return new CssBorderStyleCSS1(getBorderTopStyleCSS1(),
+		getBorderBottomStyleCSS1(),
+		getBorderRightStyleCSS1(),
+		getBorderLeftStyleCSS1());
+    }
+
+    /**
+     * Get the border-color property
+     */
+    public final CssBorderColor getBorderColor() {
+	// WARNING invalid fields in this porperty ....
+	return new CssBorderColor(getBorderTopColor(),
+		getBorderBottomColor(),
+		getBorderRightColor(),
+		getBorderLeftColor());
+    }
+
+    public final CssBorderColorCSS2 getBorderColorCSS2() {
+	// WARNING invalid fields in this porperty ....
+	return new CssBorderColorCSS2(getBorderTopColorCSS2(),
+		getBorderBottomColorCSS2(),
+		getBorderRightColorCSS2(),
+		getBorderLeftColorCSS2());
+    }
+
+    public final CssBorderColorCSS1 getBorderColorCSS1() {
+	// WARNING invalid fields in this porperty ....
+	return new CssBorderColorCSS1(getBorderTopColorCSS1(),
+		getBorderBottomColorCSS1(),
+		getBorderRightColorCSS1(),
+		getBorderLeftColorCSS1());
+    }
+
+    /**
+     * Get the width property
+     */
+    public final CssWidth getWidth() {
+	if (cssWidth == null) {
+	    cssWidth =
+		(CssWidth) style.CascadingOrder(new CssWidth(), style, selector);
+	}
+	return cssWidth;
+    }
+
+    public final CssWidthMob getWidthMob() {
+	if (cssWidthMob == null) {
+	    cssWidthMob =
+		(CssWidthMob) style.CascadingOrder(new CssWidthMob(), style, selector);
+	}
+	return cssWidthMob;
+    }
+
+    /**
+     * Get the min-width property
+     */
+    public final CssMinWidth getMinWidth() {
+	if (cssMinWidth == null) {
+	    cssMinWidth =
+		(CssMinWidth) style.CascadingOrder(new CssMinWidth(), style, selector);
+	}
+	return cssMinWidth;
+    }
+
+    public final CssMinWidthATSC getMinWidthATSC() {
+	if (cssMinWidthATSC == null) {
+	    cssMinWidthATSC =
+		(CssMinWidthATSC) style.CascadingOrder(new CssMinWidthATSC(), style, selector);
+	}
+	return cssMinWidthATSC;
+    }
+
+    /**
+     * Get the max-width property
+     */
+    public final CssMaxWidth getMaxWidth() {
+	if (cssMaxWidth == null) {
+	    cssMaxWidth =
+		(CssMaxWidth) style.CascadingOrder(new CssMaxWidth(), style, selector);
+	}
+	return cssMaxWidth;
+    }
+
+    public final CssMaxWidthATSC getMaxWidthATSC() {
+	if (cssMaxWidthATSC == null) {
+	    cssMaxWidthATSC =
+		(CssMaxWidthATSC) style.CascadingOrder(new CssMaxWidthATSC(), style, selector);
+	}
+	return cssMaxWidthATSC;
+    }
+
+    /**
+     * Get the min-height property
+     */
+    public final CssMinHeight getMinHeight() {
+	if (cssMinHeight == null) {
+	    cssMinHeight =
+		(CssMinHeight) style.CascadingOrder(new CssMinHeight(), style, selector);
+	}
+	return cssMinHeight;
+    }
+
+    public final CssMinHeightATSC getMinHeightATSC() {
+	if (cssMinHeightATSC == null) {
+	    cssMinHeightATSC =
+		(CssMinHeightATSC) style.CascadingOrder(new CssMinHeightATSC(), style, selector);
+	}
+	return cssMinHeightATSC;
+    }
+
+    /**
+     * Get the max-height property
+     */
+    public final CssMaxHeight getMaxHeight() {
+	if (cssMaxHeight == null) {
+	    cssMaxHeight =
+		(CssMaxHeight) style.CascadingOrder(new CssMaxHeight(), style, selector);
+	}
+	return cssMaxHeight;
+    }
+
+    public final CssMaxHeightATSC getMaxHeightATSC() {
+	if (cssMaxHeightATSC == null) {
+	    cssMaxHeightATSC =
+		(CssMaxHeightATSC) style.CascadingOrder(new CssMaxHeightATSC(), style, selector);
+	}
+	return cssMaxHeightATSC;
+    }
+
+    /**
+     * Get the height property
+     */
+    public final CssHeight getHeight() {
+	if (cssHeight == null) {
+	    cssHeight =
+		(CssHeight) style.CascadingOrder(new CssHeight(), style, selector);
+	}
+	return cssHeight;
+    }
+
+    public final CssHeightMob getHeightMob() {
+	if (cssHeightMob == null) {
+	    cssHeightMob =
+		(CssHeightMob) style.CascadingOrder(new CssHeightMob(), style, selector);
+	}
+	return cssHeightMob;
+    }
+
+    /**
+     * Get the float property
+     */
+    public final CssFloat getFloat() {
+	if (cssFloat == null) {
+	    cssFloat =
+		(CssFloat) style.CascadingOrder(new CssFloat(), style, selector);
+	}
+	return cssFloat;
+    }
+
+    /**
+     * Get the clear property
+     */
+    public final CssClear getClear() {
+	if (cssClear == null) {
+	    cssClear =
+		(CssClear) style.CascadingOrder(new CssClear(), style, selector);
+	}
+	return cssClear;
+    }
+
+    /**
+     * Get the top property
+     */
+    public final CssTop getTop() {
+	if (cssTop == null) {
+	    cssTop =
+		(CssTop) style.CascadingOrder(new CssTop(), style, selector);
+	}
+	return cssTop;
+    }
+
+    /**
+     * Get the left property
+     */
+    public final CssLeft getLeft() {
+	if (cssLeft == null) {
+	    cssLeft =
+		(CssLeft) style.CascadingOrder(new CssLeft(), style, selector);
+	}
+	return cssLeft;
+    }
+
+    /**
+     * Get the right property
+     */
+    public final CssRight getRight() {
+	if (cssRight == null) {
+	    cssRight =
+		(CssRight) style.CascadingOrder(new CssRight(), style, selector);
+	}
+	return cssRight;
+    }
+
+    /**
+     * Get the bottom property
+     */
+    public final CssBottom getBottom() {
+	if (cssBottom == null) {
+	    cssBottom =
+		(CssBottom) style.CascadingOrder(new CssBottom(), style, selector);
+	}
+	return cssBottom;
+    }
+
+    /*
+     * Classification properties
+     */
+
+    /**
+     * Get the display property
+     */
+    public final CssDisplay getDisplay() {
+	if (cssDisplay == null) {
+	    cssDisplay =
+		(CssDisplay) style.CascadingOrder(new CssDisplay(), style, selector);
+	}
+	return cssDisplay;
+    }
+
+    public final CssDisplayCSS2 getDisplayCSS2() {
+	if (cssDisplayCSS2 == null) {
+	    cssDisplayCSS2 =
+		(CssDisplayCSS2) style.CascadingOrder(new CssDisplayCSS2(), style, selector);
+	}
+	return cssDisplayCSS2;
+    }
+
+    public final CssDisplayCSS1 getDisplayCSS1() {
+	if (cssDisplayCSS1 == null) {
+	    cssDisplayCSS1 =
+		(CssDisplayCSS1) style.CascadingOrder(new CssDisplayCSS1(), style, selector);
+	}
+	return cssDisplayCSS1;
+    }
+
+
+    /**
+     * Get the position property
+     */
+    public final CssPosition getPosition() {
+	if (cssPosition == null) {
+	    cssPosition =
+		(CssPosition) style.CascadingOrder(new CssPosition(), style, selector);
+	}
+	return cssPosition;
+    }
+
+    /**
+     * Get the z-index property
+     */
+    public final CssZIndex getZIndex() {
+	if (cssZIndex == null) {
+	    cssZIndex =
+		(CssZIndex) style.CascadingOrder(new CssZIndex(),
+			style, selector);
+	}
+	return cssZIndex;
+    }
+
+    /**
+     * Get the direction property
+     */
+    public final CssDirection getDirection() {
+	if (cssDirection == null) {
+	    cssDirection =
+		(CssDirection) style.CascadingOrder(new CssDirection(),
+			style, selector);
+	}
+	return cssDirection;
+    }
+
+    public final CssDirectionATSC getDirectionATSC() {
+	if (cssDirectionATSC == null) {
+	    cssDirectionATSC =
+		(CssDirectionATSC) style.CascadingOrder(new CssDirectionATSC(),
+			style, selector);
+	}
+	return cssDirectionATSC;
+    }
+
+    /**
+     * Get the overflow property
+     */
+    public final CssOverflow getOverflow() {
+	if (cssOverflow == null) {
+	    cssOverflow =
+		(CssOverflow) style.CascadingOrder(new CssOverflow(),
+			style, selector);
+	}
+	return cssOverflow;
+    }
+
+    /**
+     * Get the clip property
+     */
+    public final CssClip getClip() {
+	if (cssClip == null) {
+	    cssClip =
+		(CssClip) style.CascadingOrder(new CssClip(),
+			style, selector);
+	}
+	return cssClip;
+    }
+
+    /**
+     * Get the visibility property
+     */
+    public final CssVisibility getVisibility() {
+	if (cssVisibility == null) {
+	    cssVisibility =
+		(CssVisibility) style.CascadingOrder(new CssVisibility(),
+			style, selector);
+	}
+	return cssVisibility;
+    }
+
+    /**
+     * Get the unicode-bidi property
+     */
+    public final CssUnicodeBidi getUnicodeBidi() {
+	if (cssUnicodeBidi == null) {
+	    cssUnicodeBidi =
+		(CssUnicodeBidi) style.CascadingOrder(new CssUnicodeBidi(),
+			style, selector);
+	}
+	return cssUnicodeBidi;
+    }
+
+    public final CssUnicodeBidiATSC getUnicodeBidiATSC() {
+	if (cssUnicodeBidiATSC == null) {
+	    cssUnicodeBidiATSC =
+		(CssUnicodeBidiATSC) style.CascadingOrder(new CssUnicodeBidiATSC(),
+			style, selector);
+	}
+	return cssUnicodeBidiATSC;
+    }
+
+    /**
+     * Get the white-space property
+     */
+    public final CssWhiteSpace getWhiteSpace() {
+	if (cssWhiteSpace == null) {
+	    cssWhiteSpace =
+		(CssWhiteSpace) style.CascadingOrder(new CssWhiteSpace(),
+			style, selector);
+	}
+	return cssWhiteSpace;
+    }
+
+    /**
+     * Get the list-style-type property
+     */
+    public final CssListStyleType getListStyleType() {
+	if (cssListStyle.listStyleType == null) {
+	    cssListStyle.listStyleType =
+		(CssListStyleType) style.CascadingOrder(new CssListStyleType(),
+			style, selector);
+	}
+	return cssListStyle.listStyleType;
+    }
+
+    public final CssListStyleTypeCSS2 getListStyleTypeCSS2() {
+	if (cssListStyleCSS2.listStyleType == null) {
+	    cssListStyleCSS2.listStyleType =
+		(CssListStyleTypeCSS2) style.CascadingOrder(new CssListStyleTypeCSS2(),
+			style, selector);
+	}
+	return cssListStyleCSS2.listStyleType;
+    }
+
+    public final CssListStyleTypeCSS1 getListStyleTypeCSS1() {
+	if (cssListStyleCSS1.listStyleType == null) {
+	    cssListStyleCSS1.listStyleType =
+		(CssListStyleTypeCSS1) style.CascadingOrder(new CssListStyleTypeCSS1(),
+			style, selector);
+	}
+	return cssListStyleCSS1.listStyleType;
+    }
+
+    /**
+     * Get the list-style-image property
+     */
+    public final CssListStyleImage getListStyleImage() {
+	if (cssListStyle.listStyleImage == null) {
+	    cssListStyle.listStyleImage =
+		(CssListStyleImage) style.CascadingOrder(new CssListStyleImage(),
+			style, selector);
+	}
+	return cssListStyle.listStyleImage;
+    }
+
+    public final CssListStyleImageCSS2 getListStyleImageCSS2() {
+	if (cssListStyleCSS2.listStyleImage == null) {
+	    cssListStyleCSS2.listStyleImage =
+		(CssListStyleImageCSS2) style.CascadingOrder(new CssListStyleImageCSS2(),
+			style, selector);
+	}
+	return cssListStyleCSS2.listStyleImage;
+    }
+
+    public final CssListStyleImageCSS1 getListStyleImageCSS1() {
+	if (cssListStyleCSS1.listStyleImage == null) {
+	    cssListStyleCSS1.listStyleImage =
+		(CssListStyleImageCSS1) style.CascadingOrder(new CssListStyleImageCSS1(),
+			style, selector);
+	}
+	return cssListStyleCSS1.listStyleImage;
+    }
+
+    /**
+     * Get the list-style-position property
+     */
+    public final CssListStylePosition getListStylePosition() {
+	if (cssListStyle.listStylePosition == null) {
+	    cssListStyle.listStylePosition =
+		(CssListStylePosition)
+		style.CascadingOrder(new CssListStylePosition(),
+			style, selector);
+	}
+	return cssListStyle.listStylePosition;
+    }
+
+    public final CssListStylePositionCSS2 getListStylePositionCSS2() {
+	if (cssListStyleCSS2.listStylePosition == null) {
+	    cssListStyleCSS2.listStylePosition =
+		(CssListStylePositionCSS2)
+		style.CascadingOrder(new CssListStylePositionCSS2(),
+			style, selector);
+	}
+	return cssListStyleCSS2.listStylePosition;
+    }
+
+    public final CssListStylePositionCSS1 getListStylePositionCSS1() {
+	if (cssListStyleCSS1.listStylePosition == null) {
+	    cssListStyleCSS1.listStylePosition =
+		(CssListStylePositionCSS1)
+		style.CascadingOrder(new CssListStylePositionCSS1(),
+			style, selector);
+	}
+	return cssListStyleCSS1.listStylePosition;
+    }
+
+    /**
+     * Get the list-style property
+     */
+    public final CssListStyle getListStyle() {
+	if (cssListStyle.listStyleType == null)
+	    cssListStyle.listStyleType = getListStyleType();
+	if (cssListStyle.listStyleImage == null)
+	    cssListStyle.listStyleImage = getListStyleImage();
+	if (cssListStyle.listStylePosition == null)
+	    cssListStyle.listStylePosition = getListStylePosition();
+	return cssListStyle;
+    }
+
+    public final CssListStyleCSS2 getListStyleCSS2() {
+	if (cssListStyleCSS2.listStyleType == null)
+	    cssListStyleCSS2.listStyleType = getListStyleTypeCSS2();
+	if (cssListStyleCSS2.listStyleImage == null)
+	    cssListStyleCSS2.listStyleImage = getListStyleImageCSS2();
+	if (cssListStyleCSS2.listStylePosition == null)
+	    cssListStyleCSS2.listStylePosition = getListStylePositionCSS2();
+	return cssListStyleCSS2;
+    }
+
+    public final CssListStyleCSS1 getListStyleCSS1() {
+	if (cssListStyleCSS1.listStyleType == null)
+	    cssListStyleCSS1.listStyleType = getListStyleTypeCSS1();
+	if (cssListStyleCSS1.listStyleImage == null)
+	    cssListStyleCSS1.listStyleImage = getListStyleImageCSS1();
+	if (cssListStyleCSS1.listStylePosition == null)
+	    cssListStyleCSS1.listStylePosition = getListStylePositionCSS1();
+	return cssListStyleCSS1;
+    }
+
+    /**
+     * Get the content property
+     */
+    public final CssContent getContent() {
+	if (cssContent == null) {
+	    cssContent =
+		(CssContent) style.CascadingOrder(new CssContent(),
+			style, selector);
+	}
+	return cssContent;
+    }
+
+    public final CssContentCSS2 getContentCSS2() {
+	if (cssContentCSS2 == null) {
+	    cssContentCSS2 =
+		(CssContentCSS2) style.CascadingOrder(new CssContentCSS2(),
+			style, selector);
+	}
+	return cssContentCSS2;
+    }
+
+    /**
+     * Get the quotes property
+     */
+    public final CssQuotes getQuotes() {
+	if (cssQuotes == null) {
+	    cssQuotes =
+		(CssQuotes) style.CascadingOrder(new CssQuotes(),
+			style, selector);
+	}
+	return cssQuotes;
+    }
+
+    public final CssQuotesATSC getQuotesATSC() {
+	if (cssQuotesATSC == null) {
+	    cssQuotesATSC =
+		(CssQuotesATSC) style.CascadingOrder(new CssQuotesATSC(),
+			style, selector);
+	}
+	return cssQuotesATSC;
+    }
+
+    /**
+     * Get the counter-reset property
+     */
+    public final CssCounterReset getCounterReset() {
+	if (cssCounterReset == null) {
+	    cssCounterReset =
+		(CssCounterReset) style.CascadingOrder(new CssCounterReset(),
+			style, selector);
+	}
+	return cssCounterReset;
+    }
+
+    /**
+     * Get the counter-increment property
+     */
+    public final CssCounterIncrement getCounterIncrement() {
+	if (cssCounterIncrement == null) {
+	    cssCounterIncrement =
+		(CssCounterIncrement) style.CascadingOrder(new CssCounterIncrement(),
+			style, selector);
+	}
+	return cssCounterIncrement;
+    }
+
+    /**
+     * Get the marker-offset property
+     */
+    public final CssMarkerOffset getMarkerOffset() {
+	if (cssMarkerOffset == null) {
+	    cssMarkerOffset =
+		(CssMarkerOffset) style.CascadingOrder(new CssMarkerOffset(),
+			style, selector);
+	}
+	return cssMarkerOffset;
+    }
+
+    public final CssMarkerOffsetATSC getMarkerOffsetATSC() {
+	if (cssMarkerOffsetATSC == null) {
+	    cssMarkerOffsetATSC =
+		(CssMarkerOffsetATSC) style.CascadingOrder(new CssMarkerOffsetATSC(),
+			style, selector);
+	}
+	return cssMarkerOffsetATSC;
+    }
+
+    public final CssListStyleTypeTV getListStyleTypeTV() {
+	if (cssListStyleTypeTV == null) {
+	    cssListStyleTypeTV =
+		(CssListStyleTypeTV) style.CascadingOrder(new CssListStyleTypeTV(),
+			style, selector);
+	}
+
+	return cssListStyleTypeTV;
+    }
+
+    public final CssListStyleTV getListStyleTV() {
+	if (cssListStyleTV == null) {
+	    cssListStyleTV =
+		(CssListStyleTV) style.CascadingOrder(new CssListStyleTV(),
+			style, selector);
+	}
+
+	return cssListStyleTV;
+    }
+
+    public final CssPositionTV getPositionTV() {
+	if (cssPositionTV == null) {
+	    cssPositionTV =
+		(CssPositionTV) style.CascadingOrder(new CssPositionTV(),
+			style, selector);
+	}
+
+	return cssPositionTV;
+    }
+
+    public final CssTextAlignTV getTextAlignTV() {
+	if (cssTextAlignTV == null) {
+	    cssTextAlignTV =
+		(CssTextAlignTV) style.CascadingOrder(new CssTextAlignTV(),
+			style, selector);
+	}
+
+	return cssTextAlignTV;
+    }
+
+    public final CssTextDecorationTV getTextDecorationTV() {
+	if (cssTextDecorationTV == null) {
+	    cssTextDecorationTV =
+		(CssTextDecorationTV) style.CascadingOrder(new CssTextDecorationTV(),
+			style, selector);
+	}
+
+	return cssTextDecorationTV;
+    }
+
+    public final CssVerticalAlignTV getVerticalAlignTV() {
+	if (cssVerticalAlignTV == null) {
+	    cssVerticalAlignTV =
+		(CssVerticalAlignTV) style.CascadingOrder(new CssVerticalAlignTV(),
+			style, selector);
+	}
+
+	return cssVerticalAlignTV;
+    }
+
+
+    /**
+     * Print this style.
+     *
+     * @param printer The printer interface.
+     */
+    public void print(CssPrinterStyle printer) {
+
+	// Note : macro are never null
+	cssFont.print(printer);
+	if (cssFontStretch != null) {
+	    cssFontStretch.print(printer);
+	}
+	if (cssFontStretchCSS2 != null) {
+	    cssFontStretchCSS2.print(printer);
+	}
+	if (cssFontStretchCSS1 != null) {
+	    cssFontStretchCSS1.print(printer);
+	}
+	if (cssFontSizeAdjust != null) {
+	    cssFontSizeAdjust.print(printer);
+	}
+	if (cssColorCSS2 != null)
+	    cssColorCSS2.print(printer);
+	if (cssColorCSS1 != null)
+	    cssColorCSS1.print(printer);
+	if (cssFontSizeAdjustCSS2 != null) {
+	    cssFontSizeAdjustCSS2.print(printer);
+	}
+	if (cssColor != null)
+	    cssColor.print(printer);
+	cssBackground.print(printer);
+	if (cssBackgroundCSS2 != null) {
+	    cssBackgroundCSS2.print(printer);
+	}
+	if (cssBackgroundCSS1 != null) {
+	    cssBackgroundCSS1.print(printer);
+	}
+	if (cssBackgroundMob != null) {
+	    cssBackgroundMob.print(printer);
+	}
+	if (cssWordSpacing != null)
+	    cssWordSpacing.print(printer);
+	if (cssLetterSpacing != null)
+	    cssLetterSpacing.print(printer);
+	if (cssTextDecoration != null)
+	    cssTextDecoration.print(printer);
+	if (cssTextDecorationMob != null) {
+	    cssTextDecorationMob.print(printer);
+	}
+	if (cssVerticalAlign != null)
+	    cssVerticalAlign.print(printer);
+	if (cssVerticalAlignCSS1 != null) {
+	    cssVerticalAlignCSS1.print(printer);
+	}
+	if (cssVerticalAlignMob != null) {
+	    cssVerticalAlignMob.print(printer);
+	}
+	if (cssTextTransform != null)
+	    cssTextTransform.print(printer);
+	if (cssTextAlign != null)
+	    cssTextAlign.print(printer);
+	if (cssTextAlignMob != null) {
+	    cssTextAlignMob.print(printer);
+	}
+	if (cssTextIndent != null)
+	    cssTextIndent.print(printer);
+	if (cssTextIndentMob != null) {
+	    cssTextIndentMob.print(printer);
+	}
+	if (cssTextShadow != null)
+	    cssTextShadow.print(printer);
+	if (cssTextShadowATSC != null) {
+	    cssTextShadowATSC.print(printer);
+	}
+	cssMargin.print(printer);
+	cssPadding.print(printer);
+	cssBorder.print(printer);
+	if (cssWidth != null)
+	    cssWidth.print(printer);
+	if (cssWidthMob != null) {
+	    cssWidth.print(printer);
+	}
+	if (cssMinWidth != null)
+	    cssMinWidth.print(printer);
+	if (cssMinWidthATSC != null) {
+	    cssMinWidthATSC.print(printer);
+	}
+	if (cssMaxWidth != null)
+	    cssMaxWidth.print(printer);
+	if (cssMaxWidthATSC != null) {
+	    cssMaxWidthATSC.print(printer);
+	}
+	if (cssMinHeight != null)
+	    cssMinHeight.print(printer);
+	if (cssMinHeightATSC != null) {
+	    cssMinHeightATSC.print(printer);
+	}
+	if (cssMaxHeight != null)
+	    cssMaxHeight.print(printer);
+	if (cssMaxHeightATSC != null) {
+	    cssMaxHeightATSC.print(printer);
+	}
+	if (cssHeight != null)
+	    cssHeight.print(printer);
+	if (cssHeightMob != null) {
+	    cssHeightMob.print(printer);
+	}
+	if (cssFloat != null)
+	    cssFloat.print(printer);
+	if (cssClear != null)
+	    cssClear.print(printer);
+	if (cssTop != null)
+	    cssTop.print(printer);
+	if (cssLeft != null)
+	    cssLeft.print(printer);
+	if (cssRight != null)
+	    cssRight.print(printer);
+	if (cssBottom != null)
+	    cssBottom.print(printer);
+	if (cssDisplay != null)
+	    cssDisplay.print(printer);
+	if (cssDisplayCSS2 != null) {
+	    cssDisplayCSS2.print(printer);
+	}
+	if (cssDisplayCSS1 != null) {
+	    cssDisplayCSS1.print(printer);
+	}
+	if (cssPosition != null)
+	    cssPosition.print(printer);
+	if (cssZIndex != null)
+	    cssZIndex.print(printer);
+	if (cssDirection != null)
+	    cssDirection.print(printer);
+	if (cssDirectionATSC != null) {
+	    cssDirectionATSC.print(printer);
+	}
+	if (cssUnicodeBidi != null)
+	    cssUnicodeBidi.print(printer);
+	if (cssUnicodeBidiATSC != null) {
+	    cssUnicodeBidiATSC.print(printer);
+	}
+	if (cssWhiteSpace != null)
+	    cssWhiteSpace.print(printer);
+	cssListStyle.print(printer);
+	if (cssListStyleCSS2 != null) {
+	    cssListStyleCSS2.print(printer);
+	}
+	if (cssListStyleCSS1 != null) {
+	    cssListStyleCSS1.print(printer);
+	}
+	if (cssOverflow != null)
+	    cssOverflow.print(printer);
+	if (cssClip != null)
+	    cssClip.print(printer);
+	if (cssVisibility != null)
+	    cssVisibility.print(printer);
+	if (cssContent != null)
+	    cssContent.print(printer);
+	if (cssContentCSS2 != null) {
+	    cssContentCSS2.print(printer);
+	}
+	if (cssQuotes != null)
+	    cssQuotes.print(printer);
+	if (cssQuotesATSC != null) {
+	    cssQuotesATSC.print(printer);
+	}
+	if (cssCounterReset != null)
+	    cssCounterReset.print(printer);
+	if (cssCounterIncrement != null)
+	    cssCounterIncrement.print(printer);
+	if (cssMarkerOffset != null)
+	    cssMarkerOffset.print(printer);
+	if (cssMarkerOffsetATSC != null) {
+	    cssMarkerOffsetATSC.print(printer);
+	}
+	if (cssListStyleTV != null) {
+	    cssListStyleTV.print(printer);
+	}
+	if (cssListStyleTypeTV != null) {
+	    cssListStyleTypeTV.print(printer);
+	}
+	if (cssPositionTV != null) {
+	    cssPositionTV.print(printer);
+	}
+	if (cssTextAlignTV != null) {
+	    cssTextAlignTV.print(printer);
+	}
+	if (cssTextDecorationTV != null) {
+	    cssTextDecorationTV.print(printer);
+	}
+	if (cssVerticalAlignTV != null) {
+	    cssVerticalAlignTV.print(printer);
+	}
+    }
+
+
+    /**
+     * Find conflicts in this Style
+     * For the 'font-family' property
+     *
+     * @param warnings For warnings reports.
+     * @param allSelectors All contexts is the entire style sheet.
+     */   
+    private void findConflictsFontFamily(ApplContext ac, Warnings warnings, 
+					 CssSelectors selector,
+					 CssSelectors[] allSelectors) {
+	// first CSS2 (the default)
+	if (cssFontCSS2.fontFamily != null) {
+	    if (!cssFontCSS2.fontFamily.containsGenericFamily()) {
+		warnings.addWarning(new Warning(cssFontCSS2.fontFamily,
+						"no-generic-family", 2, ac));
+	    }
+	    if (cssFontCSS2.fontFamily.withSpace) {
+		warnings.addWarning(new Warning(cssFontCSS2.fontFamily,
+						"with-space", 1, ac));
+	    }
+	    return;
+	}
+	// CSS 3
+	if (cssFont.fontFamily != null) {
+	    if (!cssFont.fontFamily.containsGenericFamily()) {
+		warnings.addWarning(new Warning(cssFont.fontFamily,
+						"no-generic-family", 2, ac));
+	    }
+	    if (cssFont.fontFamily.withSpace) {
+		warnings.addWarning(new Warning(cssFont.fontFamily,
+						"with-space", 1, ac));
+	    }
+	    return;
+	}
+	// CSS1
+	if (cssFontCSS1.fontFamily != null) {
+	    if (!cssFontCSS1.fontFamily.containsGenericFamily()) {
+		warnings.addWarning(new Warning(cssFontCSS1.fontFamily,
+						"no-generic-family", 2, ac));
+	    }
+	    if (cssFontCSS1.fontFamily.withSpace) {
+		warnings.addWarning(new Warning(cssFontCSS1.fontFamily,
+						"with-space", 1, ac));
+	    }
+	}
+    }
+
+    /**
+     * Find conflicts in this Style
+     * For the float elements
+     *
+     * @param warnings For warnings reports.
+     * @param allSelectors All contexts is the entire style sheet.
+     */   
+    private void findConflictsFloatElements(ApplContext ac, Warnings warnings, 
+					    CssSelectors selector, 
+					    CssSelectors[] allSelectors) {
+	if(cssWidth == null ) {
+	    String selectorElement =  selector.getElement();
+	    // for null element, or element without intrinsic width
+	    if ( (selectorElement == null) ||
+		 ( !selectorElement.equals("html") &&
+		   !selectorElement.equals("img") && 
+		   !selectorElement.equals("input") &&
+		   !selectorElement.equals("object") && 
+		   !selectorElement.equals("textarea") && 
+		   !selectorElement.equals("select")
+		   ) ) {
+		// float needs a declared width
+		warnings.addWarning(new Warning(cssFloat, "float-no-width",
+						1, ac));                
+	    }
+	}
+    }
+
+    /**
+     * Find conflicts in this Style
+     *
+     * @param warnings For warnings reports.
+     * @param allSelectors All contexts is the entire style sheet.
+     */
+    public void findConflicts(ApplContext ac, Warnings warnings, 
+	    CssSelectors selector, CssSelectors[] allSelectors) {
+	// if border-style == none, border-width should be 0
+	// @@ this is a horrible place to do this ...
+	cssBorder.check();
+
+	// check conflicts for 'font-family'
+	findConflictsFontFamily(ac, warnings, selector, allSelectors);
+
+	// warning for floats
+	if (cssFloat != null) {
+	    //findConflictsFloatElements(ac, warnings, selector, allSelectors);
+	    // disabled per thread on www-validator-css 
+	    // and changes in CSS2.1 removing this constraint
+	}
+
+	if (cssBackground.getColor() != null) {
+	    CssColor colorCSS3 = cssColor;
+	    // we need to look if there is the same selector elsewhere
+	    // containing a color definition
+	    for (int i=0; i<allSelectors.length; i++) {
+		CssSelectors sel = allSelectors[i];	
+		if(sel.toString().equals(selector.toString())) {
+		    colorCSS3 = ((Css1Style) sel.getStyle()).cssColor;
+		    break;
+		}
+	    }
+	    if (colorCSS3 != null) {
+		if (cssBackground.getColor().equals(colorCSS3.getColor())) {
+		    // background and color can't have the same color
+		    warnings.addWarning(new Warning(cssBackground.color,
+			    "same-colors", 1, colorCSS3, ac));
+		}
+		else if(cssBackground.getColor().equals(
+			CssProperty.transparent)) {
+//		  It's better to have a background color with a color
+		    warnings.addWarning(new Warning(
+			    colorCSS3, "no-background-color", 2, ac));
+		}
+	    } else {
+		CssValue color = cssBackground.getColor();
+
+		if (!color.equals(CssBackgroundColor.transparent)) {
+		    // It's better to have a color when a background is defined.
+		    warnings.addWarning(new Warning(cssBackground.color,
+			    "no-color", 2, ac));
+		}
+	    }
+
+	    // Note : For borders, I don't look for inherited value.
+	    //        So I can't find same colors in two differents contexts.
+
+	    if (cssBorder.getTop().getColor() != null) {
+		CssValue color = cssBorder.getTop().getColor();
+		if (color != CssProperty.inherit
+			&& cssBackground.getColor().equals(color)) {
+		    // background and border-color can't have the same color
+		    warnings.addWarning(new Warning(cssBackground.color,
+			    "same-colors", 1,
+			    cssBorder.getTop().color, ac));
+		}
+	    }
+	    if (cssBorder.getRight().getColor() != null) {
+		CssValue color = cssBorder.getRight().getColor();
+		if (color != CssProperty.inherit
+			&& cssBackground.getColor().equals(color)) {
+		    // background and border-color can't have the same color
+		    warnings.addWarning(new Warning(cssBackground.color,
+			    "same-colors", 1,
+			    cssBorder.getRight().color, ac));
+		}
+	    }
+	    if (cssBorder.getBottom().getColor() != null) {
+		CssValue color = cssBorder.getBottom().getColor();
+		if (color != CssProperty.inherit
+			&& cssBackground.getColor().equals(color)) {
+		    // background and border-color can't have the same color
+		    warnings.addWarning(new Warning(cssBackground.color,
+			    "same-colors", 1,
+			    cssBorder.getBottom().color, ac));
+		}
+	    }
+	    if (cssBorder.getLeft().getColor() != null) {
+		CssValue color = cssBorder.getLeft().getColor();
+		if (color != CssProperty.inherit
+			&& cssBackground.getColor().equals(color)) {
+		    // background and border-color can't have the same color
+		    warnings.addWarning(new Warning(cssBackground.color,
+			    "same-colors", 1,
+			    cssBorder.getLeft().color, ac));
+		}
+	    }
+	    /* suppressed 03-09-98
+	     if ((cssPadding.top == null) ||
+	     (cssPadding.right == null) ||
+	     (cssPadding.bottom == null) ||
+	     (cssPadding.left == null)) {
+	     // It's better to have a padding with a background color.
+	      warnings.addWarning(new Warning(cssBackground.color, "no-padding", 2));
+	      }
+	      */
+	} else if (cssBackgroundCSS1.getColor() != null) {
+	    CssColorCSS1 colorCSS1 = cssColorCSS1;
+	    // we need to look if there is the same selector elsewhere
+	    // containing a color definition
+	    for (int i=0; i < allSelectors.length; i++) {
+		CssSelectors sel = allSelectors[i];		
+		if(sel.toString().equals(selector.toString())) {
+		    colorCSS1 = ((Css1Style) sel.getStyle()).cssColorCSS1;
+		    break;
+		}
+	    }
+	    if (colorCSS1 != null) {
+		if (cssBackgroundCSS1.getColor().equals(colorCSS1.getColor())) {
+		    // background and color can't have the same color
+		    warnings.addWarning(new Warning(cssBackgroundCSS1.color,
+			    "same-colors", 1, colorCSS1, ac));
+		}
+		else if(cssBackgroundCSS1.getColor().equals(
+			CssProperty.transparent)) {
+//		  It's better to have a background color with a color
+		    warnings.addWarning(new Warning(
+			    colorCSS1, "no-background-color", 2, ac));
+		}
+	    } else {
+		CssValue color = cssBackgroundCSS1.getColor();
+
+		if (!color.equals(CssBackgroundColorCSS1.transparent)) {
+		    // It's better to have a color when a background is defined.
+		    warnings.addWarning(new Warning(cssBackgroundCSS1.color,
+			    "no-color", 2, ac));
+		}
+	    }
+
+	    // Note : For borders, I don't look for inherited value.
+	    //        So I can't find same colors in two differents contexts.
+
+	    if (cssBorderCSS1.getTop().getColor() != null) {
+		CssValue color = cssBorderCSS1.getTop().getColor();
+		if (cssBackgroundCSS1.getColor().equals(color)) {
+		    // background and border-color can't have the same color
+		    warnings.addWarning(new Warning(cssBackgroundCSS1.color,
+			    "same-colors", 1,
+			    cssBorderCSS1.getTop().color, ac));
+		}
+	    }
+	    if (cssBorderCSS1.getRight().getColor() != null) {
+		CssValue color = cssBorderCSS1.getRight().getColor();
+		if (cssBackgroundCSS1.getColor().equals(color)) {
+		    // background and border-color can't have the same color
+		    warnings.addWarning(new Warning(cssBackgroundCSS1.color,
+			    "same-colors", 1,
+			    cssBorderCSS1.getRight().color, ac));
+		}
+	    }
+	    if (cssBorderCSS1.getBottom().getColor() != null) {
+		CssValue color = cssBorderCSS1.getBottom().getColor();
+		if (cssBackgroundCSS1.getColor().equals(color)) {
+		    // background and border-color can't have the same color
+		    warnings.addWarning(new Warning(cssBackgroundCSS1.color,
+			    "same-colors", 1,
+			    cssBorderCSS1.getBottom().color, ac));
+		}
+	    }
+	    if (cssBorderCSS1.getLeft().getColor() != null) {
+		CssValue color = cssBorderCSS1.getLeft().getColor();
+		if (cssBackgroundCSS1.getColor().equals(color)) {
+		    // background and border-color can't have the same color
+		    warnings.addWarning(new Warning(cssBackgroundCSS1.color,
+			    "same-colors", 1,
+			    cssBorderCSS1.getLeft().color, ac));
+		}
+	    }
+	}
+	else if (cssBackgroundCSS2.getColor() != null) {
+	    CssColorCSS2 colorCSS2 = cssColorCSS2;
+	    // we need to look if there is the same selector elsewhere
+	    // containing a color definition
+	    for (int i=0; i<allSelectors.length; i++) {
+		CssSelectors sel = allSelectors[i];		
+		if(sel.toString().equals(selector.toString())) {
+		    colorCSS2 = ((Css1Style) sel.getStyle()).cssColorCSS2;
+		    break;
+		}
+	    }
+	    if (colorCSS2 != null) {
+		if (cssBackgroundCSS2.getColor().equals(colorCSS2.getColor())) {
+		    // background and color can't have the same color
+		    warnings.addWarning(new Warning(cssBackgroundCSS2.color,
+			    "same-colors", 1, colorCSS2, ac));
+		}
+		else if(cssBackgroundCSS2.getColor().equals(
+			CssProperty.transparent)) {
+		    // It's better to have a background color with a color
+		    warnings.addWarning(new Warning(
+			    colorCSS2, "no-background-color", 2, ac));
+		}
+	    } else {
+		CssValue color = cssBackgroundCSS2.getColor();
+
+		if (!color.equals(CssBackgroundColorCSS2.transparent)) {
+		    // It's better to have a color when a background is defined.
+		    warnings.addWarning(new Warning(cssBackgroundCSS2.color,
+			    "no-color", 2, ac));
+		}
+	    }
+
+	    // Note : For borders, I don't look for inherited value.
+	    //        So I can't find same colors in two differents contexts.
+
+	    if (cssBorderCSS2.getTop().getColor() != null) {
+		CssValue color = cssBorderCSS2.getTop().getColor();
+		if (color != CssProperty.inherit
+			&& cssBackgroundCSS2.getColor().equals(color)) {
+		    // background and border-color can't have the same color
+		    warnings.addWarning(new Warning(cssBackgroundCSS2.color,
+			    "same-colors", 1,
+			    cssBorderCSS2.getTop().color, ac));
+		}
+	    }
+	    if (cssBorderCSS2.getRight().getColor() != null) {
+		CssValue color = cssBorderCSS2.getRight().getColor();
+		if (color != CssProperty.inherit
+			&& cssBackgroundCSS2.getColor().equals(color)) {
+		    // background and border-color can't have the same color
+		    warnings.addWarning(new Warning(cssBackgroundCSS2.color,
+			    "same-colors", 1,
+			    cssBorderCSS2.getRight().color, ac));
+		}
+	    }
+	    if (cssBorderCSS2.getBottom().getColor() != null) {
+		CssValue color = cssBorder.getBottom().getColor();
+		if (color != CssProperty.inherit
+			&& cssBackgroundCSS2.getColor().equals(color)) {
+		    // background and border-color can't have the same color
+		    warnings.addWarning(new Warning(cssBackgroundCSS2.color,
+			    "same-colors", 1,
+			    cssBorderCSS2.getBottom().color, ac));
+		}
+	    }
+	    if (cssBorderCSS2.getLeft().getColor() != null) {
+		CssValue color = cssBorderCSS2.getLeft().getColor();
+		if (color != CssProperty.inherit
+			&& cssBackgroundCSS2.getColor().equals(color)) {
+		    // background and border-color can't have the same color
+		    warnings.addWarning(new Warning(cssBackgroundCSS2.color,
+			    "same-colors", 1,
+			    cssBorderCSS2.getLeft().color, ac));
+		}
+	    }
+
+	}
+	else if (cssColor != null) {
+	    CssValue backgroundColor = null;
+	    // we need to look if there is the same selector elsewhere
+	    // containing a color definition
+	    for (int i=0; i<allSelectors.length; i++) {
+		CssSelectors sel = allSelectors[i];
+		Css1Style style =
+		    (Css1Style) sel.getStyle();
+		if(backgroundColor == null &&
+		   sel.toString().equals(selector.toString())) {
+		    backgroundColor = ((Css1Style) sel.getStyle()).
+		    	cssBackground.getColor();
+		}
+		if (style.cssBackground.getColor() != null) {
+		    if (style.cssBackground.getColor().equals(cssColor.getColor())) {
+			warnings.addWarning(new Warning(cssColor, "same-colors2", 1,
+				new String[] { style.cssBackground.color.getSelectors().toString(),
+					       cssColor.getSelectors().toString() }, ac));
+		    }
+		}
+	    }
+	    if(backgroundColor == null) {
+		// It's better to have a background color with a color
+		warnings.addWarning(new Warning(cssColor, 
+			"no-background-color", 2, ac));
+	    }
+	}
+	else if (cssColorCSS1 != null) {
+	    CssValue backgroundColor = null;
+	    // we need to look if there is the same selector elsewhere
+	    // containing a color definition
+	    for (int i=0; i<allSelectors.length; i++) {
+		CssSelectors sel = allSelectors[i];
+		Css1Style style = (Css1Style) sel.getStyle();
+		if(backgroundColor == null &&
+			sel.toString().equals(selector.toString())) {
+		    backgroundColor = ((Css1Style) sel.getStyle()).
+		    	cssBackgroundCSS1.getColor();
+		}
+		if (style.cssBackgroundCSS1.getColor() != null) {
+		    if (style.cssBackgroundCSS1.getColor().equals(cssColorCSS1.getColor())) {
+			warnings.addWarning(new Warning(cssColorCSS1, "same-colors2", 1,
+					new String[] { style.cssBackgroundCSS1.color.getSelectors().toString(),
+				cssColorCSS1.getSelectors().toString() }, ac));
+		    }
+		}
+	    }
+	    if(backgroundColor == null) {
+		// It's better to have a background color with a color
+		warnings.addWarning(new Warning(cssColorCSS1, 
+			"no-background-color", 2, ac));
+	    }
+	}
+	else if (cssColorCSS2 != null) {
+	    CssValue backgroundColor = null;
+	    // we need to look if there is the same selector elsewhere
+	    // containing a color definition
+	    for (int i=0; i<allSelectors.length; i++) {
+		CssSelectors sel = allSelectors[i];
+		Css1Style style = (Css1Style) sel.getStyle();
+		if(backgroundColor == null && 
+			sel.toString().equals(selector.toString())) {
+		    backgroundColor = ((Css1Style) sel.getStyle()).
+		    	cssBackgroundCSS2.getColor();
+		}
+		if (style.cssBackgroundCSS2.getColor() != null) {
+		    if (style.cssBackgroundCSS2.getColor().equals(cssColorCSS2.getColor())) {
+			warnings.addWarning(new Warning(cssColorCSS2, "same-colors2", 1,
+					new String[] { style.cssBackgroundCSS2.color.getSelectors().toString(),
+				cssColorCSS2.getSelectors().toString() }, ac));
+		    }
+		}
+	    }
+	    if(backgroundColor == null) {
+		// FIXME background image
+		// It's better to have a background color with a color
+		warnings.addWarning(new Warning(cssColorCSS2, 
+			"no-background-color", 2, ac));
+	    }
+	}
+
+	// now testing for % and length in padding and marging
+
+	RelativeAndAbsolute checker = new RelativeAndAbsolute();
+	CssProperty info = null;
+
+	if (cssMargin.getTop() != null) {
+	    info = cssMargin.getTop();
+	    checker.compute(cssMargin.getTop().getValue());
+	}
+	if (cssMargin.getBottom() != null) {
+	    info = cssMargin.getBottom();
+	    checker.compute(cssMargin.getBottom().getValue());
+	}
+	if (checker.isNotRobust()) {
+	    warnings.addWarning(new Warning(info.getSourceFile(),
+		    info.getLine(),
+		    "relative-absolute", 2,
+		    new String[] { "margin" }, ac));
+	}
+	checker.reset();
+
+	if (cssMargin.getRight() != null) {
+	    info = cssMargin.getRight();
+	    checker.compute(cssMargin.getRight().getValue());
+	}
+	if (cssMargin.getLeft() != null) {
+	    info = cssMargin.getLeft();
+	    checker.compute(cssMargin.getLeft().getValue());
+	}
+	if (checker.isNotRobust()) {
+	    warnings.addWarning(new Warning(info.getSourceFile(),
+		    info.getLine(),
+		    "relative-absolute", 2,
+		    new String[] { "margin" }, ac));
+	}
+	checker.reset();
+
+	if (cssPadding.getTop() != null) {
+	    info = cssPadding.getTop();
+	    checker.compute(cssPadding.getTop().getValue());
+	}
+	if (cssPadding.getBottom() != null) {
+	    info = cssPadding.getBottom();
+	    checker.compute(cssPadding.getBottom().getValue());
+	}
+	if (checker.isNotRobust()) {
+	    warnings.addWarning(new Warning(info.getSourceFile(),
+		    info.getLine(),
+		    "relative-absolute", 2,
+		    new String[] { "padding" }, ac));
+	}
+	checker.reset();
+
+	if (cssPadding.getRight() != null) {
+	    info = cssPadding.getRight();
+	    checker.compute(cssPadding.getRight().getValue());
+	}
+	if (cssPadding.getLeft() != null) {
+	    info = cssPadding.getLeft();
+	    checker.compute(cssPadding.getLeft().getValue());
+	}
+
+	if (checker.isNotRobust()) {
+	    warnings.addWarning(new Warning(info.getSourceFile(),
+		    info.getLine(),
+		    "relative-absolute", 2,
+		    new String[] { "padding" }, ac));
+	}
+
+	if (Util.fromHTMLFile) {
+	    if ((cssTextIndent != null)
+		    && (selector != null)
+		    && (!selector.isBlockLevelElement())) {
+		warnings.addWarning(new Warning(cssTextIndent,
+			"block-level", 1, ac));
+	    }
+	    else if ((cssTextIndentMob != null)
+		    && (selector != null)
+		    && (!selector.isBlockLevelElement())) {
+		warnings.addWarning(new Warning(cssTextAlignMob,
+			"block-level", 1, ac));
+	    }
+	    if ((cssTextAlign != null)
+		    && (selector != null)
+		    && (!selector.isBlockLevelElement())) {
+		warnings.addWarning(new Warning(cssTextAlign,
+			"block-level", 1, ac));
+	    }
+	    else if ((cssTextAlignMob != null)
+		    && (selector != null)
+		    && (!selector.isBlockLevelElement())) {
+		warnings.addWarning(new Warning(cssTextAlignMob,
+			"block-level", 1, ac));
+	    }
+	    else if ((cssTextAlignTV != null)
+		    && (selector != null)
+		    && (!selector.isBlockLevelElement())) {
+		warnings.addWarning(new Warning(cssTextAlignTV,
+			"block-level", 1, ac));
+	    }
+	    if ((cssWhiteSpace != null)
+		    && (selector != null)
+		    && (!selector.isBlockLevelElement())) {
+		warnings.addWarning(new Warning(cssWhiteSpace,
+			"block-level", 1, ac));
+	    }
+	}
+
+	if (cssMarkerOffset != null) {
+	    //@@ beurk you know what ? 5 is horrible.
+	    if ((cssDisplay == null)
+		    || (cssDisplay.value != 5)) {
+		warnings.addWarning(new Warning(cssMarkerOffset,
+			"marker", 1, ac));
+	    }
+	}
+    }
+}
+
+class RelativeAndAbsolute {
+    boolean relative = false;
+    boolean absolute = false;
+
+    final void reset() {
+	relative = false;
+	absolute = false;
+    }
+
+    final boolean isNotRobust() {
+	return relative && absolute;
+    }
+    
+    final void compute(CssValue value) {
+	switch (value.getType()) {
+	case CssTypes.CSS_PERCENTAGE:
+	    // FIXME, it depends on the unit of the parent in the cascade.
+	    CssPercentage percent = (CssPercentage) value;
+	    if (percent.getValue() != (float) 0.0) {
+		relative = true;
+	    }
+	    break;
+	case CssTypes.CSS_LENGTH:
+	    CssLength length = (CssLength) value;
+	    Float f = (Float) length.get();
+	    // 0 is always 0, no need to check
+	    if (f.floatValue() != (float) 0.0) {
+		String unit = length.getUnit();
+		// per CSS21, section 4.3.2
+		// 'px', 'em', 'ex' are relative values
+		if (unit.equals("px") || unit.equals("em") ||
+		    unit.equals("ex")) { 
+		    relative = true;
+		} else {
+		    // 'cm', 'mm', 'pt', 'pc', 'in' are absolute values
+		    absolute = true;
+		}
+	    }
+	    break;
+	default:
+	    /* should never happen */
+	}
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBackground.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,438 @@
+//
+// $Id: CssBackground.java,v 1.5 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css3.CssBackgroundSize;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     <A NAME="background">5.3.7 &nbsp;&nbsp; 'background'</A>
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;background-color&gt; || &lt;background-image&gt; ||
+ *   &lt;background-repeat&gt; || &lt;background-attachment&gt; ||
+ *   &lt;background-position&gt;<BR>
+ *   <EM>Initial:</EM> not defined for shorthand properties<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> allowed on &lt;background-position&gt;<BR>
+ *   <P>
+ *   The 'background' property is a shorthand property for setting the individual
+ *   background properties (i.e., 'background-color', 'background-image',
+ *   'background-repeat', 'background-attachment' and 'background-position') at
+ *   the same place in the style sheet.
+ *   <P>
+ *   Possible values on the 'background' properties are the set of all possible
+ *   values on the individual properties.
+ *   <PRE>
+ *   BODY { background: red }
+ *   P { background: url(chess.png) gray 50% repeat fixed }
+ * </PRE>
+ *   <P> The 'background' property always sets all the individual background
+ *   properties.  In the first rule of the above example, only a value for
+ *   'background-color' has been given and the other individual properties are
+ *   set to their initial value. In the second rule, all individual properties
+ *   have been specified.
+ *
+ * @version $Revision: 1.5 $
+ * @see CssBackgroundColor
+ * @see CssBackgroundImage
+ * @see CssBackgroundRepeat
+ * @see CssBackgroundAttachment
+ * @see CssBackgroundPosition
+ */
+public class CssBackground extends CssProperty
+        implements CssOperator, CssBackgroundConstants {
+
+    CssBackgroundColor color;
+    CssBackgroundImage image;
+    CssBackgroundRepeat repeat;
+    CssBackgroundAttachment attachment;
+    CssBackgroundPosition position;
+    CssBackgroundSize size;
+    boolean sizedefined;
+
+    boolean same;
+
+    /**
+     * Create a new CssBackground
+     */
+    public CssBackground() {
+    }
+
+    /**
+     * Set the value of the property<br/>
+     * Does not check the number of values
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssBackground(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Set the value of the property
+     *
+     * @param expression The expression for this property
+     * @param check set it to true to check the number of values
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssBackground(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	CssValue val = expression.getValue();
+	char op = SPACE;
+	boolean find = true;
+	setByUser();
+
+	// if there are too many values -> error
+	if(check && expression.getCount() > 6) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	boolean manyValues = (expression.getCount() > 1);
+
+	while (find) {
+	    find = false;
+	    val = expression.getValue();
+	    op = expression.getOperator();
+
+	    if (val == null) {
+		break;
+	    }
+
+	    // if there are many values, we can't have inherit as one of them
+	    if(manyValues && val != null && val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", null, null, ac);
+	    }
+
+	    if (color == null) {
+		try {
+		    color = new CssBackgroundColor(ac, expression);
+		    find = true;
+		} catch (InvalidParamException e) {
+		    // nothing to do, image will test this value
+		}
+	    }
+	    if (!find && image == null) {
+		try {
+		    image = new CssBackgroundImage(ac, expression);
+		    find = true;
+		} catch (InvalidParamException e) {
+		    // nothing to do, repeat will test this value
+		}
+	    }
+	    if (!find && repeat == null) {
+		try {
+		    repeat = new CssBackgroundRepeat(ac, expression);
+		    find = true;
+		} catch (InvalidParamException e) {
+		    // nothing to do, attachment will test this value
+		}
+	    }
+	    if (!find && attachment == null) {
+		try {
+		    attachment = new CssBackgroundAttachment(ac, expression);
+		    find = true;
+		} catch (InvalidParamException e) {
+		    // nothing to do, position will test this value
+		}
+	    }
+	    if (!find && position == null) {
+		try {
+		    position = new CssBackgroundPosition(ac, expression);
+		    find = true;
+		} catch (InvalidParamException e) {
+		    // nothing to do
+		}
+	    }
+	    if (op != SPACE) {
+		if (op != SLASH) {
+		    throw new InvalidParamException("operator",
+			    ((new Character(op)).toString()),
+			    ac);
+		} else {
+		    //try {
+		    size = new CssBackgroundSize(ac, expression);
+		    sizedefined = true;
+		    break;
+		    //} catch (InvalidParamException e) {
+		    // error!
+		    //}
+		}
+	    }
+	    if(check && !find && val != null) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	}
+    }
+
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return color;
+    }
+
+    /**
+     * Returns the color
+     */
+    public final CssValue getColor() {
+	if (color == null) {
+	    return null;
+	} else {
+	    return color.getColor();
+	}
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "background";
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	String ret = "";
+	if(color != null) {
+	    ret += color;
+	}
+	if(image != null) {
+	    if(ret != null) {
+		ret += " ";
+	    }
+	    ret += image;
+	}
+	if(repeat != null) {
+	    if(ret != null) {
+		ret += " ";
+	    }
+	    ret += repeat;
+	}
+	if(attachment != null) {
+	    if(ret != null) {
+		ret += " ";
+	    }
+	    ret += attachment;
+	}
+	if(position != null) {
+	    if(ret != null) {
+		ret += " ";
+	    }
+	    ret += position;
+	}
+	if(sizedefined) {
+	    ret += "/";
+	    ret += size;
+	}
+	return ret;
+	/*if (same) {
+	    return inherit.toString();
+	} else {
+	    String ret = "";
+	    if (color.byUser)
+		ret += " " + color.toString();
+	    if (image.byUser)
+		ret += " " + image.toString();
+	    if (image.byUser)
+		ret += " " + repeat.toString();
+	    if (attachment.byUser)
+		ret += " " + attachment.toString();
+	    if (position.byUser)
+			ret += " " + position.toString();
+
+	    if (sizedefined)
+			ret += "/" + size.toString();
+		return ret.trim();
+	}*/
+    }
+
+    /**
+     * Set this property to be important.
+     * Overrides this method for a macro
+     */
+    public void setImportant() {
+	if(color != null) {
+	    color.important = true;
+	}
+	if(image != null) {
+	    image.important = true;
+	}
+	if(repeat != null) {
+	    repeat.important = true;
+	}
+	if(attachment != null) {
+	    attachment.important = true;
+	}
+	if(position != null) {
+	    position.important = true;
+	}
+    }
+
+    /**
+     * Returns true if this property is important.
+     * Overrides this method for a macro
+     */
+    public boolean getImportant() {
+	return ((color == null || color.important) &&
+		(image == null || image.important) &&
+		(repeat == null || repeat.important) &&
+		(attachment == null || attachment.important) &&
+		(position == null || position.important));
+    }
+
+    /**
+     * Print this property.
+     *
+     * @param printer The printer.
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	if ((color != null && image != null &&
+	     repeat != null && attachment !=null &&
+	     position != null) &&
+	    (getImportant() ||
+	     (!image.important &&
+	      !color.important &&
+	      !repeat.important &&
+	      !attachment.important &&
+	      !position.important))) {
+	    if (color.byUser || image.byUser || repeat.byUser
+		|| attachment.byUser || position.byUser) {
+		printer.print(this);
+	    }
+	} else {
+	    if (color != null)
+		color.print(printer);
+	    if (image != null)
+		image.print(printer);
+	    if (repeat != null)
+		repeat.print(printer);
+	    if (attachment != null)
+		attachment.print(printer);
+	    if (position != null)
+		position.print(printer);
+	}
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors selector) {
+	super.setSelectors(selector);
+	if (color != null) {
+	    color.setSelectors(selector);
+	}
+	if (image != null) {
+	    image.setSelectors(selector);
+	}
+	if (repeat != null) {
+	    repeat.setSelectors(selector);
+	}
+	if (attachment != null) {
+	    attachment.setSelectors(selector);
+	}
+	if (position != null) {
+	    position.setSelectors(selector);
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	((Css1Style) style).cssBackground.same = same;
+	((Css1Style) style).cssBackground.byUser = byUser;
+
+	if(color != null) {
+	    color.addToStyle(ac, style);
+	}
+	if(image != null) {
+	    image.addToStyle(ac, style);
+	}
+	if(repeat != null) {
+	    repeat.addToStyle(ac, style);
+	}
+	if(attachment != null) {
+	    attachment.addToStyle(ac, style);
+	}
+	if(position != null) {
+	    position.addToStyle(ac, style);
+	}
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBackground();
+	} else {
+	    return ((Css1Style) style).cssBackground;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return false; // FIXME
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	super.setInfo(line, source);
+	if(color != null) {
+	    color.setInfo(line, source);
+	}
+	if(image != null) {
+	    image.setInfo(line, source);
+	}
+	if(repeat != null) {
+	    repeat.setInfo(line, source);
+	}
+	if(attachment != null) {
+	    attachment.setInfo(line, source);
+	}
+	if(position != null) {
+	    position.setInfo(line, source);
+	}
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBackgroundAttachment.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,168 @@
+//
+// $Id: CssBackgroundAttachment.java,v 1.4 2009-02-11 22:43:15 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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.CssTypes;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'background-attachment'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> scroll | fixed<BR>
+ *   <EM>Initial:</EM> scroll<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   If a background image is specified, the value of 'background-attachment'
+ *   determines if it is fixed with regard to the canvas or if it scrolls along
+ *   with the content.
+ *   <PRE>
+ *   BODY {
+ *     background: red url(pendant.gif);
+ *     background-repeat: repeat-y;
+ *     background-attachment: fixed;
+ *   }
+ * </PRE>
+ * @version $Revision: 1.4 $
+ */
+public class CssBackgroundAttachment extends CssProperty
+    implements CssBackgroundConstants {
+
+    int attachment;
+
+    private static int[] hash_values;
+
+    /**
+     * Create a new CssBackgroundAttachment
+     */
+    public CssBackgroundAttachment() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new CssBackgroundAttachment
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBackgroundAttachment(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+
+	CssValue val = expression.getValue();
+
+	if (val.getType() == CssTypes.CSS_IDENT) {
+	    int hash = val.hashCode();
+	    for (int i =0; i < ATTACHMENT.length; i++)
+		if (hash_values[i] == hash) {
+		    attachment = i;
+		    expression.next();
+		    return;
+		}
+	}
+
+	throw new InvalidParamException("value", expression.getValue(),
+					getPropertyName(), ac);
+    }
+
+    public CssBackgroundAttachment(ApplContext ac, CssExpression expression)
+    	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return ATTACHMENT[attachment];
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return attachment == 2;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return ATTACHMENT[attachment];
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "background-attachment";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBackground cssBackground = ((Css1Style) style).cssBackground;
+	if (cssBackground.attachment != null)
+	    style.addRedefinitionWarning(ac, this);
+	cssBackground.attachment = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBackgroundAttachment();
+	} else {
+	    return ((Css1Style) style).cssBackground.attachment;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBackgroundAttachment &&
+		attachment == ((CssBackgroundAttachment) property).attachment);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return attachment == 0;
+    }
+
+    static {
+	hash_values = new int[ATTACHMENT.length];
+	for (int i = 0; i < ATTACHMENT.length; i++)
+	    hash_values[i] = ATTACHMENT[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBackgroundAttachmentCSS1.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,168 @@
+//
+// $Id: CssBackgroundAttachmentCSS1.java,v 1.4 2009-02-11 22:43:15 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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.CssTypes;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'background-attachment'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> scroll | fixed<BR>
+ *   <EM>Initial:</EM> scroll<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   If a background image is specified, the value of 'background-attachment'
+ *   determines if it is fixed with regard to the canvas or if it scrolls along
+ *   with the content.
+ *   <PRE>
+ *   BODY {
+ *     background: red url(pendant.gif);
+ *     background-repeat: repeat-y;
+ *     background-attachment: fixed;
+ *   }
+ * </PRE>
+ * @version $Revision: 1.4 $
+ */
+public class CssBackgroundAttachmentCSS1 extends CssProperty
+    implements CssBackgroundConstants {
+
+    int attachment;
+
+    private static int[] hash_values;
+
+    /**
+     * Create a new CssBackgroundAttachmentCSS1
+     */
+    public CssBackgroundAttachmentCSS1() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new CssBackgroundAttachmentCSS1
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBackgroundAttachmentCSS1(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+
+	CssValue val = expression.getValue();
+
+	if (val.getType() == CssTypes.CSS_IDENT) {
+	    int hash = val.hashCode();
+	    for (int i =0; i < ATTACHMENT.length; i++)
+		if (hash_values[i] == hash) {
+		    attachment = i;
+		    expression.next();
+		    return;
+		}
+	}
+
+	throw new InvalidParamException("value", expression.getValue(),
+					getPropertyName(), ac);
+    }
+
+    public CssBackgroundAttachmentCSS1(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return ATTACHMENT[attachment];
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return attachment == 2;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return ATTACHMENT[attachment];
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "background-attachment";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBackgroundCSS1 cssBackground = ((Css1Style) style).cssBackgroundCSS1;
+	if (cssBackground.attachment != null)
+	    style.addRedefinitionWarning(ac, this);
+	cssBackground.attachment = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBackgroundAttachmentCSS1();
+	} else {
+	    return ((Css1Style) style).cssBackgroundCSS1.attachment;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBackgroundAttachmentCSS1 &&
+		attachment == ((CssBackgroundAttachmentCSS1) property).attachment);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return attachment == 0;
+    }
+
+    static {
+	hash_values = new int[ATTACHMENT.length];
+	for (int i = 0; i < ATTACHMENT.length; i++)
+	    hash_values[i] = ATTACHMENT[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBackgroundAttachmentCSS2.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,179 @@
+//
+// $Id: CssBackgroundAttachmentCSS2.java,v 1.5 2009-02-11 22:43:15 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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.CssTypes;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'background-attachment'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> scroll | fixed<BR>
+ *   <EM>Initial:</EM> scroll<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   If a background image is specified, the value of 'background-attachment'
+ *   determines if it is fixed with regard to the canvas or if it scrolls along
+ *   with the content.
+ *   <PRE>
+ *   BODY {
+ *     background: red url(pendant.gif);
+ *     background-repeat: repeat-y;
+ *     background-attachment: fixed;
+ *   }
+ * </PRE>
+ * @version $Revision: 1.5 $
+ */
+public class CssBackgroundAttachmentCSS2 extends CssProperty
+    implements CssBackgroundConstants {
+
+    int attachment;
+
+    private static int[] hash_values;
+
+    /**
+     * Create a new CssBackgroundAttachmentCSS2
+     */
+    public CssBackgroundAttachmentCSS2() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new CssBackgroundAttachmentCSS2
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBackgroundAttachmentCSS2(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+
+	CssValue val = expression.getValue();
+
+	if (val.getType() == CssTypes.CSS_IDENT) {
+	    int hash = val.hashCode();
+	    for (int i =0; i < ATTACHMENT.length; i++)
+		if (hash_values[i] == hash) {
+		    attachment = i;
+		    expression.next();
+		    return;
+		}
+	}
+
+	throw new InvalidParamException("value", expression.getValue(),
+					getPropertyName(), ac);
+    }
+
+    public CssBackgroundAttachmentCSS2(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return ATTACHMENT[attachment];
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return attachment == 2;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return ATTACHMENT[attachment];
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "background-attachment";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBackgroundCSS2 cssBackground = ((Css1Style) style).cssBackgroundCSS2;
+	if (cssBackground.attachment != null)
+	    style.addRedefinitionWarning(ac, this);
+	cssBackground.attachment = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBackgroundAttachmentCSS2();
+	} else {
+	    return ((Css1Style) style).cssBackgroundCSS2.attachment;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBackgroundAttachmentCSS2 &&
+		attachment == ((CssBackgroundAttachmentCSS2) property).attachment);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return attachment == 0;
+    }
+
+    static public boolean checkMatchingIdent(CssIdent idval) {
+	for (int i=0 ; i < hash_values.length; i++) {
+	    if (hash_values[i] == idval.hashCode()) {
+		return true;
+	    }
+	}
+	return false;
+    }
+
+    static {
+	hash_values = new int[ATTACHMENT.length];
+	for (int i = 0; i < ATTACHMENT.length; i++)
+	    hash_values[i] = ATTACHMENT[i].hashCode();
+    }
+
+    
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBackgroundAttachmentMob.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,167 @@
+//
+// $Id: CssBackgroundAttachmentMob.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'background-attachment'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> scroll | fixed<BR>
+ *   <EM>Initial:</EM> scroll<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   If a background image is specified, the value of 'background-attachment'
+ *   determines if it is fixed with regard to the canvas or if it scrolls along
+ *   with the content.
+ *   <PRE>
+ *   BODY {
+ *     background: red url(pendant.gif);
+ *     background-repeat: repeat-y;
+ *     background-attachment: fixed;
+ *   }
+ * </PRE>
+ * @version $Revision: 1.3 $
+ */
+public class CssBackgroundAttachmentMob extends CssProperty
+    implements CssBackgroundConstants {
+
+    int attachment;
+
+    private static int[] hash_values;
+
+    /**
+     * Create a new CssBackgroundAttachmentMob
+     */
+    public CssBackgroundAttachmentMob() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new CssBackgroundAttachmentMob
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBackgroundAttachmentMob(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+
+	CssValue val = expression.getValue();
+
+	if (val instanceof CssIdent) {
+	    int hash = val.hashCode();
+	    for (int i =0; i < ATTACHMENT.length; i++)
+		if (hash_values[i] == hash) {
+		    attachment = i;
+		    expression.next();
+		    return;
+		}
+	}
+
+	throw new InvalidParamException("value", expression.getValue(),
+					getPropertyName(), ac);
+    }
+
+    public CssBackgroundAttachmentMob(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return ATTACHMENT[attachment];
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return attachment == 2;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return ATTACHMENT[attachment];
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "background-attachment";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBackgroundMob cssBackground = ((Css1Style) style).cssBackgroundMob;
+	if (cssBackground.attachment != null)
+	    style.addRedefinitionWarning(ac, this);
+	cssBackground.attachment = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBackgroundAttachmentMob();
+	} else {
+	    return ((Css1Style) style).cssBackgroundMob.attachment;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBackgroundAttachmentMob &&
+		attachment == ((CssBackgroundAttachmentMob) property).attachment);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return attachment == 0;
+    }
+
+    static {
+	hash_values = new int[ATTACHMENT.length];
+	for (int i = 0; i < ATTACHMENT.length; i++)
+	    hash_values[i] = ATTACHMENT[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBackgroundCSS1.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,414 @@
+//
+// $Id: CssBackgroundCSS1.java,v 1.5 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     <A NAME="background">5.3.7 &nbsp;&nbsp; 'background'</A>
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;background-color&gt; || &lt;background-image&gt; ||
+ *   &lt;background-repeat&gt; || &lt;background-attachment&gt; ||
+ *   &lt;background-position&gt;<BR>
+ *   <EM>Initial:</EM> not defined for shorthand properties<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> allowed on &lt;background-position&gt;<BR>
+ *   <P>
+ *   The 'background' property is a shorthand property for setting the individual
+ *   background properties (i.e., 'background-color', 'background-image',
+ *   'background-repeat', 'background-attachment' and 'background-position') at
+ *   the same place in the style sheet.
+ *   <P>
+ *   Possible values on the 'background' properties are the set of all possible
+ *   values on the individual properties.
+ *   <PRE>
+ *   BODY { background: red }
+ *   P { background: url(chess.png) gray 50% repeat fixed }
+ * </PRE>
+ *   <P> The 'background' property always sets all the individual background
+ *   properties.  In the first rule of the above example, only a value for
+ *   'background-color' has been given and the other individual properties are
+ *   set to their initial value. In the second rule, all individual properties
+ *   have been specified.
+ *
+ * @version $Revision: 1.5 $
+ * @see CssBackgroundColor
+ * @see CssBackgroundImage
+ * @see CssBackgroundRepeat
+ * @see CssBackgroundAttachment
+ * @see CssBackgroundPosition
+ */
+public class CssBackgroundCSS1 extends CssProperty
+        implements CssOperator, CssBackgroundConstants {
+
+    CssBackgroundColorCSS1 color;
+    CssBackgroundImageCSS1 image;
+    CssBackgroundRepeatCSS1 repeat;
+    CssBackgroundAttachmentCSS1 attachment;
+    CssBackgroundPositionCSS1 position;
+
+    boolean same;
+
+    /**
+     * Create a new CssBackgroundCSS1
+     */
+    public CssBackgroundCSS1() {
+    }
+
+    /**
+     * Set the value of the property
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssBackgroundCSS1(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	CssValue val = expression.getValue();
+	char op = SPACE;
+	boolean find = true;
+
+	// too many values
+	if(check  && expression.getCount() > 6) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+
+	while (find) {
+	    find = false;
+	    val = expression.getValue();
+	    op = expression.getOperator();
+
+	    if (val == null) {
+		break;
+	    }
+
+	    if (color == null) {
+		try {
+		    color = new CssBackgroundColorCSS1(ac, expression);
+		    find = true;
+		} catch (InvalidParamException e) {
+		}
+	    }
+	    if (!find && image == null) {
+		try {
+		    image = new CssBackgroundImageCSS1(ac, expression);
+		    find = true;
+		} catch (InvalidParamException e) {
+		    // nothing to do, repeat will test this value
+		}
+	    }
+	    if (!find && repeat == null) {
+		try {
+		    repeat = new CssBackgroundRepeatCSS1(ac, expression);
+		    find = true;
+		} catch (InvalidParamException e) {
+		    // nothing to do, attachment will test this value
+		}
+	    }
+	    if (!find && attachment == null) {
+		try {
+		    attachment = new CssBackgroundAttachmentCSS1(ac, expression);
+		    find = true;
+		} catch (InvalidParamException e) {
+		    // nothing to do, position will test this value
+		}
+	    }
+	    if (!find && position == null) {
+		try {
+		    position = new CssBackgroundPositionCSS1(ac, expression);
+		    find = true;
+		} catch (InvalidParamException e) {
+		    // nothing to do
+		}
+	    }
+	    if (op != SPACE) {
+		throw new InvalidParamException("operator",
+						((new Character(op)).toString()),
+						ac);
+	    }
+	    if(check && !find && val != null) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	}
+	/*
+	if (color == null)
+	    color = new CssBackgroundColorCSS1();
+	if (image == null)
+	    image = new CssBackgroundImageCSS1();
+	if (repeat == null)
+	    repeat = new CssBackgroundRepeatCSS1();
+	if (attachment == null)
+	    attachment = new CssBackgroundAttachmentCSS1();
+	if (position == null)
+	    position = new CssBackgroundPositionCSS1();
+	*/
+    }
+
+    public CssBackgroundCSS1(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return color;
+    }
+
+    /**
+     * Returns the color
+     */
+    public final CssValue getColor() {
+	if (color == null) {
+	    return null;
+	} else {
+	    return color.getColor();
+	}
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "background";
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	String ret = "";
+	if(color != null) {
+	    ret += color;
+	}
+	if(image != null) {
+	    if(ret != null) {
+		ret += " ";
+	    }
+	    ret += image;
+	}
+	if(repeat != null) {
+	    if(ret != null) {
+		ret += " ";
+	    }
+	    ret += repeat;
+	}
+	if(attachment != null) {
+	    if(ret != null) {
+		ret += " ";
+	    }
+	    ret += attachment;
+	}
+	if(position != null) {
+	    if(ret != null) {
+		ret += " ";
+	    }
+	    ret += position;
+	}
+	return ret;
+	/*
+	if (same) {
+	    return inherit.toString();
+	} else {
+	    String ret = "";
+	    if (color.byUser)
+		ret += " " + color.toString();
+	    if (image.byUser)
+		ret += " " + image.toString();
+	    if (image.byUser)
+		ret += " " + repeat.toString();
+	    if (attachment.byUser)
+		ret += " " + attachment.toString();
+	    if (position.byUser)
+		ret += " " + position.toString();
+	    return ret.trim();
+	}*/
+    }
+
+    /**
+     * Set this property to be important.
+     * Overrides this method for a macro
+     */
+    public void setImportant() {
+	if(color != null) {
+	    color.important = true;
+	}
+	if(image != null) {
+	    image.important = true;
+	}
+	if(repeat != null) {
+	    repeat.important = true;
+	}
+	if(attachment != null) {
+	    attachment.important = true;
+	}
+	if(position != null) {
+	    position.important = true;
+	}
+    }
+
+    /**
+     * Returns true if this property is important.
+     * Overrides this method for a macro
+     */
+    public boolean getImportant() {
+	return ((color == null || color.important) &&
+		(image == null || image.important) &&
+		(repeat == null || repeat.important) &&
+		(attachment == null || attachment.important) &&
+		(position == null || position.important));
+    }
+
+    /**
+     * Print this property.
+     *
+     * @param printer The printer.
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	if ((color != null && image != null &&
+	     repeat != null && attachment !=null &&
+	     position != null) &&
+	    (getImportant() ||
+	     (!image.important &&
+	      !color.important &&
+	      !repeat.important &&
+	      !attachment.important &&
+	      !position.important))) {
+	    if (color.byUser || image.byUser || repeat.byUser
+		|| attachment.byUser || position.byUser) {
+		printer.print(this);
+	    }
+	} else {
+	    if (color != null)
+		color.print(printer);
+	    if (image != null)
+		image.print(printer);
+	    if (repeat != null)
+		repeat.print(printer);
+	    if (attachment != null)
+		attachment.print(printer);
+	    if (position != null)
+		position.print(printer);
+	}
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors selector) {
+	super.setSelectors(selector);
+	if (color != null) {
+	    color.setSelectors(selector);
+	}
+	if (image != null) {
+	    image.setSelectors(selector);
+	}
+	if (repeat != null) {
+	    repeat.setSelectors(selector);
+	}
+	if (attachment != null) {
+	    attachment.setSelectors(selector);
+	}
+	if (position != null) {
+	    position.setSelectors(selector);
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	((Css1Style) style).cssBackgroundCSS1.same = same;
+	((Css1Style) style).cssBackgroundCSS1.byUser = byUser;
+
+	if(color != null) {
+	    color.addToStyle(ac, style);
+	}
+	if(image != null) {
+	    image.addToStyle(ac, style);
+	}
+	if(repeat != null) {
+	    repeat.addToStyle(ac, style);
+	}
+	if(attachment != null) {
+	    attachment.addToStyle(ac, style);
+	}
+	if(position != null) {
+	    position.addToStyle(ac, style);
+	}
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBackgroundCSS1();
+	} else {
+	    return ((Css1Style) style).cssBackgroundCSS1;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return false; // FIXME
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	super.setInfo(line, source);
+	if(color != null) {
+	    color.setInfo(line, source);
+	}
+	if(image != null) {
+	    image.setInfo(line, source);
+	}
+	if(repeat != null) {
+	    repeat.setInfo(line, source);
+	}
+	if(attachment != null) {
+	    attachment.setInfo(line, source);
+	}
+	if(position != null) {
+	    position.setInfo(line, source);
+	}
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBackgroundCSS2.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,549 @@
+//
+// $Id: CssBackgroundCSS2.java,v 1.9 2008-03-27 14:07:12 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssString;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     <A NAME="background">5.3.7 &nbsp;&nbsp; 'background'</A>
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;background-color&gt; || &lt;background-image&gt; ||
+ *   &lt;background-repeat&gt; || &lt;background-attachment&gt; ||
+ *   &lt;background-position&gt;<BR>
+ *   <EM>Initial:</EM> not defined for shorthand properties<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> allowed on &lt;background-position&gt;<BR>
+ *   <P>
+ *   The 'background' property is a shorthand property for setting the individual
+ *   background properties (i.e., 'background-color', 'background-image',
+ *   'background-repeat', 'background-attachment' and 'background-position') at
+ *   the same place in the style sheet.
+ *   <P>
+ *   Possible values on the 'background' properties are the set of all possible
+ *   values on the individual properties.
+ *   <PRE>
+ *   BODY { background: red }
+ *   P { background: url(chess.png) gray 50% repeat fixed }
+ * </PRE>
+ *   <P> The 'background' property always sets all the individual background
+ *   properties.  In the first rule of the above example, only a value for
+ *   'background-color' has been given and the other individual properties are
+ *   set to their initial value. In the second rule, all individual properties
+ *   have been specified.
+ *
+ * @version $Revision: 1.9 $
+ * @see CssBackgroundColor
+ * @see CssBackgroundImage
+ * @see CssBackgroundRepeat
+ * @see CssBackgroundAttachment
+ * @see CssBackgroundPosition
+ */
+public class CssBackgroundCSS2 extends CssProperty
+        implements CssOperator, CssBackgroundConstants {
+
+    CssBackgroundColorCSS2 color;
+    CssBackgroundImageCSS2 image;
+    CssBackgroundRepeatCSS2 repeat;
+    CssBackgroundAttachmentCSS2 attachment;
+    CssBackgroundPositionCSS2 position;
+
+    boolean same;
+
+    /**
+     * Duplicate this property.
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     */
+    public CssProperty duplicate() {
+	CssBackgroundCSS2 cloned = (CssBackgroundCSS2) super.duplicate();
+	if (cloned != null) {
+	    if (color != null) {
+		cloned.color = (CssBackgroundColorCSS2) color.duplicate();
+	    }
+	    if (image != null) {
+		cloned.image = (CssBackgroundImageCSS2) image.duplicate();
+	    }
+	    if (repeat != null) {
+		cloned.repeat = (CssBackgroundRepeatCSS2) repeat.duplicate();
+	    }
+	    if (attachment != null) {
+		cloned.attachment = (CssBackgroundAttachmentCSS2) attachment.duplicate();
+	    }
+	    if (position != null) {
+		cloned.position = (CssBackgroundPositionCSS2) position.duplicate();
+	    }
+	}
+	return cloned;
+    }
+
+    /**
+     * Create a new CssBackgroundCSS2
+     */
+    public CssBackgroundCSS2() {
+    }
+
+    /**
+     * Set the value of the property
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssBackgroundCSS2(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	CssValue val = expression.getValue();
+	char op = SPACE;
+	boolean find = true;
+
+	// too many values
+	if(check && expression.getCount() > 6) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+
+	boolean manyValues = (expression.getCount() > 1);
+
+	while (find) {
+	    find = false;
+	    val = expression.getValue();
+	    op = expression.getOperator();
+
+	    if (val == null) {
+		break;
+	    }
+
+	    // if there are many values, we can't have inherit as one of them
+	    if(manyValues && val != null && val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", null, null, ac);
+	    }
+	    // quoted strings are not allowed (CssString)
+	    if(check && (val instanceof CssString)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+
+	    if (color == null) {
+		try {
+		    color = new CssBackgroundColorCSS2(ac, expression);
+		    find = true;
+		} catch (InvalidParamException e) {
+		    // nothing to do, image will test this value
+		}
+	    }
+	    if (!find && image == null) {
+		try {
+		    image = new CssBackgroundImageCSS2(ac, expression);
+		    find = true;
+		} catch (InvalidParamException e) {
+		    // nothing to do, repeat will test this value
+		}
+	    }
+	    if (!find && repeat == null) {
+		try {
+		    repeat = new CssBackgroundRepeatCSS2(ac, expression);
+		    find = true;
+		} catch (InvalidParamException e) {
+		    // nothing to do, attachment will test this value
+		}
+	    }
+	    if (!find && attachment == null) {
+		try {
+		    attachment = new CssBackgroundAttachmentCSS2(ac, expression);
+		    find = true;
+		} catch (InvalidParamException e) {
+		    // nothing to do, position will test this value
+		}
+	    }
+	    if (!find && position == null) {
+		try {
+		    position = new CssBackgroundPositionCSS2(ac, expression);
+		    find = true;
+		} catch (InvalidParamException e) {
+		    // nothing to do
+		}
+	    }
+	    if(check && val != null && !find) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    if (op != SPACE) {
+		throw new InvalidParamException("operator",
+						((new Character(op)).toString()),
+						ac);
+	    }
+	    if(check && !find && val != null) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	}
+	/*
+	if (color == null)
+	    color = new CssBackgroundColorCSS2();
+	if (image == null)
+	    image = new CssBackgroundImageCSS2();
+	if (repeat == null)
+	    repeat = new CssBackgroundRepeatCSS2();
+	if (attachment == null)
+	    attachment = new CssBackgroundAttachmentCSS2();
+	if (position == null)
+	    position = new CssBackgroundPositionCSS2();
+	*/
+    }
+
+    public CssBackgroundCSS2(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * @return Returns the attachment.
+     */
+    public CssBackgroundAttachmentCSS2 getAttachment() {
+        return attachment;
+    }
+
+    /**
+     * @param attachment The attachment to set.
+     */
+    public void setAttachment(CssBackgroundAttachmentCSS2 attachment) {
+        this.attachment = attachment;
+    }
+
+    /**
+     * @return Returns the image.
+     */
+    public CssBackgroundImageCSS2 getImage() {
+        return image;
+    }
+
+    /**
+     * @param image The image to set.
+     */
+    public void setImage(CssBackgroundImageCSS2 image) {
+        this.image = image;
+    }
+
+    /**
+     * @return Returns the repeat.
+     */
+    public CssBackgroundRepeatCSS2 getRepeat() {
+        return repeat;
+    }
+
+    /**
+     * @param repeat The repeat to set.
+     */
+    public void setRepeat(CssBackgroundRepeatCSS2 repeat) {
+        this.repeat = repeat;
+    }
+
+    /**
+     * @return Returns the same.
+     */
+    public boolean isSame() {
+        return same;
+    }
+
+    /**
+     * @param same The same to set.
+     */
+    public void setSame(boolean same) {
+        this.same = same;
+    }
+
+    /**
+     * Returns the color
+     */
+    public final CssBackgroundColorCSS2 getColor2() {
+	return color;
+    }
+
+    /**
+     * @param color The color to set.
+     */
+    public void setColor(CssBackgroundColorCSS2 color) {
+        this.color = color;
+    }
+
+    /**
+     * @return Returns the position.
+     */
+    public CssBackgroundPositionCSS2 getPosition() {
+        return position;
+    }
+
+    /**
+     * @param position The position to set.
+     */
+    public void setPosition(CssBackgroundPositionCSS2 position) {
+        this.position = position;
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return color;
+    }
+
+    /**
+     * Returns the color
+     */
+    public final CssValue getColor() {
+	if (color == null) {
+	    return null;
+	} else {
+	    return color.getColor();
+	}
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "background";
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	/*
+	if (same) {
+	    return inherit.toString();
+	} else {*/
+	StringBuilder sb = new StringBuilder();
+	boolean addspace = false;
+
+	if (color != null) {
+	    sb.append(color);
+	    addspace = true;
+	}
+	if (image != null) {
+	    if(addspace) {
+		sb.append(' ');
+	    }
+	    sb.append(image);
+	    addspace = true;
+	}
+	if (repeat != null) {
+	    if (addspace) {
+		sb.append(' ');
+	    }
+	    sb.append(repeat);
+	    addspace = true;
+	}
+	if (attachment != null) {
+	    if (addspace) {
+		sb.append(' ');
+	    }
+	    sb.append(attachment);
+	    addspace = true;
+	}
+	if (position != null) {
+	    if (addspace) {
+		sb.append(' ');
+	    }
+	    sb.append(position);
+	}
+	return sb.toString();
+	/*
+	if (color.byUser)
+	    ret += " " + color.toString();
+	if (image.byUser)
+	    ret += " " + image.toString();
+	if (image.byUser)
+	    ret += " " + repeat.toString();
+	if (attachment.byUser)
+	    ret += " " + attachment.toString();
+	if (position.byUser)
+	    ret += " " + position.toString();
+	return ret.trim();
+	*/
+	//}
+    }
+
+    /**
+     * Set this property to be important.
+     * Overrides this method for a macro
+     */
+    public void setImportant() {
+	if(color != null) {
+	    color.important = true;
+	}
+	if(image != null) {
+	    image.important = true;
+	}
+	if(repeat != null) {
+	    repeat.important = true;
+	}
+	if(attachment != null) {
+	    attachment.important = true;
+	}
+	if(position != null) {
+	    position.important = true;
+	}
+    }
+
+    /**
+     * Returns true if this property is important.
+     * Overrides this method for a macro
+     */
+    public boolean getImportant() {
+	return ((color == null || color.important) &&
+		(image == null || image.important) &&
+		(repeat == null || repeat.important) &&
+		(attachment == null || attachment.important) &&
+		(position == null || position.important));
+    }
+
+    /**
+     * Print this property.
+     *
+     * @param printer The printer.
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	if ((color != null && image != null &&
+	     repeat != null && attachment !=null &&
+	     position != null) &&
+	    (getImportant() ||
+	     (!image.important &&
+	      !color.important &&
+	      !repeat.important &&
+	      !attachment.important &&
+	      !position.important))) {
+	    if (color.byUser || image.byUser || repeat.byUser
+		|| attachment.byUser || position.byUser) {
+		printer.print(this);
+	    }
+	} else {
+	    if (color != null)
+		color.print(printer);
+	    if (image != null)
+		image.print(printer);
+	    if (repeat != null)
+		repeat.print(printer);
+	    if (attachment != null)
+		attachment.print(printer);
+	    if (position != null)
+		position.print(printer);
+	}
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors selector) {
+	super.setSelectors(selector);
+	if (color != null) {
+	    color.setSelectors(selector);
+	}
+	if (image != null) {
+	    image.setSelectors(selector);
+	}
+	if (repeat != null) {
+	    repeat.setSelectors(selector);
+	}
+	if (attachment != null) {
+	    attachment.setSelectors(selector);
+	}
+	if (position != null) {
+	    position.setSelectors(selector);
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	((Css1Style) style).cssBackgroundCSS2.same = same;
+	((Css1Style) style).cssBackgroundCSS2.byUser = byUser;
+
+	if(color != null) {
+	    color.addToStyle(ac, style);
+	}
+	if(image != null) {
+	    image.addToStyle(ac, style);
+	}
+	if(repeat != null) {
+	    repeat.addToStyle(ac, style);
+	}
+	if(attachment != null) {
+	    attachment.addToStyle(ac, style);
+	}
+	if(position != null) {
+	    position.addToStyle(ac, style);
+	}
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBackgroundCSS2();
+	} else {
+	    return ((Css1Style) style).cssBackgroundCSS2;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return false; // FIXME
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	super.setInfo(line, source);
+	if(color != null) {
+	    color.setInfo(line, source);
+	}
+	if(image != null) {
+	    image.setInfo(line, source);
+	}
+	if(repeat != null) {
+	    repeat.setInfo(line, source);
+	}
+	if(attachment != null) {
+	    attachment.setInfo(line, source);
+	}
+	if(position != null) {
+	    position.setInfo(line, source);
+	}
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBackgroundColor.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,157 @@
+//
+// $Id: CssBackgroundColor.java,v 1.6 2009-03-09 20:17:24 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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.CssTypes;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'background-color'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;color&gt; | transparent<BR>
+ *   <EM>Initial:</EM> transparent<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   This property sets the background color of an element.
+ *   <PRE>
+ *   H1 { background-color: #F00 }
+ *   </PRE>
+ * @version $Revision: 1.6 $
+ */
+public class CssBackgroundColor extends CssProperty {
+
+    CssValue color;
+
+    static CssIdent transparent;
+    private static final String propertyName = "background-color";
+
+    static {
+	transparent = new CssIdent("transparent"); 
+    }
+
+    /**
+     * Create a new CssBackgroundColor
+     */
+    public CssBackgroundColor() {
+	color = transparent;
+    }
+
+    /**
+     * Create a new CssBackgroundColor
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBackgroundColor(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	CssColor tempcolor = new CssColor(ac, expression, check);
+	color = (CssValue) tempcolor.get();
+    }
+
+    public CssBackgroundColor(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return color;
+    }
+
+    /**
+     * Returns the color
+     */
+    public final CssValue getColor() {
+	return color;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return color.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return color.toString();
+    }
+
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBackground cssBackground = ((Css1Style) style).cssBackground;
+	if (cssBackground.color != null)
+	    style.addRedefinitionWarning(ac, this);
+	cssBackground.color = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBackgroundColor();
+	} else {
+	    return ((Css1Style) style).cssBackground.color;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBackgroundColor &&
+		color.equals( ((CssBackgroundColor) property).color));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return propertyName;
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return color == transparent;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBackgroundColorCSS1.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,180 @@
+//
+// $Id: CssBackgroundColorCSS1.java,v 1.4 2009-02-11 22:43:15 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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.CssTypes;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'background-color'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;color&gt; | transparent<BR>
+ *   <EM>Initial:</EM> transparent<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   This property sets the background color of an element.
+ *   <PRE>
+ *   H1 { background-color: #F00 }
+ *   </PRE>
+ * @version $Revision: 1.4 $
+ */
+public class CssBackgroundColorCSS1 extends CssProperty {
+
+    CssValue color;
+
+    static CssIdent transparent = new CssIdent("transparent");
+
+    /**
+     * Create a new CssBackgroundColorCSS1
+     */
+    public CssBackgroundColorCSS1() {
+	color = transparent;
+    }
+
+    /**
+     * Create a new CssBackgroundColorCSS1
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBackgroundColorCSS1(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	switch (val.getType()) {
+	case CssTypes.CSS_COLOR:
+	    setColor(val);
+	    break;
+	case CssTypes.CSS_IDENT:
+	    if (transparent.equals(val)) {
+		setColor(transparent);
+		break;
+	    }  
+	    if (inherit.equals(val)) {
+		setColor(inherit);
+		break;
+	    } 
+	    setColor(new org.w3c.css.values.CssColorCSS1(ac,
+							 (String) val.get()));
+	    break;
+	default:
+	    throw new InvalidParamException("value", val.toString(),
+					    getPropertyName(), ac);
+	}
+	expression.next();
+    }
+
+    public CssBackgroundColorCSS1(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * @param color The color to set.
+     */
+    public void setColor(CssValue color) {
+        this.color = color;
+    }
+
+   /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return color;
+    }
+
+    /**
+     * Returns the color
+     */
+    public final CssValue getColor() {
+	return color;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return color.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return color.toString();
+    }
+
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBackgroundCSS1 cssBackground = ((Css1Style) style).cssBackgroundCSS1;
+	if (cssBackground.color != null)
+	    style.addRedefinitionWarning(ac, this);
+	cssBackground.color = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBackgroundColorCSS1();
+	} else {
+	    return ((Css1Style) style).cssBackgroundCSS1.color;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBackgroundColorCSS1 &&
+		color.equals( ((CssBackgroundColorCSS1) property).color));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "background-color";
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return color == transparent;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBackgroundColorCSS2.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,183 @@
+//
+// $Id: CssBackgroundColorCSS2.java,v 1.5 2009-02-11 22:43:15 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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.CssTypes;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'background-color'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;color&gt; | transparent<BR>
+ *   <EM>Initial:</EM> transparent<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   This property sets the background color of an element.
+ *   <PRE>
+ *   H1 { background-color: #F00 }
+ *   </PRE>
+ * @version $Revision: 1.5 $
+ */
+public class CssBackgroundColorCSS2 extends CssProperty {
+
+    CssValue color;
+
+    protected static CssIdent transparent = new CssIdent("transparent");
+
+    /**
+     * Create a new CssBackgroundColorCSS2
+     */
+    public CssBackgroundColorCSS2() {
+	color = transparent;
+    }
+
+    /**
+     * Create a new CssBackgroundColorCSS2
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBackgroundColorCSS2(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	switch (val.getType()) {
+	case CssTypes.CSS_COLOR:
+	    setColor(val);
+	    break;
+	case CssTypes.CSS_IDENT:
+	    if (transparent.equals(val)) {
+		setColor(transparent);
+		break;
+	    }  
+	    if (inherit.equals(val)) {
+		setColor(inherit);
+		break;
+	    } 
+	    setColor(new org.w3c.css.values.CssColorCSS2(ac,
+							 (String) val.get()));
+	    break;
+	default:
+	    throw new InvalidParamException("value", val.toString(),
+					    getPropertyName(), ac);
+	}
+	expression.next();
+    }
+
+    public CssBackgroundColorCSS2(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * @param color The color to set.
+     */
+    public void setColor(CssValue color) {
+        this.color = color;
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return color;
+    }
+
+    /**
+     * Returns the color
+     */
+    public final CssValue getColor() {
+	return color;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return color.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (color != null) {
+	    return color.toString();
+	}
+	return "";
+    }
+
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBackgroundCSS2 cssBackground = ((Css1Style) style).cssBackgroundCSS2;
+	if (cssBackground.color != null)
+	    style.addRedefinitionWarning(ac, this);
+	cssBackground.color = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBackgroundColorCSS2();
+	} else {
+	    return ((Css1Style) style).cssBackgroundCSS2.color;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBackgroundColorCSS2 &&
+		color.equals( ((CssBackgroundColorCSS2) property).color));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "background-color";
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return color == transparent;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBackgroundColorMob.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,175 @@
+//
+// $Id: CssBackgroundColorMob.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'background-color'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;color&gt; | transparent<BR>
+ *   <EM>Initial:</EM> transparent<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   This property sets the background color of an element.
+ *   <PRE>
+ *   H1 { background-color: #F00 }
+ *   </PRE>
+ * @version $Revision: 1.3 $
+ */
+public class CssBackgroundColorMob extends CssProperty {
+
+    CssValue color;
+
+    static CssIdent transparent = new CssIdent("transparent");
+
+    /**
+     * Create a new CssBackgroundColorMob
+     */
+    public CssBackgroundColorMob() {
+	color = transparent;
+    }
+
+    /**
+     * Create a new CssBackgroundColorMob
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBackgroundColorMob(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val instanceof org.w3c.css.values.CssColorCSS2) {
+	    color = val;
+	    expression.next();
+	} else if (val instanceof CssIdent) {
+	    if (val.equals(transparent)) {
+		color = transparent;
+		expression.next();
+	    } else if (val.equals(inherit)) {
+		color = inherit;
+		expression.next();
+	    } else {
+		color = new org.w3c.css.values.CssColorCSS2(ac, (String) val.get());
+		expression.next();
+	    }
+	} else {
+	    throw new InvalidParamException("value", val.toString(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssBackgroundColorMob(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return color;
+    }
+
+    /**
+     * Returns the color
+     */
+    public final CssValue getColor() {
+	return color;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	if (color != null) {
+	    return color.equals(inherit);
+	}
+	return false;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (color != null) {
+	    return color.toString();
+	}
+	return "";
+    }
+
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBackgroundMob cssBackground = ((Css1Style) style).cssBackgroundMob;
+	if (cssBackground.color != null)
+	    style.addRedefinitionWarning(ac, this);
+	cssBackground.color = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBackgroundColorMob();
+	} else {
+	    return ((Css1Style) style).cssBackgroundMob.color;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBackgroundColorCSS2 && color != null &&
+		color.equals( ((CssBackgroundColorCSS2) property).color));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "background-color";
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return color == transparent;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBackgroundConstants.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,49 @@
+//
+// $Id: CssBackgroundConstants.java,v 1.4 2009-02-11 21:41:10 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 org.w3c.css.properties.css1;
+
+/**
+ * @version $Revision: 1.4 $
+ */
+public interface CssBackgroundConstants {
+  static String[] REPEAT = { "repeat", "repeat-x", "repeat-y", "no-repeat", "inherit" };
+    
+  static String[] ATTACHMENT = { "scroll", "fixed", "inherit" };
+  static String[] ATTACHMENTMOB = { "scroll", "inherit" };
+    
+  static String[] POSITION = { "top", "center", "bottom", "left", "right", "inherit" };
+
+  /**
+   * The top position
+   */
+  static int POSITION_TOP = 0;
+
+  /**
+   * The center position
+   */
+  static int POSITION_CENTER = 1;
+
+  /**
+   * The bottom position
+   */
+  static int POSITION_BOTTOM = 2;
+
+  /**
+   * The left position
+   */
+  static int POSITION_LEFT = 3;
+
+  /**
+   * The right position
+   */
+  static int POSITION_RIGHT = 4;
+
+  /**
+   * Inherit
+   */
+  static int POSITION_INHERIT = 5;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBackgroundImage.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,172 @@
+//
+// $Id: CssBackgroundImage.java,v 1.4 2009-02-11 21:41:10 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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.CssTypes;
+import org.w3c.css.values.CssURL;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'background-image'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;url&gt; | none<BR>
+ *   <EM>Initial:</EM> none<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P> This property sets the background image of an element. When setting a
+ *   background image, one should also set a background color that will be used
+ *   when the image is unavailable. When the image is available, it is overlaid
+ *   on top of the background color.
+ *   <PRE>
+ *   BODY { background-image: url(marble.gif) }
+ *   P { background-image: none }
+ *   </PRE>
+ * @version $Revision: 1.4 $ */
+public class CssBackgroundImage extends CssProperty {
+
+    CssValue url      = null ;
+    boolean inherited = false;
+
+    private static CssIdent none = new CssIdent("none");
+
+    /**
+     * Create a new CssBackgroundImage
+     */
+    public CssBackgroundImage() {
+	url = none;
+    }
+
+    /**
+     * Creates a new CssBackgroundImage
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBackgroundImage(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+
+	CssValue val = expression.getValue();
+
+	switch(val.getType()) {
+	case CssTypes.CSS_URL:
+	    url = val;
+	    break;
+	case CssTypes.CSS_IDENT:
+	    if (inherit.equals(val)) {
+		inherited = true;
+		break;
+	    } else if (none.equals(val)) {
+		url = none;
+		break;
+	    }
+	default:
+	    throw new InvalidParamException("value", val,
+					    getPropertyName(), ac);
+	}
+	expression.next();
+    }
+
+    public CssBackgroundImage(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return url;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return inherited;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (inherited) {
+	    return inherit.toString();
+	}
+	if (url != null) {
+	    return url.toString();
+	}
+	return "";
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "background-image";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBackground cssBackground = ((Css1Style) style).cssBackground;
+	if (cssBackground.image != null)
+	    style.addRedefinitionWarning(ac, this);
+	cssBackground.image = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBackgroundImage();
+	} else {
+	    return ((Css1Style) style).cssBackground.image;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBackgroundImage && url != null &&
+		url.equals(((CssBackgroundImage) property).url));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return url == none;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBackgroundImageCSS1.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,174 @@
+//
+// $Id: CssBackgroundImageCSS1.java,v 1.4 2009-02-11 21:41:10 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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.CssTypes;
+import org.w3c.css.values.CssURL;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'background-image'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;url&gt; | none<BR>
+ *   <EM>Initial:</EM> none<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P> This property sets the background image of an element. When setting a
+ *   background image, one should also set a background color that will be used
+ *   when the image is unavailable. When the image is available, it is overlaid
+ *   on top of the background color.
+ *   <PRE>
+ *   BODY { background-image: url(marble.gif) }
+ *   P { background-image: none }
+ *   </PRE>
+ * @version $Revision: 1.4 $ */
+public class CssBackgroundImageCSS1 extends CssProperty {
+
+    CssValue url = null;
+    boolean inherited = false;
+
+    private static CssIdent none = new CssIdent("none");
+
+    /**
+     * Create a new CssBackgroundImageCSS1
+     */
+    public CssBackgroundImageCSS1() {
+	url = none;
+    }
+
+    /**
+     * Creates a new CssBackgroundImageCSS1
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBackgroundImageCSS1(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+
+	CssValue val = expression.getValue();
+
+	switch(val.getType()) {
+	case CssTypes.CSS_URL:
+	    url = val;
+	    break;
+	case CssTypes.CSS_IDENT:
+	    if (inherit.equals(val)) {
+		inherited = true;
+		break;
+	    } else if (none.equals(val)) {
+		url = none;
+		break;
+	    }
+	default:
+	    throw new InvalidParamException("value", val,
+					    getPropertyName(), ac);
+	}
+	expression.next();
+    }
+
+    public CssBackgroundImageCSS1(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return url;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return inherited;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (inherited) {
+	    return inherit.toString();
+	}
+	if (url != null) {
+	    return url.toString();
+	}
+	return "";
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "background-image";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBackgroundCSS1 cssBackground = ((Css1Style) style).cssBackgroundCSS1;
+	if (cssBackground.image != null)
+	    style.addRedefinitionWarning(ac, this);
+	cssBackground.image = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBackgroundImageCSS1();
+	} else {
+	    return ((Css1Style) style).cssBackgroundCSS1.image;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return ((url == null && property == null) ||
+		(property instanceof CssBackgroundImageCSS1 &&
+		url != null &&
+		url.equals(((CssBackgroundImageCSS1) property).url)));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return url == none;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBackgroundImageCSS2.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,184 @@
+//
+// $Id: CssBackgroundImageCSS2.java,v 1.5 2009-02-11 21:41:10 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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.CssTypes;
+import org.w3c.css.values.CssURL;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'background-image'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;url&gt; | none<BR>
+ *   <EM>Initial:</EM> none<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P> This property sets the background image of an element. When setting a
+ *   background image, one should also set a background color that will be used
+ *   when the image is unavailable. When the image is available, it is overlaid
+ *   on top of the background color.
+ *   <PRE>
+ *   BODY { background-image: url(marble.gif) }
+ *   P { background-image: none }
+ *   </PRE>
+ * @version $Revision: 1.5 $ */
+public class CssBackgroundImageCSS2 extends CssProperty {
+
+    CssValue url = null;
+    boolean inherited = false;
+
+    public static CssIdent none;
+    private static final String property_name = "background-image";
+
+    static {
+	none = new CssIdent("none");
+    }
+
+    static public boolean checkMatchingIdent(CssIdent idval) {
+	return none.hashCode() == idval.hashCode();
+    }
+
+    /**
+     * Create a new CssBackgroundImageCSS2
+     */
+    public CssBackgroundImageCSS2() {
+	url = none;
+    }
+
+    /**
+     * Creates a new CssBackgroundImageCSS2
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBackgroundImageCSS2(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+	
+	setByUser();
+	
+	CssValue val = expression.getValue();
+	switch (val.getType()) {
+	case CssTypes.CSS_URL:
+	    url = val;
+	    break;
+	case CssTypes.CSS_IDENT:
+	    if (inherit.equals(val)) {
+		url = inherit;
+		break;
+	    }
+	    if (none.equals(val)) {
+		inherited = true;
+		break;
+	    }
+	default:
+	    throw new InvalidParamException("value", val,
+					    getPropertyName(), ac);
+	}
+	expression.next();
+    }
+    
+    public CssBackgroundImageCSS2(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return url;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return inherited;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (inherited) {
+	    return inherit.toString();
+	}
+	if (url != null) {
+	    return url.toString();
+	}
+	return "";
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return property_name;
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBackgroundCSS2 cssBackground = ((Css1Style) style).cssBackgroundCSS2;
+	if (cssBackground.image != null) {
+	    style.addRedefinitionWarning(ac, this);
+	}
+	cssBackground.image = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBackgroundImageCSS2();
+	} else {
+	    return ((Css1Style) style).cssBackgroundCSS2.image;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return ((property == null && url == null)
+		|| (property instanceof CssBackgroundImageCSS2 &&
+		url != null &&
+		url.equals(((CssBackgroundImageCSS2) property).url)));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return url == none;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBackgroundImageMob.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,167 @@
+//
+// $Id: CssBackgroundImageMob.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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.CssURL;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'background-image'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;url&gt; | none<BR>
+ *   <EM>Initial:</EM> none<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P> This property sets the background image of an element. When setting a
+ *   background image, one should also set a background color that will be used
+ *   when the image is unavailable. When the image is available, it is overlaid
+ *   on top of the background color.
+ *   <PRE>
+ *   BODY { background-image: url(marble.gif) }
+ *   P { background-image: none }
+ *   </PRE>
+ * @version $Revision: 1.3 $ */
+public class CssBackgroundImageMob extends CssProperty {
+
+    CssValue url;
+
+    private static CssIdent none = new CssIdent("none");
+
+    /**
+     * Create a new CssBackgroundImageMob
+     */
+    public CssBackgroundImageMob() {
+	url = none;
+    }
+
+    /**
+     * Creates a new CssBackgroundImageMob
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBackgroundImageMob(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+
+	CssValue val = expression.getValue();
+	if (val instanceof CssURL) {
+	    url = val;
+	    expression.next();
+	} else if (val.equals(inherit)) {
+	    url = inherit;
+	    expression.next();
+	} else if (val.equals(none)) {
+	    url = none;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssBackgroundImageMob(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return url;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	if (url != null) {
+	    return url.equals(inherit);
+	}
+	return false;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (url != null) {
+	    return url.toString();
+	}
+	return "";
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "background-image";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBackgroundMob cssBackground = ((Css1Style) style).cssBackgroundMob;
+	if (cssBackground.image != null)
+	    style.addRedefinitionWarning(ac, this);
+	cssBackground.image = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBackgroundImageMob();
+	} else {
+	    return ((Css1Style) style).cssBackgroundMob.image;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return ((url == null && property == null) ||
+		(property instanceof CssBackgroundImageMob &&
+		url != null &&
+		url.equals(((CssBackgroundImageMob) property).url)));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return url == none;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBackgroundMob.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,398 @@
+//
+// $Id: CssBackgroundMob.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     <A NAME="background">5.3.7 &nbsp;&nbsp; 'background'</A>
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;background-color&gt; || &lt;background-image&gt; ||
+ *   &lt;background-repeat&gt; || &lt;background-attachment&gt; ||
+ *   &lt;background-position&gt;<BR>
+ *   <EM>Initial:</EM> not defined for shorthand properties<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> allowed on &lt;background-position&gt;<BR>
+ *   <P>
+ *   The 'background' property is a shorthand property for setting the individual
+ *   background properties (i.e., 'background-color', 'background-image',
+ *   'background-repeat', 'background-attachment' and 'background-position') at
+ *   the same place in the style sheet.
+ *   <P>
+ *   Possible values on the 'background' properties are the set of all possible
+ *   values on the individual properties.
+ *   <PRE>
+ *   BODY { background: red }
+ *   P { background: url(chess.png) gray 50% repeat fixed }
+ * </PRE>
+ *   <P> The 'background' property always sets all the individual background
+ *   properties.  In the first rule of the above example, only a value for
+ *   'background-color' has been given and the other individual properties are
+ *   set to their initial value. In the second rule, all individual properties
+ *   have been specified.
+ *
+ * @version $Revision: 1.3 $
+ * @see CssBackgroundColor
+ * @see CssBackgroundImage
+ * @see CssBackgroundRepeat
+ * @see CssBackgroundAttachment
+ * @see CssBackgroundPosition
+ */
+public class CssBackgroundMob extends CssProperty
+        implements CssOperator, CssBackgroundConstants {
+
+    CssBackgroundColorMob color;
+    CssBackgroundImageMob image;
+    CssBackgroundRepeatMob repeat;
+    CssBackgroundAttachmentMob attachment;
+    CssBackgroundPositionMob position;
+
+    boolean same;
+
+    /**
+     * Create a new CssBackgroundMob
+     */
+    public CssBackgroundMob() {
+    }
+
+    /**
+     * Set the value of the property
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssBackgroundMob(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = expression.getValue();
+	char op = SPACE;
+	boolean find = true;
+
+	// too many values
+	if(check && expression.getCount() > 6) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    if(expression.getCount() > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    color = new CssBackgroundColorMob();
+	    color.color = inherit;
+	    image = new CssBackgroundImageMob();
+	    image.url = inherit;
+	    repeat = new CssBackgroundRepeatMob();
+	    repeat.repeat = REPEAT.length - 1;
+	    attachment = new CssBackgroundAttachmentMob();
+	    attachment.attachment = ATTACHMENT.length - 1;
+	    position = new CssBackgroundPositionMob();
+	    position.horizontal = inherit;
+	    position.vertical = inherit;
+	    same = true;
+	    expression.next();
+	    return;
+	}
+
+	while (find) {
+	    find = false;
+	    val = expression.getValue();
+	    op = expression.getOperator();
+
+	    if(val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+
+	    if (val == null) {
+		break;
+	    }
+
+	    if (color == null) {
+		try {
+		    color = new CssBackgroundColorMob(ac, expression);
+		    find = true;
+		} catch (InvalidParamException e) {
+		}
+	    }
+	    if (!find && image == null) {
+		try {
+		    image = new CssBackgroundImageMob(ac, expression);
+		    find = true;
+		} catch (InvalidParamException e) {
+		}
+	    }
+	    if (!find && repeat == null) {
+		try {
+		    repeat = new CssBackgroundRepeatMob(ac, expression);
+		    find = true;
+		} catch (InvalidParamException e) {
+		}
+	    }
+	    if (!find && attachment == null) {
+		try {
+		    attachment = new CssBackgroundAttachmentMob(ac, expression);
+		    find = true;
+		} catch (InvalidParamException e) {
+		}
+	    }
+	    if (!find && position == null) {
+		position = new CssBackgroundPositionMob(ac, expression);
+		find = true;
+	    }
+	    if (op != SPACE) {
+		throw new InvalidParamException("operator",
+						((new Character(op)).toString()),
+						ac);
+	    }
+	}
+	/*
+	if (color == null)
+	    color = new CssBackgroundColorMob();
+	if (image == null)
+	    image = new CssBackgroundImageMob();
+	if (repeat == null)
+	    repeat = new CssBackgroundRepeatMob();
+	if (attachment == null)
+	    attachment = new CssBackgroundAttachmentMob();
+	if (position == null)
+	    position = new CssBackgroundPositionMob();
+	*/
+    }
+
+    public CssBackgroundMob(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return color;
+    }
+
+    /**
+     * Returns the color
+     */
+    public final CssValue getColor() {
+	if (color == null) {
+	    return null;
+	} else {
+	    return color.getColor();
+	}
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "background";
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (same) {
+	    return inherit.toString();
+	} else {
+	    String ret = "";
+	    if (color != null)
+		ret += " " + color.toString();
+	    if (image != null)
+		ret += " " + image.toString();
+	    if (repeat != null)
+		ret += " " + repeat.toString();
+	    if (attachment != null)
+		ret += " " + attachment.toString();
+	    if (position != null)
+		ret += " " + position.toString();
+	    return ret.trim();
+	}
+    }
+
+    /**
+     * Set this property to be important.
+     * Overrides this method for a macro
+     */
+    public void setImportant() {
+	if(color != null) {
+	    color.important = true;
+	}
+	if(image != null) {
+	    image.important = true;
+	}
+	if(repeat != null) {
+	    repeat.important = true;
+	}
+	if(attachment != null) {
+	    attachment.important = true;
+	}
+	if(position != null) {
+	    position.important = true;
+	}
+    }
+
+    /**
+     * Returns true if this property is important.
+     * Overrides this method for a macro
+     */
+    public boolean getImportant() {
+	return ((color == null || color.important) &&
+		(image == null || image.important) &&
+		(repeat == null || repeat.important) &&
+		(attachment == null || attachment.important) &&
+		(position == null || position.important));
+    }
+
+    /**
+     * Print this property.
+     *
+     * @param printer The printer.
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	if ((color != null && image != null &&
+	     repeat != null && attachment !=null &&
+	     position != null) &&
+	    (getImportant() ||
+	     (!image.important &&
+	      !color.important &&
+	      !repeat.important &&
+	      !attachment.important &&
+	      !position.important))) {
+	    if (color.byUser || image.byUser || repeat.byUser
+		|| attachment.byUser || position.byUser) {
+		printer.print(this);
+	    }
+	} else {
+	    if (color != null)
+		color.print(printer);
+	    if (image != null)
+		image.print(printer);
+	    if (repeat != null)
+		repeat.print(printer);
+	    if (attachment != null)
+		attachment.print(printer);
+	    if (position != null)
+		position.print(printer);
+	}
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors selector) {
+	super.setSelectors(selector);
+	if (color != null) {
+	    color.setSelectors(selector);
+	}
+	if (image != null) {
+	    image.setSelectors(selector);
+	}
+	if (repeat != null) {
+	    repeat.setSelectors(selector);
+	}
+	if (attachment != null) {
+	    attachment.setSelectors(selector);
+	}
+	if (position != null) {
+	    position.setSelectors(selector);
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	((Css1Style) style).cssBackgroundMob.same = same;
+	((Css1Style) style).cssBackgroundMob.byUser = byUser;
+
+	if(color != null) {
+	    color.addToStyle(ac, style);
+	}
+	if(image != null) {
+	    image.addToStyle(ac, style);
+	}
+	if(repeat != null) {
+	    repeat.addToStyle(ac, style);
+	}
+	if(attachment != null) {
+	    attachment.addToStyle(ac, style);
+	}
+	if(position != null) {
+	    position.addToStyle(ac, style);
+	}
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBackgroundMob();
+	} else {
+	    return ((Css1Style) style).cssBackgroundMob;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return false; // FIXME
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	super.setInfo(line, source);
+	if(color != null) {
+	    color.setInfo(line, source);
+	}
+	if(image != null) {
+	    image.setInfo(line, source);
+	}
+	if(repeat != null) {
+	    repeat.setInfo(line, source);
+	}
+	if(attachment != null) {
+	    attachment.setInfo(line, source);
+	}
+	if(position != null) {
+	    position.setInfo(line, source);
+	}
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBackgroundPosition.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,410 @@
+//
+// $Id: CssBackgroundPosition.java,v 1.5 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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.CssLength;
+import org.w3c.css.values.CssNumber;
+//import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'background-position'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> [&lt;percentage&gt; | &lt;length&gt;]{1,2} | [top | center
+ *   | bottom] || [left | center | right]<BR>
+ *   <EM>Initial:</EM> 0% 0%<BR>
+ *   <EM>Applies to:</EM> block-level and replaced elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> refer to the size of the element itself<BR>
+ *   <P> If a background image has been specified, the value of
+ *   'background-position' specifies its initial position.
+ *   <P> With a value pair of '0% 0%', the upper left corner of the image is
+ *   placed in the upper left corner of the box that surrounds the content of
+ *   the element (i.e., not the box that surrounds the padding, border or
+ *   margin). A value pair of '100% 100%' places the lower right corner of the
+ *   image in the lower right corner of the element. With a value pair of '14%
+ *   84%', the point 14% across and 84% down the image is to be placed at the
+ *   point 14% across and 84% down the element.
+ *   <P> With a value pair of '2cm 2cm', the upper left corner of the image is
+ *   placed 2cm to the right and 2cm below the upper left corner of the element.
+ *   <P> If only one percentage or length value is given, it sets the horizontal
+ *   position only, the vertical position will be 50%. If two values are given,
+ *   the horizontal position comes first. Combinations of length and percentage
+ *   values are allowed, e.g. '50% 2cm'. Negative positions are allowed.
+ *   <P> One can also use keyword values to indicate the position of the
+ *   background image. Keywords cannot be combined with percentage values, or
+ *   length values.  The possible combinations of keywords and their
+ *   interpretations are as follows:
+
+ *   <UL>
+ *     <LI>
+ *       'top left' and 'left top' both mean the same as '0% 0%'.
+ *     <LI>
+ *       'top', 'top center' and 'center top' mean the same as '50% 0%'.
+ *     <LI>
+ *       'right top' and 'top right' mean the same as '100% 0%'.
+ *     <LI>
+ *       'left', 'left center' and 'center left' mean the same as '0% 50%'.
+ *     <LI>
+ *       'center' and 'center center' mean the same as '50% 50%'.
+ *     <LI>
+ *       'right', 'right center' and 'center right' mean the same as '100% 50%'.
+ *     <LI>
+ *       'bottom left' and 'left bottom' mean the same as '0% 100%'.
+ *     <LI>
+ *       'bottom', 'bottom center' and 'center bottom' mean the same as '50% 100%'.
+ *     <LI>
+ *       'bottom right' and 'right bottom' mean the same as '100% 100%'.
+ *   </UL>
+ *   <P>
+ *   examples:
+ *   <PRE>
+ *   BODY { background: url(banner.jpeg) right top }    / * 100%   0% * /
+ *   BODY { background: url(banner.jpeg) top center }   / *  50%   0% * /
+ *   BODY { background: url(banner.jpeg) center }       / *  50%  50% * /
+ *   BODY { background: url(banner.jpeg) bottom }       / *  50% 100% * /
+ *  </PRE>
+ *   <P>
+ *   If the background image is fixed with regard to the canvas (see the
+ *   'background-attachment' property above), the image is placed relative to
+ *   the canvas instead of the element. E.g.:
+ *   <PRE>
+ *   BODY {
+ *     background-image: url(logo.png);
+ *     background-attachment: fixed;
+ *     background-position: 100% 100%;
+ *   }
+ *  </PRE>
+ *   <P>
+ *   In the example above, the image is placed in the lower right corner of the
+ *   canvas.
+ * @version $Revision: 1.5 $
+ * @see CssBackgroundAttachment
+ */
+public class CssBackgroundPosition extends CssProperty
+implements CssBackgroundConstants, CssOperator {
+
+    CssValue first;
+    CssValue second;
+
+    /**
+     * Create a new CssBackgroundPosition
+     */
+    public CssBackgroundPosition() {
+	first = DefaultValue0;
+	second = DefaultValue0;
+    }
+
+    /**
+     * Creates a new CssBackgroundPosition
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBackgroundPosition(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 2) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	CssValue val = expression.getValue();
+	char op  = expression.getOperator();
+
+	if (op != SPACE)
+	    throw new  InvalidParamException("operator",
+		    ((new Character(op)).toString()),
+		    ac);
+
+	if (val.equals(inherit)) {
+	    if(expression.getCount() > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    first = inherit;
+	    second = inherit;
+	    expression.next();
+	    return;
+	}
+
+	CssValue next = expression.getNextValue();
+
+	if(val instanceof CssIdent) {
+	    int index1 = IndexOfIdent((String) val.get());
+	    if(index1 == -1) {
+		throw new InvalidParamException("value", val, "background-position", ac);
+	    }
+	    // two keywords
+	    if(next instanceof CssIdent) {
+		int index2 = IndexOfIdent((String) next.get());
+		if(index2 == -1 && check) {
+		    throw new InvalidParamException("value", next, "background-position", ac);
+		}
+		// one is vertical, the other is vertical
+		// or the two are 'center'
+		if((isHorizontal(index1) && isVertical(index2)) ||
+			(isHorizontal(index2) && isVertical(index1))) {
+		    first = val;
+		    second = next;
+		}
+		// both are horizontal or vertical but not 'center'
+		else if(check){
+		    throw new InvalidParamException("incompatible",
+			    val, next, ac);
+		}
+		else {
+		    first = val;
+		}
+	    }
+	    // a keyword and a percentage/length
+	    else if(next instanceof CssLength || next instanceof CssPercentage
+		    || next instanceof CssNumber) {
+		if(next instanceof CssNumber) {
+		    next = ((CssNumber) next).getLength();
+		}
+		if(isHorizontal(index1)) {
+		    first = val;
+		    second = next;
+		}
+		// if the keyword is the first value, it can only be an
+		// horizontal one
+		else {
+		    throw new InvalidParamException("incompatible",
+			    val, next, ac);
+		}
+	    }
+	    // only one value
+	    else if(next == null) {
+		first = val;
+	    }
+	    // the second value is invalid
+	    else if(check) {
+		throw new InvalidParamException("value", next,
+			getPropertyName(), ac);
+	    }
+	    else {
+		first = val;
+	    }
+	}
+	else if(val instanceof CssLength || val instanceof CssPercentage ||
+		val instanceof CssNumber) {
+	    if(val instanceof CssNumber) {
+		val = ((CssNumber) val).getLength();
+	    }
+	    // a percentage/length and an keyword
+	    if(next instanceof CssIdent) {
+		int index = IndexOfIdent((String) next.get());
+		if(check && index == -1) {
+		    throw new InvalidParamException("value", val, "background-position", ac);
+		}
+		// the keyword must be a vertical one
+		if(isVertical(index)) {
+		    first = val;
+		    second = next;
+		}
+		else if(check) {
+		    throw new InvalidParamException("incompatible",
+			    val, next, ac);
+		}
+		else {
+		    first = val;
+		}
+	    }
+	    else if(next instanceof CssLength || next instanceof CssPercentage
+		    || next instanceof CssNumber) {
+		if(next instanceof CssNumber) {
+		    next = ((CssNumber) next).getLength();
+		}
+		first = val;
+		second = next;
+	    }
+	    else if(next == null || !check) {
+		first = val;
+	    }
+	    else {
+		throw new InvalidParamException("incompatible", val, next, ac);
+	    }
+	}
+	else if(check){
+	    throw new InvalidParamException("value", expression.getValue(),
+		    getPropertyName(), ac);
+	}
+
+	// we only move the cursor if we found valid values
+	if(first != null) {
+	    expression.next();
+	}
+	if(second != null) {
+	    expression.next();
+	}
+    }
+
+    public CssBackgroundPosition(ApplContext ac, CssExpression expression)
+    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    private boolean isHorizontal(int index) {
+	return index == POSITION_LEFT || index == POSITION_RIGHT ||
+	index == POSITION_CENTER;
+    }
+
+    private boolean isVertical(int index) {
+	return index == POSITION_TOP || index == POSITION_BOTTOM ||
+	index == POSITION_CENTER;
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return first;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "background-position";
+    }
+
+    /**
+     * Returns the horizontal value of the position
+     */
+    public CssValue getHorizontalPosition() {
+	return first;
+    }
+
+    /**
+     * Returns the vertical value of the position
+     */
+    public CssValue getVerticalPosition() {
+	return second;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return first == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (first == inherit) {
+	    return inherit.toString();
+	} else {
+	    String ret = "";
+	    if (first != null) {
+		ret += first;
+	    }
+	    if (second != null) {
+		if (!ret.equals("")) {
+		    ret += " ";
+		}
+		ret += second;
+	    }
+	    return ret;
+	}
+    }
+    /*
+     private void getPercentageFromIdent(int horizontal, int vertical) {
+     first = DefaultValue50;
+     second = DefaultValue50;
+     if (horizontal == POSITION_LEFT || vertical == POSITION_LEFT)
+     first = DefaultValue0;
+     if (horizontal == POSITION_RIGHT || vertical == POSITION_RIGHT)
+     first = DefaultValue100;
+     if (horizontal == POSITION_TOP || vertical == POSITION_TOP)
+     second = DefaultValue0;
+     if (horizontal == POSITION_BOTTOM || vertical == POSITION_BOTTOM)
+     second = DefaultValue100;
+     }
+     */
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBackground cssBackground = ((Css1Style) style).cssBackground;
+	if (cssBackground.position != null)
+	    style.addRedefinitionWarning(ac, this);
+	cssBackground.position = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBackgroundPosition();
+	} else {
+	    return ((Css1Style) style).cssBackground.position;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return ((property == null && first == null && second == null) ||
+		(property instanceof CssBackgroundPosition &&
+			first != null &&
+			first.equals(((CssBackgroundPosition) property).first) &&
+			second != null &&
+			second.equals(((CssBackgroundPosition) property).second)));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return first != null && second != null &&
+	first.equals(DefaultValue0) && second.equals(DefaultValue0);
+    }
+
+    private int IndexOfIdent(String ident) throws InvalidParamException {
+	int hash = ident.hashCode();
+	for (int i = 0; i < POSITION.length; i++)
+	    if (hash_values[i] == hash)
+		return i;
+
+	return -1;
+    }
+
+    private static int[] hash_values;
+
+//  private static int INVALID = -1;
+    private static CssPercentage DefaultValue0 = new CssPercentage(0);
+//  private static CssPercentage DefaultValue50 = new CssPercentage(50);
+//  private static CssPercentage DefaultValue100 = new CssPercentage(100);
+
+    static {
+	hash_values = new int[POSITION.length];
+	for (int i = 0; i < POSITION.length; i++)
+	    hash_values[i] = POSITION[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBackgroundPositionCSS1.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,358 @@
+//
+// $Id: CssBackgroundPositionCSS1.java,v 1.6 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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.CssLength;
+import org.w3c.css.values.CssNumber;
+//import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'background-position'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> [&lt;percentage&gt; | &lt;length&gt;]{1,2} | [top | center
+ *   | bottom] || [left | center | right]<BR>
+ *   <EM>Initial:</EM> 0% 0%<BR>
+ *   <EM>Applies to:</EM> block-level and replaced elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> refer to the size of the element itself<BR>
+ *   <P> If a background image has been specified, the value of
+ *   'background-position' specifies its initial position.
+ *   <P> With a value pair of '0% 0%', the upper left corner of the image is
+ *   placed in the upper left corner of the box that surrounds the content of
+ *   the element (i.e., not the box that surrounds the padding, border or
+ *   margin). A value pair of '100% 100%' places the lower right corner of the
+ *   image in the lower right corner of the element. With a value pair of '14%
+ *   84%', the point 14% across and 84% down the image is to be placed at the
+ *   point 14% across and 84% down the element.
+ *   <P> With a value pair of '2cm 2cm', the upper left corner of the image is
+ *   placed 2cm to the right and 2cm below the upper left corner of the element.
+ *   <P> If only one percentage or length value is given, it sets the horizontal
+ *   position only, the vertical position will be 50%. If two values are given,
+ *   the horizontal position comes first. Combinations of length and percentage
+ *   values are allowed, e.g. '50% 2cm'. Negative positions are allowed.
+ *   <P> One can also use keyword values to indicate the position of the
+ *   background image. Keywords cannot be combined with percentage values, or
+ *   length values.  The possible combinations of keywords and their
+ *   interpretations are as follows:
+ *
+ *   <UL>
+ *     <LI>
+ *       'top left' and 'left top' both mean the same as '0% 0%'.
+ *     <LI>
+ *       'top', 'top center' and 'center top' mean the same as '50% 0%'.
+ *     <LI>
+ *       'right top' and 'top right' mean the same as '100% 0%'.
+ *     <LI>
+ *       'left', 'left center' and 'center left' mean the same as '0% 50%'.
+ *     <LI>
+ *       'center' and 'center center' mean the same as '50% 50%'.
+ *     <LI>
+ *       'right', 'right center' and 'center right' mean the same as '100% 50%'.
+ *     <LI>
+ *       'bottom left' and 'left bottom' mean the same as '0% 100%'.
+ *     <LI>
+ *       'bottom', 'bottom center' and 'center bottom' mean the same as '50% 100%'.
+ *     <LI>
+ *       'bottom right' and 'right bottom' mean the same as '100% 100%'.
+ *   </UL>
+ *   <P>
+ *   examples:
+ *   <PRE>
+ *   BODY { background: url(banner.jpeg) right top }    / * 100%   0% * /
+ *   BODY { background: url(banner.jpeg) top center }   / *  50%   0% * /
+ *   BODY { background: url(banner.jpeg) center }       / *  50%  50% * /
+ *   BODY { background: url(banner.jpeg) bottom }       / *  50% 100% * /
+ *  </PRE>
+ *   <P>
+ *   If the background image is fixed with regard to the canvas (see the
+ *   'background-attachment' property above), the image is placed relative to
+ *   the canvas instead of the element. E.g.:
+ *   <PRE>
+ *   BODY {
+ *     background-image: url(logo.png);
+ *     background-attachment: fixed;
+ *     background-position: 100% 100%;
+ *   }
+ *  </PRE>
+ *   <P>
+ *   In the example above, the image is placed in the lower right corner of the
+ *   canvas.
+ * @version $Revision: 1.6 $
+ * @see CssBackgroundAttachment
+ */
+public class CssBackgroundPositionCSS1 extends CssProperty
+implements CssBackgroundConstants, CssOperator {
+
+    CssValue first;
+    CssValue second;
+
+    /**
+     * Create a new CssBackgroundPositionCSS1
+     */
+    public CssBackgroundPositionCSS1() {
+	first = DefaultValue0;
+	second = DefaultValue0;
+    }
+
+    /**
+     * Creates a new CssBackgroundPositionCSS1
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBackgroundPositionCSS1(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 2) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	CssValue val = expression.getValue();
+	char op  = expression.getOperator();
+
+	if (op != SPACE)
+	    throw new  InvalidParamException("operator",
+		    ((new Character(op)).toString()),
+		    ac);
+
+	CssValue next = expression.getNextValue();
+
+	if(val instanceof CssIdent) {
+	    int index1 = IndexOfIdent((String) val.get());
+	    if(index1 == -1) {
+		throw new InvalidParamException("value", val, "background-position", ac);
+	    }
+	    // two keywords
+	    if(next instanceof CssIdent) {
+		int index2 = IndexOfIdent((String) next.get());
+		if(index2 == -1 && check) {
+		    throw new InvalidParamException("value", next, "background-position", ac);
+		}
+		// one is vertical, the other is vertical
+		// or the two are 'center'
+		if((isHorizontal(index1) && isVertical(index2)) ||
+			(isHorizontal(index2) && isVertical(index1))) {
+		    first = val;
+		    second = next;
+		}
+		// both are horizontal or vertical but not 'center'
+		else if(check){
+		    throw new InvalidParamException("incompatible",
+			    val, next, ac);
+		}
+		else {
+		    first = val;
+		}
+	    }
+	    // only one value
+	    else if(!check || next == null) {
+		first = val;
+	    }
+	    // the second value is invalid
+	    else {
+		throw new InvalidParamException("value", next,
+			getPropertyName(), ac);
+	    }
+	}
+	else if(val instanceof CssLength || val instanceof CssPercentage
+		|| val instanceof CssNumber) {
+	    if(val instanceof CssNumber) {
+		val = ((CssNumber) val).getLength();
+	    }
+	    if(next instanceof CssLength || next instanceof CssPercentage ||
+		    next instanceof CssNumber) {
+		if(next instanceof CssNumber) {
+		    next = ((CssNumber) next).getLength();
+		}
+		first = val;
+		second = next;
+	    }
+	    else if(next == null || !check) {
+		first = val;
+	    }
+	    else {
+		throw new InvalidParamException("incompatible", val, next, ac);
+	    }
+	}
+	else if(check){
+	    throw new InvalidParamException("value", expression.getValue(),
+		    getPropertyName(), ac);
+	}
+
+	// we only move the cursor if we found valid values
+	if(first != null) {
+	    expression.next();
+	}
+	if(second != null) {
+	    expression.next();
+	}
+    }
+
+    public CssBackgroundPositionCSS1(ApplContext ac, CssExpression expression)
+    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return first;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "background-position";
+    }
+
+    /**
+     * Returns the first value of the position
+     */
+    public CssValue getHorizontalPosition() {
+	return first;
+    }
+
+    /**
+     * Returns the second value of the position
+     */
+    public CssValue getVerticalPosition() {
+	return second;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return first == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (first == inherit) {
+	    return inherit.toString();
+	}
+	else {
+	    String ret = "";
+	    if (first != null) {
+		ret += first;
+	    }
+	    if (second != null) {
+		if (!ret.equals("")) {
+		    ret += " ";
+		}
+		ret += second;
+	    }
+	    return ret;
+	}
+    }
+
+    private boolean isHorizontal(int index) {
+	return index == POSITION_LEFT || index == POSITION_RIGHT ||
+	index == POSITION_CENTER;
+    }
+
+    private boolean isVertical(int index) {
+	return index == POSITION_TOP || index == POSITION_BOTTOM ||
+	index == POSITION_CENTER;
+    }
+    /*
+     private void getPercentageFromIdent(int first, int second) {
+     this.first = DefaultValue50;
+     this.second = DefaultValue50;
+     if (first == POSITION_LEFT || second == POSITION_LEFT)
+     this.first = DefaultValue0;
+     if (first == POSITION_RIGHT || second == POSITION_RIGHT)
+     this.first = DefaultValue100;
+     if (first == POSITION_TOP || second == POSITION_TOP)
+     this.second = DefaultValue0;
+     if (first == POSITION_BOTTOM || second == POSITION_BOTTOM)
+     this.second = DefaultValue100;
+     }
+     */
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBackgroundCSS1 cssBackground = ((Css1Style) style).cssBackgroundCSS1;
+	if (cssBackground.position != null)
+	    style.addRedefinitionWarning(ac, this);
+	cssBackground.position = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBackgroundPositionCSS1();
+	} else {
+	    return ((Css1Style) style).cssBackgroundCSS1.position;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBackgroundPositionCSS1 &&
+		first.equals(((CssBackgroundPositionCSS1) property).first)
+		&& second.equals(((CssBackgroundPositionCSS1) property).second));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return first.equals(DefaultValue0) && second.equals(DefaultValue0);
+    }
+
+    private int IndexOfIdent(String ident) throws InvalidParamException {
+	int hash = ident.hashCode();
+	for (int i = 0; i < POSITION.length; i++)
+	    if (hash_values[i] == hash)
+		return i;
+
+	return -1;
+    }
+
+    private static int[] hash_values;
+
+    //private static int INVALID = -1;
+    private static CssPercentage DefaultValue0 = new CssPercentage(0);
+    //private static CssPercentage DefaultValue50 = new CssPercentage(50);
+    //private static CssPercentage DefaultValue100 = new CssPercentage(100);
+
+    static {
+	hash_values = new int[POSITION.length];
+	for (int i = 0; i < POSITION.length; i++)
+	    hash_values[i] = POSITION[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBackgroundPositionCSS2.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,425 @@
+//
+// $Id: CssBackgroundPositionCSS2.java,v 1.10 2009-12-09 17:11:10 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssTypes;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'background-position'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> [&lt;percentage&gt; | &lt;length&gt;]{1,2} | [top | center
+ *   | bottom] || [left | center | right]<BR>
+ *   <EM>Initial:</EM> 0% 0%<BR>
+ *   <EM>Applies to:</EM> block-level and replaced elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> refer to the size of the element itself<BR>
+ *   <P> If a background image has been specified, the value of
+ *   'background-position' specifies its initial position.
+ *   <P> With a value pair of '0% 0%', the upper left corner of the image is
+ *   placed in the upper left corner of the box that surrounds the content of
+ *   the element (i.e., not the box that surrounds the padding, border or
+ *   margin). A value pair of '100% 100%' places the lower right corner of the
+ *   image in the lower right corner of the element. With a value pair of '14%
+ *   84%', the point 14% across and 84% down the image is to be placed at the
+ *   point 14% across and 84% down the element.
+ *   <P> With a value pair of '2cm 2cm', the upper left corner of the image is
+ *   placed 2cm to the right and 2cm below the upper left corner of the element.
+ *   <P> If only one percentage or length value is given, it sets the horizontal
+ *   position only, the vertical position will be 50%. If two values are given,
+ *   the horizontal position comes first. Combinations of length and percentage
+ *   values are allowed, e.g. '50% 2cm'. Negative positions are allowed.
+ *   <P> One can also use keyword values to indicate the position of the
+ *   background image. Keywords cannot be combined with percentage values, or
+ *   length values.  The possible combinations of keywords and their
+ *   interpretations are as follows:
+
+ *   <UL>
+ *     <LI>
+ *       'top left' and 'left top' both mean the same as '0% 0%'.
+ *     <LI>
+ *       'top', 'top center' and 'center top' mean the same as '50% 0%'.
+ *     <LI>
+ *       'right top' and 'top right' mean the same as '100% 0%'.
+ *     <LI>
+ *       'left', 'left center' and 'center left' mean the same as '0% 50%'.
+ *     <LI>
+ *       'center' and 'center center' mean the same as '50% 50%'.
+ *     <LI>
+ *       'right', 'right center' and 'center right' mean the same as '100% 50%'.
+ *     <LI>
+ *       'bottom left' and 'left bottom' mean the same as '0% 100%'.
+ *     <LI>
+ *       'bottom', 'bottom center' and 'center bottom' mean the same as 
+         '50% 100%'.
+ *     <LI>
+ *       'bottom right' and 'right bottom' mean the same as '100% 100%'.
+ *   </UL>
+ *   <P>
+ *   examples:
+ *   <PRE>
+ *   BODY { background: url(banner.jpeg) right top }    / * 100%   0% * /
+ *   BODY { background: url(banner.jpeg) top center }   / *  50%   0% * /
+ *   BODY { background: url(banner.jpeg) center }       / *  50%  50% * /
+ *   BODY { background: url(banner.jpeg) bottom }       / *  50% 100% * /
+ *  </PRE>
+ *   <P>
+ *   If the background image is fixed with regard to the canvas (see the
+ *   'background-attachment' property above), the image is placed relative to
+ *   the canvas instead of the element. E.g.:
+ *   <PRE>
+ *   BODY {
+ *     background-image: url(logo.png);
+ *     background-attachment: fixed;
+ *     background-position: 100% 100%;
+ *   }
+ *  </PRE>
+ *   <P>
+ *   In the example above, the image is placed in the lower right corner of the
+ *   canvas.
+ * @version $Revision: 1.10 $
+ * @see CssBackgroundAttachment
+ */
+public class CssBackgroundPositionCSS2 extends CssProperty
+        implements CssBackgroundConstants, CssOperator {
+
+    CssValue first;
+    CssValue second;
+
+    /**
+     * Create a new CssBackgroundPositionCSS2
+     */
+    public CssBackgroundPositionCSS2() {
+	first  = DefaultValue0;
+	second = DefaultValue0;
+    }
+
+    /**
+     * Creates a new CssBackgroundPositionCSS2
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBackgroundPositionCSS2(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	int nb_val =  expression.getCount();
+	boolean first_is_keyword, second_is_keyword;
+	int index_first, index_second;
+
+	if(check && nb_val > 2) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	CssValue nextval;
+	CssValue val     = expression.getValue();
+	char     op      = expression.getOperator();
+
+	if (op != SPACE)
+	    throw new  InvalidParamException("operator",
+					     ((new Character(op)).toString()),
+					     ac);
+	
+	if (nb_val == 1) { /* default to 'center' */
+	    second_is_keyword = true;
+	    second = null;
+	}
+
+	index_first = -1;
+	index_second = -1;
+
+	first = null;
+	switch(val.getType()) {
+	case CssTypes.CSS_IDENT:
+	    /* check for inherit, only one value allowed */
+	    if (inherit.equals(val)) {
+		if(nb_val > 1) {
+		    throw new InvalidParamException("unrecognize", ac);
+		}
+		first = inherit;
+		second = inherit;
+		expression.next();
+		return;
+	    }
+	    first_is_keyword = true;
+	    // FIXME do something better
+	    index_first = IndexOfIdent((String) val.get());
+	    if(index_first == -1) {
+		throw new InvalidParamException("value", val,
+						"background-position", ac);
+	    }
+	    first = val;
+	    break;
+	case CssTypes.CSS_NUMBER:
+	    val = ((CssNumber) val).getLength();
+	case CssTypes.CSS_PERCENTAGE:
+	case CssTypes.CSS_LENGTH:
+	    first_is_keyword = false;
+	    first = val;
+	    break;
+	default:
+	    throw new InvalidParamException("value", val,
+					    "background-position", ac);
+	}
+	if (nb_val == 1) {
+	    if (first != null) {
+		expression.next();
+	    }
+	    return;
+	}
+	/* now check the second value */
+	nextval = expression.getNextValue();
+	second = null;
+	if (check || nextval != null) {
+	    switch(nextval.getType()) {
+	    case CssTypes.CSS_IDENT:
+		if (inherit.equals(nextval)) {
+		    throw new InvalidParamException("unrecognize", ac);
+		}
+		index_second = IndexOfIdent((String) nextval.get());
+		if(index_second == -1 && check) {
+		    throw new InvalidParamException("value", nextval, 
+						    "background-position", ac);
+		}
+		if (first_is_keyword) {
+		    // two keywords, check that they are compatible
+		    if((isHorizontal(index_first) && isVertical(index_second)) ||
+		       (isHorizontal(index_second) && isVertical(index_first))) {
+			second = nextval;
+		    } else {
+			if (check) {
+			    throw new InvalidParamException("incompatible",
+							    val, nextval, ac);
+			}
+		    }
+		} else {
+		    // first was not a keyword, so second should be vertical
+		    // http://www.w3.org/TR/CSS21/colors.html#propdef-background-position
+		    if (isVertical(index_second)) {
+			second = nextval;
+		    } else {
+			// FIXME, should we create a better error msg, like "wrong order" ?
+			if (check) {
+			    throw new InvalidParamException("incompatible",
+							    val, nextval, ac);
+			}
+		    } 
+		}
+		break;
+	    case CssTypes.CSS_NUMBER:
+		nextval = ((CssNumber) nextval).getLength();
+	    case CssTypes.CSS_PERCENTAGE:
+	    case CssTypes.CSS_LENGTH:
+		if (first_is_keyword) {
+		    // check that the first is indeed horizontal
+		    // http://www.w3.org/TR/CSS21/colors.html#propdef-background-position
+		    if (!isHorizontal(index_first) && check) {
+			throw new InvalidParamException("incompatible",
+							val, nextval, ac);
+		    } 
+		}
+		second = nextval;
+		break;
+	    default:
+		throw new InvalidParamException("value", nextval,
+						"background-position", ac);
+	    }
+	}
+	if (first != null) {
+	    expression.next();
+	    if (second != null) {
+		expression.next();
+	    }
+	}   
+    }
+
+    protected boolean isHorizontal(int index) {
+	return index == POSITION_LEFT || index == POSITION_RIGHT ||
+		index == POSITION_CENTER;
+    }
+
+    protected boolean isVertical(int index) {
+	return index == POSITION_TOP || index == POSITION_BOTTOM ||
+	index == POSITION_CENTER;
+    }
+
+    public CssBackgroundPositionCSS2(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * @return Returns the first.
+     */
+    public CssValue getFirst() {
+        return first;
+    }
+
+    /**
+     * @param first The first to set.
+     */
+    public void setFirst(CssValue first) {
+        this.first = first;
+    }
+
+    /**
+     * @return Returns the second.
+     */
+    public CssValue getSecond() {
+        return second;
+    }
+
+    /**
+     * @param second The second to set.
+     */
+    public void setSecond(CssValue second) {
+        this.second = second;
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return first;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "background-position";
+    }
+
+    /**
+     * Returns the horizontal value of the position
+     */
+    public CssValue getHorizontalPosition() {
+	return first;
+    }
+
+    /**
+     * Returns the vertical value of the position
+     */
+    public CssValue getVerticalPosition() {
+	return second;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return first == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (first == inherit) {
+	    return inherit.toString();
+	} else {
+	    StringBuilder sb = new StringBuilder();
+	    if (first != null) {
+		sb.append(first);
+	    }
+	    if (second != null) {
+		if (first != null) {
+		    sb.append(' ');
+		}
+		sb.append(second);
+	    }
+	    return sb.toString();
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBackgroundCSS2 cssBackground = ((Css1Style) style).cssBackgroundCSS2;
+	if (cssBackground.position != null)
+	    style.addRedefinitionWarning(ac, this);
+	cssBackground.position = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBackgroundPositionCSS2();
+	} else {
+	    return ((Css1Style) style).cssBackgroundCSS2.position;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	if (!(property instanceof CssBackgroundPositionCSS2)) {
+	    return false;
+	}
+	CssBackgroundPositionCSS2 cprop = (CssBackgroundPositionCSS2) property;
+	return (first.equals(cprop.first) && second.equals(cprop.second));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return first.equals(DefaultValue0) && second.equals(DefaultValue0);
+    }
+
+    protected int IndexOfIdent(String ident) {
+	int hash = ident.hashCode();
+	for (int i = 0; i < POSITION.length; i++)
+	    if (hash_values[i] == hash)
+		return i;
+	return -1;
+    }
+
+    static public boolean checkMatchingIdent(CssIdent idval) {
+	for (int i=0 ; i < hash_values.length; i++) {
+	    if (hash_values[i] == idval.hashCode()) {
+		return true;
+	    }
+	}
+	return false;
+    }
+
+    private static int[] hash_values;
+
+    private static CssPercentage DefaultValue0 = new CssPercentage(0);
+
+    static {
+	hash_values = new int[POSITION.length];
+	for (int i = 0; i < POSITION.length; i++)
+	    hash_values[i] = POSITION[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBackgroundPositionMob.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,331 @@
+//
+// $Id: CssBackgroundPositionMob.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'background-position'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> [&lt;percentage&gt; | &lt;length&gt;]{1,2} | [top | center
+ *   | bottom] || [left | center | right]<BR>
+ *   <EM>Initial:</EM> 0% 0%<BR>
+ *   <EM>Applies to:</EM> block-level and replaced elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> refer to the size of the element itself<BR>
+ *   <P> If a background image has been specified, the value of
+ *   'background-position' specifies its initial position.
+ *   <P> With a value pair of '0% 0%', the upper left corner of the image is
+ *   placed in the upper left corner of the box that surrounds the content of
+ *   the element (i.e., not the box that surrounds the padding, border or
+ *   margin). A value pair of '100% 100%' places the lower right corner of the
+ *   image in the lower right corner of the element. With a value pair of '14%
+ *   84%', the point 14% across and 84% down the image is to be placed at the
+ *   point 14% across and 84% down the element.
+ *   <P> With a value pair of '2cm 2cm', the upper left corner of the image is
+ *   placed 2cm to the right and 2cm below the upper left corner of the element.
+ *   <P> If only one percentage or length value is given, it sets the horizontal
+ *   position only, the vertical position will be 50%. If two values are given,
+ *   the horizontal position comes first. Combinations of length and percentage
+ *   values are allowed, e.g. '50% 2cm'. Negative positions are allowed.
+ *   <P> One can also use keyword values to indicate the position of the
+ *   background image. Keywords cannot be combined with percentage values, or
+ *   length values.  The possible combinations of keywords and their
+ *   interpretations are as follows:
+
+ *   <UL>
+ *     <LI>
+ *       'top left' and 'left top' both mean the same as '0% 0%'.
+ *     <LI>
+ *       'top', 'top center' and 'center top' mean the same as '50% 0%'.
+ *     <LI>
+ *       'right top' and 'top right' mean the same as '100% 0%'.
+ *     <LI>
+ *       'left', 'left center' and 'center left' mean the same as '0% 50%'.
+ *     <LI>
+ *       'center' and 'center center' mean the same as '50% 50%'.
+ *     <LI>
+ *       'right', 'right center' and 'center right' mean the same as '100% 50%'.
+ *     <LI>
+ *       'bottom left' and 'left bottom' mean the same as '0% 100%'.
+ *     <LI>
+ *       'bottom', 'bottom center' and 'center bottom' mean the same as '50% 100%'.
+ *     <LI>
+ *       'bottom right' and 'right bottom' mean the same as '100% 100%'.
+ *   </UL>
+ *   <P>
+ *   examples:
+ *   <PRE>
+ *   BODY { background: url(banner.jpeg) right top }    / * 100%   0% * /
+ *   BODY { background: url(banner.jpeg) top center }   / *  50%   0% * /
+ *   BODY { background: url(banner.jpeg) center }       / *  50%  50% * /
+ *   BODY { background: url(banner.jpeg) bottom }       / *  50% 100% * /
+ *  </PRE>
+ *   <P>
+ *   If the background image is fixed with regard to the canvas (see the
+ *   'background-attachment' property above), the image is placed relative to
+ *   the canvas instead of the element. E.g.:
+ *   <PRE>
+ *   BODY {
+ *     background-image: url(logo.png);
+ *     background-attachment: fixed;
+ *     background-position: 100% 100%;
+ *   }
+ *  </PRE>
+ *   <P>
+ *   In the example above, the image is placed in the lower right corner of the
+ *   canvas.
+ * @version $Revision: 1.3 $
+ * @see CssBackgroundAttachment
+ */
+public class CssBackgroundPositionMob extends CssProperty
+        implements CssBackgroundConstants, CssOperator {
+
+    CssValue horizontal;
+    CssValue vertical;
+
+    /**
+     * Create a new CssBackgroundPositionMob
+     */
+    public CssBackgroundPositionMob() {
+	horizontal = DefaultValue0;
+	vertical = DefaultValue0;
+    }
+
+    /**
+     * Creates a new CssBackgroundPositionMob
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBackgroundPositionMob(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 2) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	CssValue val = expression.getValue();
+	char op  = expression.getOperator();
+	int index;
+
+	if (op != SPACE)
+	    throw new  InvalidParamException("operator",
+					     ((new Character(op)).toString()),
+					     ac);
+
+	if (val.equals(inherit)) {
+	    if(expression.getCount() > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    horizontal = inherit;
+	    vertical = inherit;
+	    expression.next();
+	    return;
+	} else if (val instanceof CssIdent
+	    && (index=IndexOfIdent((String) val.get())) != INVALID) {
+	    CssValue next = expression.getNextValue();
+	    if(next.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    expression.next();
+	    if (next == null) {
+		getPercentageFromIdent(index, INVALID);
+	    } else if (next instanceof CssIdent) {
+		int index2 = IndexOfIdent((String) next.get());
+		if (index2 != INVALID) {
+		    getPercentageFromIdent(index, index2);
+		    expression.next();
+		} else {
+		    getPercentageFromIdent(index, INVALID);
+		}
+	    }
+	} else if (val instanceof CssLength ||
+		   val instanceof CssPercentage || val instanceof CssNumber) {
+	    if (val instanceof CssNumber) {
+		val = ((CssNumber) val).getLength();
+	    }
+	    horizontal = val;
+	    expression.next();
+	    val = expression.getValue();
+	    if(val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    if (val instanceof CssLength ||
+		val instanceof CssPercentage || val instanceof CssNumber) {
+		if (val instanceof CssNumber) {
+		    val = ((CssNumber) val).getLength();
+		}
+		vertical = val;
+		expression.next();
+	    } else if(val != null) {
+		throw new InvalidParamException("value", expression.getValue(),
+			    getPropertyName(), ac);
+	    }
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+
+
+    }
+
+    public CssBackgroundPositionMob(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return horizontal;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "background-position";
+    }
+
+    /**
+     * Returns the horizontal value of the position
+     */
+    public CssValue getHorizontalPosition() {
+	return horizontal;
+    }
+
+    /**
+     * Returns the vertical value of the position
+     */
+    public CssValue getVerticalPosition() {
+	return vertical;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return horizontal == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (horizontal == inherit) {
+	    return inherit.toString();
+	} else {
+	    String ret = "";
+	    if (horizontal != null) {
+		ret += horizontal;
+	    }
+	    if (vertical != null) {
+		if (!ret.equals("")) {
+		    ret += " ";
+		}
+		ret += vertical;
+	    }
+	    return ret;
+	}
+    }
+
+    private void getPercentageFromIdent(int first, int second) {
+	horizontal = DefaultValue50;
+	vertical = DefaultValue50;
+	if (first == POSITION_LEFT || second == POSITION_LEFT)
+	    horizontal = DefaultValue0;
+	if (first == POSITION_RIGHT || second == POSITION_RIGHT)
+	    horizontal = DefaultValue100;
+	if (first == POSITION_TOP || second == POSITION_TOP)
+	    vertical = DefaultValue0;
+	if (first == POSITION_BOTTOM || second == POSITION_BOTTOM)
+	    vertical = DefaultValue100;
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBackgroundMob cssBackground = ((Css1Style) style).cssBackgroundMob;
+	if (cssBackground.position != null)
+	    style.addRedefinitionWarning(ac, this);
+	cssBackground.position = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBackgroundPositionMob();
+	} else {
+	    return ((Css1Style) style).cssBackgroundMob.position;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBackgroundPositionMob &&
+		horizontal.equals(((CssBackgroundPositionMob) property).horizontal)
+		&& vertical.equals(((CssBackgroundPositionMob) property).vertical));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return horizontal != null && vertical != null &&
+	    horizontal.equals(DefaultValue0) && vertical.equals(DefaultValue0);
+    }
+
+    private int IndexOfIdent(String ident) throws InvalidParamException {
+	int hash = ident.hashCode();
+	for (int i = 0; i < POSITION.length; i++)
+	    if (hash_values[i] == hash)
+		return i;
+
+	return -1;
+    }
+
+    private static int[] hash_values;
+
+    private static int INVALID = -1;
+    private static CssPercentage DefaultValue0 = new CssPercentage(0);
+    private static CssPercentage DefaultValue50 = new CssPercentage(50);
+    private static CssPercentage DefaultValue100 = new CssPercentage(100);
+
+    static {
+	hash_values = new int[POSITION.length];
+	for (int i = 0; i < POSITION.length; i++)
+	    hash_values[i] = POSITION[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBackgroundRepeat.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,173 @@
+//
+// $Id: CssBackgroundRepeat.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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;
+
+/**
+ *   <H4>
+ *     <A NAME="background-repeat">5.3.4 &nbsp;&nbsp; 'background-repeat'</A>
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> repeat | repeat-x | repeat-y | no-repeat<BR>
+ *   <EM>Initial:</EM> repeat<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   If a background image is specified, the value of 'background-repeat' determines
+ *   how/if the image is repeated.
+ *   <P>
+ *   A value of 'repeat' means that the image is repeated both horizontally and
+ *   vertically. The 'repeat-x' ('repeat-y') value makes the image repeat horizontally
+ *   (vertically), to create a single band of images from one side to the other.
+ *   With a value of 'no-repeat', the image is not repeated.
+ *   <PRE>
+ *   BODY {
+ *     background: red url(pendant.gif);
+ *     background-repeat: repeat-y;
+ *   }
+ *  </PRE>
+ *   <P>
+ *   In the example above, the image will only be repeated vertically.
+ * @version $Revision: 1.3 $
+ */
+public class CssBackgroundRepeat extends CssProperty
+	implements CssBackgroundConstants {
+
+    int repeat;
+
+    private static int[] hash_values;
+
+    /**
+     * Create a new CssBackgroundRepeat
+     */
+    public CssBackgroundRepeat() {
+	repeat = 0;
+    }
+
+    /**
+     * Set the value of the property
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssBackgroundRepeat(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	setByUser();
+
+	if (val instanceof CssIdent) {
+	    int hash = val.hashCode();
+	    for (int i =0; i < REPEAT.length; i++) {
+		if (hash_values[i] == hash) {
+		    repeat = i;
+		    expression.next();
+		    return;
+		}
+	    }
+	}
+	throw new InvalidParamException("value", expression.getValue(),
+					getPropertyName(), ac);
+    }
+
+    public CssBackgroundRepeat(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return REPEAT[repeat];
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return repeat == 4;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return REPEAT[repeat];
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "background-repeat";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBackground cssBackground = ((Css1Style) style).cssBackground;
+	if (cssBackground.repeat != null)
+	    style.addRedefinitionWarning(ac, this);
+	cssBackground.repeat = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBackgroundRepeat();
+	} else {
+	    return ((Css1Style) style).cssBackground.repeat;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBackgroundRepeat &&
+		repeat == ((CssBackgroundRepeat) property).repeat);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return repeat == 0;
+    }
+
+    static {
+	hash_values = new int[REPEAT.length];
+	for (int i = 0; i < REPEAT.length; i++)
+	    hash_values[i] = REPEAT[i].hashCode();
+    }
+}
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBackgroundRepeatCSS1.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,177 @@
+//
+// $Id: CssBackgroundRepeatCSS1.java,v 1.4 2009-02-11 21:41:10 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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.CssTypes;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     <A NAME="background-repeat">5.3.4 &nbsp;&nbsp; 'background-repeat'</A>
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> repeat | repeat-x | repeat-y | no-repeat<BR>
+ *   <EM>Initial:</EM> repeat<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   If a background image is specified, the value of 'background-repeat' determines
+ *   how/if the image is repeated.
+ *   <P>
+ *   A value of 'repeat' means that the image is repeated both horizontally and
+ *   vertically. The 'repeat-x' ('repeat-y') value makes the image repeat horizontally
+ *   (vertically), to create a single band of images from one side to the other.
+ *   With a value of 'no-repeat', the image is not repeated.
+ *   <PRE>
+ *   BODY {
+ *     background: red url(pendant.gif);
+ *     background-repeat: repeat-y;
+ *   }
+ *  </PRE>
+ *   <P>
+ *   In the example above, the image will only be repeated vertically.
+ * @version $Revision: 1.4 $
+ */
+public class CssBackgroundRepeatCSS1 extends CssProperty
+	implements CssBackgroundConstants {
+
+    private static final String property_name = "background-repeat";
+
+   int repeat;
+
+    private static int[] hash_values;
+
+    /**
+     * Create a new CssBackgroundRepeatCSS1
+     */
+    public CssBackgroundRepeatCSS1() {
+	repeat = 0;
+    }
+
+    /**
+     * Set the value of the property
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssBackgroundRepeatCSS1(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	setByUser();
+
+	if (val.getType() == CssTypes.CSS_IDENT) {
+	    int hash = val.hashCode();
+	    for (int i =0; i < REPEAT.length; i++) {
+		if (hash_values[i] == hash) {
+		    repeat = i;
+		    expression.next();
+		    return;
+		}
+	    }
+	}
+
+	throw new InvalidParamException("value", expression.getValue(),
+					getPropertyName(), ac);
+    }
+
+    public CssBackgroundRepeatCSS1(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return REPEAT[repeat];
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return repeat == 4;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return REPEAT[repeat];
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return property_name;
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBackgroundCSS1 cssBackground = ((Css1Style) style).cssBackgroundCSS1;
+	if (cssBackground.repeat != null)
+	    style.addRedefinitionWarning(ac, this);
+	cssBackground.repeat = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBackgroundRepeatCSS1();
+	} else {
+	    return ((Css1Style) style).cssBackgroundCSS1.repeat;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBackgroundRepeatCSS1 &&
+		repeat == ((CssBackgroundRepeatCSS1) property).repeat);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return repeat == 0;
+    }
+
+    static {
+	hash_values = new int[REPEAT.length];
+	for (int i = 0; i < REPEAT.length; i++)
+	    hash_values[i] = REPEAT[i].hashCode();
+    }
+}
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBackgroundRepeatCSS2.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,185 @@
+//
+// $Id: CssBackgroundRepeatCSS2.java,v 1.5 2009-02-11 21:41:10 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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.CssTypes;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     <A NAME="background-repeat">5.3.4 &nbsp;&nbsp; 'background-repeat'</A>
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> repeat | repeat-x | repeat-y | no-repeat<BR>
+ *   <EM>Initial:</EM> repeat<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   If a background image is specified, the value of 'background-repeat' determines
+ *   how/if the image is repeated.
+ *   <P>
+ *   A value of 'repeat' means that the image is repeated both horizontally and
+ *   vertically. The 'repeat-x' ('repeat-y') value makes the image repeat horizontally
+ *   (vertically), to create a single band of images from one side to the other.
+ *   With a value of 'no-repeat', the image is not repeated.
+ *   <PRE>
+ *   BODY {
+ *     background: red url(pendant.gif);
+ *     background-repeat: repeat-y;
+ *   }
+ *  </PRE>
+ *   <P>
+ *   In the example above, the image will only be repeated vertically.
+ * @version $Revision: 1.5 $
+ */
+public class CssBackgroundRepeatCSS2 extends CssProperty
+	implements CssBackgroundConstants {
+
+    private static final String property_name = "background-repeat";
+
+    int repeat;
+
+    private static int[] hash_values;
+
+    /**
+     * Create a new CssBackgroundRepeatCSS2
+     */
+    public CssBackgroundRepeatCSS2() {
+	repeat = 0;
+    }
+
+    /**
+     * Set the value of the property
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssBackgroundRepeatCSS2(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	setByUser();
+
+	if (val.getType() == CssTypes.CSS_IDENT) {
+	    int hash = val.hashCode();
+	    for (int i =0; i < REPEAT.length; i++) {
+		if (hash_values[i] == hash) {
+		    repeat = i;
+		    expression.next();
+		    return;
+		}
+	    }
+	}
+	throw new InvalidParamException("value", expression.getValue(),
+					getPropertyName(), ac);
+    }
+
+    public CssBackgroundRepeatCSS2(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return REPEAT[repeat];
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return (repeat == 4);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return REPEAT[repeat];
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return property_name;
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBackgroundCSS2 cssBackground = ((Css1Style) style).cssBackgroundCSS2;
+	if (cssBackground.repeat != null)
+	    style.addRedefinitionWarning(ac, this);
+	cssBackground.repeat = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBackgroundRepeatCSS2();
+	} else {
+	    return ((Css1Style) style).cssBackgroundCSS2.repeat;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBackgroundRepeatCSS2 &&
+		repeat == ((CssBackgroundRepeatCSS2) property).repeat);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return repeat == 0;
+    }
+
+    static public boolean checkMatchingIdent(CssIdent idval) {
+	for (int i=0 ; i < hash_values.length; i++) {
+	    if (hash_values[i] == idval.hashCode()) {
+		return true;
+	    }
+	}
+	return false;
+    }
+
+    static {
+	hash_values = new int[REPEAT.length];
+	for (int i = 0; i < REPEAT.length; i++)
+	    hash_values[i] = REPEAT[i].hashCode();
+    }
+}
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBackgroundRepeatMob.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,174 @@
+//
+// $Id: CssBackgroundRepeatMob.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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;
+
+/**
+ *   <H4>
+ *     <A NAME="background-repeat">5.3.4 &nbsp;&nbsp; 'background-repeat'</A>
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> repeat | repeat-x | repeat-y | no-repeat<BR>
+ *   <EM>Initial:</EM> repeat<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   If a background image is specified, the value of 'background-repeat' determines
+ *   how/if the image is repeated.
+ *   <P>
+ *   A value of 'repeat' means that the image is repeated both horizontally and
+ *   vertically. The 'repeat-x' ('repeat-y') value makes the image repeat horizontally
+ *   (vertically), to create a single band of images from one side to the other.
+ *   With a value of 'no-repeat', the image is not repeated.
+ *   <PRE>
+ *   BODY {
+ *     background: red url(pendant.gif);
+ *     background-repeat: repeat-y;
+ *   }
+ *  </PRE>
+ *   <P>
+ *   In the example above, the image will only be repeated vertically.
+ * @version $Revision: 1.3 $
+ */
+public class CssBackgroundRepeatMob extends CssProperty
+	implements CssBackgroundConstants {
+
+    int repeat;
+
+    private static int[] hash_values;
+
+    /**
+     * Create a new CssBackgroundRepeatMob
+     */
+    public CssBackgroundRepeatMob() {
+	repeat = 0;
+    }
+
+    /**
+     * Set the value of the property
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssBackgroundRepeatMob(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	setByUser();
+
+	if (val instanceof CssIdent) {
+	    int hash = val.hashCode();
+	    for (int i =0; i < REPEAT.length; i++) {
+		if (hash_values[i] == hash) {
+		    repeat = i;
+		    expression.next();
+		    return;
+		}
+	    }
+	}
+
+	throw new InvalidParamException("value", expression.getValue(),
+					getPropertyName(), ac);
+    }
+
+    public CssBackgroundRepeatMob(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return REPEAT[repeat];
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return repeat == 4;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return REPEAT[repeat];
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "background-repeat";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBackgroundMob cssBackground = ((Css1Style) style).cssBackgroundMob;
+	if (cssBackground.repeat != null)
+	    style.addRedefinitionWarning(ac, this);
+	cssBackground.repeat = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBackgroundRepeatMob();
+	} else {
+	    return ((Css1Style) style).cssBackgroundMob.repeat;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBackgroundRepeatMob &&
+		repeat == ((CssBackgroundRepeatMob) property).repeat);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return repeat == 0;
+    }
+
+    static {
+	hash_values = new int[REPEAT.length];
+	for (int i = 0; i < REPEAT.length; i++)
+	    hash_values[i] = REPEAT[i].hashCode();
+    }
+}
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBackgroundTV.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,372 @@
+//
+// $Id: CssBackgroundTV.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     <A NAME="background">5.3.7 &nbsp;&nbsp; 'background'</A>
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;background-color&gt; || &lt;background-image&gt; ||
+ *   &lt;background-repeat&gt; ||
+ *   &lt;background-position&gt;<BR>
+ *   <EM>Initial:</EM> not defined for shorthand properties<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> allowed on &lt;background-position&gt;<BR>
+ *   <P>
+ *   The 'background' property is a shorthand property for setting the individual
+ *   background properties (i.e., 'background-color', 'background-image',
+ *   'background-repeat' and 'background-position') at
+ *   the same place in the style sheet.
+ *   <P>
+ *   Possible values on the 'background' properties are the set of all possible
+ *   values on the individual properties.
+ *   <PRE>
+ *   BODY { background: red }
+ *   P { background: url(chess.png) gray 50% repeat fixed }
+ * </PRE>
+ *   <P> The 'background' property always sets all the individual background
+ *   properties.  In the first rule of the above example, only a value for
+ *   'background-color' has been given and the other individual properties are
+ *   set to their initial value. In the second rule, all individual properties
+ *   have been specified.
+ *
+ * @version $Revision: 1.3 $
+ * @see CssBackgroundColor
+ * @see CssBackgroundImage
+ * @see CssBackgroundRepeat
+ * @see CssBackgroundPosition
+ */
+public class CssBackgroundTV extends CssProperty
+        implements CssOperator, CssBackgroundConstants {
+
+    CssBackgroundColorCSS2 color;
+    CssBackgroundImageCSS2 image;
+    CssBackgroundRepeatCSS2 repeat;
+    CssBackgroundPositionCSS2 position;
+
+    boolean same;
+
+    /**
+     * Create a new CssBackgroundCSS2
+     */
+    public CssBackgroundTV() {
+    }
+
+    /**
+     * Set the value of the property
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssBackgroundTV(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = expression.getValue();
+	char op = SPACE;
+	boolean find = true;
+
+	// too many values
+	if(check && expression.getCount() > 5) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    if(expression.getCount() > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    color = new CssBackgroundColorCSS2();
+	    color.color = inherit;
+	    image = new CssBackgroundImageCSS2();
+	    image.url = inherit;
+	    repeat = new CssBackgroundRepeatCSS2();
+	    repeat.repeat = REPEAT.length - 1;
+	    position = new CssBackgroundPositionCSS2();
+	    position.first = inherit;
+	    position.second = inherit;
+	    same = true;
+	    expression.next();
+	    return;
+	}
+
+	while (find) {
+	    find = false;
+	    val = expression.getValue();
+	    op = expression.getOperator();
+
+	    if (val == null) {
+		break;
+	    }
+
+	    if (color == null) {
+		try {
+		    color = new CssBackgroundColorCSS2(ac, expression);
+		    find = true;
+		} catch (InvalidParamException e) {
+		}
+	    }
+	    if (!find && image == null) {
+		try {
+		    image = new CssBackgroundImageCSS2(ac, expression);
+		    find = true;
+		} catch (InvalidParamException e) {
+		}
+	    }
+	    if (!find && repeat == null) {
+		try {
+		    repeat = new CssBackgroundRepeatCSS2(ac, expression);
+		    find = true;
+		} catch (InvalidParamException e) {
+		}
+	    }
+	    if (!find && position == null) {
+		position = new CssBackgroundPositionCSS2(ac, expression);
+		find = true;
+	    }
+	    if (op != SPACE) {
+		throw new InvalidParamException("operator",
+						((new Character(op)).toString()),
+						ac);
+	    }
+	}
+	/*
+	if (color == null)
+	    color = new CssBackgroundColorCSS2();
+	if (image == null)
+	    image = new CssBackgroundImageCSS2();
+	if (repeat == null)
+	    repeat = new CssBackgroundRepeatCSS2();
+	if (position == null)
+	    position = new CssBackgroundPositionCSS2();
+	*/
+    }
+
+    public CssBackgroundTV(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return color;
+    }
+
+    /**
+     * Returns the color
+     */
+    public final CssValue getColor() {
+	if (color == null) {
+	    return null;
+	} else {
+	    return color.getColor();
+	}
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "background";
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	String ret = "";
+	if(color != null) {
+	    ret += color;
+	}
+	if(image != null) {
+	    if(ret != null) {
+		ret += " ";
+	    }
+	    ret += image;
+	}
+	if(repeat != null) {
+	    if(ret != null) {
+		ret += " ";
+	    }
+	    ret += repeat;
+	}
+	if(position != null) {
+	    if(ret != null) {
+		ret += " ";
+	    }
+	    ret += position;
+	}
+	return ret;
+    }
+
+    /**
+     * Set this property to be important.
+     * Overrides this method for a macro
+     */
+    public void setImportant() {
+	if(color != null) {
+	    color.important = true;
+	}
+	if(image != null) {
+	    image.important = true;
+	}
+	if(repeat != null) {
+	    repeat.important = true;
+	}
+	if(position != null) {
+	    position.important = true;
+	}
+    }
+
+    /**
+     * Returns true if this property is important.
+     * Overrides this method for a macro
+     */
+    public boolean getImportant() {
+	return ((color == null || color.important) &&
+		(image == null || image.important) &&
+		(repeat == null || repeat.important) &&
+		(position == null || position.important));
+    }
+
+    /**
+     * Print this property.
+     *
+     * @param printer The printer.
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	if ((color != null && image != null &&
+	     repeat != null &&
+	     position != null) &&
+	    (getImportant() ||
+	     (!image.important &&
+	      !color.important &&
+	      !repeat.important &&
+	      !position.important))) {
+	    if (color.byUser || image.byUser || repeat.byUser
+		 || position.byUser) {
+		printer.print(this);
+	    }
+	} else {
+	    if (color != null)
+		color.print(printer);
+	    if (image != null)
+		image.print(printer);
+	    if (repeat != null)
+		repeat.print(printer);
+	    if (position != null)
+		position.print(printer);
+	}
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors selector) {
+	super.setSelectors(selector);
+	if (color != null) {
+	    color.setSelectors(selector);
+	}
+	if (image != null) {
+	    image.setSelectors(selector);
+	}
+	if (repeat != null) {
+	    repeat.setSelectors(selector);
+	}
+	if (position != null) {
+	    position.setSelectors(selector);
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	((Css1Style) style).cssBackgroundCSS2.same = same;
+	((Css1Style) style).cssBackgroundCSS2.byUser = byUser;
+
+	if(color != null) {
+	    color.addToStyle(ac, style);
+	}
+	if(image != null) {
+	    image.addToStyle(ac, style);
+	}
+	if(repeat != null) {
+	    repeat.addToStyle(ac, style);
+	}
+	if(position != null) {
+	    position.addToStyle(ac, style);
+	}
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBackgroundCSS2();
+	} else {
+	    return ((Css1Style) style).cssBackgroundCSS2;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return false; // FIXME
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	super.setInfo(line, source);
+	if(color != null) {
+	    color.setInfo(line, source);
+	}
+	if(image != null) {
+	    image.setInfo(line, source);
+	}
+	if(repeat != null) {
+	    repeat.setInfo(line, source);
+	}
+	if(position != null) {
+	    position.setInfo(line, source);
+	}
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorder.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,452 @@
+//
+// $Id: CssBorder.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public class CssBorder extends CssProperty implements CssOperator {
+
+//    CssBorderTopWidth width;
+//    CssBorderTopStyle style;
+//    CssBorderTopColor color;
+//    CssValue uri = null;
+//    CssBorderImageTransform imagetransform = null;
+
+    CssBorderTop top = new CssBorderTop();
+    CssBorderRight right = new CssBorderRight();
+    CssBorderBottom bottom = new CssBorderBottom();
+    CssBorderLeft left = new CssBorderLeft();
+
+    /**
+     * Create a new CssBorder
+     */
+    public CssBorder() {
+	top = new CssBorderTop();
+	right = new CssBorderRight();
+	bottom = new CssBorderBottom();
+	left = new CssBorderLeft();
+    }
+
+    /**
+     * Create a new CssBorder
+     *
+     * @param value The value for this property
+     * @exception InvalidParamException The value is incorrect
+     */
+    public CssBorder(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = expression.getValue();
+
+	if(check && expression.getCount() > 4) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+
+
+	top = new CssBorderTop(ac, expression);
+
+	if (val == expression.getValue()) {
+	    throw new InvalidParamException("value",
+					    expression.getValue(),
+					    getPropertyName(), ac);
+	}
+	right = new CssBorderRight();
+	bottom = new CssBorderBottom();
+	left = new CssBorderLeft();
+
+	CssBorderTopWidth w = top.width;
+	CssBorderTopStyle s = top.style;
+	CssBorderTopColor c = top.color;
+
+	if(w != null) {
+	    right.width  =
+		new CssBorderRightWidth((CssBorderFaceWidth) w.get());
+	    left.width =
+		new CssBorderLeftWidth((CssBorderFaceWidth) w.get());
+	    bottom.width =
+		new CssBorderBottomWidth((CssBorderFaceWidth) w.get());
+	}
+	if(s != null) {
+	    right.style =
+		new CssBorderRightStyle((CssBorderFaceStyle) s.get());
+	    left.style =
+		new CssBorderLeftStyle((CssBorderFaceStyle) s.get());
+	    bottom.style =
+		new CssBorderBottomStyle((CssBorderFaceStyle) s.get());
+	}
+	if(c != null) {
+	    right.color =
+		new CssBorderRightColor((CssBorderFaceColor) c.get());
+	    left.color =
+		new CssBorderLeftColor((CssBorderFaceColor) c.get());
+	    bottom.color =
+		new CssBorderBottomColor((CssBorderFaceColor) c.get());
+	}
+	/*
+	CssValue val = expression.getValue();
+	char op = SPACE;
+	boolean find = true;
+
+	setByUser();
+
+	boolean manyValues = (expression.getCount() > 1);
+
+	while (find) {
+	    find = false;
+	    val = expression.getValue();
+	    op = expression.getOperator();
+
+	    if (val == null)
+		break;
+
+	    // if there are many values, we can't have inherit as one of them
+	    if(manyValues && val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", null, null, ac);
+	    }
+
+	    if (op != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(op)).toString()), ac);
+
+	    if (width == null) {
+		try {
+		    width = new CssBorderTopWidth(ac, expression);
+		    find = true;
+		} catch (InvalidParamException e) {
+		    // nothing to do, style will test the value
+		}
+	    }
+
+	    if (!find && style == null) {
+		try {
+		    style = new CssBorderTopStyle(ac, expression);
+		    find = true;
+		}
+		catch (InvalidParamException e) {
+		    // nothing to do, color will test the value
+		}
+	    }
+
+	    if (!find && color == null) {
+		try {
+		    color = new CssBorderTopColor(ac, expression);
+		    find = true;
+		}
+		catch (InvalidParamException e) {
+		    // nothing to do, uri will test the value
+		}
+	    }
+
+	    if (!find && uri == null) {
+		if (val instanceof CssURL) {
+		    uri = val;
+		    find = true;
+		}
+	    }
+
+	    if (!find && imagetransform == null) {
+		imagetransform = new CssBorderImageTransform(ac, expression);
+		find = true;
+	    }
+	}*/
+	/*
+	if (width == null) {
+	    width = new CssBorderTopWidth();
+	}
+	if (style == null) {
+	    style = new CssBorderTopStyle();
+	}
+
+	if (color == null) {
+	    color = new CssBorderTopColor();
+	}
+	*/
+	//
+
+
+//	top = new CssBorderTop(ac, expression);
+/*
+	right = new CssBorderRight();
+	bottom = new CssBorderBottom();
+	left = new CssBorderLeft();*/
+/*
+	right.width  =  new CssBorderRightWidth((CssBorderFaceWidth) top.width.get());
+	left.width   =  new CssBorderLeftWidth((CssBorderFaceWidth) top.width.get());
+	bottom.width =  new CssBorderBottomWidth((CssBorderFaceWidth) top.width.get());
+
+	right.style  =  new CssBorderRightStyle((CssBorderFaceStyle) top.style.get());
+	left.style   =  new CssBorderLeftStyle((CssBorderFaceStyle) top.style.get());
+	bottom.style =  new CssBorderBottomStyle((CssBorderFaceStyle) top.style.get());
+
+	right.color  = 	new CssBorderRightColor((CssBorderFaceColor) top.color.get());
+	left.color   =  new CssBorderLeftColor((CssBorderFaceColor) top.color.get());
+	bottom.color =  new CssBorderBottomColor((CssBorderFaceColor) top.color.get());
+*/
+    }
+
+    public CssBorder(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return top.get();
+    }
+
+    /**
+     * Returns the top property
+     */
+    public CssBorderTop getTop() {
+	return top;
+    }
+
+    /**
+     * Returns the right property
+     */
+    public CssBorderRight getRight() {
+	return right;
+    }
+
+    /**
+     * Returns the bottom property
+     */
+    public CssBorderBottom getBottom() {
+	return bottom;
+    }
+
+    /**
+     * Returns the left property
+     */
+    public CssBorderLeft getLeft() {
+	return left;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if(top != null) {
+	    return top.toString();
+	}
+	return "";
+    }
+
+    public boolean equals(CssProperty property) {
+	return false; // FIXME
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border";
+    }
+
+    /**
+     * Set this property to be important.
+     * Overrides this method for a macro
+     */
+    public void setImportant() {
+	if(top != null) {
+	    top.setImportant();
+	}
+	if(right != null) {
+	    right.setImportant();
+	}
+	if(left != null) {
+	    left.setImportant();
+	}
+	if(bottom != null) {
+	    bottom.setImportant();
+	}
+    }
+
+    /**
+     * Returns true if this property is important.
+     * Overrides this method for a macro
+     */
+    public boolean getImportant() {
+	return (top.getImportant() &&
+		right.getImportant() &&
+		left.getImportant() &&
+		bottom.getImportant());
+    }
+
+    /**
+     * Print this property.
+     *
+     * @param printer The printer.
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	int printMacro = 0;
+
+	if ((top.width != null && bottom.width != null &&
+	     right.width != null && left.width != null) &&
+	    ((top.width.important && bottom.width.important &&
+	      right.width.important && left.width.important) ||
+	     (!top.width.important && !bottom.width.important &&
+	      !right.width.important && !left.width.important))) {
+	    CssBorderWidth width = new CssBorderWidth(top.width, bottom.width,
+						      right.width, left.width);
+	    if (top.important) {
+		width.setImportant();
+	    }
+	    printMacro = 1;
+	    width.print(printer);
+	}
+	if ((top.style != null && bottom.style != null &&
+	     right.style != null && left.style != null) &&
+	    ((top.style.important && bottom.style.important &&
+	      right.style.important && left.style.important) ||
+	     (!top.style.important && !bottom.style.important &&
+	      !right.style.important && !left.style.important))) {
+	    CssBorderStyle style = new CssBorderStyle(top.style, bottom.style,
+						      right.style, left.style);
+	    if (top.important) {
+		style.setImportant();
+	    }
+	    printMacro |= 2;
+	    style.print(printer);
+	}
+	if ((top.color != null && bottom.color != null &&
+	     right.color != null && left.color != null) &&
+	    ((top.color.important && bottom.color.important &&
+	      right.color.important && left.color.important) ||
+	     (!top.color.important && !bottom.color.important &&
+	      !right.color.important && !left.color.important))) {
+	    CssBorderColor color = new CssBorderColor(top.color, bottom.color,
+						      right.color, left.color);
+	    if (top.important) {
+		color.setImportant();
+	    }
+	    printMacro |= 4;
+	    color.print(printer);
+	}
+
+	if (printMacro == 0) {
+	    top.print(printer);
+	    right.print(printer);
+	    bottom.print(printer);
+	    left.print(printer);
+	} else {
+	    if ((printMacro & 1) == 0) {
+		if (top.width != null) top.width.print(printer);
+		if (right.width != null) right.width.print(printer);
+		if (bottom.width != null) bottom.width.print(printer);
+		if (left.width != null) left.width.print(printer);
+	    }
+	    if ((printMacro & 2) == 0) {
+		if (top.style != null) top.style.print(printer);
+		if (right.style != null) right.style.print(printer);
+		if (bottom.style != null) bottom.style.print(printer);
+		if (left.style != null) left.style.print(printer);
+	    }
+	    if ((printMacro & 4) == 0) {
+		if (top.color != null) top.color.print(printer);
+		if (right.color != null) right.color.print(printer);
+		if (bottom.color != null) bottom.color.print(printer);
+		if (left.color != null) left.color.print(printer);
+	    }
+	}
+
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors selector) {
+	super.setSelectors(selector);
+	if (top != null) {
+	    top.setSelectors(selector);
+	}
+	if (right != null) {
+	    right.setSelectors(selector);
+	}
+	if (bottom != null) {
+	    bottom.setSelectors(selector);
+	}
+	if (left != null) {
+	    left.setSelectors(selector);
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if(top != null) {
+	    top.addToStyle(ac, style);
+	}
+	if(right != null) {
+	    right.addToStyle(ac, style);
+	}
+	if(left != null) {
+	    left.addToStyle(ac, style);
+	}
+	if(bottom != null) {
+	    bottom.addToStyle(ac, style);
+	}
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBorder();
+	} else {
+	    return ((Css1Style) style).cssBorder;
+	}
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	//super.setInfo(line, source);
+	//top.setInfo(line, source);
+	//right.setInfo(line, source);
+	//left.setInfo(line, source);
+	//bottom.setInfo(line, source);
+    }
+
+    void check() {
+	//top.check();
+	//bottom.check();
+	//right.check();
+	//left.check();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderBottom.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,380 @@
+//
+// $Id: CssBorderBottom.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+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.CssOperator;
+import org.w3c.css.values.CssURL;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'border-bottom'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;border-bottom-width&gt; || &lt;border-style&gt; ||
+ *   &lt;color&gt;<BR>
+ *   <EM>Initial:</EM> not defined for shorthand properties<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   This is a shorthand property for setting the width, style and color of an
+ *   element's bottom border.
+ *   <PRE>
+ *   H1 { border-bottom: thick solid red }
+ * </PRE>
+ *   <P>
+ *   The above rule will set the width, style and color of the border below the
+ *   H1 element. Omitted values will be set to their initial values:
+ *   <PRE>
+ *   H1 { border-bottom: thick solid }
+ * </PRE>
+ *   <P>
+ *   Since the color value is omitted in the example above, the border color will
+ *   be the same as the 'color' value of the element itself.
+ *   <P>
+ *   Note that while the 'border-style' property accepts up to four values, this
+ *   property only accepts one style value.
+ *
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderBottom extends CssProperty implements CssOperator {
+
+    CssBorderBottomWidth width;
+    CssBorderBottomStyle style;
+    CssBorderBottomColor color;
+    CssValue uri = null;
+
+    /**
+     * Create a new CssBorderFace
+     */
+    public CssBorderBottom() {
+    }
+
+    /**
+     * Create a new CssBorderFace
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssBorderBottom(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = null;
+	char op = SPACE;
+	boolean find = true;
+
+	if(check && expression.getCount() > 4) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+
+	boolean manyValues = (expression.getCount() > 1);
+
+	while (find) {
+	    find = false;
+	    val = expression.getValue();
+	    op = expression.getOperator();
+
+	    if (val == null)
+		break;
+
+	    // if there are many values, we can't have inherit as one of them
+	    if(manyValues && val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", null, null, ac);
+	    }
+
+	    if (op != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(op)).toString()),
+						ac);
+
+	    if (width == null) {
+		try {
+		    width = new CssBorderBottomWidth(ac, expression);
+		    find = true;
+		} catch (InvalidParamException e) {
+		    // nothing to do, style will test this value
+		}
+	    }
+
+	    if (!find && style == null) {
+		try {
+		    style = new CssBorderBottomStyle(ac, expression);
+		    find = true;
+		}
+		catch (InvalidParamException e) {
+		    // nothing to do, color will test this value
+		}
+	    }
+
+	    if (!find && color == null) {
+		try {
+		    color = new CssBorderBottomColor(ac, expression);
+		    find = true;
+		}
+		catch (InvalidParamException e) {
+		    // nothing to do, uri will test this value
+		}
+	    }
+
+	    if (!find && uri == null) {
+		if (val instanceof CssURL) {
+		    uri = val;
+		    find = true;
+		}
+		else {
+		    // the value is invalid
+		    throw new InvalidParamException("unrecognize", ac);
+		}
+	    }
+	}
+	/*
+	if (width == null)
+	    width = new CssBorderBottomWidth();
+	if (style == null)
+	    style = new CssBorderBottomStyle();
+	if (color == null)
+	    color = new CssBorderBottomColor();
+	*/
+    }
+
+    public CssBorderBottom(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return width;
+    }
+
+    /**
+     * Returns the color property
+     */
+    public CssValue getColor() {
+	if (color != null) {
+	    return color.getColor();
+	} else {
+	    return null;
+	}
+    }
+
+    /**
+     * Returns the width property
+     */
+    public CssValue getWidth() {
+	if (width != null) {
+	    return width.getValue();
+	} else {
+	    return null;
+	}
+    }
+
+    /**
+     * Returns the style property
+     */
+    public String getStyle() {
+	if (style != null) {
+	    return style.getStyle();
+	} else {
+	    return null;
+	}
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	String ret = "";
+	if(width != null) {
+	    ret += width;
+	}
+	if(style != null) {
+	    if(!ret.equals("")) {
+		ret += " ";
+	    }
+	    ret += style;
+	}
+	if(color != null) {
+	    if(!ret.equals("")) {
+		ret += " ";
+	    }
+	    ret += color;
+	}
+	if (uri != null) {
+	    if(!ret.equals("")) {
+		ret += " ";
+	    }
+	    ret += " " + uri.toString();
+	}
+	return ret;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-bottom";
+    }
+
+    /**
+     * Set this property to be important.
+     * Overrides this method for a macro
+     */
+    public void setImportant() {
+	if(width != null) {
+	    width.important = true;
+	}
+	if(style != null) {
+	    style.important = true;
+	}
+	if(color != null) {
+	    color.important = true;
+	}
+    }
+
+    /**
+     * Returns true if this property is important.
+     * Overrides this method for a macro
+     */
+    public boolean getImportant() {
+	return ((width == null || width.important) &&
+		(style == null || style.important) &&
+		(color == null || color.important));
+    }
+
+    /**
+     * Print this property.
+     *
+     * @param printer The printer.
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	if ((width != null && style != null &&
+	     color != null) &&
+	    (getImportant() ||
+	     (!width.important &&
+	      !style.important &&
+	      !color.important))) {
+	    printer.print(this);
+	} else {
+	    if (width != null)
+		width.print(printer);
+	    if (style != null)
+		style.print(printer);
+	    if (color != null)
+		color.print(printer);
+	}
+
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if(width != null) {
+	    width.addToStyle(ac, style);
+	}
+	if(this.style != null) {
+	    this.style.addToStyle(ac, style);
+	}
+	if(color != null) {
+	    color.addToStyle(ac, style);
+	}
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBorderBottom();
+	} else {
+	    return ((Css1Style) style).cssBorder.getBottom();
+	}
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	super.setInfo(line, source);
+	if(width != null) {
+	    width.setInfo(line, source);
+	}
+	if(style != null) {
+	    style.setInfo(line, source);
+	}
+	if(color != null) {
+	    color.setInfo(line, source);
+	}
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors selector) {
+	super.setSelectors(selector);
+	if (width != null) {
+	    width.setSelectors(selector);
+	}
+	if (style != null) {
+	    style.setSelectors(selector);
+	}
+	if (color != null) {
+	    color.setSelectors(selector);
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	if (property instanceof CssBorderBottom) {
+	    CssBorderBottom bottom = (CssBorderBottom) property;
+	    return (width != null && width.equals(bottom.width) &&
+		    style != null && style.equals(bottom.style) &&
+		    color != null && color.equals(bottom.color));
+	} else {
+	    return false;
+	}
+    }
+
+    void check() {
+	if ((style != null)
+	    && (style.face.value == 0)) {
+	    if (width != null) {
+		width.face.value = new CssLength();
+	    }
+	}
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderBottomCSS1.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,348 @@
+//
+// $Id: CssBorderBottomCSS1.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+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.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'border-bottom'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;border-bottom-width&gt; || &lt;border-style&gt; ||
+ *   &lt;color&gt;<BR>
+ *   <EM>Initial:</EM> not defined for shorthand properties<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   This is a shorthand property for setting the width, style and color of an
+ *   element's bottom border.
+ *   <PRE>
+ *   H1 { border-bottom: thick solid red }
+ * </PRE>
+ *   <P>
+ *   The above rule will set the width, style and color of the border below the
+ *   H1 element. Omitted values will be set to their initial values:
+ *   <PRE>
+ *   H1 { border-bottom: thick solid }
+ * </PRE>
+ *   <P>
+ *   Since the color value is omitted in the example above, the border color will
+ *   be the same as the 'color' value of the element itself.
+ *   <P>
+ *   Note that while the 'border-style' property accepts up to four values, this
+ *   property only accepts one style value.
+ *
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderBottomCSS1 extends CssProperty implements CssOperator {
+
+    CssBorderBottomWidthCSS1 width;
+    CssBorderBottomStyleCSS1 style;
+    CssBorderBottomColorCSS1 color;
+
+    /**
+     * Create a new CssBorderFaceCSS1
+     */
+    public CssBorderBottomCSS1() {
+    }
+
+    /**
+     * Create a new CssBorderFace
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssBorderBottomCSS1(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	CssValue val = null;
+	char op = SPACE;
+	boolean find = true;
+
+	if(check && expression.getCount() > 3) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+
+	while (find) {
+	    find = false;
+	    val = expression.getValue();
+	    op = expression.getOperator();
+
+	    if (val == null)
+		break;
+
+	    if (op != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(op)).toString()),
+						ac);
+
+	    if (width == null) {
+		try {
+		    width = new CssBorderBottomWidthCSS1(ac, expression);
+		    find = true;
+		} catch (InvalidParamException e) {
+		    // nothing to do, style will test this value
+		}
+	    }
+	    if (!find && style == null) {
+		try {
+		    style = new CssBorderBottomStyleCSS1(ac, expression);
+		    find = true;
+		}
+		catch (InvalidParamException e) {
+		    // nothing to do, color will test this value
+		}
+	    }
+	    if (!find && color == null) {
+		color = new CssBorderBottomColorCSS1(ac, expression);
+		find = true;
+	    }
+	}
+	/*
+	if (width == null)
+	    width = new CssBorderBottomWidthCSS1();
+	if (style == null)
+	    style = new CssBorderBottomStyleCSS1();
+	if (color == null)
+	    color = new CssBorderBottomColorCSS1();
+	*/
+    }
+
+    public CssBorderBottomCSS1(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return width;
+    }
+
+    /**
+     * Returns the color property
+     */
+    public CssValue getColor() {
+	if (color != null) {
+	    return color.getColor();
+	} else {
+	    return null;
+	}
+    }
+
+    /**
+     * Returns the width property
+     */
+    public CssValue getWidth() {
+	if (width != null) {
+	    return width.getValue();
+	} else {
+	    return null;
+	}
+    }
+
+    /**
+     * Returns the style property
+     */
+    public String getStyle() {
+	if (style != null) {
+	    return style.getStyle();
+	} else {
+	    return null;
+	}
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	String ret = "";
+	if(width != null) {
+	    ret += width;
+	}
+	if(style != null) {
+	    if(!ret.equals("")) {
+		ret += " ";
+	    }
+	    ret += style;
+	}
+	if(color != null) {
+	    if(!ret.equals("")) {
+		ret += " ";
+	    }
+	    ret += color;
+	}
+	return ret;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-bottom";
+    }
+
+    /**
+     * Set this property to be important.
+     * Overrides this method for a macro
+     */
+    public void setImportant() {
+	if(width != null) {
+	    width.important = true;
+	}
+	if(style != null) {
+	    style.important = true;
+	}
+	if(color != null) {
+	    color.important = true;
+	}
+    }
+
+    /**
+     * Returns true if this property is important.
+     * Overrides this method for a macro
+     */
+    public boolean getImportant() {
+	return ((width == null || width.important) &&
+		(style == null || style.important) &&
+		(color == null || color.important));
+    }
+
+    /**
+     * Print this property.
+     *
+     * @param printer The printer.
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	if ((width != null && style != null &&
+	     color != null) &&
+	    (getImportant() ||
+	     (!width.important &&
+	      !style.important &&
+	      !color.important))) {
+	    printer.print(this);
+	} else {
+	    if (width != null)
+		width.print(printer);
+	    if (style != null)
+		style.print(printer);
+	    if (color != null)
+		color.print(printer);
+	}
+
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if(width != null) {
+	    width.addToStyle(ac, style);
+	}
+	if(this.style != null) {
+	    this.style.addToStyle(ac, style);
+	}
+	if(color != null) {
+	    color.addToStyle(ac, style);
+	}
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBorderBottomCSS1();
+	} else {
+	    return ((Css1Style) style).cssBorderCSS1.getBottom();
+	}
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	super.setInfo(line, source);
+	if(width != null) {
+	    width.setInfo(line, source);
+	}
+	if(style != null) {
+	    style.setInfo(line, source);
+	}
+	if(color != null) {
+	    color.setInfo(line, source);
+	}
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors selector) {
+	super.setSelectors(selector);
+	if (width != null) {
+	    width.setSelectors(selector);
+	}
+	if (style != null) {
+	    style.setSelectors(selector);
+	}
+	if (color != null) {
+	    color.setSelectors(selector);
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	if (property instanceof CssBorderBottomCSS1) {
+	    CssBorderBottomCSS1 bottom = (CssBorderBottomCSS1) property;
+	    return (width != null && width.equals(bottom.width) &&
+		    style != null && style.equals(bottom.style) &&
+		    color != null && color.equals(bottom.color));
+	} else {
+	    return false;
+	}
+    }
+
+    void check() {
+	if ((style != null)
+	    && (style.face.value == 0)) {
+	    if (width != null) {
+		width.face.value = new CssLength();
+	    }
+	}
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderBottomCSS2.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,379 @@
+//
+// $Id: CssBorderBottomCSS2.java,v 1.4 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+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.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'border-bottom'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;border-bottom-width&gt; || &lt;border-style&gt; ||
+ *   &lt;color&gt;<BR>
+ *   <EM>Initial:</EM> not defined for shorthand properties<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   This is a shorthand property for setting the width, style and color of an
+ *   element's bottom border.
+ *   <PRE>
+ *   H1 { border-bottom: thick solid red }
+ * </PRE>
+ *   <P>
+ *   The above rule will set the width, style and color of the border below the
+ *   H1 element. Omitted values will be set to their initial values:
+ *   <PRE>
+ *   H1 { border-bottom: thick solid }
+ * </PRE>
+ *   <P>
+ *   Since the color value is omitted in the example above, the border color will
+ *   be the same as the 'color' value of the element itself.
+ *   <P>
+ *   Note that while the 'border-style' property accepts up to four values, this
+ *   property only accepts one style value.
+ *
+ * @version $Revision: 1.4 $
+ */
+public class CssBorderBottomCSS2 extends CssProperty implements CssOperator {
+
+    CssBorderBottomWidthCSS2 width;
+    CssBorderBottomStyleCSS2 style;
+    CssBorderBottomColorCSS2 color;
+
+    /**
+     * Create a new CssBorderFaceCSS2
+     */
+    public CssBorderBottomCSS2() {
+    }
+
+    /**
+     * Create a new CssBorderFace
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssBorderBottomCSS2(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	CssValue val = null;
+	char op = SPACE;
+	boolean find = true;
+
+	if(expression.getCount() > 3) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	boolean manyValues = (expression.getCount() > 1);
+
+	setByUser();
+
+	while (find) {
+	    find = false;
+	    val = expression.getValue();
+	    op = expression.getOperator();
+	    if (val == null)
+		break;
+
+	    // if there are many values, we can't have inherit as one of them
+	    if(manyValues && val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", null, null, ac);
+	    }
+
+	    if (op != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(op)).toString()),
+						ac);
+	    if (width == null) {
+		try {
+		    width = new CssBorderBottomWidthCSS2(ac, expression);
+		    find = true;
+		} catch(InvalidParamException e){
+		    // nothing to do, style will test this value
+		}
+	    }
+	    if (!find && style == null) {
+		try {
+		    style = new CssBorderBottomStyleCSS2(ac, expression);
+		    find = true;
+		} catch(InvalidParamException e){
+		    // nothing to do, color will test this value
+		}
+	    }
+	    if (!find && color == null) {
+		// throws an exception if the value is not valid
+		color = new CssBorderBottomColorCSS2(ac, expression);
+		find = true;
+	    }
+	}
+
+	//if some values have not been set, we set them with their default ones
+	/*
+	if (width == null) {
+	    width = new CssBorderBottomWidthCSS2();
+	}
+	if (style == null) {
+	    style = new CssBorderBottomStyleCSS2();
+	}
+	if (color == null) {
+	    color = new CssBorderBottomColorCSS2();
+	}
+	*/
+    }
+
+    public CssBorderBottomCSS2(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * @param color The color to set.
+     */
+    public void setColor(CssBorderBottomColorCSS2 color) {
+        this.color = color;
+    }
+
+    /**
+     * @param style The style to set.
+     */
+    public void setStyle(CssBorderBottomStyleCSS2 style) {
+        this.style = style;
+    }
+
+    /**
+     * @param width The width to set.
+     */
+    public void setWidth(CssBorderBottomWidthCSS2 width) {
+        this.width = width;
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return width;
+    }
+
+    /**
+     * Returns the color property
+     */
+    public CssValue getColor() {
+	if (color != null) {
+	    return color.getColor();
+	} else {
+	    return null;
+	}
+    }
+
+    /**
+     * Returns the width property
+     */
+    public CssValue getWidth() {
+	if (width != null) {
+	    return width.getValue();
+	} else {
+	    return null;
+	}
+    }
+
+    /**
+     * Returns the style property
+     */
+    public String getStyle() {
+	if (style != null) {
+	    return style.getStyle();
+	} else {
+	    return null;
+	}
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	String ret = "";
+	if(width != null) {
+	    ret += width;
+	}
+	if(style != null) {
+	    if(!ret.equals("")) {
+		ret += " ";
+	    }
+	    ret += style;
+	}
+	if(color != null) {
+	    if(!ret.equals("")) {
+		ret += " ";
+	    }
+	    ret += color;
+	}
+	return ret;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-bottom";
+    }
+
+    /**
+     * Set this property to be important.
+     * Overrides this method for a macro
+     */
+    public void setImportant() {
+	if(width != null) {
+	    width.important = true;
+	}
+	if(style != null) {
+	    style.important = true;
+	}
+	if(color != null) {
+	    color.important = true;
+	}
+    }
+
+    /**
+     * Returns true if this property is important.
+     * Overrides this method for a macro
+     */
+    public boolean getImportant() {
+	return ((width == null || width.important) &&
+		(style == null || style.important) &&
+		(color == null || color.important));
+    }
+
+    /**
+     * Print this property.
+     *
+     * @param printer The printer.
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	if ((width != null && style != null &&
+	     color != null) &&
+	    (getImportant() ||
+	     (!width.important &&
+	      !style.important &&
+	      !color.important))) {
+	    printer.print(this);
+	} else {
+	    if (width != null)
+		width.print(printer);
+	    if (style != null)
+		style.print(printer);
+	    if (color != null)
+		color.print(printer);
+	}
+
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if(width != null) {
+	    width.addToStyle(ac, style);
+	}
+	if(this.style != null) {
+	    this.style.addToStyle(ac, style);
+	}
+	if(color != null) {
+	    color.addToStyle(ac, style);
+	}
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBorderBottomCSS2();
+	} else {
+	    return ((Css1Style) style).cssBorderCSS2.getBottom();
+	}
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	super.setInfo(line, source);
+	if(width != null) {
+	    width.setInfo(line, source);
+	}
+	if(style != null) {
+	    style.setInfo(line, source);
+	}
+	if(color != null) {
+	    color.setInfo(line, source);
+	}
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors selector) {
+	super.setSelectors(selector);
+	if (width != null) {
+	    width.setSelectors(selector);
+	}
+	if (style != null) {
+	    style.setSelectors(selector);
+	}
+	if (color != null) {
+	    color.setSelectors(selector);
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	if (property instanceof CssBorderBottomCSS2) {
+	    CssBorderBottomCSS2 bottom = (CssBorderBottomCSS2) property;
+	    return (width != null && width.equals(bottom.width)
+		    && style != null && style.equals(bottom.style)
+		    && color != null && color.equals(bottom.color));
+	} else {
+	    return false;
+	}
+    }
+
+    void check() {
+	if ((style != null)
+	    && (style.face.value == 0)) {
+	    if (width != null) {
+		width.face.value = new CssLength();
+	    }
+	}
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderBottomColor.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,145 @@
+//
+// $Id: CssBorderBottomColor.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+/**
+ * Be careful, this is not a CSS1 property !
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderBottomColor extends CssProperty {
+
+  CssBorderFaceColor face;
+
+  /**
+   * Create a new CssBorderBottomColor
+   */
+  public CssBorderBottomColor() {
+    face = new CssBorderFaceColor();
+  }
+
+  /**
+   * Create a new CssBorderBottomColor with an another CssBorderFaceColor
+   *
+   * @param another An another face.
+   */
+  public CssBorderBottomColor(CssBorderFaceColor another) {
+
+      setByUser();
+
+    face = another;
+  }
+
+  /**
+   * Create a new CssBorderBottomColor
+   *
+   * @param expression The expression for this property.
+   * @exception InvalidParamException Values are incorrect
+   */
+  public CssBorderBottomColor(ApplContext ac, CssExpression expression,
+	  boolean check) throws InvalidParamException {
+
+      if(check && expression.getCount() > 1) {
+	  throw new InvalidParamException("unrecognize", ac);
+      }
+
+      setByUser();
+      face = new CssBorderFaceColor(ac, expression);
+  }
+
+  public CssBorderBottomColor(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+  }
+
+  /**
+   * Returns the value of this property
+   */
+  public Object get() {
+    return face;
+  }
+
+  /**
+   * Returns the color of this property
+   */
+  public CssValue getColor() {
+      if(face != null) {
+	  return face.getColor();
+      }
+      return null;
+  }
+
+  /**
+   * Returns a string representation of the object.
+   */
+  public String toString() {
+      if(face != null) {
+	  return face.toString();
+      }
+      return "";
+  }
+
+  /**
+   * Returns the name of this property
+   */
+  public String getPropertyName() {
+    return "border-bottom-color";
+  }
+
+  /**
+   * Add this property to the CssStyle.
+   *
+   * @param style The CssStyle
+   */
+  public void addToStyle(ApplContext ac, CssStyle style) {
+    CssBorderBottom bottom = ((Css1Style) style).cssBorder.bottom;
+    if (bottom.color != null)
+      style.addRedefinitionWarning(ac, this);
+    bottom.color = this;
+  }
+
+  /**
+   * Get this property in the style.
+   *
+   * @param style The style where the property is
+   * @param resolve if true, resolve the style to find this property
+   */
+  public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+    if (resolve) {
+      return ((Css1Style) style).getBorderBottomColor();
+    } else {
+      return ((Css1Style) style).cssBorder.getBottom().color;
+    }
+  }
+
+  /**
+   * Compares two properties for equality.
+   *
+   * @param value The other property.
+   */
+  public boolean equals(CssProperty property) {
+    return (property instanceof CssBorderBottomColor && face.equals(((CssBorderBottomColor) property).face));
+  }
+
+  /**
+   * Print this property.
+   *
+   * @param printer The printer.
+   * @see #toString()
+   * @see #getPropertyName()
+   */
+  public void print(CssPrinterStyle printer) {
+    if (face != null && !face.isDefault())
+      printer.print(this);
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderBottomColorCSS1.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,145 @@
+//
+// $Id: CssBorderBottomColorCSS1.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+/**
+ * Be careful, this is not a CSS1 property !
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderBottomColorCSS1 extends CssProperty {
+
+  CssBorderFaceColorCSS1 face;
+
+  /**
+   * Create a new CssBorderBottomColorCSS1
+   */
+  public CssBorderBottomColorCSS1() {
+    face = new CssBorderFaceColorCSS1();
+  }
+
+  /**
+   * Create a new CssBorderBottomColor with an another CssBorderFaceColor
+   *
+   * @param another An another face.
+   */
+  public CssBorderBottomColorCSS1(CssBorderFaceColorCSS1 another) {
+
+      setByUser();
+
+    face = another;
+  }
+
+  /**
+   * Create a new CssBorderBottomColor
+   *
+   * @param expression The expression for this property.
+   * @exception InvalidParamException Values are incorrect
+   */
+  public CssBorderBottomColorCSS1(ApplContext ac, CssExpression expression,
+	  boolean check) throws InvalidParamException {
+
+      if(check && expression.getCount() > 1) {
+	  throw new InvalidParamException("unrecognize", ac);
+      }
+
+      setByUser();
+      face = new CssBorderFaceColorCSS1(ac, expression);
+  }
+
+  public CssBorderBottomColorCSS1(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+  }
+
+  /**
+   * Returns the value of this property
+   */
+  public Object get() {
+    return face;
+  }
+
+  /**
+   * Returns the color of this property
+   */
+  public CssValue getColor() {
+      if(face != null) {
+	  return face.getColor();
+      }
+      return null;
+  }
+
+  /**
+   * Returns a string representation of the object.
+   */
+  public String toString() {
+      if(face != null) {
+	  return face.toString();
+      }
+      return "";
+  }
+
+  /**
+   * Returns the name of this property
+   */
+  public String getPropertyName() {
+    return "border-bottom-color";
+  }
+
+  /**
+   * Add this property to the CssStyle.
+   *
+   * @param style The CssStyle
+   */
+  public void addToStyle(ApplContext ac, CssStyle style) {
+    CssBorderBottomCSS1 bottom = ((Css1Style) style).cssBorderCSS1.bottom;
+    if (bottom.color != null)
+      style.addRedefinitionWarning(ac, this);
+    bottom.color = this;
+  }
+
+  /**
+   * Get this property in the style.
+   *
+   * @param style The style where the property is
+   * @param resolve if true, resolve the style to find this property
+   */
+  public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+    if (resolve) {
+      return ((Css1Style) style).getBorderBottomColorCSS1();
+    } else {
+      return ((Css1Style) style).cssBorderCSS1.getBottom().color;
+    }
+  }
+
+  /**
+   * Compares two properties for equality.
+   *
+   * @param value The other property.
+   */
+  public boolean equals(CssProperty property) {
+    return (property instanceof CssBorderBottomColorCSS1 && face.equals(((CssBorderBottomColorCSS1) property).face));
+  }
+
+  /**
+   * Print this property.
+   *
+   * @param printer The printer.
+   * @see #toString()
+   * @see #getPropertyName()
+   */
+  public void print(CssPrinterStyle printer) {
+    if (face != null && !face.isDefault())
+      printer.print(this);
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderBottomColorCSS2.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,153 @@
+//
+// $Id: CssBorderBottomColorCSS2.java,v 1.4 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+/**
+ * Be careful, this is not a CSS1 property !
+ * @version $Revision: 1.4 $
+ */
+public class CssBorderBottomColorCSS2 extends CssProperty {
+
+    CssBorderFaceColorCSS2 face;
+
+    /**
+     * Create a new CssBorderBottomColorCSS2
+     */
+    public CssBorderBottomColorCSS2() {
+	face = new CssBorderFaceColorCSS2();
+    }
+
+    /**
+     * Create a new CssBorderBottomColor with an another CssBorderFaceColor
+     *
+     * @param another An another face.
+     */
+    public CssBorderBottomColorCSS2(CssBorderFaceColorCSS2 another) {
+
+	setByUser();
+
+	face = another;
+    }
+
+    /**
+     * Create a new CssBorderBottomColor
+     *
+     * @param expression The expression for this property.
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderBottomColorCSS2(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	face = new CssBorderFaceColorCSS2(ac, expression);
+    }
+
+    public CssBorderBottomColorCSS2(ApplContext ac, CssExpression expression)
+    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return face;
+    }
+
+    /**
+     * @return Returns the face.
+     */
+    public CssBorderFaceColorCSS2 getFace() {
+	return face;
+    }
+
+    /**
+     * @param face The face to set.
+     */
+    public void setFace(CssBorderFaceColorCSS2 face) {
+	this.face = face;
+    }
+
+    /**
+     * Returns the color of this property
+     */
+    public CssValue getColor() {
+	return face.getColor();
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return face.toString();
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-bottom-color";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBorderBottomCSS2 bottom = ((Css1Style) style).cssBorderCSS2.bottom;
+	if (bottom.color != null)
+	    style.addRedefinitionWarning(ac, this);
+	bottom.color = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBorderBottomColorCSS2();
+	} else {
+	    return ((Css1Style) style).cssBorderCSS2.getBottom().color;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderBottomColorCSS2 && face.equals(((CssBorderBottomColorCSS2) property).face));
+    }
+
+    /**
+     * Print this property.
+     *
+     * @param printer The printer.
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	if (face != null && !face.isDefault())
+	    printer.print(this);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderBottomStyle.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,131 @@
+//
+// $Id: CssBorderBottomStyle.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+/**
+ * Be careful, this is not a CSS1 property !
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderBottomStyle extends CssProperty {
+
+  CssBorderFaceStyle face;
+
+  /**
+   * Create a new CssBorderBottomStyle
+   */
+  public CssBorderBottomStyle() {
+    face = new CssBorderFaceStyle();
+  }
+
+  /**
+   * Create a new CssBorderBottomStyle with an another CssBorderFaceStyle
+   * @param another The another side.
+   */
+  public CssBorderBottomStyle(CssBorderFaceStyle another) {
+	setByUser();
+
+    face = another;
+  }
+
+  /**
+   * Create a new CssBorderBottomStyle eith an expression
+   *
+   * @param expression The expression for this property.
+   * @exception InvalidParamException Values are incorrect
+   */
+  public CssBorderBottomStyle(ApplContext ac, CssExpression expression,
+	  boolean check) throws InvalidParamException {
+
+      if(check && expression.getCount() > 1) {
+	  throw new InvalidParamException("unrecognize", ac);
+      }
+
+      setByUser();
+      face = new CssBorderFaceStyle(ac, expression);
+  }
+
+  public CssBorderBottomStyle(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+  }
+
+  /**
+   * Returns the value of this property
+   */
+  public Object get() {
+    return face;
+  }
+
+  /**
+   * Returns the value
+   */
+  public String getStyle() {
+      if(face != null) {
+	  return face.getStyle();
+      }
+      return null;
+  }
+
+  /**
+   * Returns a string representation of the object.
+   */
+  public String toString() {
+      if(face != null) {
+	  return face.toString();
+      }
+      return "";
+  }
+
+  /**
+   * Returns the name of this property
+   */
+  public String getPropertyName() {
+    return "border-bottom-style";
+  }
+
+  /**
+   * Add this property to the CssStyle.
+   *
+   * @param style The CssStyle
+   */
+  public void addToStyle(ApplContext ac, CssStyle style) {
+    CssBorderBottom bottom = ((Css1Style) style).cssBorder.bottom;
+    if (bottom.style != null)
+      style.addRedefinitionWarning(ac, this);
+    bottom.style = this;
+  }
+
+  /**
+   * Get this property in the style.
+   *
+   * @param style The style where the property is
+   * @param resolve if true, resolve the style to find this property
+   */
+  public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+    if (resolve) {
+      return ((Css1Style) style).getBorderBottomStyle();
+    } else {
+      return ((Css1Style) style).cssBorder.getBottom().style;
+    }
+  }
+
+  /**
+   * Compares two properties for equality.
+   *
+   * @param value The other property.
+   */
+  public boolean equals(CssProperty property) {
+    return (property instanceof CssBorderBottomStyle &&
+	    face.equals(((CssBorderBottomStyle) property).face));
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderBottomStyleCSS1.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,131 @@
+//
+// $Id: CssBorderBottomStyleCSS1.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+/**
+ * Be careful, this is not a CSS1 property !
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderBottomStyleCSS1 extends CssProperty {
+
+  CssBorderFaceStyleCSS1 face;
+
+  /**
+   * Create a new CssBorderBottomStyleCSS1
+   */
+  public CssBorderBottomStyleCSS1() {
+    face = new CssBorderFaceStyleCSS1();
+  }
+
+  /**
+   * Create a new CssBorderBottomStyleCSS1 with an another CssBorderFaceStyleCSS1
+   * @param another The another side.
+   */
+  public CssBorderBottomStyleCSS1(CssBorderFaceStyleCSS1 another) {
+	setByUser();
+
+    face = another;
+  }
+
+  /**
+   * Create a new CssBorderBottomStyle eith an expression
+   *
+   * @param expression The expression for this property.
+   * @exception InvalidParamException Values are incorrect
+   */
+  public CssBorderBottomStyleCSS1(ApplContext ac, CssExpression expression,
+	  boolean check) throws InvalidParamException {
+
+      if(check && expression.getCount() > 1) {
+	  throw new InvalidParamException("unrecognize", ac);
+      }
+
+      setByUser();
+      face = new CssBorderFaceStyleCSS1(ac, expression);
+  }
+
+  public CssBorderBottomStyleCSS1(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+  }
+
+  /**
+   * Returns the value of this property
+   */
+  public Object get() {
+    return face;
+  }
+
+  /**
+   * Returns the value
+   */
+  public String getStyle() {
+      if(face != null) {
+	  return face.getStyle();
+      }
+      return null;
+  }
+
+  /**
+   * Returns a string representation of the object.
+   */
+  public String toString() {
+      if(face != null) {
+	  return face.toString();
+      }
+      return "";
+  }
+
+  /**
+   * Returns the name of this property
+   */
+  public String getPropertyName() {
+    return "border-bottom-style";
+  }
+
+  /**
+   * Add this property to the CssStyle.
+   *
+   * @param style The CssStyle
+   */
+  public void addToStyle(ApplContext ac, CssStyle style) {
+    CssBorderBottomCSS1 bottom = ((Css1Style) style).cssBorderCSS1.bottom;
+    if (bottom.style != null)
+      style.addRedefinitionWarning(ac, this);
+    bottom.style = this;
+  }
+
+  /**
+   * Get this property in the style.
+   *
+   * @param style The style where the property is
+   * @param resolve if true, resolve the style to find this property
+   */
+  public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+    if (resolve) {
+      return ((Css1Style) style).getBorderBottomStyleCSS1();
+    } else {
+      return ((Css1Style) style).cssBorderCSS1.getBottom().style;
+    }
+  }
+
+  /**
+   * Compares two properties for equality.
+   *
+   * @param value The other property.
+   */
+  public boolean equals(CssProperty property) {
+    return (property instanceof CssBorderBottomStyleCSS1 &&
+	    face.equals(((CssBorderBottomStyleCSS1) property).face));
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderBottomStyleCSS2.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,130 @@
+//
+// $Id: CssBorderBottomStyleCSS2.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+/**
+ * Be careful, this is not a CSS1 property !
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderBottomStyleCSS2 extends CssProperty {
+
+  CssBorderFaceStyleCSS2 face;
+
+  /**
+   * Create a new CssBorderBottomStyleCSS2
+   */
+  public CssBorderBottomStyleCSS2() {
+    face = new CssBorderFaceStyleCSS2();
+  }
+
+  /**
+   * Create a new CssBorderBottomStyleCSS2 with an another CssBorderFaceStyleCSS2
+   * @param another The another side.
+   */
+  public CssBorderBottomStyleCSS2(CssBorderFaceStyleCSS2 another) {
+	setByUser();
+
+    face = another;
+  }
+
+  /**
+   * Create a new CssBorderBottomStyle eith an expression
+   *
+   * @param expression The expression for this property.
+   * @exception InvalidParamException Values are incorrect
+   */
+  public CssBorderBottomStyleCSS2(ApplContext ac, CssExpression expression,
+	  boolean check) throws InvalidParamException {
+
+      if(check && expression.getCount() > 1) {
+	  throw new InvalidParamException("unrecognize", ac);
+      }
+
+      setByUser();
+      face = new CssBorderFaceStyleCSS2(ac, expression);
+  }
+
+  public CssBorderBottomStyleCSS2(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+  }
+
+  /**
+   * Returns the value of this property
+   */
+  public Object get() {
+    return face;
+  }
+
+  /**
+   * Returns the value
+   */
+  public String getStyle() {
+      if(face != null) {
+	  return face.getStyle();
+      }
+      return null;
+  }
+
+  /**
+   * Returns a string representation of the object.
+   */
+  public String toString() {
+      if(face != null) {
+	  return face.toString();
+      }
+      return "";
+  }
+
+  /**
+   * Returns the name of this property
+   */
+  public String getPropertyName() {
+    return "border-bottom-style";
+  }
+
+  /**
+   * Add this property to the CssStyle.
+   *
+   * @param style The CssStyle
+   */
+  public void addToStyle(ApplContext ac, CssStyle style) {
+    CssBorderBottomCSS2 bottom = ((Css1Style) style).cssBorderCSS2.bottom;
+    if (bottom.style != null)
+      style.addRedefinitionWarning(ac, this);
+    bottom.style = this;
+  }
+
+  /**
+   * Get this property in the style.
+   *
+   * @param style The style where the property is
+   * @param resolve if true, resolve the style to find this property
+   */
+  public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+    if (resolve) {
+      return ((Css1Style) style).getBorderBottomStyleCSS2();
+    } else {
+      return ((Css1Style) style).cssBorderCSS2.getBottom().style;
+    }
+  }
+
+  /**
+   * Compares two properties for equality.
+   *
+   * @param value The other property.
+   */
+  public boolean equals(CssProperty property) {
+    return (property instanceof CssBorderBottomStyleCSS2 && face.equals(((CssBorderBottomStyleCSS2) property).face));
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderBottomWidth.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,157 @@
+//
+// $Id: CssBorderBottomWidth.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *      &nbsp;&nbsp; 'border-bottom-width'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> thin | medium | thick | &lt;length&gt;<BR>
+ *   <EM>Initial:</EM> 'medium'<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P> This property sets the width of an element's bottom border. The width
+ *   of the keyword values are UA dependent, but the following holds: 'thin'
+ *   &lt;= 'medium' &lt;= 'thick'.
+ *   <P>
+ *   The keyword widths are constant throughout a document:
+ *   <PRE>
+ *   H1 { border: solid thick red }
+ *   P  { border: solid thick blue }
+ * </PRE>
+ *   <P>
+ *   In the example above, 'H1' and 'P' elements will have the same border width
+ *   regardless of font size. To achieve relative widths, the 'em' unit can be
+ *   used:
+ *   <PRE>
+ *   H1 { border: solid 0.5em }
+ * </PRE>
+ *   <P>
+ *   Border widths cannot be negative.
+ * @version $Revision: 1.3 $ */
+public class CssBorderBottomWidth extends CssProperty {
+
+  CssBorderFaceWidth face;
+
+  /**
+   * Create a new CssBorderBottomWidth
+   */
+  public CssBorderBottomWidth() {
+    face = new CssBorderFaceWidth();
+  }
+
+  /**
+   * Create a new CssBorderBottomWidth with an another CssBorderFaceWidth
+   *
+   * @param another An another face.
+   */
+  public CssBorderBottomWidth(CssBorderFaceWidth another) {
+	setByUser();
+
+    face = another;
+  }
+
+  /**
+   * Create a new CssBorderBottomWidth
+   *
+   * @param expression The expression for this property.
+   * @exception InvalidParamException Values are incorrect
+   */
+  public CssBorderBottomWidth(ApplContext ac, CssExpression expression,
+	  boolean check) throws InvalidParamException {
+
+      if(check && expression.getCount() > 1) {
+	  throw new InvalidParamException("unrecognize", ac);
+      }
+
+      setByUser();
+      face = new CssBorderFaceWidth(ac, expression);
+  }
+
+  public CssBorderBottomWidth(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+  }
+
+  /**
+   * Returns the value of this property
+   */
+  public Object get() {
+    return face;
+  }
+
+  /**
+   * Return the value of this property
+   */
+  public CssValue getValue() {
+      if(face != null) {
+	  return face.getValue();
+      }
+      return null;
+  }
+
+  /**
+   * Returns a string representation of the object.
+   */
+  public String toString() {
+      if(face != null) {
+	  return face.toString();
+      }
+      return "";
+  }
+
+  /**
+   * Returns the name of this property
+   */
+  public String getPropertyName() {
+    return "border-bottom-width";
+  }
+
+  /**
+   * Add this property to the CssStyle.
+   *
+   * @param style The CssStyle
+   */
+  public void addToStyle(ApplContext ac, CssStyle style) {
+    CssBorderBottom bottom = ((Css1Style) style).cssBorder.bottom;
+    if (bottom.width != null)
+      style.addRedefinitionWarning(ac, this);
+    bottom.width = this;
+  }
+
+  /**
+   * Get this property in the style.
+   *
+   * @param style The style where the property is
+   * @param resolve if true, resolve the style to find this property
+   */
+  public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+    if (resolve) {
+      return ((Css1Style) style).getBorderBottomWidth();
+    } else {
+      return ((Css1Style) style).cssBorder.getBottom().width;
+    }
+  }
+
+  /**
+   * Compares two properties for equality.
+   *
+   * @param value The other property.
+   */
+  public boolean equals(CssProperty property) {
+    return (property instanceof CssBorderBottomWidth && face.equals(((CssBorderBottomWidth) property).face));
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderBottomWidthCSS1.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,158 @@
+//
+// $Id: CssBorderBottomWidthCSS1.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *      &nbsp;&nbsp; 'border-bottom-width'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> thin | medium | thick | &lt;length&gt;<BR>
+ *   <EM>Initial:</EM> 'medium'<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P> This property sets the width of an element's bottom border. The width
+ *   of the keyword values are UA dependent, but the following holds: 'thin'
+ *   &lt;= 'medium' &lt;= 'thick'.
+ *   <P>
+ *   The keyword widths are constant throughout a document:
+ *   <PRE>
+ *   H1 { border: solid thick red }
+ *   P  { border: solid thick blue }
+ * </PRE>
+ *   <P>
+ *   In the example above, 'H1' and 'P' elements will have the same border width
+ *   regardless of font size. To achieve relative widths, the 'em' unit can be
+ *   used:
+ *   <PRE>
+ *   H1 { border: solid 0.5em }
+ * </PRE>
+ *   <P>
+ *   Border widths cannot be negative.
+ * @version $Revision: 1.3 $ */
+public class CssBorderBottomWidthCSS1 extends CssProperty {
+
+  CssBorderFaceWidthCSS1 face;
+
+  /**
+   * Create a new CssBorderBottomWidth
+   */
+  public CssBorderBottomWidthCSS1() {
+    face = new CssBorderFaceWidthCSS1();
+  }
+
+  /**
+   * Create a new CssBorderBottomWidth with an another CssBorderFaceWidth
+   *
+   * @param another An another face.
+   */
+  public CssBorderBottomWidthCSS1(CssBorderFaceWidthCSS1 another) {
+	setByUser();
+
+    face = another;
+  }
+
+  /**
+   * Create a new CssBorderBottomWidth
+   *
+   * @param expression The expression for this property.
+   * @exception InvalidParamException Values are incorrect
+   */
+  public CssBorderBottomWidthCSS1(ApplContext ac, CssExpression expression,
+	  boolean check) throws InvalidParamException {
+
+      if(check && expression.getCount() > 1) {
+	  throw new InvalidParamException("unrecognize", ac);
+      }
+
+      setByUser();
+      face = new CssBorderFaceWidthCSS1(ac, expression);
+  }
+
+  public CssBorderBottomWidthCSS1(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+  }
+
+  /**
+   * Returns the value of this property
+   */
+  public Object get() {
+    return face;
+  }
+
+  /**
+   * Return the value of this property
+   */
+  public CssValue getValue() {
+      if(face != null) {
+	  return face.getValue();
+      }
+      return null;
+  }
+
+  /**
+   * Returns a string representation of the object.
+   */
+  public String toString() {
+      if(face != null) {
+	  return face.toString();
+      }
+      return "";
+  }
+
+  /**
+   * Returns the name of this property
+   */
+  public String getPropertyName() {
+    return "border-bottom-width";
+  }
+
+  /**
+   * Add this property to the CssStyle.
+   *
+   * @param style The CssStyle
+   */
+  public void addToStyle(ApplContext ac, CssStyle style) {
+    CssBorderBottomCSS1 bottom = ((Css1Style) style).cssBorderCSS1.bottom;
+    if (bottom.width != null)
+      style.addRedefinitionWarning(ac, this);
+    bottom.width = this;
+  }
+
+  /**
+   * Get this property in the style.
+   *
+   * @param style The style where the property is
+   * @param resolve if true, resolve the style to find this property
+   */
+  public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+    if (resolve) {
+      return ((Css1Style) style).getBorderBottomWidthCSS1();
+    } else {
+      return ((Css1Style) style).cssBorderCSS1.getBottom().width;
+    }
+  }
+
+  /**
+   * Compares two properties for equality.
+   *
+   * @param value The other property.
+   */
+  public boolean equals(CssProperty property) {
+    return (property instanceof CssBorderBottomWidthCSS1 &&
+	    face.equals(((CssBorderBottomWidthCSS1) property).face));
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderBottomWidthCSS2.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,158 @@
+//
+// $Id: CssBorderBottomWidthCSS2.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *      &nbsp;&nbsp; 'border-bottom-width'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> thin | medium | thick | &lt;length&gt;<BR>
+ *   <EM>Initial:</EM> 'medium'<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P> This property sets the width of an element's bottom border. The width
+ *   of the keyword values are UA dependent, but the following holds: 'thin'
+ *   &lt;= 'medium' &lt;= 'thick'.
+ *   <P>
+ *   The keyword widths are constant throughout a document:
+ *   <PRE>
+ *   H1 { border: solid thick red }
+ *   P  { border: solid thick blue }
+ * </PRE>
+ *   <P>
+ *   In the example above, 'H1' and 'P' elements will have the same border width
+ *   regardless of font size. To achieve relative widths, the 'em' unit can be
+ *   used:
+ *   <PRE>
+ *   H1 { border: solid 0.5em }
+ * </PRE>
+ *   <P>
+ *   Border widths cannot be negative.
+ * @version $Revision: 1.3 $ */
+public class CssBorderBottomWidthCSS2 extends CssProperty {
+
+  CssBorderFaceWidthCSS2 face;
+
+  /**
+   * Create a new CssBorderBottomWidth
+   */
+  public CssBorderBottomWidthCSS2() {
+    face = new CssBorderFaceWidthCSS2();
+  }
+
+  /**
+   * Create a new CssBorderBottomWidth with an another CssBorderFaceWidth
+   *
+   * @param another An another face.
+   */
+  public CssBorderBottomWidthCSS2(CssBorderFaceWidthCSS2 another) {
+	setByUser();
+
+    face = another;
+  }
+
+  /**
+   * Create a new CssBorderBottomWidth
+   *
+   * @param expression The expression for this property.
+   * @exception InvalidParamException Values are incorrect
+   */
+  public CssBorderBottomWidthCSS2(ApplContext ac, CssExpression expression,
+	  boolean check) throws InvalidParamException {
+
+      if(check && expression.getCount() > 1) {
+	  throw new InvalidParamException("unrecognize", ac);
+      }
+
+      setByUser();
+      face = new CssBorderFaceWidthCSS2(ac, expression);
+  }
+
+  public CssBorderBottomWidthCSS2(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+  }
+
+  /**
+   * Returns the value of this property
+   */
+  public Object get() {
+    return face;
+  }
+
+  /**
+   * Return the value of this property
+   */
+  public CssValue getValue() {
+      if(face != null) {
+	  return face.getValue();
+      }
+      return null;
+  }
+
+  /**
+   * Returns a string representation of the object.
+   */
+  public String toString() {
+      if(face != null) {
+	  return face.toString();
+      }
+      return "";
+  }
+
+  /**
+   * Returns the name of this property
+   */
+  public String getPropertyName() {
+    return "border-bottom-width";
+  }
+
+  /**
+   * Add this property to the CssStyle.
+   *
+   * @param style The CssStyle
+   */
+  public void addToStyle(ApplContext ac, CssStyle style) {
+    CssBorderBottomCSS2 bottom = ((Css1Style) style).cssBorderCSS2.bottom;
+    if (bottom.width != null)
+      style.addRedefinitionWarning(ac, this);
+    bottom.width = this;
+  }
+
+  /**
+   * Get this property in the style.
+   *
+   * @param style The style where the property is
+   * @param resolve if true, resolve the style to find this property
+   */
+  public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+    if (resolve) {
+      return ((Css1Style) style).getBorderBottomWidthCSS2();
+    } else {
+      return ((Css1Style) style).cssBorderCSS2.getBottom().width;
+    }
+  }
+
+  /**
+   * Compares two properties for equality.
+   *
+   * @param value The other property.
+   */
+  public boolean equals(CssProperty property) {
+    return (property instanceof CssBorderBottomWidthCSS2 &&
+	    face.equals(((CssBorderBottomWidthCSS2) property).face));
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderCSS1.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,366 @@
+//
+// $Id: CssBorderCSS1.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderCSS1 extends CssProperty {
+
+    CssBorderTopCSS1 top;
+    CssBorderRightCSS1 right;
+    CssBorderBottomCSS1 bottom;
+    CssBorderLeftCSS1 left;
+
+    /**
+     * Create a new CssBorderFaceCSS1
+     */
+    public CssBorderCSS1() {
+	top = new CssBorderTopCSS1();
+	right = new CssBorderRightCSS1();
+	bottom = new CssBorderBottomCSS1();
+	left = new CssBorderLeftCSS1();
+    }
+
+    /**
+     * Create a new CssBorderFaceCSS1
+     *
+     * @param value The value for this property
+     * @exception InvalidParamException The value is incorrect
+     */
+    public CssBorderCSS1(ApplContext ac, CssExpression value,
+	    boolean check) throws InvalidParamException {
+	CssValue val = value.getValue();
+
+	// too many values
+	if(check && value.getCount() > 3) {
+	     throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+
+
+	top = new CssBorderTopCSS1(ac, value);
+
+	if (val == value.getValue()) {
+	    throw new InvalidParamException("value",
+					    value.getValue(),
+					    getPropertyName(), ac);
+	}
+
+	right = new CssBorderRightCSS1();
+	bottom = new CssBorderBottomCSS1();
+	left = new CssBorderLeftCSS1();
+
+	CssBorderTopWidthCSS1 w = top.width;
+	CssBorderTopStyleCSS1 s = top.style;
+	CssBorderTopColorCSS1 c = top.color;
+
+	if(w != null) {
+	    right.width  =
+		new CssBorderRightWidthCSS1((CssBorderFaceWidthCSS1) w.get());
+	    left.width =
+		new CssBorderLeftWidthCSS1((CssBorderFaceWidthCSS1) w.get());
+	    bottom.width =
+		new CssBorderBottomWidthCSS1((CssBorderFaceWidthCSS1) w.get());
+	}
+	if(s != null) {
+	    right.style =
+		new CssBorderRightStyleCSS1((CssBorderFaceStyleCSS1) s.get());
+	    left.style =
+		new CssBorderLeftStyleCSS1((CssBorderFaceStyleCSS1) s.get());
+	    bottom.style =
+		new CssBorderBottomStyleCSS1((CssBorderFaceStyleCSS1) s.get());
+	}
+	if(c != null) {
+	    right.color =
+		new CssBorderRightColorCSS1((CssBorderFaceColorCSS1) c.get());
+	    left.color =
+		new CssBorderLeftColorCSS1((CssBorderFaceColorCSS1) c.get());
+	    bottom.color =
+		new CssBorderBottomColorCSS1((CssBorderFaceColorCSS1) c.get());
+	}
+    }
+
+    public CssBorderCSS1(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	if(top != null) {
+	    return top.get();
+	}
+	return null;
+    }
+
+    /**
+     * Returns the top property
+     */
+    public CssBorderTopCSS1 getTop() {
+	return top;
+    }
+
+    /**
+     * Returns the right property
+     */
+    public CssBorderRightCSS1 getRight() {
+	return right;
+    }
+
+    /**
+     * Returns the bottom property
+     */
+    public CssBorderBottomCSS1 getBottom() {
+	return bottom;
+    }
+
+    /**
+     * Returns the left property
+     */
+    public CssBorderLeftCSS1 getLeft() {
+	return left;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if(top != null) {
+	    return top.toString();
+	}
+	return "";
+    }
+
+    public boolean equals(CssProperty property) {
+	return false; // FIXME
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border";
+    }
+
+    /**
+     * Set this property to be important.
+     * Overrides this method for a macro
+     */
+    public void setImportant() {
+	if(top != null) {
+	    top.setImportant();
+	}
+	if(right != null) {
+	    right.setImportant();
+	}
+	if(left != null) {
+	    left.setImportant();
+	}
+	if(bottom != null) {
+	    bottom.setImportant();
+	}
+    }
+
+    /**
+     * Returns true if this property is important.
+     * Overrides this method for a macro
+     */
+    public boolean getImportant() {
+	return (top.getImportant() &&
+		right.getImportant() &&
+		left.getImportant() &&
+		bottom.getImportant());
+    }
+
+    /**
+     * Print this property.
+     *
+     * @param printer The printer.
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	int printMacro = 0;
+
+	if ((top.width != null && bottom.width != null &&
+	     right.width != null && left.width != null) &&
+	    ((top.width.important && bottom.width.important &&
+	      right.width.important && left.width.important) ||
+	     (!top.width.important && !bottom.width.important &&
+	      !right.width.important && !left.width.important))) {
+	    CssBorderWidthCSS1 width = new CssBorderWidthCSS1(top.width, bottom.width,
+						      right.width, left.width);
+	    if (top.important) {
+		width.setImportant();
+	    }
+	    printMacro = 1;
+	    width.print(printer);
+	}
+	if ((top.style != null && bottom.style != null &&
+	     right.style != null && left.style != null) &&
+	    ((top.style.important && bottom.style.important &&
+	      right.style.important && left.style.important) ||
+	     (!top.style.important && !bottom.style.important &&
+	      !right.style.important && !left.style.important))) {
+	    CssBorderStyleCSS1 style = new CssBorderStyleCSS1(top.style, bottom.style,
+						      right.style, left.style);
+	    if (top.important) {
+		style.setImportant();
+	    }
+	    printMacro |= 2;
+	    style.print(printer);
+	}
+	if ((top.color != null && bottom.color != null &&
+	     right.color != null && left.color != null) &&
+	    ((top.color.important && bottom.color.important &&
+	      right.color.important && left.color.important) ||
+	     (!top.color.important && !bottom.color.important &&
+	      !right.color.important && !left.color.important))) {
+	    CssBorderColorCSS1 color = new CssBorderColorCSS1(top.color, bottom.color,
+						      right.color, left.color);
+	    if (top.important) {
+		color.setImportant();
+	    }
+	    printMacro |= 4;
+	    color.print(printer);
+	}
+
+	if (printMacro == 0) {
+	    top.print(printer);
+	    right.print(printer);
+	    bottom.print(printer);
+	    left.print(printer);
+	} else {
+	    if ((printMacro & 1) == 0) {
+		if (top.width != null) top.width.print(printer);
+		if (right.width != null) right.width.print(printer);
+		if (bottom.width != null) bottom.width.print(printer);
+		if (left.width != null) left.width.print(printer);
+	    }
+	    if ((printMacro & 2) == 0) {
+		if (top.style != null) top.style.print(printer);
+		if (right.style != null) right.style.print(printer);
+		if (bottom.style != null) bottom.style.print(printer);
+		if (left.style != null) left.style.print(printer);
+	    }
+	    if ((printMacro & 4) == 0) {
+		if (top.color != null) top.color.print(printer);
+		if (right.color != null) right.color.print(printer);
+		if (bottom.color != null) bottom.color.print(printer);
+		if (left.color != null) left.color.print(printer);
+	    }
+	}
+
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors selector) {
+	super.setSelectors(selector);
+	if (top != null) {
+	    top.setSelectors(selector);
+	}
+	if (right != null) {
+	    right.setSelectors(selector);
+	}
+	if (bottom != null) {
+	    bottom.setSelectors(selector);
+	}
+	if (left != null) {
+	    left.setSelectors(selector);
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if(top != null) {
+	    top.addToStyle(ac, style);
+	}
+	if(right != null) {
+	    right.addToStyle(ac, style);
+	}
+	if(left != null) {
+	    left.addToStyle(ac, style);
+	}
+	if(bottom != null) {
+	    bottom.addToStyle(ac, style);
+	}
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBorderCSS1();
+	} else {
+	    return ((Css1Style) style).cssBorderCSS1;
+	}
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	super.setInfo(line, source);
+	if(top != null) {
+	    top.setInfo(line, source);
+	}
+	if(right != null) {
+	    right.setInfo(line, source);
+	}
+	if(left != null) {
+	    left.setInfo(line, source);
+	}
+	if(bottom != null) {
+	    bottom.setInfo(line, source);
+	}
+    }
+
+    void check() {
+	if(top != null) {
+	    top.check();
+	}
+	if(bottom != null) {
+	    bottom.check();
+	}
+	if(right != null) {
+	    right.check();
+	}
+	if(left != null) {
+	    left.check();
+	}
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderCSS2.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,389 @@
+//
+// $Id: CssBorderCSS2.java,v 1.4 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.4 $
+ */
+public class CssBorderCSS2 extends CssProperty {
+
+    CssBorderTopCSS2 top;
+    CssBorderRightCSS2 right;
+    CssBorderBottomCSS2 bottom;
+    CssBorderLeftCSS2 left;
+
+    /**
+     * Create a new CssBorderFaceCSS2
+     */
+    public CssBorderCSS2() {
+	top = new CssBorderTopCSS2();
+	right = new CssBorderRightCSS2();
+	bottom = new CssBorderBottomCSS2();
+	left = new CssBorderLeftCSS2();
+    }
+
+    /**
+     * Create a new CssBorderFaceCSS2
+     *
+     * @param value The value for this property
+     * @exception InvalidParamException The value is incorrect
+     */
+    public CssBorderCSS2(ApplContext ac, CssExpression value,
+	    boolean check) throws InvalidParamException {
+
+	if(check && value.getCount() > 3) {
+	     throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = value.getValue();
+
+	setByUser();
+
+	top = new CssBorderTopCSS2(ac, value);
+
+	if (val == value.getValue()) {
+	    throw new InvalidParamException("value",
+					    value.getValue(),
+					    getPropertyName(), ac);
+	}
+	right = new CssBorderRightCSS2();
+	bottom = new CssBorderBottomCSS2();
+	left = new CssBorderLeftCSS2();
+
+	CssBorderTopWidthCSS2 w = top.width;
+	CssBorderTopStyleCSS2 s = top.style;
+	CssBorderTopColorCSS2 c = top.color;
+
+	if(w != null) {
+	    right.width  =
+		new CssBorderRightWidthCSS2((CssBorderFaceWidthCSS2) w.get());
+	    left.width =
+		new CssBorderLeftWidthCSS2((CssBorderFaceWidthCSS2) w.get());
+	    bottom.width =
+		new CssBorderBottomWidthCSS2((CssBorderFaceWidthCSS2) w.get());
+	}
+	if(s != null) {
+	    right.style =
+		new CssBorderRightStyleCSS2((CssBorderFaceStyleCSS2) s.get());
+	    left.style =
+		new CssBorderLeftStyleCSS2((CssBorderFaceStyleCSS2) s.get());
+	    bottom.style =
+		new CssBorderBottomStyleCSS2((CssBorderFaceStyleCSS2) s.get());
+	}
+	if(c != null) {
+	    right.color =
+		new CssBorderRightColorCSS2((CssBorderFaceColorCSS2) c.get());
+	    left.color =
+		new CssBorderLeftColorCSS2((CssBorderFaceColorCSS2) c.get());
+	    bottom.color =
+		new CssBorderBottomColorCSS2((CssBorderFaceColorCSS2) c.get());
+	}
+    }
+
+    public CssBorderCSS2(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return top.get();
+    }
+
+    /**
+     * Returns the top property
+     */
+    public CssBorderTopCSS2 getTop() {
+	return top;
+    }
+
+    /**
+     * Returns the right property
+     */
+    public CssBorderRightCSS2 getRight() {
+	return right;
+    }
+
+    /**
+     * Returns the bottom property
+     */
+    public CssBorderBottomCSS2 getBottom() {
+	return bottom;
+    }
+
+    /**
+     * Returns the left property
+     */
+    public CssBorderLeftCSS2 getLeft() {
+	return left;
+    }
+
+    /**
+     * @param bottom The bottom to set.
+     */
+    public void setBottom(CssBorderBottomCSS2 bottom) {
+        this.bottom = bottom;
+    }
+
+    /**
+     * @param left The left to set.
+     */
+    public void setLeft(CssBorderLeftCSS2 left) {
+        this.left = left;
+    }
+
+    /**
+     * @param right The right to set.
+     */
+    public void setRight(CssBorderRightCSS2 right) {
+        this.right = right;
+    }
+
+    /**
+     * @param top The top to set.
+     */
+    public void setTop(CssBorderTopCSS2 top) {
+        this.top = top;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if(top != null) {
+	    return top.toString();
+	}
+	return "";
+    }
+
+    public boolean equals(CssProperty property) {
+	return false; // FIXME
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border";
+    }
+
+    /**
+     * Set this property to be important.
+     * Overrides this method for a macro
+     */
+    public void setImportant() {
+	if(top != null) {
+	    top.setImportant();
+	}
+	if(right != null) {
+	    right.setImportant();
+	}
+	if(left != null) {
+	    left.setImportant();
+	}
+	if(bottom != null) {
+	    bottom.setImportant();
+	}
+    }
+
+    /**
+     * Returns true if this property is important.
+     * Overrides this method for a macro
+     */
+    public boolean getImportant() { // FIXME
+	return (top.getImportant() &&
+		right.getImportant() &&
+		left.getImportant() &&
+		bottom.getImportant());
+    }
+
+    /**
+     * Print this property.
+     *
+     * @param printer The printer.
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	int printMacro = 0;
+
+	if ((top.width != null && bottom.width != null &&
+	     right.width != null && left.width != null) &&
+	    ((top.width.important && bottom.width.important &&
+	      right.width.important && left.width.important) ||
+	     (!top.width.important && !bottom.width.important &&
+	      !right.width.important && !left.width.important))) {
+	    CssBorderWidthCSS2 width = new CssBorderWidthCSS2(top.width, bottom.width,
+						      right.width, left.width);
+	    if (top.important) {
+		width.setImportant();
+	    }
+	    printMacro = 1;
+	    width.print(printer);
+	}
+	if ((top.style != null && bottom.style != null &&
+	     right.style != null && left.style != null) &&
+	    ((top.style.important && bottom.style.important &&
+	      right.style.important && left.style.important) ||
+	     (!top.style.important && !bottom.style.important &&
+	      !right.style.important && !left.style.important))) {
+	    CssBorderStyleCSS2 style = new CssBorderStyleCSS2(top.style, bottom.style,
+						      right.style, left.style);
+	    if (top.important) {
+		style.setImportant();
+	    }
+	    printMacro |= 2;
+	    style.print(printer);
+	}
+	if ((top.color != null && bottom.color != null &&
+	     right.color != null && left.color != null) &&
+	    ((top.color.important && bottom.color.important &&
+	      right.color.important && left.color.important) ||
+	     (!top.color.important && !bottom.color.important &&
+	      !right.color.important && !left.color.important))) {
+	    CssBorderColorCSS2 color = new CssBorderColorCSS2(top.color, bottom.color,
+						      right.color, left.color);
+	    if (top.important) {
+		color.setImportant();
+	    }
+	    printMacro |= 4;
+	    color.print(printer);
+	}
+
+	if (printMacro == 0) {
+	    top.print(printer);
+	    right.print(printer);
+	    bottom.print(printer);
+	    left.print(printer);
+	} else {
+	    if ((printMacro & 1) == 0) {
+		if (top.width != null) top.width.print(printer);
+		if (right.width != null) right.width.print(printer);
+		if (bottom.width != null) bottom.width.print(printer);
+		if (left.width != null) left.width.print(printer);
+	    }
+	    if ((printMacro & 2) == 0) {
+		if (top.style != null) top.style.print(printer);
+		if (right.style != null) right.style.print(printer);
+		if (bottom.style != null) bottom.style.print(printer);
+		if (left.style != null) left.style.print(printer);
+	    }
+	    if ((printMacro & 4) == 0) {
+		if (top.color != null) top.color.print(printer);
+		if (right.color != null) right.color.print(printer);
+		if (bottom.color != null) bottom.color.print(printer);
+		if (left.color != null) left.color.print(printer);
+	    }
+	}
+
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors selector) {
+	super.setSelectors(selector);
+	if (top != null) {
+	    top.setSelectors(selector);
+	}
+	if (right != null) {
+	    right.setSelectors(selector);
+	}
+	if (bottom != null) {
+	    bottom.setSelectors(selector);
+	}
+	if (left != null) {
+	    left.setSelectors(selector);
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if(top != null) {
+	    top.addToStyle(ac, style);
+	}
+	if(right != null) {
+	    right.addToStyle(ac, style);
+	}
+	if(left != null) {
+	    left.addToStyle(ac, style);
+	}
+	if(bottom != null) {
+	    bottom.addToStyle(ac, style);
+	}
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBorderCSS2();
+	} else {
+	    return ((Css1Style) style).cssBorderCSS2;
+	}
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	super.setInfo(line, source);
+	if(top != null) {
+	    top.setInfo(line, source);
+	}
+	if(right != null) {
+	    right.setInfo(line, source);
+	}
+	if(left != null) {
+	    left.setInfo(line, source);
+	}
+	if(bottom != null) {
+	    bottom.setInfo(line, source);
+	}
+    }
+
+    void check() {
+	if(top != null) {
+	    top.check();
+	}
+	if(bottom != null) {
+	    bottom.check();
+	}
+	if(right != null) {
+	    right.check();
+	}
+	if(left != null) {
+	    left.check();
+	}
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderColor.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,367 @@
+//
+// $Id: CssBorderColor.java,v 1.4 2006-04-19 11:28:05 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssOperator;
+
+/**
+ *   <H4>
+ *      &nbsp;&nbsp; 'border-color'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;color&gt;{1,4}<BR>
+ *   <EM>Initial:</EM> the value of the 'color' property<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   The 'border-color' property sets the color of the four borders. 'border-color'
+ *   can have from one to four values, and the values are set on the different
+ *   sides as for 'border-width' above.
+ *   <P>
+ *   If no color value is specified, the value of the 'color' property of the
+ *   element itself will take its place:
+ *   <PRE>
+ *   P {
+ *     color: black;
+ *     background: white;
+ *     border: solid;
+ *   }
+ * </PRE>
+ *   <P>
+ *   In the above example, the border will be a solid black line.
+ *
+ * @version $Revision: 1.4 $
+ */
+public class CssBorderColor extends CssProperty implements CssOperator {
+
+    CssBorderTopColor top;
+    CssBorderBottomColor bottom;
+    CssBorderRightColor right;
+    CssBorderLeftColor left;
+
+    //private static CssIdent transparent = new CssIdent("transparent"); // obsolete, not in CSS3 anymore
+
+    /**
+     * Create a new CssBorderColor with all four sides
+     */
+    public CssBorderColor(CssBorderTopColor top,
+			  CssBorderBottomColor bottom,
+			  CssBorderRightColor right,
+			  CssBorderLeftColor left) {
+	this.top = top;
+	this.bottom = bottom;
+	this.left = left;
+	this.right = right;
+    }
+
+    /**
+     * Create a new CssBorder
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderColor(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+
+	switch (expression.getCount()) {
+	case 1:
+	    //CssValue val = expression.getValue();
+	    //if (val.equals(transparent)) { // obsolete, transparent is a color value now
+		//top = new CssBorderTopColor();
+		//top.face.face = transparent;
+		//expression.next();
+	    //} else
+	    /*if (val.equals(inherit)) {
+		top = new CssBorderTopColor();
+		top.face.face = inherit;
+		expression.next();
+	    } else*/
+	    top = new CssBorderTopColor(ac, expression);
+	    /*bottom = new CssBorderBottomColor((CssBorderFaceColor) top.get());
+	    right = new CssBorderRightColor((CssBorderFaceColor) top.get());
+	    left = new CssBorderLeftColor((CssBorderFaceColor) top.get());*/
+	    break;
+	case 2:
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(expression.getOperator())).toString()),
+						ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    top = new CssBorderTopColor(ac, expression);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    right = new CssBorderRightColor(ac, expression);
+	    /*bottom = new CssBorderBottomColor((CssBorderFaceColor) top.get());
+	    left = new CssBorderLeftColor((CssBorderFaceColor) right.get());*/
+	    break;
+	case 3:
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(expression.getOperator())).toString()),
+						ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    top = new CssBorderTopColor(ac, expression);
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(expression.getOperator())).toString()), ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    right = new CssBorderRightColor(ac, expression);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    bottom = new CssBorderBottomColor(ac, expression);
+	    //left = new CssBorderLeftColor((CssBorderFaceColor) right.get());
+	    break;
+	case 4:
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(expression.getOperator())).toString()),
+						ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    top = new CssBorderTopColor(ac, expression);
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(expression.getOperator())).toString()),
+						ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    right = new CssBorderRightColor(ac, expression);
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(expression.getOperator())).toString()),
+						ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    bottom = new CssBorderBottomColor(ac, expression);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    left = new CssBorderLeftColor(ac, expression);
+	    break;
+	default:
+	    if(check) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    break;
+	}
+    }
+
+    public CssBorderColor(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return top;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-color";
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+        String result = "";
+        // top should never be null
+        if(top != null) result += top;
+        if(right != null) result += " " + right;
+        if(bottom != null) result += " " + bottom;
+        if(left != null) result += " " + left;
+        return result;
+	/*if (right.face.equals(left.face)) {
+	    if (top.face.equals(bottom.face)) {
+		if (top.face.equals(right.face)) {
+		    return top.toString();
+		} else {
+		    return top + " " + right;
+		}
+	    } else {
+		return top + " " + right + " " + bottom;
+	    }
+	} else {
+	    return top + " " + right + " " + bottom + " " + left;
+	}*/
+
+    }
+
+    /**
+     * Set this property to be important.
+     * Overrides this method for a macro
+     */
+    public void setImportant() {
+	if(top != null) {
+	    top.important = true;
+	}
+	if(right != null) {
+	    right.important = true;
+	}
+	if(left != null) {
+	    left.important = true;
+	}
+	if(bottom != null) {
+	    bottom.important = true;
+	}
+    }
+
+    /**
+     * Returns true if this property is important.
+     * Overrides this method for a macro
+     */
+    public boolean getImportant() {
+	return ((top == null || top.important) &&
+		(right == null || right.important) &&
+		(left == null || left.important) &&
+		(bottom == null || bottom.important));
+    }
+
+    /**
+     * Print this property.
+     *
+     * @param printer The printer.
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	if ((top != null && right != null &&
+	     left != null && bottom != null) &&
+	    (!top.face.isDefault() && !right.face.isDefault() &&
+	     !left.face.isDefault() && !bottom.face.isDefault()) &&
+	    (getImportant() ||
+	     (!top.important &&
+	      !right.important &&
+	      !left.important &&
+	      !bottom.important))) {
+	    printer.print(this);
+	} else {
+	    if (top != null)
+		top.print(printer);
+	    if (right != null)
+		right.print(printer);
+	    if (left != null)
+		left.print(printer);
+	    if (bottom != null)
+		bottom.print(printer);
+	}
+
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors selector) {
+	super.setSelectors(selector);
+	if (top != null) {
+	    top.setSelectors(selector);
+	}
+	if (right != null) {
+	    right.setSelectors(selector);
+	}
+	if (bottom != null) {
+	    bottom.setSelectors(selector);
+	}
+	if (left != null) {
+	    left.setSelectors(selector);
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if(top != null) {
+	    top.addToStyle(ac, style);
+	}
+	if(right != null) {
+	    right.addToStyle(ac, style);
+	}
+	if(left != null) {
+	    left.addToStyle(ac, style);
+	}
+	if(bottom != null) {
+	    bottom.addToStyle(ac, style);
+	}
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	throw new IllegalStateException("Can't invoke this method on the property " +
+					getPropertyName());
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	super.setInfo(line, source);
+	if(top != null) {
+	    top.setInfo(line, source);
+	}
+	if(right != null) {
+	    right.setInfo(line, source);
+	}
+	if(left != null) {
+	    left.setInfo(line, source);
+	}
+	if(bottom != null) {
+	    bottom.setInfo(line, source);
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return false; // FIXME
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderColorCSS1.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,362 @@
+//
+// $Id: CssBorderColorCSS1.java,v 1.4 2006-04-19 11:28:05 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssOperator;
+
+/**
+ *   <H4>
+ *      &nbsp;&nbsp; 'border-color'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;color&gt;{1,4}<BR>
+ *   <EM>Initial:</EM> the value of the 'color' property<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   The 'border-color' property sets the color of the four borders. 'border-color'
+ *   can have from one to four values, and the values are set on the different
+ *   sides as for 'border-width' above.
+ *   <P>
+ *   If no color value is specified, the value of the 'color' property of the
+ *   element itself will take its place:
+ *   <PRE>
+ *   P {
+ *     color: black;
+ *     background: white;
+ *     border: solid;
+ *   }
+ * </PRE>
+ *   <P>
+ *   In the above example, the border will be a solid black line.
+ *
+ * @version $Revision: 1.4 $
+ */
+public class CssBorderColorCSS1 extends CssProperty implements CssOperator {
+
+    CssBorderTopColorCSS1 top;
+    CssBorderBottomColorCSS1 bottom;
+    CssBorderRightColorCSS1 right;
+    CssBorderLeftColorCSS1 left;
+
+    /**
+     * Create a new CssBorderColorCSS1 with all four sides
+     */
+    public CssBorderColorCSS1(CssBorderTopColorCSS1 top,
+			  CssBorderBottomColorCSS1 bottom,
+			  CssBorderRightColorCSS1 right,
+			  CssBorderLeftColorCSS1 left) {
+	this.top = top;
+	this.bottom = bottom;
+	this.left = left;
+	this.right = right;
+    }
+
+    /**
+     * Create a new CssBorderCSS1
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderColorCSS1(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+
+	switch (expression.getCount()) {
+	case 1:
+	    top = new CssBorderTopColorCSS1(ac, expression);
+	    /*bottom = new CssBorderBottomColorCSS1((CssBorderFaceColorCSS1) top.get());
+	    right = new CssBorderRightColorCSS1((CssBorderFaceColorCSS1) top.get());
+	    left = new CssBorderLeftColorCSS1((CssBorderFaceColorCSS1) top.get());*/
+	    break;
+	case 2:
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(expression.getOperator())).toString()),
+			ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    top = new CssBorderTopColorCSS1(ac, expression);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    right = new CssBorderRightColorCSS1(ac, expression);
+	    /*bottom = new CssBorderBottomColorCSS1((CssBorderFaceColorCSS1) top.get());
+	    left = new CssBorderLeftColorCSS1((CssBorderFaceColorCSS1) right.get());*/
+	    break;
+	case 3:
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(expression.getOperator())).toString()),
+			ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    top = new CssBorderTopColorCSS1(ac, expression);
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(expression.getOperator())).toString()), ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    right = new CssBorderRightColorCSS1(ac, expression);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    bottom = new CssBorderBottomColorCSS1(ac, expression);
+	    //left = new CssBorderLeftColorCSS1((CssBorderFaceColorCSS1) right.get());
+	    break;
+	case 4:
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(expression.getOperator())).toString()),
+			ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    top = new CssBorderTopColorCSS1(ac, expression);
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(expression.getOperator())).toString()),
+			ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    right = new CssBorderRightColorCSS1(ac, expression);
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(expression.getOperator())).toString()),
+			ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    bottom = new CssBorderBottomColorCSS1(ac, expression);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    left = new CssBorderLeftColorCSS1(ac, expression);
+	    break;
+	default:
+	    if(check) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    break;
+	}
+    }
+
+    public CssBorderColorCSS1(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return top;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-color";
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	String ret = "";
+	if(top != null) {
+	    ret += top;
+	}
+	if(right != null) {
+	    ret += " " + right;
+	}
+	if(bottom != null) {
+	    ret += " " + bottom;
+	}
+	if(left != null) {
+	    ret += " " + left;
+	}
+	return ret;
+	/*
+	if (right.face.equals(left.face)) {
+	    if (top.face.equals(bottom.face)) {
+		if (top.face.equals(right.face)) {
+		    return top.toString();
+		} else {
+		    return top + " " + right;
+		}
+	    } else {
+		return top + " " + right + " " + bottom;
+	    }
+	} else {
+	    return top + " " + right + " " + bottom + " " + left;
+	}
+	*/
+    }
+
+    /**
+     * Set this property to be important.
+     * Overrides this method for a macro
+     */
+    public void setImportant() {
+	if(top != null) {
+	    top.important = true;
+	}
+	if(right != null) {
+	    right.important = true;
+	}
+	if(left != null) {
+	    left.important = true;
+	}
+	if(bottom != null) {
+	    bottom.important = true;
+	}
+    }
+
+    /**
+     * Returns true if this property is important.
+     * Overrides this method for a macro
+     */
+    public boolean getImportant() {
+	return ((top == null || top.important) &&
+		(right == null || right.important) &&
+		(left == null || left.important) &&
+		(bottom == null || bottom.important));
+    }
+
+    /**
+     * Print this property.
+     *
+     * @param printer The printer.
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	if ((top != null && right != null &&
+	     left != null && bottom != null) &&
+	    (!top.face.isDefault() && !right.face.isDefault() &&
+	     !left.face.isDefault() && !bottom.face.isDefault()) &&
+	    (getImportant() ||
+	     (!top.important &&
+	      !right.important &&
+	      !left.important &&
+	      !bottom.important))) {
+	    printer.print(this);
+	} else {
+	    if (top != null)
+		top.print(printer);
+	    if (right != null)
+		right.print(printer);
+	    if (left != null)
+		left.print(printer);
+	    if (bottom != null)
+		bottom.print(printer);
+	}
+
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors selector) {
+	super.setSelectors(selector);
+	if (top != null) {
+	    top.setSelectors(selector);
+	}
+	if (right != null) {
+	    right.setSelectors(selector);
+	}
+	if (bottom != null) {
+	    bottom.setSelectors(selector);
+	}
+	if (left != null) {
+	    left.setSelectors(selector);
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if(top != null) {
+	    top.addToStyle(ac, style);
+	}
+	if(right != null) {
+	    right.addToStyle(ac, style);
+	}
+	if(left != null) {
+	    left.addToStyle(ac, style);
+	}
+	if(bottom != null) {
+	    bottom.addToStyle(ac, style);
+	}
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	throw new IllegalStateException("Can't invoke this method on the property " +
+					getPropertyName());
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	super.setInfo(line, source);
+	if(top != null) {
+	    top.setInfo(line, source);
+	}
+	if(right != null) {
+	    right.setInfo(line, source);
+	}
+	if(left != null) {
+	    left.setInfo(line, source);
+	}
+	if(bottom != null) {
+	    bottom.setInfo(line, source);
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return false; // FIXME
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderColorCSS2.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,445 @@
+//
+// $Id: CssBorderColorCSS2.java,v 1.5 2006-04-19 11:28:05 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *      &nbsp;&nbsp; 'border-color'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;color&gt;{1,4}<BR>
+ *   <EM>Initial:</EM> the value of the 'color' property<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   The 'border-color' property sets the color of the four borders. 'border-color'
+ *   can have from one to four values, and the values are set on the different
+ *   sides as for 'border-width' above.
+ *   <P>
+ *   If no color value is specified, the value of the 'color' property of the
+ *   element itself will take its place:
+ *   <PRE>
+ *   P {
+ *     color: black;
+ *     background: white;
+ *     border: solid;
+ *   }
+ * </PRE>
+ *   <P>
+ *   In the above example, the border will be a solid black line.
+ *
+ * @version $Revision: 1.5 $
+ */
+public class CssBorderColorCSS2 extends CssProperty implements CssOperator {
+
+    CssBorderTopColorCSS2 top;
+    CssBorderBottomColorCSS2 bottom;
+    CssBorderRightColorCSS2 right;
+    CssBorderLeftColorCSS2 left;
+
+    public CssBorderColorCSS2() {
+
+    }
+
+    /**
+     * Create a new CssBorderColorCSS2 with all four sides
+     */
+    public CssBorderColorCSS2(CssBorderTopColorCSS2 top,
+			  CssBorderBottomColorCSS2 bottom,
+			  CssBorderRightColorCSS2 right,
+			  CssBorderLeftColorCSS2 left) {
+	this.top = top;
+	this.bottom = bottom;
+	this.left = left;
+	this.right = right;
+    }
+
+    /**
+     * Create a new CssBorderCSS2
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderColorCSS2(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+
+	CssValue val;
+
+	switch (expression.getCount()) {
+	case 1:
+	    setTop(new CssBorderTopColorCSS2(ac, expression));
+	   /* val = expression.getValue();
+	    if (val.equals(transparent)) {
+		top = new CssBorderTopColorCSS2();
+		top.face.face = transparent;
+		expression.next();
+	    } else if (val.equals(inherit)) {
+		top = new CssBorderTopColorCSS2();
+		top.face.face = inherit;
+		expression.next();
+	    } else{
+		top = new CssBorderTopColorCSS2(ac, expression);
+//		bottom = new CssBorderBottomColorCSS2((CssBorderFaceColorCSS2) top.get());
+//		right = new CssBorderRightColorCSS2((CssBorderFaceColorCSS2) top.get());
+//		left = new CssBorderLeftColorCSS2((CssBorderFaceColorCSS2) top.get());
+	    }*/
+	    break;
+	case 2:
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(expression.getOperator())).toString()),
+						ac);
+	    val = expression.getValue();
+	    if(val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    top = new CssBorderTopColorCSS2(ac, expression);
+	    val = expression.getValue();
+	    if(val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    right = new CssBorderRightColorCSS2(ac, expression);
+//	    bottom = new CssBorderBottomColorCSS2((CssBorderFaceColorCSS2) top.get());
+//	    left = new CssBorderLeftColorCSS2((CssBorderFaceColorCSS2) right.get());
+	    break;
+	case 3:
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(expression.getOperator())).toString()),
+						ac);
+	    val = expression.getValue();
+	    if(val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    top = new CssBorderTopColorCSS2(ac, expression);
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(expression.getOperator())).toString()), ac);
+	    val = expression.getValue();
+	    if(val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    right = new CssBorderRightColorCSS2(ac, expression);
+	    val = expression.getValue();
+	    if(val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    bottom = new CssBorderBottomColorCSS2(ac, expression);
+//	    left = new CssBorderLeftColorCSS2((CssBorderFaceColorCSS2) right.get());
+	    break;
+	case 4:
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(expression.getOperator())).toString()),
+						ac);
+	    val = expression.getValue();
+	    if(val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    top = new CssBorderTopColorCSS2(ac, expression);
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(expression.getOperator())).toString()),
+						ac);
+	    val = expression.getValue();
+	    if(val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    right = new CssBorderRightColorCSS2(ac, expression);
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(expression.getOperator())).toString()),
+						ac);
+	    val = expression.getValue();
+	    if(val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    bottom = new CssBorderBottomColorCSS2(ac, expression);
+	    val = expression.getValue();
+	    if(val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    left = new CssBorderLeftColorCSS2(ac, expression);
+	    break;
+	default:
+	    if(check) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	}
+    }
+
+    public CssBorderColorCSS2(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * @return Returns the bottom.
+     */
+    public CssBorderBottomColorCSS2 getBottom() {
+        return bottom;
+    }
+
+    /**
+     * @param bottom The bottom to set.
+     */
+    public void setBottom(CssBorderBottomColorCSS2 bottom) {
+        this.bottom = bottom;
+    }
+
+    /**
+     * @return Returns the left.
+     */
+    public CssBorderLeftColorCSS2 getLeft() {
+        return left;
+    }
+
+    /**
+     * @param left The left to set.
+     */
+    public void setLeft(CssBorderLeftColorCSS2 left) {
+        this.left = left;
+    }
+
+    /**
+     * @return Returns the right.
+     */
+    public CssBorderRightColorCSS2 getRight() {
+        return right;
+    }
+
+    /**
+     * @param right The right to set.
+     */
+    public void setRight(CssBorderRightColorCSS2 right) {
+        this.right = right;
+    }
+
+    /**
+     * @return Returns the top.
+     */
+    public CssBorderTopColorCSS2 getTop() {
+        return top;
+    }
+
+    /**
+     * @param top The top to set.
+     */
+    public void setTop(CssBorderTopColorCSS2 top) {
+        this.top = top;
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return top;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-color";
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	String ret = "";
+	if(top != null) {
+	    ret += top;
+	}
+	if(right != null) {
+	    ret += " " + right;
+	}
+	if(bottom != null) {
+	    ret += " " + bottom;
+	}
+	if(left != null) {
+	    ret += " " + left;
+	}
+	return ret;
+	/*
+	if (right.face.equals(left.face)) {
+	    if (top.face.equals(bottom.face)) {
+		if (top.face.equals(right.face)) {
+		    return top.toString();
+		} else {
+		    return top + " " + right;
+		}
+	    } else {
+		return top + " " + right + " " + bottom;
+	    }
+	} else {
+	    return top + " " + right + " " + bottom + " " + left;
+	}
+	*/
+    }
+
+    /**
+     * Set this property to be important.
+     * Overrides this method for a macro
+     */
+    public void setImportant() {
+	if(top != null) {
+	    top.important = true;
+	}
+	if(right != null) {
+	    right.important = true;
+	}
+	if(left != null) {
+	    left.important = true;
+	}
+	if(bottom != null) {
+	    bottom.important = true;
+	}
+    }
+
+    /**
+     * Returns true if this property is important.
+     * Overrides this method for a macro
+     */
+    public boolean getImportant() {
+	return ((top == null || top.important) &&
+		(right == null || right.important) &&
+		(left == null || left.important) &&
+		(bottom == null || bottom.important));
+    }
+
+    /**
+     * Print this property.
+     *
+     * @param printer The printer.
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	if ((top != null && right != null &&
+	     left != null && bottom != null) &&
+	    (!top.face.isDefault() && !right.face.isDefault() &&
+	     !left.face.isDefault() && !bottom.face.isDefault()) &&
+	    (getImportant() ||
+	     (!top.important &&
+	      !right.important &&
+	      !left.important &&
+	      !bottom.important))) {
+	    printer.print(this);
+	} else {
+	    if (top != null)
+		top.print(printer);
+	    if (right != null)
+		right.print(printer);
+	    if (left != null)
+		left.print(printer);
+	    if (bottom != null)
+		bottom.print(printer);
+	}
+
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors selector) {
+	super.setSelectors(selector);
+	if (top != null) {
+	    top.setSelectors(selector);
+	}
+	if (right != null) {
+	    right.setSelectors(selector);
+	}
+	if (bottom != null) {
+	    bottom.setSelectors(selector);
+	}
+	if (left != null) {
+	    left.setSelectors(selector);
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if(top != null) {
+	    top.addToStyle(ac, style);
+	}
+	if(right != null) {
+	    right.addToStyle(ac, style);
+	}
+	if(left != null) {
+	    left.addToStyle(ac, style);
+	}
+	if(bottom != null) {
+	    bottom.addToStyle(ac, style);
+	}
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	throw new IllegalStateException("Can't invoke this method on the property " +
+					getPropertyName());
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	super.setInfo(line, source);
+	if(top != null) {
+	    top.setInfo(line, source);
+	}
+	if(right != null) {
+	    right.setInfo(line, source);
+	}
+	if(left != null) {
+	    left.setInfo(line, source);
+	}
+	if(bottom != null) {
+	    bottom.setInfo(line, source);
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return false; // FIXME
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderFaceColor.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,122 @@
+//
+// $Id: CssBorderFaceColor.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+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;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderFaceColor {
+
+    CssValue face;
+    CssIdent transparent = new CssIdent("transparent");
+
+    /**
+     * Create a new CssBorderFaceColor
+     */
+    public CssBorderFaceColor() {
+	//face = new org.w3c.css.values.CssColor();
+    }
+
+    /**
+     * Create a new CssBorderFaceColor with a color property.
+     *
+     * @param color A color property
+     */
+    public CssBorderFaceColor(org.w3c.css.properties.css1.CssColor color) {
+	face = color.color;
+    }
+
+    /**
+     * Create a new CssBorderFaceColor with an another CssBorderFaceColor
+     *
+     * @param another An another face.
+     */
+    public CssBorderFaceColor(CssBorderFaceColor another) {
+	face = another.face;
+    }
+
+    /**
+     * Create a new CssBorderFaceColor with an expression
+     *
+     * @param expression The expression for this property.
+     * @exception InvalidParamException color is not a color
+     */
+    public CssBorderFaceColor(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	if (val instanceof org.w3c.css.values.CssColor) {
+	    face = val;
+	} else if (val.equals(CssProperty.inherit)) {
+	    face = CssProperty.inherit;
+	} else if (val instanceof CssIdent) {
+	    if (val.equals(transparent)) {
+		face = transparent;
+	    } else {
+		face = new org.w3c.css.values.CssColor(ac, (String) val.get());
+	    }
+	} else {
+	    throw new InvalidParamException("value", val.toString(),
+		    "border-color", ac);
+	}
+	expression.next();
+    }
+
+    public CssBorderFaceColor(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the internal color
+     */
+    public CssValue getColor() {
+	return face;
+    }
+
+    /**
+     * Is the value of this face is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false; // @@ FIXME face.isDefault();
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (face != null) {
+	    return face.toString();
+	} else {
+	    return "";
+	}
+    }
+
+    /**
+     * Compares two faces for equality.
+     *
+     * @param value The another faces.
+     */
+    public boolean equals(CssBorderFaceColor color) {
+	if (this.face == null) {
+	    return (color.face == null);
+	}
+	return this.face.equals(color.face);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderFaceColorCSS1.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,111 @@
+//
+// $Id: CssBorderFaceColorCSS1.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+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;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderFaceColorCSS1 {
+
+    CssValue face;
+
+    /**
+     * Create a new CssBorderFaceColor
+     */
+    public CssBorderFaceColorCSS1() {
+	face = new org.w3c.css.values.CssColorCSS1();
+    }
+
+    /**
+     * Create a new CssBorderFaceColor with a color property.
+     *
+     * @param color A color property
+     */
+    public CssBorderFaceColorCSS1(org.w3c.css.properties.css1.CssColorCSS1 color) {
+	face = color.color;
+    }
+
+    /**
+     * Create a new CssBorderFaceColor with an another CssBorderFaceColor
+     *
+     * @param another An another face.
+     */
+    public CssBorderFaceColorCSS1(CssBorderFaceColorCSS1 another) {
+	face = another.face;
+    }
+
+    /**
+     * Create a new CssBorderFaceColor with an expression
+     *
+     * @param expression The expression for this property.
+     * @exception InvalidParamException color is not a color
+     */
+    public CssBorderFaceColorCSS1(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	if (val instanceof org.w3c.css.values.CssColor) {
+	    face = val;
+	} else if (val instanceof CssIdent) {
+	    face = new org.w3c.css.values.CssColorCSS1(ac, (String) val.get());
+	} else {
+	    throw new InvalidParamException("value", val.toString(),
+					    "border-color", ac);
+	}
+	expression.next();
+    }
+
+    public CssBorderFaceColorCSS1(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the internal color
+     */
+    public CssValue getColor() {
+	return face;
+    }
+
+    /**
+     * Is the value of this face is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false; // @@ FIXME face.isDefault();
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if(face != null) {
+	    return face.toString();
+	}
+	return "";
+    }
+
+    /**
+     * Compares two faces for equality.
+     *
+     * @param value The another faces.
+     */
+    public boolean equals(CssBorderFaceColorCSS1 color) {
+	return this.face.equals(color.face); // FIXME
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderFaceColorCSS2.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,132 @@
+//
+// $Id: CssBorderFaceColorCSS2.java,v 1.5 2006-04-19 11:28:05 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 org.w3c.css.properties.css1;
+
+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;
+
+/**
+ * @version $Revision: 1.5 $
+ */
+public class CssBorderFaceColorCSS2 {
+
+    CssValue face;
+
+    /**
+     * Create a new CssBorderFaceColor
+     */
+    public CssBorderFaceColorCSS2() {
+	face = new org.w3c.css.values.CssColorCSS2();
+    }
+
+    /**
+     * Create a new CssBorderFaceColor with a color property.
+     *
+     * @param color A color property
+     */
+    public CssBorderFaceColorCSS2(org.w3c.css.properties.css1.CssColorCSS2 color) {
+	face = color.color;
+    }
+
+    /**
+     * Create a new CssBorderFaceColor with an another CssBorderFaceColor
+     *
+     * @param another An another face.
+     */
+    public CssBorderFaceColorCSS2(CssBorderFaceColorCSS2 another) {
+	face = another.face;
+    }
+
+    /**
+     * Create a new CssBorderFaceColor with an expression
+     *
+     * @param expression The expression for this property.
+     * @exception InvalidParamException color is not a color
+     */
+    public CssBorderFaceColorCSS2(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	if (val instanceof org.w3c.css.values.CssColor) {
+	    face = val;
+	} else if (val.equals(CssProperty.inherit)) {
+	    face = CssProperty.inherit;
+	} else if(val.equals(CssProperty.transparent)) {
+	    setFace(CssProperty.transparent);
+	} else if (val instanceof CssIdent) {
+	    face = new org.w3c.css.values.CssColorCSS2(ac, (String) val.get());
+	} else {
+	    throw new InvalidParamException("value", val.toString(),
+					    "border-color", ac);
+	}
+	expression.next();
+    }
+
+    public CssBorderFaceColorCSS2(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * @return Returns the face.
+     */
+    public CssValue getFace() {
+        return face;
+    }
+
+    /**
+     * @param face The face to set.
+     */
+    public void setFace(CssValue face) {
+        this.face = face;
+    }
+
+    /**
+     * Returns the internal color
+     */
+    public CssValue getColor() {
+	return face;
+    }
+
+    /**
+     * Is the value of this face is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	if(face != null) {
+	    return face.isDefault(); // @@ FIXME face.isDefault();
+	}
+	return false;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if(face != null) {
+	    return face.toString();
+	}
+	return "";
+    }
+
+    /**
+     * Compares two faces for equality.
+     *
+     * @param value The another faces.
+     */
+    public boolean equals(CssBorderFaceColorCSS2 color) {
+	return this.face.equals(color.face); // FIXME
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderFaceStyle.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,115 @@
+//
+// $Id: CssBorderFaceStyle.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+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;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderFaceStyle {
+
+    int value;
+
+    private static String[] BORDERSTYLE = {
+	"none", "hidden", "dotted", "dashed", "solid", "double", "dot-dash",
+	"dot-dot-dash", "wave", "groove",
+	"ridge", "inset", "outset", "inherit" };
+
+    private static int[] hash_values;
+
+    /**
+     * Create a new CssBorderFaceStyle
+     */
+    public CssBorderFaceStyle() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new CssBorderFaceStyle with an another CssBorderFaceStyle
+     *
+     * @param another An another side.
+     */
+    public CssBorderFaceStyle(CssBorderFaceStyle another) {
+	value = another.value;
+    }
+
+    /**
+     * Create a new CssBorderFaceStyle
+     *
+     * @param expression The expression for this face
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssBorderFaceStyle(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	if (val instanceof CssIdent) {
+	    int hash = val.hashCode();
+	    for (int i = 0; i < BORDERSTYLE.length; i++)
+		if (hash_values[i] == hash) {
+		    value = i;
+		    expression.next();
+		    return;
+		}
+	}
+
+	throw new InvalidParamException("value", val.toString(), "style", ac);
+    }
+
+    public CssBorderFaceStyle(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == (BORDERSTYLE.length - 1);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return BORDERSTYLE[value];
+    }
+
+    /**
+     * Returns the value
+     */
+    public String getStyle() {
+	return BORDERSTYLE[value];
+    }
+
+    /**
+     * Compares two side for equality.
+     *
+     * @param value The another side.
+     */
+    public boolean equals(CssBorderFaceStyle style) {
+	return value == style.value;
+    }
+
+    static {
+	hash_values = new int[BORDERSTYLE.length];
+	for (int i=0; i<BORDERSTYLE.length; i++)
+	    hash_values[i] = BORDERSTYLE[i].hashCode();
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderFaceStyleCSS1.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,121 @@
+//
+// $Id: CssBorderFaceStyleCSS1.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+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;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderFaceStyleCSS1 {
+
+    int value;
+
+    private static String[] BORDERSTYLE = {
+	"none", "hidden", "dotted", "dashed", "solid", "double", "groove",
+	"ridge", "inset", "outset", "inherit" };
+
+    private static int[] hash_values;
+
+    /**
+     * Create a new CssBorderFaceStyleCSS1
+     */
+    public CssBorderFaceStyleCSS1() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new CssBorderFaceStyleCSS1 with an another CssBorderFaceStyle
+     *
+     * @param another An another side.
+     */
+    public CssBorderFaceStyleCSS1(CssBorderFaceStyleCSS1 another) {
+	value = another.value;
+    }
+
+    /**
+     * Create a new CssBorderFaceStyleCSS1
+     *
+     * @param expression The expression for this face
+     * @param check true will test the number of parameters
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssBorderFaceStyleCSS1(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	if (val instanceof CssIdent) {
+	    int hash = val.hashCode();
+	    for (int i = 0; i < BORDERSTYLE.length; i++)
+		if (hash_values[i] == hash) {
+		    value = i;
+		    expression.next();
+		    return;
+		}
+	}
+
+	throw new InvalidParamException("value", val.toString(), "style", ac);
+    }
+
+    /**
+     * Create a new CssBorderFaceStyleCSS1
+     *
+     * @param check true will test the number of parameters
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssBorderFaceStyleCSS1(ApplContext ac, CssExpression expression)
+    	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == (BORDERSTYLE.length - 1);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return BORDERSTYLE[value];
+    }
+
+    /**
+     * Returns the value
+     */
+    public String getStyle() {
+	return BORDERSTYLE[value];
+    }
+
+    /**
+     * Compares two side for equality.
+     *
+     * @param value The another side.
+     */
+    public boolean equals(CssBorderFaceStyleCSS1 style) {
+	return value == style.value;
+    }
+
+    static {
+	hash_values = new int[BORDERSTYLE.length];
+	for (int i=0; i<BORDERSTYLE.length; i++)
+	    hash_values[i] = BORDERSTYLE[i].hashCode();
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderFaceStyleCSS2.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,114 @@
+//
+// $Id: CssBorderFaceStyleCSS2.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+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;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderFaceStyleCSS2 {
+
+    int value;
+
+    private static String[] BORDERSTYLE = {
+	"none", "hidden", "dotted", "dashed", "solid", "double", "groove",
+	"ridge", "inset", "outset", "inherit" };
+
+    private static int[] hash_values;
+
+    /**
+     * Create a new CssBorderFaceStyleCSS2
+     */
+    public CssBorderFaceStyleCSS2() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new CssBorderFaceStyleCSS2 with an another CssBorderFaceStyle
+     *
+     * @param another An another side.
+     */
+    public CssBorderFaceStyleCSS2(CssBorderFaceStyleCSS2 another) {
+	value = another.value;
+    }
+
+    /**
+     * Create a new CssBorderFaceStyleCSS2
+     *
+     * @param expression The expression for this face
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssBorderFaceStyleCSS2(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	if (val instanceof CssIdent) {
+	    int hash = val.hashCode();
+	    for (int i = 0; i < BORDERSTYLE.length; i++)
+		if (hash_values[i] == hash) {
+		    value = i;
+		    expression.next();
+		    return;
+		}
+	}
+
+	throw new InvalidParamException("value", val.toString(), "style", ac);
+    }
+
+    public CssBorderFaceStyleCSS2(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression,false);
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == (BORDERSTYLE.length - 1);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return BORDERSTYLE[value];
+    }
+
+    /**
+     * Returns the value
+     */
+    public String getStyle() {
+	return BORDERSTYLE[value];
+    }
+
+    /**
+     * Compares two side for equality.
+     *
+     * @param value The another side.
+     */
+    public boolean equals(CssBorderFaceStyleCSS2 style) {
+	return value == style.value;
+    }
+
+    static {
+	hash_values = new int[BORDERSTYLE.length];
+	for (int i=0; i<BORDERSTYLE.length; i++)
+	    hash_values[i] = BORDERSTYLE[i].hashCode();
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderFaceWidth.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,124 @@
+//
+// $Id: CssBorderFaceWidth.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+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.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderFaceWidth {
+
+    CssValue value;
+
+    /**
+     * Create a new CssBorderFaceWidth
+     */
+    public CssBorderFaceWidth() {
+	//value = medium;
+    }
+
+    /**
+     * Create a new CssBorderFaceWidth from an another CssBorderFaceWidth
+     *
+     * @param another The another side.
+     */
+    public CssBorderFaceWidth(CssBorderFaceWidth another) {
+	value = another.value;
+    }
+
+    /**
+     * Create a new CssBorderFaceWidth
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderFaceWidth(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	CssIdent initial = new CssIdent("initial");
+
+	if (val instanceof CssLength) {
+	    float f = ((Float) val.get()).floatValue();
+	    if (f >= 0)
+		this.value = val;
+	    else
+		throw new InvalidParamException("negative-value", val.toString(), ac);
+	} else if (val instanceof CssNumber) {
+	    value = ((CssNumber) val).getLength();
+	} else if (val instanceof CssPercentage) {
+	    value = val;
+	} else if (val.equals(thin)) {
+	    value = thin;
+	} else if (val.equals(medium)) {
+	    value = medium;
+	} else if (val.equals(thick)) {
+	    value = thick;
+	} else if (val.equals(initial)) {
+	    value = initial;
+	} else if (val.equals(CssProperty.inherit)) {
+	    value = CssProperty.inherit;
+	} else {
+	    throw new InvalidParamException("value", val.toString(), "width", ac);
+	}
+
+	expression.next();
+    }
+
+    public CssBorderFaceWidth(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the internal value
+     */
+    public CssValue getValue() {
+	return value;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+
+	if (value != null) {
+	    return value.toString();
+	} else {
+	    return "";
+	}
+    }
+
+    /**
+     * Compares two sides for equality.
+     *
+     * @param value The another side.
+     */
+    public boolean equals(CssBorderFaceWidth another) {
+	return value.equals(another.value); // FIXME
+    }
+
+    private static CssIdent thin = new CssIdent("thin");
+    private static CssIdent medium = new CssIdent("medium");
+    private static CssIdent thick = new CssIdent("thick");
+
+}
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderFaceWidthCSS1.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,116 @@
+//
+// $Id: CssBorderFaceWidthCSS1.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+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.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderFaceWidthCSS1 {
+
+    CssValue value;
+
+    /**
+     * Create a new CssBorderFaceWidthCSS1
+     */
+    public CssBorderFaceWidthCSS1() {
+	value = medium;
+    }
+
+    /**
+     * Create a new CssBorderFaceWidthCSS1 from an another CssBorderFaceWidthCSS1
+     *
+     * @param another The another side.
+     */
+    public CssBorderFaceWidthCSS1(CssBorderFaceWidthCSS1 another) {
+	value = another.value;
+    }
+
+    /**
+     * Create a new CssBorderFaceWidth
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderFaceWidthCSS1(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	if (val instanceof CssLength) {
+	    float f = ((Float) val.get()).floatValue();
+	    if (f >= 0)
+		this.value = val;
+	    else
+		throw new InvalidParamException("negative-value", val.toString(), ac);
+	} else if (val instanceof CssNumber) {
+	    value = ((CssNumber) val).getLength();
+	} else if (val.equals(thin)) {
+	    value = thin;
+	} else if (val.equals(medium)) {
+	    value = medium;
+	} else if (val.equals(thick)) {
+	    value = thick;
+	} else if (val.equals(CssProperty.inherit)) {
+	    value = CssProperty.inherit;
+	} else {
+	    throw new InvalidParamException("value", val.toString(), "width", ac);
+	}
+
+	expression.next();
+    }
+
+    public CssBorderFaceWidthCSS1(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the internal value
+     */
+    public CssValue getValue() {
+	return value;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if(value != null) {
+	    return value.toString();
+	}
+	return "";
+    }
+
+    /**
+     * Compares two sides for equality.
+     *
+     * @param value The another side.
+     */
+    public boolean equals(CssBorderFaceWidthCSS1 another) {
+	return value.equals(another.value); // FIXME
+    }
+
+    private static CssIdent thin = new CssIdent("thin");
+    private static CssIdent medium = new CssIdent("medium");
+    private static CssIdent thick = new CssIdent("thick");
+
+}
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderFaceWidthCSS2.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,138 @@
+//
+// $Id: CssBorderFaceWidthCSS2.java,v 1.4 2008-03-25 18:43:30 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 org.w3c.css.properties.css1;
+
+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.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssTypes;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.4 $
+ */
+public class CssBorderFaceWidthCSS2 {
+
+    CssValue value;
+    private static CssIdent thin;
+    private static CssIdent medium;
+    private static CssIdent thick;
+    
+    static {
+	thin = new CssIdent("thin");
+	medium = new CssIdent("medium");
+	thick = new CssIdent("thick");
+    }
+    
+    /**
+     * Create a new CssBorderFaceWidthCSS2
+     */
+    public CssBorderFaceWidthCSS2() {
+	value = medium;
+    }
+
+    /**
+     * Create a new CssBorderFaceWidthCSS2 from an another CssBorderFaceWidthCSS2
+     *
+     * @param another The another side.
+     */
+    public CssBorderFaceWidthCSS2(CssBorderFaceWidthCSS2 another) {
+	value = another.value;
+    }
+
+    /**
+     * Create a new CssBorderFaceWidth
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderFaceWidthCSS2(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	switch (val.getType()) {
+	case CssTypes.CSS_LENGTH:
+	    float f = ((Float) val.get()).floatValue();
+	    if (f >= 0) {
+		this.value = val;
+	    } else {
+		throw new InvalidParamException("negative-value", val.toString(), ac);
+	    }
+	    break;
+	case CssTypes.CSS_NUMBER:
+	    value = ((CssNumber) val).getLength();
+	    break;
+	case CssTypes.CSS_IDENT:
+	    CssIdent ci = (CssIdent) val;
+	    if (CssProperty.inherit.equals(ci)) {
+		value = CssProperty.inherit;
+		break;
+	    } 
+	    if (thin.equals(ci)) {
+		value = thin;
+		break;
+	    }
+	    if (medium.equals(ci)) {
+		value = medium;
+		break;
+	    }
+	    if (thick.equals(ci)) {
+		value = thick;
+		break;
+	    }
+	default:
+	    throw new InvalidParamException("value", val.toString(), "width", ac);
+	}
+	
+	expression.next();
+    }
+
+    public CssBorderFaceWidthCSS2(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the internal value
+     */
+    public CssValue getValue() {
+	return value;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if(value != null) {
+	    return value.toString();
+	}
+	return "";
+    }
+
+    /**
+     * Compares two sides for equality.
+     *
+     * @param value The another side.
+     */
+    public boolean equals(CssBorderFaceWidthCSS2 another) {
+	return value.equals(another.value); // FIXME
+    }
+
+
+
+}
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderLeft.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,381 @@
+//
+// $Id: CssBorderLeft.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+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.CssOperator;
+import org.w3c.css.values.CssURL;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'border-left'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;border-left-width&gt; || &lt;border-style&gt; ||
+ *   &lt;color&gt;<BR>
+ *   <EM>Initial:</EM> not defined for shorthand properties<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   This is a shorthand property for setting the width, style and color of an
+ *   element's left border.
+ *   <PRE>
+ *   H1 { border-bottom: thick solid red }
+ * </PRE>
+ *   <P>
+ *   The above rule will set the width, style and color of the border below the
+ *   H1 element. Omitted values will be set to their initial values:
+ *   <PRE>
+ *   H1 { border-bottom: thick solid }
+ * </PRE>
+ *   <P>
+ *   Since the color value is omitted in the example above, the border color will
+ *   be the same as the 'color' value of the element itself.
+ *   <P>
+ *   Note that while the 'border-style' property accepts up to four values, this
+ *   property only accepts one style value.
+ *
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderLeft extends CssProperty implements CssOperator {
+
+    CssBorderLeftWidth width;
+    CssBorderLeftStyle style;
+    CssBorderLeftColor color;
+    CssValue uri = null;
+
+    /**
+     * Create a new CssBorderFace
+     */
+    public CssBorderLeft() {
+    }
+
+    /**
+     * Create a new CssBorderFace
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssBorderLeft(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = null;
+	char op = SPACE;
+	boolean find = true;
+
+	if(check &&expression.getCount() > 4) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+
+	boolean manyValues = (expression.getCount() > 1);
+
+	while (find) {
+	    find = false;
+	    val = expression.getValue();
+	    op = expression.getOperator();
+
+	    if (val == null)
+		break;
+
+	    // if there are many values, we can't have inherit as one of them
+	    if(manyValues && val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", null, null, ac);
+	    }
+
+	    if (op != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(op)).toString()),
+						ac);
+
+	    if (width == null) {
+		try {
+		    width = new CssBorderLeftWidth(ac, expression);
+		    find = true;
+		} catch (InvalidParamException e) {
+		    // nothing to do, style will test this value
+		}
+	    }
+
+	    if (!find && style == null) {
+		try {
+		    style = new CssBorderLeftStyle(ac, expression);
+		    find = true;
+		}
+		catch (InvalidParamException e) {
+		    // nothing to do, style will test this value
+		}
+	    }
+
+	    if (!find && color == null) {
+		try {
+		    color = new CssBorderLeftColor(ac, expression);
+		    find = true;
+		}
+		catch(InvalidParamException e) {
+		    // nothing to do, uri will test this value
+		}
+	    }
+
+	    if (!find && uri == null) {
+		if (val instanceof CssURL) {
+		    uri = val;
+		    find = true;
+		}
+		else {
+		    throw new InvalidParamException("unrecognize", ac);
+		}
+	    }
+	}
+	/*
+	if (width == null)
+	    width = new CssBorderLeftWidth();
+	if (style == null)
+	    style = new CssBorderLeftStyle();
+	if (color == null)
+	    color = new CssBorderLeftColor();
+	*/
+    }
+
+    public CssBorderLeft(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return width;
+    }
+
+    /**
+     * Returns the color property
+     */
+    public CssValue getColor() {
+	if (color != null) {
+	    return color.getColor();
+	} else {
+	    return null;
+	}
+    }
+
+    /**
+     * Returns the width property
+     */
+    public CssValue getWidth() {
+	if (width != null) {
+	    return width.getValue();
+	} else {
+	    return null;
+	}
+    }
+
+    /**
+     * Returns the style property
+     */
+    public String getStyle() {
+	if (style != null) {
+	    return style.getStyle();
+	} else {
+	    return null;
+	}
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	String ret = "";
+	if(width != null) {
+	    ret += width;
+	}
+	if(style != null) {
+	    if(!ret.equals("")) {
+		ret += " ";
+	    }
+	    ret += style;
+	}
+	if(color != null) {
+	    if(!ret.equals("")) {
+		ret += " ";
+	    }
+	    ret += color;
+	}
+	if (uri != null) {
+	    if(!ret.equals("")) {
+		ret += " ";
+	    }
+	    ret += " " + uri.toString();
+	}
+	return ret;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-left";
+    }
+
+    /**
+     * Set this property to be important.
+     * Overrides this method for a macro
+     */
+    public void setImportant() {
+	if(width != null) {
+	    width.important = true;
+	}
+	if(style != null) {
+	    style.important = true;
+	}
+	if(color != null) {
+	    color.important = true;
+	}
+    }
+
+    /**
+     * Returns true if this property is important.
+     * Overrides this method for a macro
+     */
+    public boolean getImportant() {
+	return ((width == null || width.important) &&
+		(style == null || style.important) &&
+		(color == null || color.important));
+    }
+
+
+    /**
+     * Print this property.
+     *
+     * @param printer The printer.
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	if ((width != null && style != null &&
+	     color != null) &&
+	    (getImportant() ||
+	     (!width.important &&
+	      !style.important &&
+	      !color.important))) {
+	    printer.print(this);
+	} else {
+	    if (width != null)
+		width.print(printer);
+	    if (style != null)
+		style.print(printer);
+	    if (color != null)
+		color.print(printer);
+	}
+
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if(width != null) {
+	    width.addToStyle(ac, style);
+	}
+	if(this.style != null) {
+	    this.style.addToStyle(ac, style);
+	}
+	if(color != null) {
+	    color.addToStyle(ac, style);
+	}
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBorderLeft();
+	} else {
+	    return ((Css1Style) style).cssBorder.getLeft();
+	}
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	super.setInfo(line, source);
+	if(width != null) {
+	    width.setInfo(line, source);
+	}
+	if(style != null) {
+	    style.setInfo(line, source);
+	}
+	if(color != null) {
+	    color.setInfo(line, source);
+	}
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors selector) {
+	super.setSelectors(selector);
+	if (width != null) {
+	    width.setSelectors(selector);
+	}
+	if (style != null) {
+	    style.setSelectors(selector);
+	}
+	if (color != null) {
+	    color.setSelectors(selector);
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	if (property instanceof CssBorderLeft) {
+	    CssBorderLeft left = (CssBorderLeft) property;
+	    return (width != null && width.equals(left.width) &&
+		    style != null && style.equals(left.style) &&
+		    color != null && color.equals(left.color));
+	} else {
+	    return false;
+	}
+    }
+
+    void check() {
+	if ((style != null)
+	    && (style.face.value == 0)) {
+	    if (width != null) {
+		width.face.value = new CssLength();
+	    }
+	}
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderLeftCSS1.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,348 @@
+//
+// $Id: CssBorderLeftCSS1.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+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.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'border-left'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;border-left-width&gt; || &lt;border-style&gt; ||
+ *   &lt;color&gt;<BR>
+ *   <EM>Initial:</EM> not defined for shorthand properties<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   This is a shorthand property for setting the width, style and color of an
+ *   element's left border.
+ *   <PRE>
+ *   H1 { border-bottom: thick solid red }
+ * </PRE>
+ *   <P>
+ *   The above rule will set the width, style and color of the border below the
+ *   H1 element. Omitted values will be set to their initial values:
+ *   <PRE>
+ *   H1 { border-bottom: thick solid }
+ * </PRE>
+ *   <P>
+ *   Since the color value is omitted in the example above, the border color will
+ *   be the same as the 'color' value of the element itself.
+ *   <P>
+ *   Note that while the 'border-style' property accepts up to four values, this
+ *   property only accepts one style value.
+ *
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderLeftCSS1 extends CssProperty implements CssOperator {
+
+    CssBorderLeftWidthCSS1 width;
+    CssBorderLeftStyleCSS1 style;
+    CssBorderLeftColorCSS1 color;
+
+    /**
+     * Create a new CssBorderLeftCSS1
+     */
+    public CssBorderLeftCSS1() {
+    }
+
+    /**
+     * Create a new CssBorderLeftCSS1
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssBorderLeftCSS1(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = null;
+	char op = SPACE;
+	boolean find = true;
+
+	if(check && expression.getCount() > 3) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+
+	while (find) {
+	    find = false;
+	    val = expression.getValue();
+	    op = expression.getOperator();
+
+	    if (val == null)
+		break;
+
+	    if (op != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(op)).toString()),
+						ac);
+
+	    if (width == null) {
+		try {
+		    width = new CssBorderLeftWidthCSS1(ac, expression);
+		    find = true;
+		} catch (InvalidParamException e) {
+		    // nothing to do, style will test this value
+		}
+	    }
+	    if (!find && style == null) {
+		try {
+		    style = new CssBorderLeftStyleCSS1(ac, expression);
+		    find = true;
+		}
+		catch (InvalidParamException e) {
+		    // nothing to do, color will test this value
+		}
+	    }
+	    if (!find && color == null) {
+		color = new CssBorderLeftColorCSS1(ac, expression);
+		find = true;
+	    }
+	}
+	/*
+	if (width == null)
+	    width = new CssBorderLeftWidthCSS1();
+	if (style == null)
+	    style = new CssBorderLeftStyleCSS1();
+	if (color == null)
+	    color = new CssBorderLeftColorCSS1();
+	*/
+    }
+
+    public CssBorderLeftCSS1(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return width;
+    }
+
+    /**
+     * Returns the color property
+     */
+    public CssValue getColor() {
+	if (color != null) {
+	    return color.getColor();
+	} else {
+	    return null;
+	}
+    }
+
+    /**
+     * Returns the width property
+     */
+    public CssValue getWidth() {
+	if (width != null) {
+	    return width.getValue();
+	} else {
+	    return null;
+	}
+    }
+
+    /**
+     * Returns the style property
+     */
+    public String getStyle() {
+	if (style != null) {
+	    return style.getStyle();
+	} else {
+	    return null;
+	}
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	String ret = "";
+	if(width != null) {
+	    ret += width;
+	}
+	if(style != null) {
+	    if(!ret.equals("")) {
+		ret += " ";
+	    }
+	    ret += style;
+	}
+	if(color != null) {
+	    if(!ret.equals("")) {
+		ret += " ";
+	    }
+	    ret += color;
+	}
+	return ret;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-left";
+    }
+
+    /**
+     * Set this property to be important.
+     * Overrides this method for a macro
+     */
+    public void setImportant() {
+	if(width != null) {
+	    width.important = true;
+	}
+	if(style != null) {
+	    style.important = true;
+	}
+	if(color != null) {
+	    color.important = true;
+	}
+    }
+
+    /**
+     * Returns true if this property is important.
+     * Overrides this method for a macro
+     */
+    public boolean getImportant() {
+	return ((width == null || width.important) &&
+		(style == null || style.important) &&
+		(color == null || color.important));
+    }
+
+    /**
+     * Print this property.
+     *
+     * @param printer The printer.
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	if ((width != null && style != null &&
+	     color != null) &&
+	    (getImportant() ||
+	     (!width.important &&
+	      !style.important &&
+	      !color.important))) {
+	    printer.print(this);
+	} else {
+	    if (width != null)
+		width.print(printer);
+	    if (style != null)
+		style.print(printer);
+	    if (color != null)
+		color.print(printer);
+	}
+
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if(width != null) {
+	    width.addToStyle(ac, style);
+	}
+	if(this.style != null) {
+	    this.style.addToStyle(ac, style);
+	}
+	if(color != null) {
+	    color.addToStyle(ac, style);
+	}
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBorderLeftCSS1();
+	} else {
+	    return ((Css1Style) style).cssBorderCSS1.getLeft();
+	}
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	super.setInfo(line, source);
+	if(width != null) {
+	    width.setInfo(line, source);
+	}
+	if(style != null) {
+	    style.setInfo(line, source);
+	}
+	if(color != null) {
+	    color.setInfo(line, source);
+	}
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors selector) {
+	super.setSelectors(selector);
+	if (width != null) {
+	    width.setSelectors(selector);
+	}
+	if (style != null) {
+	    style.setSelectors(selector);
+	}
+	if (color != null) {
+	    color.setSelectors(selector);
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	if (property instanceof CssBorderLeftCSS1) {
+	    CssBorderLeftCSS1 left = (CssBorderLeftCSS1) property;
+	    return (width != null && width.equals(left.width) &&
+		    style != null && style.equals(left.style) &&
+		    color != null && color.equals(left.color));
+	} else {
+	    return false;
+	}
+    }
+
+    void check() {
+	if ((style != null)
+	    && (style.face.value == 0)) {
+	    if (width != null) {
+		width.face.value = new CssLength();
+	    }
+	}
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderLeftCSS2.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,378 @@
+//
+// $Id: CssBorderLeftCSS2.java,v 1.4 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+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.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'border-left'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;border-left-width&gt; || &lt;border-style&gt; ||
+ *   &lt;color&gt;<BR>
+ *   <EM>Initial:</EM> not defined for shorthand properties<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   This is a shorthand property for setting the width, style and color of an
+ *   element's left border.
+ *   <PRE>
+ *   H1 { border-bottom: thick solid red }
+ * </PRE>
+ *   <P>
+ *   The above rule will set the width, style and color of the border below the
+ *   H1 element. Omitted values will be set to their initial values:
+ *   <PRE>
+ *   H1 { border-bottom: thick solid }
+ * </PRE>
+ *   <P>
+ *   Since the color value is omitted in the example above, the border color will
+ *   be the same as the 'color' value of the element itself.
+ *   <P>
+ *   Note that while the 'border-style' property accepts up to four values, this
+ *   property only accepts one style value.
+ *
+ * @version $Revision: 1.4 $
+ */
+public class CssBorderLeftCSS2 extends CssProperty implements CssOperator {
+
+    CssBorderLeftWidthCSS2 width;
+    CssBorderLeftStyleCSS2 style;
+    CssBorderLeftColorCSS2 color;
+
+    /**
+     * Create a new CssBorderLeftCSS2
+     */
+    public CssBorderLeftCSS2() {
+    }
+
+    /**
+     * Create a new CssBorderLeftCSS2
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssBorderLeftCSS2(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = null;
+	char op = SPACE;
+	boolean find = true;
+
+	if(check && expression.getCount() > 3) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	boolean manyValues = (expression.getCount() > 1);
+
+	setByUser();
+
+	while (find) {
+	    find = false;
+	    val = expression.getValue();
+	    op = expression.getOperator();
+	    if (val == null)
+		break;
+
+	    // if there are many values, we can't have inherit as one of them
+	    if(manyValues && val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", null, null, ac);
+	    }
+
+	    if (op != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(op)).toString()),
+						ac);
+	    if (width == null) {
+		try {
+		    width = new CssBorderLeftWidthCSS2(ac, expression);
+		    find = true;
+		} catch(InvalidParamException e){
+		    // nothing to do, style will test this value
+		}
+	    }
+	    if (!find && style == null) {
+		try {
+		    style = new CssBorderLeftStyleCSS2(ac, expression);
+		    find = true;
+		} catch(InvalidParamException e){
+		    // nothing to do, color will test this value
+		}
+	    }
+	    if (!find && color == null) {
+		// throws an exception if the value is not valid
+		color = new CssBorderLeftColorCSS2(ac, expression);
+		find = true;
+	    }
+	}
+	/*
+	//if some values have not been set, we set them with their default ones
+	if (width == null) {
+	    width = new CssBorderLeftWidthCSS2();
+	}
+	if (style == null) {
+	    style = new CssBorderLeftStyleCSS2();
+	}
+	if (color == null) {
+	    color = new CssBorderLeftColorCSS2();
+	}
+	*/
+    }
+
+    public CssBorderLeftCSS2(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * @param color The color to set.
+     */
+    public void setColor(CssBorderLeftColorCSS2 color) {
+        this.color = color;
+    }
+
+    /**
+     * @param style The style to set.
+     */
+    public void setStyle(CssBorderLeftStyleCSS2 style) {
+        this.style = style;
+    }
+
+    /**
+     * @param width The width to set.
+     */
+    public void setWidth(CssBorderLeftWidthCSS2 width) {
+        this.width = width;
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return width;
+    }
+
+    /**
+     * Returns the color property
+     */
+    public CssValue getColor() {
+	if (color != null) {
+	    return color.getColor();
+	} else {
+	    return null;
+	}
+    }
+
+    /**
+     * Returns the width property
+     */
+    public CssValue getWidth() {
+	if (width != null) {
+	    return width.getValue();
+	} else {
+	    return null;
+	}
+    }
+
+    /**
+     * Returns the style property
+     */
+    public String getStyle() {
+	if (style != null) {
+	    return style.getStyle();
+	} else {
+	    return null;
+	}
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	String ret = "";
+	if(width != null) {
+	    ret += width;
+	}
+	if(style != null) {
+	    if(!ret.equals("")) {
+		ret += " ";
+	    }
+	    ret += style;
+	}
+	if(color != null) {
+	    if(!ret.equals("")) {
+		ret += " ";
+	    }
+	    ret += color;
+	}
+	return ret;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-left";
+    }
+
+    /**
+     * Set this property to be important.
+     * Overrides this method for a macro
+     */
+    public void setImportant() {
+	if(width != null) {
+	    width.important = true;
+	}
+	if(style != null) {
+	    style.important = true;
+	}
+	if(color != null) {
+	    color.important = true;
+	}
+    }
+
+    /**
+     * Returns true if this property is important.
+     * Overrides this method for a macro
+     */
+    public boolean getImportant() {
+	return ((width == null || width.important) &&
+		(style == null || style.important) &&
+		(color == null || color.important));
+    }
+
+    /**
+     * Print this property.
+     *
+     * @param printer The printer.
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	if ((width != null && style != null &&
+	     color != null) &&
+	    (getImportant() ||
+	     (!width.important &&
+	      !style.important &&
+	      !color.important))) {
+	    printer.print(this);
+	} else {
+	    if (width != null)
+		width.print(printer);
+	    if (style != null)
+		style.print(printer);
+	    if (color != null)
+		color.print(printer);
+	}
+
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors selector) {
+	super.setSelectors(selector);
+	if (width != null) {
+	    width.setSelectors(selector);
+	}
+	if (style != null) {
+	    style.setSelectors(selector);
+	}
+	if (color != null) {
+	    color.setSelectors(selector);
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if(width != null) {
+	    width.addToStyle(ac, style);
+	}
+	if(this.style != null) {
+	    this.style.addToStyle(ac, style);
+	}
+	if(color != null) {
+	    color.addToStyle(ac, style);
+	}
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBorderLeftCSS2();
+	} else {
+	    return ((Css1Style) style).cssBorderCSS2.getLeft();
+	}
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	super.setInfo(line, source);
+	if(width != null) {
+	    width.setInfo(line, source);
+	}
+	if(style != null) {
+	    style.setInfo(line, source);
+	}
+	if(color != null) {
+	    color.setInfo(line, source);
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	if (property instanceof CssBorderLeftCSS2) {
+	    CssBorderLeftCSS2 left = (CssBorderLeftCSS2) property;
+	    return (width != null && width.equals(left.width) &&
+		    style != null && style.equals(left.style) &&
+		    color != null && color.equals(left.color));
+	} else {
+	    return false;
+	}
+    }
+
+    void check() {
+	if ((style != null)
+	    && (style.face.value == 0)) {
+	    if (width != null) {
+		width.face.value = new CssLength();
+	    }
+	}
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderLeftColor.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,144 @@
+//
+// $Id: CssBorderLeftColor.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+
+/**
+ * Be careful, this is not a CSS1 property !
+ *
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderLeftColor extends CssProperty {
+
+    CssBorderFaceColor face;
+
+    /**
+     * Create a new CssBorderLeftColor
+     */
+    public CssBorderLeftColor() {
+	face = new CssBorderFaceColor();
+    }
+
+    /**
+     * Create a new CssBorderLeftColor with an another CssBorderFaceColor
+     * @param another The another side.
+     */
+    public CssBorderLeftColor(CssBorderFaceColor another) {
+
+	setByUser();
+
+	face = another;
+    }
+
+    /**
+     * Create a new CssBorderLeftColor
+     *
+     * @param expression The expression for this property.
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderLeftColor(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	face = new CssBorderFaceColor(ac, expression);
+    }
+
+    public CssBorderLeftColor(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return face;
+    }
+
+    /**
+     * Returns the color of this property
+     */
+    public CssValue getColor() {
+	if(face != null) {
+	    return face.getColor();
+	}
+	return null;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if(face != null) {
+	    return face.toString();
+	}
+	return "";
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-left-color";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBorderLeft left = ((Css1Style) style).cssBorder.left;
+	if (left.color != null)
+	    style.addRedefinitionWarning(ac, this);
+	left.color = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBorderLeftColor();
+	} else {
+	    return ((Css1Style) style).cssBorder.getLeft().color;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderLeftColor && face.equals(((CssBorderLeftColor) property).face));
+    }
+
+    /**
+     * Print this property
+     *
+     * @param printer The printer.
+     */
+    public void print(CssPrinterStyle printer) {
+	if (face != null && !face.isDefault())
+	    printer.print(this);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderLeftColorCSS1.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,144 @@
+//
+// $Id: CssBorderLeftColorCSS1.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+
+/**
+ * Be careful, this is not a CSS1 property !
+ *
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderLeftColorCSS1 extends CssProperty {
+
+    CssBorderFaceColorCSS1 face;
+
+    /**
+     * Create a new CssBorderLeftColorCSS1
+     */
+    public CssBorderLeftColorCSS1() {
+	face = new CssBorderFaceColorCSS1();
+    }
+
+    /**
+     * Create a new CssBorderLeftColorCSS1 with an another CssBorderFaceColorCSS1
+     * @param another The another side.
+     */
+    public CssBorderLeftColorCSS1(CssBorderFaceColorCSS1 another) {
+
+	setByUser();
+
+	face = another;
+    }
+
+    /**
+     * Create a new CssBorderLeftColorCSS1
+     *
+     * @param expression The expression for this property.
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderLeftColorCSS1(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	face = new CssBorderFaceColorCSS1(ac, expression);
+    }
+
+    public CssBorderLeftColorCSS1(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return face;
+    }
+
+    /**
+     * Returns the color of this property
+     */
+    public CssValue getColor() {
+	if(face != null) {
+	    return face.getColor();
+	}
+	return null;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if(face != null) {
+	    return face.toString();
+	}
+	return "";
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-left-color";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBorderLeftCSS1 left = ((Css1Style) style).cssBorderCSS1.left;
+	if (left.color != null)
+	    style.addRedefinitionWarning(ac, this);
+	left.color = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBorderLeftColorCSS1();
+	} else {
+	    return ((Css1Style) style).cssBorderCSS1.getLeft().color;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderLeftColorCSS1 && face.equals(((CssBorderLeftColorCSS1) property).face));
+    }
+
+    /**
+     * Print this property
+     *
+     * @param printer The printer.
+     */
+    public void print(CssPrinterStyle printer) {
+	if (face != null && !face.isDefault())
+	    printer.print(this);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderLeftColorCSS2.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,158 @@
+//
+// $Id: CssBorderLeftColorCSS2.java,v 1.4 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+
+/**
+ * Be careful, this is not a CSS1 property !
+ *
+ * @version $Revision: 1.4 $
+ */
+public class CssBorderLeftColorCSS2 extends CssProperty {
+
+    CssBorderFaceColorCSS2 face;
+
+    /**
+     * Create a new CssBorderLeftColorCSS2
+     */
+    public CssBorderLeftColorCSS2() {
+	face = new CssBorderFaceColorCSS2();
+    }
+
+    /**
+     * Create a new CssBorderLeftColorCSS2 with an another CssBorderFaceColorCSS2
+     * @param another The another side.
+     */
+    public CssBorderLeftColorCSS2(CssBorderFaceColorCSS2 another) {
+
+	setByUser();
+
+	face = another;
+    }
+
+    /**
+     * Create a new CssBorderLeftColorCSS2
+     *
+     * @param expression The expression for this property.
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderLeftColorCSS2(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	face = new CssBorderFaceColorCSS2(ac, expression);
+    }
+
+    public CssBorderLeftColorCSS2(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * @return Returns the face.
+     */
+    public CssBorderFaceColorCSS2 getFace() {
+        return face;
+    }
+
+    /**
+     * @param face The face to set.
+     */
+    public void setFace(CssBorderFaceColorCSS2 face) {
+        this.face = face;
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return face;
+    }
+
+    /**
+     * Returns the color of this property
+     */
+    public CssValue getColor() {
+	if(face != null) {
+	    return face.getColor();
+	}
+	return null;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if(face != null) {
+	    return face.toString();
+	}
+	return "";
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-left-color";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBorderLeftCSS2 left = ((Css1Style) style).cssBorderCSS2.left;
+	if (left.color != null)
+	    style.addRedefinitionWarning(ac, this);
+	left.color = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBorderLeftColorCSS2();
+	} else {
+	    return ((Css1Style) style).cssBorderCSS2.getLeft().color;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderLeftColorCSS2 && face.equals(((CssBorderLeftColorCSS2) property).face));
+    }
+
+    /**
+     * Print this property
+     *
+     * @param printer The printer.
+     */
+    public void print(CssPrinterStyle printer) {
+	if (face != null && !face.isDefault())
+	    printer.print(this);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderLeftStyle.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,131 @@
+//
+// $Id: CssBorderLeftStyle.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+/**
+ * Be careful, this is not a CSS1 property !
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderLeftStyle extends CssProperty {
+
+    CssBorderFaceStyle face;
+
+    /**
+     * Create a new CssBorderLeftStyle
+     */
+    public CssBorderLeftStyle() {
+	face = new CssBorderFaceStyle();
+    }
+
+    /**
+     * Create a new CssBorderLeftStyle with an another CssBorderFaceStyle
+     *
+     * @param another The another side.
+     */
+    public CssBorderLeftStyle(CssBorderFaceStyle another) {
+	setByUser();
+
+	face = another;
+    }
+
+    /**
+     * Create a new CssBorderLeftStyle
+     *
+     * @param expression The expression for this property.
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderLeftStyle(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	face = new CssBorderFaceStyle(ac, expression);
+    }
+
+    public CssBorderLeftStyle(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return face;
+    }
+
+    /**
+     * Returns the value
+     */
+    public String getStyle() {
+	if(face != null) {
+	    return face.getStyle();
+	}
+	return null;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if(face != null) {
+	    return face.toString();
+	}
+	return "";
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-left-style";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBorderLeft left = ((Css1Style) style).cssBorder.left;
+	if (left.style != null)
+	    style.addRedefinitionWarning(ac, this);
+	left.style = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBorderLeftStyle();
+	} else {
+	    return ((Css1Style) style).cssBorder.getLeft().style;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderLeftStyle && face.equals(((CssBorderLeftStyle) property).face));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderLeftStyleCSS1.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,131 @@
+//
+// $Id: CssBorderLeftStyleCSS1.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+/**
+ * Be careful, this is not a CSS1 property !
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderLeftStyleCSS1 extends CssProperty {
+
+    CssBorderFaceStyleCSS1 face;
+
+    /**
+     * Create a new CssBorderLeftStyleCSS1
+     */
+    public CssBorderLeftStyleCSS1() {
+	face = new CssBorderFaceStyleCSS1();
+    }
+
+    /**
+     * Create a new CssBorderLeftStyleCSS1 with an another CssBorderFaceStyleCSS1
+     *
+     * @param another The another side.
+     */
+    public CssBorderLeftStyleCSS1(CssBorderFaceStyleCSS1 another) {
+	setByUser();
+
+	face = another;
+    }
+
+    /**
+     * Create a new CssBorderLeftStyleCSS1
+     *
+     * @param expression The expression for this property.
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderLeftStyleCSS1(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	face = new CssBorderFaceStyleCSS1(ac, expression);
+    }
+
+    public CssBorderLeftStyleCSS1(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression,false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return face;
+    }
+
+    /**
+     * Returns the value
+     */
+    public String getStyle() {
+	if(face != null) {
+	    return face.getStyle();
+	}
+	return null;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if(face != null) {
+	    return face.toString();
+	}
+	return "";
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-left-style";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBorderLeftCSS1 left = ((Css1Style) style).cssBorderCSS1.left;
+	if (left.style != null)
+	    style.addRedefinitionWarning(ac, this);
+	left.style = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBorderLeftStyleCSS1();
+	} else {
+	    return ((Css1Style) style).cssBorderCSS1.getLeft().style;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderLeftStyleCSS1 && face.equals(((CssBorderLeftStyleCSS1) property).face));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderLeftStyleCSS2.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,131 @@
+//
+// $Id: CssBorderLeftStyleCSS2.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+/**
+ * Be careful, this is not a CSS1 property !
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderLeftStyleCSS2 extends CssProperty {
+
+    CssBorderFaceStyleCSS2 face;
+
+    /**
+     * Create a new CssBorderLeftStyleCSS2
+     */
+    public CssBorderLeftStyleCSS2() {
+	face = new CssBorderFaceStyleCSS2();
+    }
+
+    /**
+     * Create a new CssBorderLeftStyleCSS2 with an another CssBorderFaceStyleCSS2
+     *
+     * @param another The another side.
+     */
+    public CssBorderLeftStyleCSS2(CssBorderFaceStyleCSS2 another) {
+	setByUser();
+
+	face = another;
+    }
+
+    /**
+     * Create a new CssBorderLeftStyleCSS2
+     *
+     * @param expression The expression for this property.
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderLeftStyleCSS2(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	face = new CssBorderFaceStyleCSS2(ac, expression);
+    }
+
+    public CssBorderLeftStyleCSS2(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression,false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return face;
+    }
+
+    /**
+     * Returns the value
+     */
+    public String getStyle() {
+	if(face != null) {
+	    return face.getStyle();
+	}
+	return null;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if(face != null) {
+	    return face.toString();
+	}
+	return "";
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-left-style";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBorderLeftCSS2 left = ((Css1Style) style).cssBorderCSS2.left;
+	if (left.style != null)
+	    style.addRedefinitionWarning(ac, this);
+	left.style = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBorderLeftStyleCSS2();
+	} else {
+	    return ((Css1Style) style).cssBorderCSS2.getLeft().style;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderLeftStyleCSS2 && face.equals(((CssBorderLeftStyleCSS2) property).face));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderLeftWidth.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,160 @@
+//
+// $Id: CssBorderLeftWidth.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *      &nbsp;&nbsp; 'border-left-width'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> thin | medium | thick | &lt;length&gt;<BR>
+ *   <EM>Initial:</EM> 'medium'<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   This property sets the width of an element's left border. The width of the
+ *   keyword values are UA dependent, but the following holds: 'thin' &lt;= 'medium'
+ *   &lt;= 'thick'.
+ *   <P>
+ *   The keyword widths are constant throughout a document:
+ *   <PRE>
+ *   H1 { border: solid thick red }
+ *   P  { border: solid thick blue }
+ * </PRE>
+ *   <P>
+ *   In the example above, 'H1' and 'P' elements will have the same border width
+ *   regardless of font size. To achieve relative widths, the 'em' unit can be
+ *   used:
+ *   <PRE>
+ *   H1 { border: solid 0.5em }
+ * </PRE>
+ *   <P>
+ *   Border widths cannot be negative.
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderLeftWidth extends CssProperty {
+
+    CssBorderFaceWidth face;
+
+    /**
+     * Create a new CssBorderLeftWidth
+     */
+    public CssBorderLeftWidth() {
+	face = new CssBorderFaceWidth();
+    }
+
+    /**
+     * Create a new CssBorderLeftWidth with an another CssBorderFaceWidth
+     *
+     * @param another The another side.
+     */
+    public CssBorderLeftWidth(CssBorderFaceWidth another) {
+	setByUser();
+
+	face = another;
+    }
+
+    /**
+     * Create a new CssBorderLeftWidth
+     *
+     * @param expression The expression for this property.
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderLeftWidth(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	face = new CssBorderFaceWidth(ac, expression);
+    }
+
+    public CssBorderLeftWidth(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression,false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return face;
+    }
+
+    /**
+     * Return the value of this property
+     */
+    public CssValue getValue() {
+	if(face != null) {
+	    return face.getValue();
+	}
+	return null;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if(face != null) {
+	    return face.toString();
+	}
+	return "";
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-left-width";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBorderLeft left = ((Css1Style) style).cssBorder.left;
+	if (left.width != null)
+	    style.addRedefinitionWarning(ac, this);
+	left.width = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBorderLeftWidth();
+	} else {
+	    return ((Css1Style) style).cssBorder.getLeft().width;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderLeftWidth &&
+		face.equals(((CssBorderLeftWidth) property).face));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderLeftWidthCSS1.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,160 @@
+//
+// $Id: CssBorderLeftWidthCSS1.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *      &nbsp;&nbsp; 'border-left-width'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> thin | medium | thick | &lt;length&gt;<BR>
+ *   <EM>Initial:</EM> 'medium'<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   This property sets the width of an element's left border. The width of the
+ *   keyword values are UA dependent, but the following holds: 'thin' &lt;= 'medium'
+ *   &lt;= 'thick'.
+ *   <P>
+ *   The keyword widths are constant throughout a document:
+ *   <PRE>
+ *   H1 { border: solid thick red }
+ *   P  { border: solid thick blue }
+ * </PRE>
+ *   <P>
+ *   In the example above, 'H1' and 'P' elements will have the same border width
+ *   regardless of font size. To achieve relative widths, the 'em' unit can be
+ *   used:
+ *   <PRE>
+ *   H1 { border: solid 0.5em }
+ * </PRE>
+ *   <P>
+ *   Border widths cannot be negative.
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderLeftWidthCSS1 extends CssProperty {
+
+    CssBorderFaceWidthCSS1 face;
+
+    /**
+     * Create a new CssBorderLeftWidthCSS1
+     */
+    public CssBorderLeftWidthCSS1() {
+	face = new CssBorderFaceWidthCSS1();
+    }
+
+    /**
+     * Create a new CssBorderLeftWidthCSS1 with an another CssBorderFaceWidthCSS1
+     *
+     * @param another The another side.
+     */
+    public CssBorderLeftWidthCSS1(CssBorderFaceWidthCSS1 another) {
+	setByUser();
+
+	face = another;
+    }
+
+    /**
+     * Create a new CssBorderLeftWidthCSS1
+     *
+     * @param expression The expression for this property.
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderLeftWidthCSS1(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	face = new CssBorderFaceWidthCSS1(ac, expression);
+    }
+
+    public CssBorderLeftWidthCSS1(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression,false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return face;
+    }
+
+    /**
+     * Return the value of this property
+     */
+    public CssValue getValue() {
+	if(face != null) {
+	    return face.getValue();
+	}
+	return null;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if(face != null) {
+	    return face.toString();
+	}
+	return "";
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-left-width";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBorderLeftCSS1 left = ((Css1Style) style).cssBorderCSS1.left;
+	if (left.width != null)
+	    style.addRedefinitionWarning(ac, this);
+	left.width = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBorderLeftWidthCSS1();
+	} else {
+	    return ((Css1Style) style).cssBorderCSS1.getLeft().width;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderLeftWidthCSS1 &&
+		face.equals(((CssBorderLeftWidthCSS1) property).face));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderLeftWidthCSS2.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,160 @@
+//
+// $Id: CssBorderLeftWidthCSS2.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *      &nbsp;&nbsp; 'border-left-width'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> thin | medium | thick | &lt;length&gt;<BR>
+ *   <EM>Initial:</EM> 'medium'<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   This property sets the width of an element's left border. The width of the
+ *   keyword values are UA dependent, but the following holds: 'thin' &lt;= 'medium'
+ *   &lt;= 'thick'.
+ *   <P>
+ *   The keyword widths are constant throughout a document:
+ *   <PRE>
+ *   H1 { border: solid thick red }
+ *   P  { border: solid thick blue }
+ * </PRE>
+ *   <P>
+ *   In the example above, 'H1' and 'P' elements will have the same border width
+ *   regardless of font size. To achieve relative widths, the 'em' unit can be
+ *   used:
+ *   <PRE>
+ *   H1 { border: solid 0.5em }
+ * </PRE>
+ *   <P>
+ *   Border widths cannot be negative.
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderLeftWidthCSS2 extends CssProperty {
+
+    CssBorderFaceWidthCSS2 face;
+
+    /**
+     * Create a new CssBorderLeftWidthCSS2
+     */
+    public CssBorderLeftWidthCSS2() {
+	face = new CssBorderFaceWidthCSS2();
+    }
+
+    /**
+     * Create a new CssBorderLeftWidthCSS2 with an another CssBorderFaceWidthCSS2
+     *
+     * @param another The another side.
+     */
+    public CssBorderLeftWidthCSS2(CssBorderFaceWidthCSS2 another) {
+	setByUser();
+
+	face = another;
+    }
+
+    /**
+     * Create a new CssBorderLeftWidthCSS2
+     *
+     * @param expression The expression for this property.
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderLeftWidthCSS2(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	face = new CssBorderFaceWidthCSS2(ac, expression);
+    }
+
+    public CssBorderLeftWidthCSS2(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression,false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return face;
+    }
+
+    /**
+     * Return the value of this property
+     */
+    public CssValue getValue() {
+	if(face != null) {
+	    return face.getValue();
+	}
+	return null;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if(face != null) {
+	    return face.toString();
+	}
+	return "";
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-left-width";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBorderLeftCSS2 left = ((Css1Style) style).cssBorderCSS2.left;
+	if (left.width != null)
+	    style.addRedefinitionWarning(ac, this);
+	left.width = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBorderLeftWidthCSS2();
+	} else {
+	    return ((Css1Style) style).cssBorderCSS2.getLeft().width;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderLeftWidthCSS2 &&
+		face.equals(((CssBorderLeftWidthCSS2) property).face));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderRight.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,380 @@
+//
+// $Id: CssBorderRight.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+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.CssOperator;
+import org.w3c.css.values.CssURL;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'border-right'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;border-right-width&gt; || &lt;border-style&gt; ||
+ *   &lt;color&gt;<BR>
+ *   <EM>Initial:</EM> not defined for shorthand properties<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   This is a shorthand property for setting the width, style and color of an
+ *   element's right border.
+ *   <PRE>
+ *   H1 { border-bottom: thick solid red }
+ * </PRE>
+ *   <P>
+ *   The above rule will set the width, style and color of the border below the
+ *   H1 element. Omitted values will be set to their initial values:
+ *   <PRE>
+ *   H1 { border-bottom: thick solid }
+ * </PRE>
+ *   <P>
+ *   Since the color value is omitted in the example above, the border color will
+ *   be the same as the 'color' value of the element itself.
+ *   <P>
+ *   Note that while the 'border-style' property accepts up to four values, this
+ *   property only accepts one style value.
+ *
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderRight extends CssProperty implements CssOperator {
+
+    CssBorderRightWidth width;
+    CssBorderRightStyle style;
+    CssBorderRightColor color;
+    CssValue uri = null;
+
+    /**
+     * Create a new CssBorderFace
+     */
+    public CssBorderRight() {
+    }
+
+    /**
+     * Create a new CssBorderFace
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssBorderRight(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = null;
+	char op = SPACE;
+	boolean find = true;
+
+	if(check && expression.getCount() > 4) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+
+	boolean manyValues = (expression.getCount() > 1);
+
+	while (find) {
+	    find = false;
+	    val = expression.getValue();
+	    op = expression.getOperator();
+
+	    if (val == null)
+		break;
+
+	    // if there are many values, we can't have inherit as one of them
+	    if(manyValues && val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", null, null, ac);
+	    }
+
+	    if (op != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(op)).toString()),
+						ac);
+
+	    if (width == null) {
+		try {
+		    width = new CssBorderRightWidth(ac, expression);
+		    find = true;
+		} catch (InvalidParamException e) {
+		    // nothing to do, style will test this value
+		}
+	    }
+
+	    if (!find && style == null) {
+		try {
+		    style = new CssBorderRightStyle(ac, expression);
+		    find = true;
+		}
+		catch (InvalidParamException e) {
+		    // nothing to do, color will test this value
+		}
+	    }
+
+	    if (!find && color == null) {
+		try {
+		    color = new CssBorderRightColor(ac, expression);
+		    find = true;
+		}
+		catch(InvalidParamException e) {
+		    // nothing to do, uri will test this value
+		}
+	    }
+
+	    if (!find && uri == null) {
+		if (val instanceof CssURL) {
+		    uri = val;
+		    find = true;
+		}
+		else {
+		    throw new InvalidParamException("unrecognize", ac);
+		}
+	    }
+	}
+	/*
+	if (width == null)
+	    width = new CssBorderRightWidth();
+	if (style == null)
+	    style = new CssBorderRightStyle();
+	if (color == null)
+	    color = new CssBorderRightColor();
+	*/
+    }
+
+    public CssBorderRight(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression,false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return width;
+    }
+
+    /**
+     * Returns the color property
+     */
+    public CssValue getColor() {
+	if (color != null) {
+	    return color.getColor();
+	} else {
+	    return null;
+	}
+    }
+
+    /**
+     * Returns the width property
+     */
+    public CssValue getWidth() {
+	if (width != null) {
+	    return width.getValue();
+	} else {
+	    return null;
+	}
+    }
+
+    /**
+     * Returns the style property
+     */
+    public String getStyle() {
+	if (style != null) {
+	    return style.getStyle();
+	} else {
+	    return null;
+	}
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	String ret = "";
+	if(width != null) {
+	    ret += width;
+	}
+	if(style != null) {
+	    if(!ret.equals("")) {
+		ret += " ";
+	    }
+	    ret += style;
+	}
+	if(color != null) {
+	    if(!ret.equals("")) {
+		ret += " ";
+	    }
+	    ret += color;
+	}
+	if (uri != null) {
+	    if(!ret.equals("")) {
+		ret += " ";
+	    }
+	    ret += " " + uri.toString();
+	}
+	return ret;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-right";
+    }
+
+    /**
+     * Set this property to be important.
+     * Overrides this method for a macro
+     */
+    public void setImportant() {
+	if(width != null) {
+	    width.important = true;
+	}
+	if(style != null) {
+	    style.important = true;
+	}
+	if(color != null) {
+	    color.important = true;
+	}
+    }
+
+    /**
+     * Returns true if this property is important.
+     * Overrides this method for a macro
+     */
+    public boolean getImportant() {
+	return ((width == null || width.important) &&
+		(style == null || style.important) &&
+		(color == null || color.important));
+    }
+
+    /**
+     * Print this property.
+     *
+     * @param printer The printer.
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	if ((width != null && style != null &&
+	     color != null) &&
+	    (getImportant() ||
+	     (!width.important &&
+	      !style.important &&
+	      !color.important))) {
+	    printer.print(this);
+	} else {
+	    if (width != null)
+		width.print(printer);
+	    if (style != null)
+		style.print(printer);
+	    if (color != null)
+		color.print(printer);
+	}
+
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if(width != null) {
+	    width.addToStyle(ac, style);
+	}
+	if(this.style != null) {
+	    this.style.addToStyle(ac, style);
+	}
+	if(color != null) {
+	    color.addToStyle(ac, style);
+	}
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBorderRight();
+	} else {
+	    return ((Css1Style) style).cssBorder.getRight();
+	}
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	super.setInfo(line, source);
+	if(width != null) {
+	    width.setInfo(line, source);
+	}
+	if(style != null) {
+	    style.setInfo(line, source);
+	}
+	if(color != null) {
+	    color.setInfo(line, source);
+	}
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors selector) {
+	super.setSelectors(selector);
+	if (width != null) {
+	    width.setSelectors(selector);
+	}
+	if (style != null) {
+	    style.setSelectors(selector);
+	}
+	if (color != null) {
+	    color.setSelectors(selector);
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	if (property instanceof CssBorderRight) {
+	    CssBorderRight right = (CssBorderRight) property;
+	    return (width != null && width.equals(right.width) &&
+		    style != null && style.equals(right.style) &&
+		    color != null && color.equals(right.color));
+	} else {
+	    return false;
+	}
+    }
+
+    void check() {
+	if ((style != null)
+	    && (style.face.value == 0)) {
+	    if (width != null) {
+		width.face.value = new CssLength();
+	    }
+	}
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderRightCSS1.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,357 @@
+//
+// $Id: CssBorderRightCSS1.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+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.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'border-right'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;border-right-width&gt; || &lt;border-style&gt; ||
+ *   &lt;color&gt;<BR>
+ *   <EM>Initial:</EM> not defined for shorthand properties<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   This is a shorthand property for setting the width, style and color of an
+ *   element's right border.
+ *   <PRE>
+ *   H1 { border-bottom: thick solid red }
+ * </PRE>
+ *   <P>
+ *   The above rule will set the width, style and color of the border below the
+ *   H1 element. Omitted values will be set to their initial values:
+ *   <PRE>
+ *   H1 { border-bottom: thick solid }
+ * </PRE>
+ *   <P>
+ *   Since the color value is omitted in the example above, the border color will
+ *   be the same as the 'color' value of the element itself.
+ *   <P>
+ *   Note that while the 'border-style' property accepts up to four values, this
+ *   property only accepts one style value.
+ *
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderRightCSS1 extends CssProperty implements CssOperator {
+
+    CssBorderRightWidthCSS1 width;
+    CssBorderRightStyleCSS1 style;
+    CssBorderRightColorCSS1 color;
+
+    /**
+     * Create a new CssBorderFaceCSS1
+     */
+    public CssBorderRightCSS1() {
+    }
+
+    /**
+     * Create a new CssBorderFaceCSS1
+     *
+     * @param expression The expression for this property
+     * @param check true will test the number of parameters
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssBorderRightCSS1(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	CssValue val = null;
+	char op = SPACE;
+	boolean find = true;
+
+	if(check && expression.getCount() > 3) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+
+	while (find) {
+	    find = false;
+	    val = expression.getValue();
+	    op = expression.getOperator();
+
+	    if (val == null)
+		break;
+
+	    if (op != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(op)).toString()),
+						ac);
+
+	    if (width == null) {
+		try {
+		    width = new CssBorderRightWidthCSS1(ac, expression);
+		    find = true;
+		} catch (InvalidParamException e) {
+		    // nothing to do, style will test this value
+		}
+	    }
+	    if (!find && style == null) {
+		try {
+		    style = new CssBorderRightStyleCSS1(ac, expression);
+		    find = true;
+		}
+		catch (InvalidParamException e) {
+		    // nothing to do, color will test this value
+		}
+	    }
+	    if (!find && color == null) {
+		color = new CssBorderRightColorCSS1(ac, expression);
+		find = true;
+	    }
+	}
+	/*
+	if (width == null)
+	    width = new CssBorderRightWidthCSS1();
+	if (style == null)
+	    style = new CssBorderRightStyleCSS1();
+	if (color == null)
+	    color = new CssBorderRightColorCSS1();
+	*/
+    }
+
+    /**
+     * Create a new CssBorderFaceCSS1
+     *
+     * @param expression The expression for this property
+     * @param check true will test the number of parameters
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssBorderRightCSS1(ApplContext ac, CssExpression expression)
+    	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return width;
+    }
+
+    /**
+     * Returns the color property
+     */
+    public CssValue getColor() {
+	if (color != null) {
+	    return color.getColor();
+	} else {
+	    return null;
+	}
+    }
+
+    /**
+     * Returns the width property
+     */
+    public CssValue getWidth() {
+	if (width != null) {
+	    return width.getValue();
+	} else {
+	    return null;
+	}
+    }
+
+    /**
+     * Returns the style property
+     */
+    public String getStyle() {
+	if (style != null) {
+	    return style.getStyle();
+	} else {
+	    return null;
+	}
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	String ret = "";
+	if(width != null) {
+	    ret += width;
+	}
+	if(style != null) {
+	    if(!ret.equals("")) {
+		ret += " ";
+	    }
+	    ret += style;
+	}
+	if(color != null) {
+	    if(!ret.equals("")) {
+		ret += " ";
+	    }
+	    ret += color;
+	}
+	return ret;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-right";
+    }
+
+    /**
+     * Set this property to be important.
+     * Overrides this method for a macro
+     */
+    public void setImportant() {
+	if(width != null) {
+	    width.important = true;
+	}
+	if(style != null) {
+	    style.important = true;
+	}
+	if(color != null) {
+	    color.important = true;
+	}
+    }
+
+    /**
+     * Returns true if this property is important.
+     * Overrides this method for a macro
+     */
+    public boolean getImportant() {
+	return ((width == null || width.important) &&
+		(style == null || style.important) &&
+		(color == null || color.important));
+    }
+
+    /**
+     * Print this property.
+     *
+     * @param printer The printer.
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	if ((width != null && style != null &&
+	     color != null) &&
+	    (getImportant() ||
+	     (!width.important &&
+	      !style.important &&
+	      !color.important))) {
+	    printer.print(this);
+	} else {
+	    if (width != null)
+		width.print(printer);
+	    if (style != null)
+		style.print(printer);
+	    if (color != null)
+		color.print(printer);
+	}
+
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if(width != null) {
+	    width.addToStyle(ac, style);
+	}
+	if(this.style != null) {
+	    this.style.addToStyle(ac, style);
+	}
+	if(color != null) {
+	    color.addToStyle(ac, style);
+	}
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBorderRightCSS1();
+	} else {
+	    return ((Css1Style) style).cssBorderCSS1.getRight();
+	}
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	super.setInfo(line, source);
+	if(width != null) {
+	    width.setInfo(line, source);
+	}
+	if(style != null) {
+	    style.setInfo(line, source);
+	}
+	if(color != null) {
+	    color.setInfo(line, source);
+	}
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors selector) {
+	super.setSelectors(selector);
+	if (width != null) {
+	    width.setSelectors(selector);
+	}
+	if (style != null) {
+	    style.setSelectors(selector);
+	}
+	if (color != null) {
+	    color.setSelectors(selector);
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	if (property instanceof CssBorderRightCSS1) {
+	    CssBorderRightCSS1 right = (CssBorderRightCSS1) property;
+	    return (width != null && width.equals(right.width) &&
+		    style != null && style.equals(right.style) &&
+		    color != null && color.equals(right.color));
+	} else {
+	    return false;
+	}
+    }
+
+    void check() {
+	if ((style != null)
+	    && (style.face.value == 0)) {
+	    if (width != null) {
+		width.face.value = new CssLength();
+	    }
+	}
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderRightCSS2.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,379 @@
+//
+// $Id: CssBorderRightCSS2.java,v 1.4 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+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.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'border-right'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;border-right-width&gt; || &lt;border-style&gt; ||
+ *   &lt;color&gt;<BR>
+ *   <EM>Initial:</EM> not defined for shorthand properties<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   This is a shorthand property for setting the width, style and color of an
+ *   element's right border.
+ *   <PRE>
+ *   H1 { border-bottom: thick solid red }
+ * </PRE>
+ *   <P>
+ *   The above rule will set the width, style and color of the border below the
+ *   H1 element. Omitted values will be set to their initial values:
+ *   <PRE>
+ *   H1 { border-bottom: thick solid }
+ * </PRE>
+ *   <P>
+ *   Since the color value is omitted in the example above, the border color will
+ *   be the same as the 'color' value of the element itself.
+ *   <P>
+ *   Note that while the 'border-style' property accepts up to four values, this
+ *   property only accepts one style value.
+ *
+ * @version $Revision: 1.4 $
+ */
+public class CssBorderRightCSS2 extends CssProperty implements CssOperator {
+
+    CssBorderRightWidthCSS2 width;
+    CssBorderRightStyleCSS2 style;
+    CssBorderRightColorCSS2 color;
+
+    /**
+     * Create a new CssBorderFaceCSS2
+     */
+    public CssBorderRightCSS2() {
+    }
+
+    /**
+     * Create a new CssBorderFaceCSS2
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssBorderRightCSS2(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = null;
+	char op = SPACE;
+	boolean find = true;
+
+	if(check && expression.getCount() > 3) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	boolean manyValues = (expression.getCount() > 1);
+
+	setByUser();
+
+	while (find) {
+	    find = false;
+	    val = expression.getValue();
+	    op = expression.getOperator();
+	    if (val == null)
+		break;
+
+	    // if there are many values, we can't have inherit as one of them
+	    if(manyValues && val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", null, null, ac);
+	    }
+
+	    if (op != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(op)).toString()),
+						ac);
+	    if (width == null) {
+		try {
+		    width = new CssBorderRightWidthCSS2(ac, expression);
+		    find = true;
+		} catch(InvalidParamException e){
+		    // nothing to do, style will test this value
+		}
+	    }
+	    if (!find && style == null) {
+		try {
+		    style = new CssBorderRightStyleCSS2(ac, expression);
+		    find = true;
+		} catch(InvalidParamException e){
+		    // nothing to do, color will test this value
+		}
+	    }
+	    if (!find && color == null) {
+		// throws an exception if the value is not valid
+		color = new CssBorderRightColorCSS2(ac, expression);
+		find = true;
+	    }
+	}
+
+	//if some values have not been set, we set them with their default ones
+	/*
+	if (width == null) {
+	    width = new CssBorderRightWidthCSS2();
+	}
+	if (style == null) {
+	    style = new CssBorderRightStyleCSS2();
+	}
+	if (color == null) {
+	    color = new CssBorderRightColorCSS2();
+	}
+	*/
+    }
+
+    public CssBorderRightCSS2(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression,false);
+    }
+
+    /**
+     * @param color The color to set.
+     */
+    public void setColor(CssBorderRightColorCSS2 color) {
+        this.color = color;
+    }
+
+    /**
+     * @param style The style to set.
+     */
+    public void setStyle(CssBorderRightStyleCSS2 style) {
+        this.style = style;
+    }
+
+    /**
+     * @param width The width to set.
+     */
+    public void setWidth(CssBorderRightWidthCSS2 width) {
+        this.width = width;
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return width;
+    }
+
+    /**
+     * Returns the color property
+     */
+    public CssValue getColor() {
+	if (color != null) {
+	    return color.getColor();
+	} else {
+	    return null;
+	}
+    }
+
+    /**
+     * Returns the width property
+     */
+    public CssValue getWidth() {
+	if (width != null) {
+	    return width.getValue();
+	} else {
+	    return null;
+	}
+    }
+
+    /**
+     * Returns the style property
+     */
+    public String getStyle() {
+	if (style != null) {
+	    return style.getStyle();
+	} else {
+	    return null;
+	}
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	String ret = "";
+	if(width != null) {
+	    ret += width;
+	}
+	if(style != null) {
+	    if(!ret.equals("")) {
+		ret += " ";
+	    }
+	    ret += style;
+	}
+	if(color != null) {
+	    if(!ret.equals("")) {
+		ret += " ";
+	    }
+	    ret += color;
+	}
+	return ret;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-right";
+    }
+
+    /**
+     * Set this property to be important.
+     * Overrides this method for a macro
+     */
+    public void setImportant() {
+	if(width != null) {
+	    width.important = true;
+	}
+	if(style != null) {
+	    style.important = true;
+	}
+	if(color != null) {
+	    color.important = true;
+	}
+    }
+
+    /**
+     * Returns true if this property is important.
+     * Overrides this method for a macro
+     */
+    public boolean getImportant() {
+	return ((width == null || width.important) &&
+		(style == null || style.important) &&
+		(color == null || color.important));
+    }
+
+    /**
+     * Print this property.
+     *
+     * @param printer The printer.
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	if ((width != null && style != null &&
+	     color != null) &&
+	    (getImportant() ||
+	     (!width.important &&
+	      !style.important &&
+	      !color.important))) {
+	    printer.print(this);
+	} else {
+	    if (width != null)
+		width.print(printer);
+	    if (style != null)
+		style.print(printer);
+	    if (color != null)
+		color.print(printer);
+	}
+
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors selector) {
+	super.setSelectors(selector);
+	if (width != null) {
+	    width.setSelectors(selector);
+	}
+	if (style != null) {
+	    style.setSelectors(selector);
+	}
+	if (color != null) {
+	    color.setSelectors(selector);
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if(width != null) {
+	    width.addToStyle(ac, style);
+	}
+	if(this.style != null) {
+	    this.style.addToStyle(ac, style);
+	}
+	if(color != null) {
+	    color.addToStyle(ac, style);
+	}
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBorderRightCSS2();
+	} else {
+	    return ((Css1Style) style).cssBorderCSS2.getRight();
+	}
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	super.setInfo(line, source);
+	if(width != null) {
+	    width.setInfo(line, source);
+	}
+	if(style != null) {
+	    style.setInfo(line, source);
+	}
+	if(color != null) {
+	    color.setInfo(line, source);
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	if (property instanceof CssBorderRightCSS2) {
+	    CssBorderRightCSS2 right = (CssBorderRightCSS2) property;
+	    return (width != null && width.equals(right.width) &&
+		    style != null && style.equals(right.style) &&
+		    color != null && color.equals(right.color));
+	} else {
+	    return false;
+	}
+    }
+
+    void check() {
+	if ((style != null)
+	    && (style.face.value == 0)) {
+	    if (width != null) {
+		width.face.value = new CssLength();
+	    }
+	}
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderRightColor.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,144 @@
+//
+// $Id: CssBorderRightColor.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+/**
+ * Be careful, this is not a CSS1 property !
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderRightColor extends CssProperty {
+
+    CssBorderFaceColor face;
+
+    /**
+     * Create a new CssBorderRightColor
+     */
+    public CssBorderRightColor() {
+	face = new CssBorderFaceColor();
+    }
+
+    /**
+     * Create a new CssBorderRightColor with an another CssBorderFaceColor
+     *
+     * @param anothewr The another side.
+     */
+    public CssBorderRightColor(CssBorderFaceColor another) {
+
+	setByUser();
+
+	face = another;
+    }
+
+    /**
+     * Create a new CssBorderRightColor.
+     *
+     * @param expression The expression for this property.
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderRightColor(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	face = new CssBorderFaceColor(ac, expression);
+    }
+
+    public CssBorderRightColor(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression,false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return face;
+    }
+
+    /**
+     * Returns the color of this property
+     */
+    public CssValue getColor() {
+	if(face != null) {
+	    return face.getColor();
+	}
+	return null;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if(face != null) {
+	    return face.toString();
+	}
+	return "";
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-right-color";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBorderRight right = ((Css1Style) style).cssBorder.right;
+	if (right.color != null)
+	    style.addRedefinitionWarning(ac, this);
+	right.color = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBorderRightColor();
+	} else {
+	    return ((Css1Style) style).cssBorder.getRight().color;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderRightColor &&
+		face.equals(((CssBorderRightColor) property).face));
+    }
+
+    /**
+     * Print this property.
+     *
+     * @param printer The printer.
+     */
+    public void print(CssPrinterStyle printer) {
+	if (face != null && !face.isDefault())
+	    printer.print(this);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderRightColorCSS1.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,145 @@
+//
+// $Id: CssBorderRightColorCSS1.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+/**
+ * Be careful, this is not a CSS1 property !
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderRightColorCSS1 extends CssProperty {
+
+    CssBorderFaceColorCSS1 face;
+
+    /**
+     * Create a new CssBorderRightColorCSS1
+     */
+    public CssBorderRightColorCSS1() {
+	face = new CssBorderFaceColorCSS1();
+    }
+
+    /**
+     * Create a new CssBorderRightColorCSS1 with an another CssBorderFaceColorCSS1
+     *
+     * @param another The another side.
+     */
+    public CssBorderRightColorCSS1(CssBorderFaceColorCSS1 another) {
+
+	setByUser();
+
+	face = another;
+    }
+
+    /**
+     * Create a new CssBorderRightColorCSS1
+     *
+     * @param expression The expression for this property.
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderRightColorCSS1(ApplContext ac, CssExpression expression,
+	    boolean check)
+    throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	face = new CssBorderFaceColorCSS1(ac, expression);
+    }
+
+    public CssBorderRightColorCSS1(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression,false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return face;
+    }
+
+    /**
+     * Returns the color of this property
+     */
+    public CssValue getColor() {
+	if(face != null) {
+	    return face.getColor();
+	}
+	return null;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if(face != null) {
+	    return face.toString();
+	}
+	return "";
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-right-color";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBorderRightCSS1 right = ((Css1Style) style).cssBorderCSS1.right;
+	if (right.color != null)
+	    style.addRedefinitionWarning(ac, this);
+	right.color = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBorderRightColorCSS1();
+	} else {
+	    return ((Css1Style) style).cssBorderCSS1.getRight().color;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderRightColorCSS1 &&
+		face.equals(((CssBorderRightColorCSS1) property).face));
+    }
+
+    /**
+     * Print this property.
+     *
+     * @param printer The printer.
+     */
+    public void print(CssPrinterStyle printer) {
+	if (face != null && !face.isDefault())
+	    printer.print(this);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderRightColorCSS2.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,158 @@
+//
+// $Id: CssBorderRightColorCSS2.java,v 1.4 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+/**
+ * Be careful, this is not a CSS1 property !
+ * @version $Revision: 1.4 $
+ */
+public class CssBorderRightColorCSS2 extends CssProperty {
+
+    CssBorderFaceColorCSS2 face;
+
+    /**
+     * Create a new CssBorderRightColorCSS2
+     */
+    public CssBorderRightColorCSS2() {
+	face = new CssBorderFaceColorCSS2();
+    }
+
+    /**
+     * Create a new CssBorderRightColorCSS2 with an another CssBorderFaceColorCSS2
+     *
+     * @param another The another side.
+     */
+    public CssBorderRightColorCSS2(CssBorderFaceColorCSS2 another) {
+
+	setByUser();
+
+	face = another;
+    }
+
+    /**
+     * Create a new CssBorderRightColorCSS2
+     *
+     * @param expression The expression for this property.
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderRightColorCSS2(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	face = new CssBorderFaceColorCSS2(ac, expression);
+    }
+
+    public CssBorderRightColorCSS2(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression,false);
+    }
+
+    /**
+     * @return Returns the face.
+     */
+    public CssBorderFaceColorCSS2 getFace() {
+        return face;
+    }
+
+    /**
+     * @param face The face to set.
+     */
+    public void setFace(CssBorderFaceColorCSS2 face) {
+        this.face = face;
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return face;
+    }
+
+    /**
+     * Returns the color of this property
+     */
+    public CssValue getColor() {
+	if(face != null) {
+	    return face.getColor();
+	}
+	return null;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if(face != null) {
+	    return face.toString();
+	}
+	return "";
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-right-color";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBorderRightCSS2 right = ((Css1Style) style).cssBorderCSS2.right;
+	if (right.color != null)
+	    style.addRedefinitionWarning(ac, this);
+	right.color = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBorderRightColorCSS2();
+	} else {
+	    return ((Css1Style) style).cssBorderCSS2.getRight().color;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderRightColorCSS2 &&
+		face.equals(((CssBorderRightColorCSS2) property).face));
+    }
+
+    /**
+     * Print this property.
+     *
+     * @param printer The printer.
+     */
+    public void print(CssPrinterStyle printer) {
+	if (!face.isDefault())
+	    printer.print(this);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderRightStyle.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,135 @@
+//
+// $Id: CssBorderRightStyle.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+/**
+ * Be careful, this is not a CSS1 property !
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderRightStyle extends CssProperty {
+
+    CssBorderFaceStyle face;
+
+    /**
+     * Create a new CssBorderRightStyle
+     */
+    public CssBorderRightStyle() {
+	setByUser();
+
+	face = new CssBorderFaceStyle();
+    }
+
+    /**
+     * Create a new CssBorderRightStyle with an another CssBorderFaceStyle
+     *
+     * @param another The another side.
+     */
+    public CssBorderRightStyle(CssBorderFaceStyle another) {
+	setByUser();
+
+	face = another;
+    }
+
+    /**
+     * Create a new CssBorderRightStyle.
+     *
+     * @param expression The expression for this property.
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderRightStyle(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+
+	face = new CssBorderFaceStyle(ac, expression);
+    }
+
+    public CssBorderRightStyle(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression,false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return face;
+    }
+
+    /**
+     * Returns the value
+     */
+    public String getStyle() {
+	if(face != null) {
+	    return face.getStyle();
+	}
+	return null;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if(face != null) {
+	    return face.toString();
+	}
+	return "";
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-right-style";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBorderRight right = ((Css1Style) style).cssBorder.right;
+	if (right.style != null)
+	    style.addRedefinitionWarning(ac, this);
+	right.style = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBorderRightStyle();
+	} else {
+	    return ((Css1Style) style).cssBorder.getRight().style;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderRightStyle &&
+		face.equals(((CssBorderRightStyle) property).face));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderRightStyleCSS1.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,138 @@
+//
+// $Id: CssBorderRightStyleCSS1.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+/**
+ * Be careful, this is not a CSS1 property !
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderRightStyleCSS1 extends CssProperty {
+
+    CssBorderFaceStyleCSS1 face;
+
+    /**
+     * Create a new CssBorderRightStyleCSS1
+     */
+    public CssBorderRightStyleCSS1() {
+	setByUser();
+
+	face = new CssBorderFaceStyleCSS1();
+    }
+
+    /**
+     * Create a new CssBorderRightStyle with an another CssBorderFaceStyle
+     *
+     * @param another The another side.
+     */
+    public CssBorderRightStyleCSS1(CssBorderFaceStyleCSS1 another) {
+	setByUser();
+
+	face = another;
+    }
+
+    /**
+     * Create a new CssBorderRightStyleCSS1
+     *
+     * @param expression The expression for this property.
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderRightStyleCSS1(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+
+	face = new CssBorderFaceStyleCSS1(ac, expression);
+    }
+
+    public CssBorderRightStyleCSS1(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression,false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return face;
+    }
+
+    /**
+     * Returns the value
+     */
+    /**
+     * Return the value of this property
+     */
+    public String getStyle() {
+	if(face != null) {
+	    return face.getStyle();
+	}
+	return null;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if(face != null) {
+	    return face.toString();
+	}
+	return "";
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-right-style";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBorderRightCSS1 right = ((Css1Style) style).cssBorderCSS1.right;
+	if (right.style != null)
+	    style.addRedefinitionWarning(ac, this);
+	right.style = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBorderRightStyleCSS1();
+	} else {
+	    return ((Css1Style) style).cssBorderCSS1.getRight().style;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderRightStyleCSS1 &&
+		face.equals(((CssBorderRightStyleCSS1) property).face));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderRightStyleCSS2.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,138 @@
+//
+// $Id: CssBorderRightStyleCSS2.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+/**
+ * Be careful, this is not a CSS1 property !
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderRightStyleCSS2 extends CssProperty {
+
+    CssBorderFaceStyleCSS2 face;
+
+    /**
+     * Create a new CssBorderRightStyleCSS2
+     */
+    public CssBorderRightStyleCSS2() {
+	setByUser();
+
+	face = new CssBorderFaceStyleCSS2();
+    }
+
+    /**
+     * Create a new CssBorderRightStyle with an another CssBorderFaceStyle
+     *
+     * @param another The another side.
+     */
+    public CssBorderRightStyleCSS2(CssBorderFaceStyleCSS2 another) {
+	setByUser();
+
+	face = another;
+    }
+
+    /**
+     * Create a new CssBorderRightStyleCSS2
+     *
+     * @param expression The expression for this property.
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderRightStyleCSS2(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+
+	face = new CssBorderFaceStyleCSS2(ac, expression);
+    }
+
+    public CssBorderRightStyleCSS2(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression,false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return face;
+    }
+
+    /**
+     * Returns the value
+     */
+    /**
+     * Return the value of this property
+     */
+    public String getStyle() {
+	if(face != null) {
+	    return face.getStyle();
+	}
+	return null;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if(face != null) {
+	    return face.toString();
+	}
+	return "";
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-right-style";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBorderRightCSS2 right = ((Css1Style) style).cssBorderCSS2.right;
+	if (right.style != null)
+	    style.addRedefinitionWarning(ac, this);
+	right.style = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBorderRightStyleCSS2();
+	} else {
+	    return ((Css1Style) style).cssBorderCSS2.getRight().style;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderRightStyleCSS2 &&
+		face.equals(((CssBorderRightStyleCSS2) property).face));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderRightWidth.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,161 @@
+//
+// $Id: CssBorderRightWidth.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *      &nbsp;&nbsp; 'border-right-width'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> thin | medium | thick | &lt;length&gt;<BR>
+ *   <EM>Initial:</EM> 'medium'<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P> This property sets the width of an element's right border. The width of
+ *   the keyword values are UA dependent, but the following holds: 'thin' &lt;=
+ *   'medium' &lt;= 'thick'.
+ *   <P>
+ *   The keyword widths are constant throughout a document:
+ *   <PRE>
+ *   H1 { border: solid thick red }
+ *   P  { border: solid thick blue }
+ * </PRE>
+ *   <P>
+ *   In the example above, 'H1' and 'P' elements will have the same border width
+ *   regardless of font size. To achieve relative widths, the 'em' unit can be
+ *   used:
+ *   <PRE>
+ *   H1 { border: solid 0.5em }
+ * </PRE>
+ *   <P>
+ *   Border widths cannot be negative.
+ *
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderRightWidth extends CssProperty {
+
+    CssBorderFaceWidth face;
+
+    /**
+     * Create a new CssBorderRightWidth
+     */
+    public CssBorderRightWidth() {
+	face = new CssBorderFaceWidth();
+    }
+
+    /**
+     * Create a new CssBorderRightWidth with an another CssBorderFaceWidth
+     *
+     * @param another The another side.
+     */
+    public CssBorderRightWidth(CssBorderFaceWidth another) {
+	setByUser();
+
+	face = another;
+    }
+
+    /**
+     * Create a new CssBorderRightWidth
+     *
+     * @param expression The expression for this property.
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderRightWidth(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+
+	face = new CssBorderFaceWidth(ac, expression);
+    }
+
+    public CssBorderRightWidth(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression,false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return face;
+    }
+
+    /**
+     * Return the value of this property
+     */
+    public CssValue getValue() {
+	if(face != null) {
+	    return face.getValue();
+	}
+	return null;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if(face != null) {
+	    return face.toString();
+	}
+	return "";
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-right-width";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBorderRight right = ((Css1Style) style).cssBorder.right;
+	if (right.width != null)
+	    style.addRedefinitionWarning(ac, this);
+	right.width = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBorderRightWidth();
+	} else {
+	    return ((Css1Style) style).cssBorder.getRight().width;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderRightWidth &&
+		face.equals(((CssBorderRightWidth) property).face));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderRightWidthCSS1.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,161 @@
+//
+// $Id: CssBorderRightWidthCSS1.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *      &nbsp;&nbsp; 'border-right-width'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> thin | medium | thick | &lt;length&gt;<BR>
+ *   <EM>Initial:</EM> 'medium'<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P> This property sets the width of an element's right border. The width of
+ *   the keyword values are UA dependent, but the following holds: 'thin' &lt;=
+ *   'medium' &lt;= 'thick'.
+ *   <P>
+ *   The keyword widths are constant throughout a document:
+ *   <PRE>
+ *   H1 { border: solid thick red }
+ *   P  { border: solid thick blue }
+ * </PRE>
+ *   <P>
+ *   In the example above, 'H1' and 'P' elements will have the same border width
+ *   regardless of font size. To achieve relative widths, the 'em' unit can be
+ *   used:
+ *   <PRE>
+ *   H1 { border: solid 0.5em }
+ * </PRE>
+ *   <P>
+ *   Border widths cannot be negative.
+ *
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderRightWidthCSS1 extends CssProperty {
+
+    CssBorderFaceWidthCSS1 face;
+
+    /**
+     * Create a new CssBorderRightWidth
+     */
+    public CssBorderRightWidthCSS1() {
+	face = new CssBorderFaceWidthCSS1();
+    }
+
+    /**
+     * Create a new CssBorderRightWidthCSS1 with an another CssBorderFaceWidthCSS1
+     *
+     * @param another The another side.
+     */
+    public CssBorderRightWidthCSS1(CssBorderFaceWidthCSS1 another) {
+	setByUser();
+
+	face = another;
+    }
+
+    /**
+     * Create a new CssBorderRightWidthCSS1
+     *
+     * @param expression The expression for this property.
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderRightWidthCSS1(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+
+	face = new CssBorderFaceWidthCSS1(ac, expression);
+    }
+
+    public CssBorderRightWidthCSS1(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression,false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return face;
+    }
+
+    /**
+     * Return the value of this property
+     */
+    public CssValue getValue() {
+	if(face != null) {
+	    return face.getValue();
+	}
+	return null;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if(face != null) {
+	    return face.toString();
+	}
+	return "";
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-right-width";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBorderRightCSS1 right = ((Css1Style) style).cssBorderCSS1.right;
+	if (right.width != null)
+	    style.addRedefinitionWarning(ac, this);
+	right.width = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBorderRightWidthCSS1();
+	} else {
+	    return ((Css1Style) style).cssBorderCSS1.getRight().width;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderRightWidthCSS1 &&
+		face.equals(((CssBorderRightWidthCSS1) property).face));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderRightWidthCSS2.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,161 @@
+//
+// $Id: CssBorderRightWidthCSS2.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *      &nbsp;&nbsp; 'border-right-width'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> thin | medium | thick | &lt;length&gt;<BR>
+ *   <EM>Initial:</EM> 'medium'<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P> This property sets the width of an element's right border. The width of
+ *   the keyword values are UA dependent, but the following holds: 'thin' &lt;=
+ *   'medium' &lt;= 'thick'.
+ *   <P>
+ *   The keyword widths are constant throughout a document:
+ *   <PRE>
+ *   H1 { border: solid thick red }
+ *   P  { border: solid thick blue }
+ * </PRE>
+ *   <P>
+ *   In the example above, 'H1' and 'P' elements will have the same border width
+ *   regardless of font size. To achieve relative widths, the 'em' unit can be
+ *   used:
+ *   <PRE>
+ *   H1 { border: solid 0.5em }
+ * </PRE>
+ *   <P>
+ *   Border widths cannot be negative.
+ *
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderRightWidthCSS2 extends CssProperty {
+
+    CssBorderFaceWidthCSS2 face;
+
+    /**
+     * Create a new CssBorderRightWidth
+     */
+    public CssBorderRightWidthCSS2() {
+	face = new CssBorderFaceWidthCSS2();
+    }
+
+    /**
+     * Create a new CssBorderRightWidthCSS2 with an another CssBorderFaceWidthCSS2
+     *
+     * @param another The another side.
+     */
+    public CssBorderRightWidthCSS2(CssBorderFaceWidthCSS2 another) {
+	setByUser();
+
+	face = another;
+    }
+
+    /**
+     * Create a new CssBorderRightWidthCSS2
+     *
+     * @param expression The expression for this property.
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderRightWidthCSS2(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+
+	face = new CssBorderFaceWidthCSS2(ac, expression);
+    }
+
+    public CssBorderRightWidthCSS2(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression,false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return face;
+    }
+
+    /**
+     * Return the value of this property
+     */
+    public CssValue getValue() {
+	if(face != null) {
+	    return face.getValue();
+	}
+	return null;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if(face != null) {
+	    return face.toString();
+	}
+	return "";
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-right-width";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBorderRightCSS2 right = ((Css1Style) style).cssBorderCSS2.right;
+	if (right.width != null)
+	    style.addRedefinitionWarning(ac, this);
+	right.width = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBorderRightWidthCSS2();
+	} else {
+	    return ((Css1Style) style).cssBorderCSS2.getRight().width;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderRightWidthCSS2 &&
+		face.equals(((CssBorderRightWidthCSS2) property).face));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderStyle.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,395 @@
+//
+// $Id: CssBorderStyle.java,v 1.4 2006-04-19 11:28:05 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssOperator;
+
+/**
+ *   <H4>
+ *      &nbsp;&nbsp; 'border-style'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> none | dotted | dashed | solid | double | groove | ridge
+ *   | inset | outset<BR>
+ *   <EM>Initial:</EM> none<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   The 'border-style' property sets the style of the four borders. It can have
+ *   from one to four values, and the values are set on the different sides as
+ *   for 'border-width' above.
+ *   <PRE>
+ *   #xy34 { border-style: solid dotted }
+ * </PRE>
+ *   <P>
+ *   In the above example, the horizontal borders will be 'solid' and the vertical
+ *   borders will be 'dotted'.
+ *   <P>
+ *   Since the initial value of the border styles is 'none', no borders will be
+ *   visible unless the border style is set.
+ *   <P>
+ *   The border styles mean:
+ *   <DL>
+ *     <DT>
+ *       none
+ *     <DD>
+ *       no border is drawn (regardless of the 'border-width' value)
+ *     <DT>
+ *       dotted
+ *     <DD>
+ *       the border is a dotted line drawn on top of the background of the element
+ *     <DT>
+ *       dashed
+ *     <DD>
+ *       the border is a dashed line drawn on top of the background of the element
+ *     <DT>
+ *       solid
+ *     <DD>
+ *       the border is a solid line
+ *     <DT>
+ *       double
+ *     <DD> the border is a double line drawn on top of the background of the
+ *     element.  The sum of the two single lines and the space between equals
+ *     the &lt;border-width&gt; value.
+ *     <DT>
+ *       groove
+ *     <DD>
+ *       a 3D groove is drawn in colors based on the &lt;color&gt; value.
+ *     <DT>
+ *       ridge
+ *     <DD>
+ *       a 3D ridge is drawn in colors based on the &lt;color&gt; value.
+ *     <DT>
+ *       inset
+ *     <DD>
+ *       a 3D inset is drawn in colors based on the &lt;color&gt; value.
+ *     <DT>
+ *       outset
+ *     <DD>
+ *       a 3D outset is drawn in colors based on the &lt;color&gt; value.
+ *   </DL>
+ *   <P>
+ *   <EM>CSS1 core:</EM> UAs may interpret all of 'dotted', 'dashed', 'double',
+ *   'groove', 'ridge', 'inset' and 'outset' as 'solid'.
+ *
+ * @version $Revision: 1.4 $
+ */
+public class CssBorderStyle extends CssProperty implements CssOperator {
+
+    CssBorderTopStyle top;
+    CssBorderBottomStyle bottom;
+    CssBorderRightStyle right;
+    CssBorderLeftStyle left;
+
+    /**
+     * Create a new CssBorderStyle
+     */
+    public CssBorderStyle(CssBorderTopStyle top,
+	    CssBorderBottomStyle bottom,
+	    CssBorderRightStyle right,
+	    CssBorderLeftStyle left) {
+	this.top = top;
+	this.bottom = bottom;
+	this.left = left;
+	this.right = right;
+    }
+
+    /**
+     * Create a new CssBorder
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderStyle(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+
+	switch (expression.getCount()) {
+	case 1:
+	    top = new CssBorderTopStyle(ac, expression);
+	    /*bottom = new CssBorderBottomStyle((CssBorderFaceStyle) top.get());
+	    right = new CssBorderRightStyle((CssBorderFaceStyle) top.get());
+	    left = new CssBorderLeftStyle((CssBorderFaceStyle) top.get());*/
+	    break;
+	case 2:
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(expression.getOperator())).toString()),
+			ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    top = new CssBorderTopStyle(ac, expression);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    right = new CssBorderRightStyle(ac, expression);
+	    /*bottom = new CssBorderBottomStyle((CssBorderFaceStyle) top.get());
+	    left = new CssBorderLeftStyle((CssBorderFaceStyle) right.get());*/
+	    break;
+	case 3:
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(expression.getOperator())).toString()),
+			ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    top = new CssBorderTopStyle(ac, expression);
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(expression.getOperator())).toString()),
+			ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    right = new CssBorderRightStyle(ac, expression);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    bottom = new CssBorderBottomStyle(ac, expression);
+	    //left = new CssBorderLeftStyle((CssBorderFaceStyle) right.get());
+	    break;
+	case 4:
+	    if (expression.getOperator() != SPACE) {
+		throw new InvalidParamException("operator",
+			((new Character(expression.getOperator())).toString()),
+			ac);
+	    }
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    top = new CssBorderTopStyle(ac, expression);
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+		    ((new Character(expression.getOperator())).toString()),
+		    ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    right = new CssBorderRightStyle(ac, expression);
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+		    ((new Character(expression.getOperator())).toString()),
+		    ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    bottom = new CssBorderBottomStyle(ac, expression);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    left = new CssBorderLeftStyle(ac, expression);
+	    break;
+	    default:
+		if(check) {
+		    throw new InvalidParamException("unrecognize", ac);
+		}
+	    break;
+	}
+    }
+
+    public CssBorderStyle(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression,false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return top;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-style";
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+        String result = "";
+        // top should never be null
+        if(top != null) result += top;
+        if(right != null) result += " " + right;
+        if(bottom != null) result += " " + bottom;
+        if(left != null) result += " " + left;
+        return result;
+	/*if (right.face.equals(left.face)) {
+	    if (top.face.equals(bottom.face)) {
+		if (top.face.equals(right.face)) {
+		    return top.toString();
+		} else {
+		    return top + " " + right;
+		}
+	    } else {
+		return top + " " + right + " " + bottom;
+	    }
+	} else {
+	    return top + " " + right + " " + bottom + " " + left;
+	}*/
+    }
+
+    /**
+     * Set this property to be important.
+     * Overrides this method for a macro
+     */
+    public void setImportant() {
+	if(top != null) {
+	    top.important = true;
+	}
+	if(right != null) {
+	    right.important = true;
+	}
+	if(left != null) {
+	    left.important = true;
+	}
+	if(bottom != null) {
+	    bottom.important = true;
+	}
+    }
+
+    /**
+     * Returns true if this property is important.
+     * Overrides this method for a macro
+     */
+    public boolean getImportant() {
+	return ((top == null || top.important) &&
+		(right == null || right.important) &&
+		(left == null || left.important) &&
+		(bottom == null || bottom.important));
+    }
+
+    /**
+     * Print this property.
+     *
+     * @param printer The printer.
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	if ((top != null && right != null &&
+		left != null && bottom != null) &&
+		(getImportant() ||
+			(!top.important &&
+				!right.important &&
+				!left.important &&
+				!bottom.important))) {
+	    printer.print(this);
+	} else {
+	    if (top != null)
+		top.print(printer);
+	    if (right != null)
+		right.print(printer);
+	    if (left != null)
+		left.print(printer);
+	    if (bottom != null)
+		bottom.print(printer);
+	}
+
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors selector) {
+	super.setSelectors(selector);
+	if (top != null) {
+	    top.setSelectors(selector);
+	}
+	if (right != null) {
+	    right.setSelectors(selector);
+	}
+	if (bottom != null) {
+	    bottom.setSelectors(selector);
+	}
+	if (left != null) {
+	    left.setSelectors(selector);
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if(top != null) {
+	    top.addToStyle(ac , style);
+	}
+	if(right != null) {
+	    right.addToStyle(ac, style);
+	}
+	if(left != null) {
+	    left.addToStyle(ac, style);
+	}
+	if(bottom != null) {
+	    bottom.addToStyle(ac, style);
+	}
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	throw new IllegalStateException("Can't invoke this method on the property " +
+		getPropertyName());
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	super.setInfo(line, source);
+	if(top != null) {
+	    top.setInfo(line, source);
+	}
+	if(right != null) {
+	    right.setInfo(line, source);
+	}
+	if(left != null) {
+	    left.setInfo(line, source);
+	}
+	if(bottom != null) {
+	    bottom.setInfo(line, source);
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return false; // FIXME
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderStyleCSS1.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,367 @@
+//
+// $Id: CssBorderStyleCSS1.java,v 1.4 2006-04-19 11:28:05 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssOperator;
+
+/**
+ *   <H4>
+ *      &nbsp;&nbsp; 'border-style'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> none | dotted | dashed | solid | double | groove | ridge
+ *   | inset | outset<BR>
+ *   <EM>Initial:</EM> none<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   The 'border-style' property sets the style of the four borders. It can have
+ *   from one to four values, and the values are set on the different sides as
+ *   for 'border-width' above.
+ *   <PRE>
+ *   #xy34 { border-style: solid dotted }
+ * </PRE>
+ *   <P>
+ *   In the above example, the horizontal borders will be 'solid' and the vertical
+ *   borders will be 'dotted'.
+ *   <P>
+ *   Since the initial value of the border styles is 'none', no borders will be
+ *   visible unless the border style is set.
+ *   <P>
+ *   The border styles mean:
+ *   <DL>
+ *     <DT>
+ *       none
+ *     <DD>
+ *       no border is drawn (regardless of the 'border-width' value)
+ *     <DT>
+ *       dotted
+ *     <DD>
+ *       the border is a dotted line drawn on top of the background of the element
+ *     <DT>
+ *       dashed
+ *     <DD>
+ *       the border is a dashed line drawn on top of the background of the element
+ *     <DT>
+ *       solid
+ *     <DD>
+ *       the border is a solid line
+ *     <DT>
+ *       double
+ *     <DD> the border is a double line drawn on top of the background of the
+ *     element.  The sum of the two single lines and the space between equals
+ *     the &lt;border-width&gt; value.
+ *     <DT>
+ *       groove
+ *     <DD>
+ *       a 3D groove is drawn in colors based on the &lt;color&gt; value.
+ *     <DT>
+ *       ridge
+ *     <DD>
+ *       a 3D ridge is drawn in colors based on the &lt;color&gt; value.
+ *     <DT>
+ *       inset
+ *     <DD>
+ *       a 3D inset is drawn in colors based on the &lt;color&gt; value.
+ *     <DT>
+ *       outset
+ *     <DD>
+ *       a 3D outset is drawn in colors based on the &lt;color&gt; value.
+ *   </DL>
+ *   <P>
+ *   <EM>CSS1 core:</EM> UAs may interpret all of 'dotted', 'dashed', 'double',
+ *   'groove', 'ridge', 'inset' and 'outset' as 'solid'.
+ *
+ * @version $Revision: 1.4 $
+ */
+public class CssBorderStyleCSS1 extends CssProperty implements CssOperator {
+
+    CssBorderTopStyleCSS1 top;
+    CssBorderBottomStyleCSS1 bottom;
+    CssBorderRightStyleCSS1 right;
+    CssBorderLeftStyleCSS1 left;
+
+    /**
+     * Create a new CssBorderStyleCSS1
+     */
+    public CssBorderStyleCSS1(CssBorderTopStyleCSS1 top,
+	    CssBorderBottomStyleCSS1 bottom,
+	    CssBorderRightStyleCSS1 right,
+	    CssBorderLeftStyleCSS1 left) {
+
+	this.top = top;
+	this.bottom = bottom;
+	this.left = left;
+	this.right = right;
+    }
+
+    /**
+     * Create a new CssBorderStyleCSS1
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderStyleCSS1(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+
+	switch (expression.getCount()) {
+	case 1:
+	    top = new CssBorderTopStyleCSS1(ac, expression);
+	    /*bottom = new CssBorderBottomStyleCSS1((CssBorderFaceStyleCSS1) top.get());
+	    right = new CssBorderRightStyleCSS1((CssBorderFaceStyleCSS1) top.get());
+	    left = new CssBorderLeftStyleCSS1((CssBorderFaceStyleCSS1) top.get());*/
+	    break;
+	case 2:
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(expression.getOperator())).toString()),
+			ac);
+	    top = new CssBorderTopStyleCSS1(ac, expression);
+	    right = new CssBorderRightStyleCSS1(ac, expression);
+	    /*bottom = new CssBorderBottomStyleCSS1((CssBorderFaceStyleCSS1) top.get());
+	    left = new CssBorderLeftStyleCSS1((CssBorderFaceStyleCSS1) right.get());*/
+	    break;
+	case 3:
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(expression.getOperator())).toString()),
+			ac);
+	    top = new CssBorderTopStyleCSS1(ac, expression);
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(expression.getOperator())).toString()),
+			ac);
+	    right = new CssBorderRightStyleCSS1(ac, expression);
+	    bottom = new CssBorderBottomStyleCSS1(ac, expression);
+	    //left = new CssBorderLeftStyleCSS1((CssBorderFaceStyleCSS1) right.get());
+	    break;
+	case 4:
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(expression.getOperator())).toString()),
+			ac);
+	    top = new CssBorderTopStyleCSS1(ac, expression);
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(expression.getOperator())).toString()),
+			ac);
+	    right = new CssBorderRightStyleCSS1(ac, expression);
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(expression.getOperator())).toString()),
+			ac);
+	    bottom = new CssBorderBottomStyleCSS1(ac, expression);
+	    left = new CssBorderLeftStyleCSS1(ac, expression);
+	    break;
+	default:
+	    if(check) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	}
+    }
+
+    public CssBorderStyleCSS1(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression,false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return top;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-style";
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+        String result = "";
+        // top should never be null
+        if(top != null) result += top;
+        if(right != null) result += " " + right;
+        if(bottom != null) result += " " + bottom;
+        if(left != null) result += " " + left;
+        return result;
+	/*if (right.face.equals(left.face)) {
+	    if (top.face.equals(bottom.face)) {
+		if (top.face.equals(right.face)) {
+		    return top.toString();
+		} else {
+		    return top + " " + right;
+		}
+	    } else {
+		return top + " " + right + " " + bottom;
+	    }
+	} else {
+	    return top + " " + right + " " + bottom + " " + left;
+	}*/
+    }
+
+    /**
+     * Set this property to be important.
+     * Overrides this method for a macro
+     */
+    public void setImportant() {
+	if(top != null) {
+	    top.important = true;
+	}
+	if(right != null) {
+	    right.important = true;
+	}
+	if(left != null) {
+	    left.important = true;
+	}
+	if(bottom != null) {
+	    bottom.important = true;
+	}
+    }
+
+    /**
+     * Returns true if this property is important.
+     * Overrides this method for a macro
+     */
+    public boolean getImportant() {
+	return ((top == null || top.important) &&
+		(right == null || right.important) &&
+		(left == null || left.important) &&
+		(bottom == null || bottom.important));
+    }
+
+    /**
+     * Print this property.
+     *
+     * @param printer The printer.
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	if ((top != null && right != null &&
+		left != null && bottom != null) &&
+		(getImportant() ||
+			(!top.important &&
+				!right.important &&
+				!left.important &&
+				!bottom.important))) {
+	    printer.print(this);
+	} else {
+	    if (top != null)
+		top.print(printer);
+	    if (right != null)
+		right.print(printer);
+	    if (left != null)
+		left.print(printer);
+	    if (bottom != null)
+		bottom.print(printer);
+	}
+
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors selector) {
+	super.setSelectors(selector);
+	if (top != null) {
+	    top.setSelectors(selector);
+	}
+	if (right != null) {
+	    right.setSelectors(selector);
+	}
+	if (bottom != null) {
+	    bottom.setSelectors(selector);
+	}
+	if (left != null) {
+	    left.setSelectors(selector);
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if(top != null) {
+	    top.addToStyle(ac, style);
+	}
+	if(right != null) {
+	    right.addToStyle(ac, style);
+	}
+	if(left != null) {
+	    left.addToStyle(ac, style);
+	}
+	if(bottom != null) {
+	    bottom.addToStyle(ac, style);
+	}
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	throw new IllegalStateException("Can't invoke this method on the property " +
+		getPropertyName());
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	super.setInfo(line, source);
+	if(top != null) {
+	    top.setInfo(line, source);
+	}
+	if(right != null) {
+	    right.setInfo(line, source);
+	}
+	if(left != null) {
+	    left.setInfo(line, source);
+	}
+	if(bottom != null) {
+	    bottom.setInfo(line, source);
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return false; // FIXME
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderStyleCSS2.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,393 @@
+//
+// $Id: CssBorderStyleCSS2.java,v 1.4 2006-04-19 11:28:05 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssOperator;
+
+/**
+ *   <H4>
+ *      &nbsp;&nbsp; 'border-style'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> none | dotted | dashed | solid | double | groove | ridge
+ *   | inset | outset<BR>
+ *   <EM>Initial:</EM> none<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   The 'border-style' property sets the style of the four borders. It can have
+ *   from one to four values, and the values are set on the different sides as
+ *   for 'border-width' above.
+ *   <PRE>
+ *   #xy34 { border-style: solid dotted }
+ * </PRE>
+ *   <P>
+ *   In the above example, the horizontal borders will be 'solid' and the vertical
+ *   borders will be 'dotted'.
+ *   <P>
+ *   Since the initial value of the border styles is 'none', no borders will be
+ *   visible unless the border style is set.
+ *   <P>
+ *   The border styles mean:
+ *   <DL>
+ *     <DT>
+ *       none
+ *     <DD>
+ *       no border is drawn (regardless of the 'border-width' value)
+ *     <DT>
+ *       dotted
+ *     <DD>
+ *       the border is a dotted line drawn on top of the background of the element
+ *     <DT>
+ *       dashed
+ *     <DD>
+ *       the border is a dashed line drawn on top of the background of the element
+ *     <DT>
+ *       solid
+ *     <DD>
+ *       the border is a solid line
+ *     <DT>
+ *       double
+ *     <DD> the border is a double line drawn on top of the background of the
+ *     element.  The sum of the two single lines and the space between equals
+ *     the &lt;border-width&gt; value.
+ *     <DT>
+ *       groove
+ *     <DD>
+ *       a 3D groove is drawn in colors based on the &lt;color&gt; value.
+ *     <DT>
+ *       ridge
+ *     <DD>
+ *       a 3D ridge is drawn in colors based on the &lt;color&gt; value.
+ *     <DT>
+ *       inset
+ *     <DD>
+ *       a 3D inset is drawn in colors based on the &lt;color&gt; value.
+ *     <DT>
+ *       outset
+ *     <DD>
+ *       a 3D outset is drawn in colors based on the &lt;color&gt; value.
+ *   </DL>
+ *   <P>
+ *   <EM>CSS1 core:</EM> UAs may interpret all of 'dotted', 'dashed', 'double',
+ *   'groove', 'ridge', 'inset' and 'outset' as 'solid'.
+ *
+ * @version $Revision: 1.4 $
+ */
+public class CssBorderStyleCSS2 extends CssProperty implements CssOperator {
+
+    CssBorderTopStyleCSS2 top;
+    CssBorderBottomStyleCSS2 bottom;
+    CssBorderRightStyleCSS2 right;
+    CssBorderLeftStyleCSS2 left;
+
+    /**
+     * Create a new CssBorderStyleCSS2
+     */
+    public CssBorderStyleCSS2(CssBorderTopStyleCSS2 top,
+	    CssBorderBottomStyleCSS2 bottom,
+	    CssBorderRightStyleCSS2 right,
+	    CssBorderLeftStyleCSS2 left) {
+	this.top = top;
+	this.bottom = bottom;
+	this.left = left;
+	this.right = right;
+    }
+
+    /**
+     * Create a new CssBorderStyleCSS2
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderStyleCSS2(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+
+	switch (expression.getCount()) {
+	case 1:
+	    top = new CssBorderTopStyleCSS2(ac, expression);
+	    /*bottom = new CssBorderBottomStyleCSS2((CssBorderFaceStyleCSS2) top.get());
+	    right = new CssBorderRightStyleCSS2((CssBorderFaceStyleCSS2) top.get());
+	    left = new CssBorderLeftStyleCSS2((CssBorderFaceStyleCSS2) top.get());*/
+	    break;
+	case 2:
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(expression.getOperator())).toString()),
+			ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    top = new CssBorderTopStyleCSS2(ac, expression);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    right = new CssBorderRightStyleCSS2(ac, expression);
+	    /*bottom = new CssBorderBottomStyleCSS2((CssBorderFaceStyleCSS2) top.get());
+	    left = new CssBorderLeftStyleCSS2((CssBorderFaceStyleCSS2) right.get());*/
+	    break;
+	case 3:
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(expression.getOperator())).toString()),
+			ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    top = new CssBorderTopStyleCSS2(ac, expression);
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(expression.getOperator())).toString()),
+			ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    right = new CssBorderRightStyleCSS2(ac, expression);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    bottom = new CssBorderBottomStyleCSS2(ac, expression);
+	    //left = new CssBorderLeftStyleCSS2((CssBorderFaceStyleCSS2) right.get());
+	    break;
+	case 4:
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(expression.getOperator())).toString()),
+			ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    top = new CssBorderTopStyleCSS2(ac, expression);
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(expression.getOperator())).toString()),
+			ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    right = new CssBorderRightStyleCSS2(ac, expression);
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(expression.getOperator())).toString()),
+			ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    bottom = new CssBorderBottomStyleCSS2(ac, expression);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    left = new CssBorderLeftStyleCSS2(ac, expression);
+	    break;
+	default:
+	    if(check) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	}
+    }
+
+    public CssBorderStyleCSS2(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression,false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return top;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-style";
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+        String result = "";
+        // top should never be null
+        if(top != null) result += top;
+        if(right != null) result += " " + right;
+        if(bottom != null) result += " " + bottom;
+        if(left != null) result += " " + left;
+        return result;
+	/*if (right.face.equals(left.face)) {
+	    if (top.face.equals(bottom.face)) {
+		if (top.face.equals(right.face)) {
+		    return top.toString();
+		} else {
+		    return top + " " + right;
+		}
+	    } else {
+		return top + " " + right + " " + bottom;
+	    }
+	} else {
+	    return top + " " + right + " " + bottom + " " + left;
+	}*/
+    }
+
+    /**
+     * Set this property to be important.
+     * Overrides this method for a macro
+     */
+    public void setImportant() {
+	if(top != null) {
+	    top.important = true;
+	}
+	if(right != null) {
+	    right.important = true;
+	}
+	if(left != null) {
+	    left.important = true;
+	}
+	if(bottom != null) {
+	    bottom.important = true;
+	}
+    }
+
+    /**
+     * Returns true if this property is important.
+     * Overrides this method for a macro
+     */
+    public boolean getImportant() {
+	return ((top == null || top.important) &&
+		(right == null || right.important) &&
+		(left == null || left.important) &&
+		(bottom == null || bottom.important));
+    }
+
+    /**
+     * Print this property.
+     *
+     * @param printer The printer.
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	if ((top != null && right != null &&
+		left != null && bottom != null) &&
+		(getImportant() ||
+			(!top.important &&
+				!right.important &&
+				!left.important &&
+				!bottom.important))) {
+	    printer.print(this);
+	} else {
+	    if (top != null)
+		top.print(printer);
+	    if (right != null)
+		right.print(printer);
+	    if (left != null)
+		left.print(printer);
+	    if (bottom != null)
+		bottom.print(printer);
+	}
+
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors selector) {
+	super.setSelectors(selector);
+	if (top != null) {
+	    top.setSelectors(selector);
+	}
+	if (right != null) {
+	    right.setSelectors(selector);
+	}
+	if (bottom != null) {
+	    bottom.setSelectors(selector);
+	}
+	if (left != null) {
+	    left.setSelectors(selector);
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if(top != null) {
+	    top.addToStyle(ac, style);
+	}
+	if(right != null) {
+	    right.addToStyle(ac, style);
+	}
+	if(left != null) {
+	    left.addToStyle(ac, style);
+	}
+	if(bottom != null) {
+	    bottom.addToStyle(ac, style);
+	}
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	throw new IllegalStateException("Can't invoke this method on the property " +
+		getPropertyName());
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	super.setInfo(line, source);
+	if(top != null) {
+	    top.setInfo(line, source);
+	}
+	if(right != null) {
+	    right.setInfo(line, source);
+	}
+	if(left != null) {
+	    left.setInfo(line, source);
+	}
+	if(bottom != null) {
+	    bottom.setInfo(line, source);
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return false; // FIXME
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderTop.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,383 @@
+//
+// $Id: CssBorderTop.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+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.CssOperator;
+import org.w3c.css.values.CssURL;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'border-top'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;border-top-width&gt; || &lt;border-style&gt; ||
+ *   &lt;color&gt;<BR>
+ *   <EM>Initial:</EM> not defined for shorthand properties<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   This is a shorthand property for setting the width, style and color of an
+ *   element's top border.
+ *   <PRE>
+ *   H1 { border-bottom: thick solid red }
+ * </PRE>
+ *   <P>
+ *   The above rule will set the width, style and color of the border below the
+ *   H1 element. Omitted values will be set to their initial values:
+ *   <PRE>
+ *   H1 { border-bottom: thick solid }
+ * </PRE>
+ *   <P>
+ *   Since the color value is omitted in the example above, the border color will
+ *   be the same as the 'color' value of the element itself.
+ *   <P>
+ *   Note that while the 'border-style' property accepts up to four values, this
+ *   property only accepts one style value.
+ *
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderTop extends CssProperty implements CssOperator {
+
+    CssBorderTopWidth width;
+    CssBorderTopStyle style;
+    CssBorderTopColor color;
+    CssValue uri = null;
+
+    /**
+     * Create a new CssBorderFace
+     */
+    public CssBorderTop() {
+    }
+
+    /**
+     * Create a new CssBorderFace
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssBorderTop(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = null;
+	char op = SPACE;
+	boolean find = true;
+
+	if(check && expression.getCount() > 4) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+
+	boolean manyValues = (expression.getCount() > 1);
+
+	while (find) {
+	    find = false;
+	    val = expression.getValue();
+	    op = expression.getOperator();
+
+	    if (val == null)
+		break;
+
+	    // if there are many values, we can't have inherit as one of them
+	    if(manyValues && val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", null, null, ac);
+	    }
+
+	    if (op != SPACE)
+			throw new InvalidParamException("operator",
+						((new Character(op)).toString()), ac);
+
+	    if (width == null) {
+		try {
+		    width = new CssBorderTopWidth(ac, expression);
+		    find = true;
+		} catch (InvalidParamException e) {
+		    // nothing to do, style will test this value
+		}
+	    }
+
+	    if (!find && style == null) {
+		try {
+		    style = new CssBorderTopStyle(ac, expression);
+		    find = true;
+		}
+		catch (InvalidParamException e) {
+		    // nothing to do, color will test this value
+		}
+	    }
+
+	    if (!find && color == null) {
+		try {
+		    color = new CssBorderTopColor(ac, expression);
+		    find = true;
+		}
+		catch (InvalidParamException e) {
+		    // nothing to do, color will test this value
+		}
+	    }
+
+	    if (!find && uri == null) {
+		if (val instanceof CssURL) {
+		    uri = val;
+		    find = true;
+		}
+		else {
+		    throw new InvalidParamException("unrecognize", ac);
+		}
+	    }
+	}
+	/*
+	if (width == null) {
+	    width = new CssBorderTopWidth();
+	}
+	if (style == null) {
+	    style = new CssBorderTopStyle();
+	}
+
+	if (color == null) {
+	    color = new CssBorderTopColor();
+	}
+	*/
+    }
+
+    public CssBorderTop(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression,false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return width;
+    }
+
+    /**
+     * Returns the color property
+     */
+    public CssValue getColor() {
+	if (color != null) {
+	    return color.getColor();
+	} else {
+	    return null;
+	}
+    }
+
+    /**
+     * Returns the width property
+     */
+    public CssValue getWidth() {
+	if (width != null) {
+	    return width.getValue();
+	} else {
+	    return null;
+	}
+    }
+
+    /**
+     * Returns the style property
+     */
+    public String getStyle() {
+	if (style != null) {
+	    return style.getStyle();
+	} else {
+	    return null;
+	}
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	String ret = "";
+	if(width != null) {
+	    ret += width;
+	}
+	if(style != null) {
+	    if(!ret.equals("")) {
+		ret += " ";
+	    }
+	    ret += style;
+	}
+	if(color != null) {
+	    if(!ret.equals("")) {
+		ret += " ";
+	    }
+	    ret += color;
+	}
+	if (uri != null) {
+	    if(!ret.equals("")) {
+		ret += " ";
+	    }
+	    ret += " " + uri;
+	}
+	return ret;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-top";
+    }
+
+    /**
+     * Set this property to be important.
+     * Overrides this method for a macro
+     */
+    public void setImportant() {
+	if(width != null) {
+	    width.important = true;
+	}
+	if(style != null) {
+	    style.important = true;
+	}
+	if(color != null) {
+	    color.important = true;
+	}
+    }
+
+    /**
+     * Returns true if this property is important.
+     * Overrides this method for a macro
+     */
+    public boolean getImportant() {
+	return ((width == null || width.important) &&
+		(style == null || style.important) &&
+		(color == null || color.important));
+    }
+
+    /**
+     * Print this property.
+     *
+     * @param printer The printer.
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	if ((width != null && style != null &&
+	     color != null) &&
+	    (getImportant() ||
+	     (!width.important &&
+	      !style.important &&
+	      !color.important))) {
+	    printer.print(this);
+	} else {
+	    if (width != null)
+		width.print(printer);
+	    if (style != null)
+		style.print(printer);
+	    if (color != null)
+		color.print(printer);
+	}
+
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if(width != null) {
+	    width.addToStyle(ac, style);
+	}
+	if(this.style != null) {
+	    this.style.addToStyle(ac, style);
+	}
+	if(color != null) {
+	    color.addToStyle(ac, style);
+	}
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBorderTop();
+	} else {
+	    return ((Css1Style) style).cssBorder.getTop();
+	}
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	super.setInfo(line, source);
+	if(width != null) {
+	    width.setInfo(line, source);
+	}
+	if(style != null) {
+	    style.setInfo(line, source);
+	}
+	if(color != null) {
+	    color.setInfo(line, source);
+	}
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors selector) {
+	super.setSelectors(selector);
+	if (width != null) {
+	    width.setSelectors(selector);
+	}
+	if (style != null) {
+	    style.setSelectors(selector);
+	}
+	if (color != null) {
+	    color.setSelectors(selector);
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	if (property instanceof CssBorderTop) {
+	    CssBorderTop top = (CssBorderTop) property;
+	    return (width != null && width.equals(top.width) &&
+		    style != null && style.equals(top.style) &&
+		    color != null && color.equals(top.color));
+	} else {
+	    return false;
+	}
+    }
+
+    void check() {
+	if ((style != null)
+	    && (style.face.value == 0)) {
+	    if (width != null) {
+		width.face.value = new CssLength();
+	    }
+	}
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderTopCSS1.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,351 @@
+//
+// $Id: CssBorderTopCSS1.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+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.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'border-top'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;border-top-width&gt; || &lt;border-style&gt; ||
+ *   &lt;color&gt;<BR>
+ *   <EM>Initial:</EM> not defined for shorthand properties<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   This is a shorthand property for setting the width, style and color of an
+ *   element's top border.
+ *   <PRE>
+ *   H1 { border-bottom: thick solid red }
+ * </PRE>
+ *   <P>
+ *   The above rule will set the width, style and color of the border below the
+ *   H1 element. Omitted values will be set to their initial values:
+ *   <PRE>
+ *   H1 { border-bottom: thick solid }
+ * </PRE>
+ *   <P>
+ *   Since the color value is omitted in the example above, the border color will
+ *   be the same as the 'color' value of the element itself.
+ *   <P>
+ *   Note that while the 'border-style' property accepts up to four values, this
+ *   property only accepts one style value.
+ *
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderTopCSS1 extends CssProperty implements CssOperator {
+
+    CssBorderTopWidthCSS1 width;
+    CssBorderTopStyleCSS1 style;
+    CssBorderTopColorCSS1 color;
+
+    /**
+     * Create a new CssBorderFaceCSS1
+     */
+    public CssBorderTopCSS1() {
+    }
+
+    /**
+     * Create a new CssBorderFaceCSS1
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssBorderTopCSS1(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = null;
+	char op = SPACE;
+	boolean find = true;
+
+	if(check && expression.getCount() > 3) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+
+	while (find) {
+	    find = false;
+	    val = expression.getValue();
+	    op = expression.getOperator();
+	    if (val == null)
+		break;
+
+	    if (op != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(op)).toString()),
+						ac);
+	    if (width == null) {
+		try {
+		    width = new CssBorderTopWidthCSS1(ac, expression);
+		    find = true;
+		} catch(InvalidParamException e){
+		    //nothing to do, style will test this value
+		}
+	    }
+	    if (!find && style == null) {
+		try {
+		    style = new CssBorderTopStyleCSS1(ac, expression);
+		    find = true;
+		} catch(InvalidParamException e){
+		    //nothing to do, color will test this value
+		}
+	    }
+	    if (!find && color == null) {
+		// throws an exception if the value is not valid
+		color = new CssBorderTopColorCSS1(ac, expression);
+		find = true;
+	    }
+	}
+
+	//if some values have not been set, we set them with their default ones
+	/*
+	if (width == null) {
+	    width = new CssBorderTopWidthCSS1();
+	}
+	if (style == null) {
+	    style = new CssBorderTopStyleCSS1();
+	}
+	if (color == null) {
+	    color = new CssBorderTopColorCSS1();
+	}
+	*/
+    }
+
+    public CssBorderTopCSS1(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression,false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return width;
+    }
+
+    /**
+     * Returns the color property
+     */
+    public CssValue getColor() {
+	if (color != null) {
+	    return color.getColor();
+	} else {
+	    return null;
+	}
+    }
+
+    /**
+     * Returns the width property
+     */
+    public CssValue getWidth() {
+	if (width != null) {
+	    return width.getValue();
+	} else {
+	    return null;
+	}
+    }
+
+    /**
+     * Returns the style property
+     */
+    public String getStyle() {
+	if (style != null) {
+	    return style.getStyle();
+	} else {
+	    return null;
+	}
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	String ret = "";
+	if(width != null) {
+	    ret += width;
+	}
+	if(style != null) {
+	    if(!ret.equals("")) {
+		ret += " ";
+	    }
+	    ret += style;
+	}
+	if(color != null) {
+	    if(!ret.equals("")) {
+		ret += " ";
+	    }
+	    ret += color;
+	}
+	return ret;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-top";
+    }
+
+    /**
+     * Set this property to be important.
+     * Overrides this method for a macro
+     */
+    public void setImportant() {
+	if(width != null) {
+	    width.important = true;
+	}
+	if(style != null) {
+	    style.important = true;
+	}
+	if(color != null) {
+	    color.important = true;
+	}
+    }
+
+    /**
+     * Returns true if this property is important.
+     * Overrides this method for a macro
+     */
+    public boolean getImportant() {
+	return ((width == null || width.important) &&
+		(style == null || style.important) &&
+		(color == null || color.important));
+    }
+
+    /**
+     * Print this property.
+     *
+     * @param printer The printer.
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	if ((width != null && style != null &&
+	     color != null) &&
+	    (getImportant() ||
+	     (!width.important &&
+	      !style.important &&
+	      !color.important))) {
+	    printer.print(this);
+	} else {
+	    if (width != null)
+		width.print(printer);
+	    if (style != null)
+		style.print(printer);
+	    if (color != null)
+		color.print(printer);
+	}
+
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if(width != null) {
+	    width.addToStyle(ac, style);
+	}
+	if(this.style != null) {
+	    this.style.addToStyle(ac, style);
+	}
+	if(color != null) {
+	    color.addToStyle(ac, style);
+	}
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBorderTopCSS1();
+	} else {
+	    return ((Css1Style) style).cssBorderCSS1.getTop();
+	}
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	super.setInfo(line, source);
+	if(width != null) {
+	    width.setInfo(line, source);
+	}
+	if(style != null) {
+	    style.setInfo(line, source);
+	}
+	if(color != null) {
+	    color.setInfo(line, source);
+	}
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors selector) {
+	super.setSelectors(selector);
+	if (width != null) {
+	    width.setSelectors(selector);
+	}
+	if (style != null) {
+	    style.setSelectors(selector);
+	}
+	if (color != null) {
+	    color.setSelectors(selector);
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	if (property instanceof CssBorderTopCSS1) {
+	    CssBorderTopCSS1 top = (CssBorderTopCSS1) property;
+	    return (width != null && width.equals(top.width) &&
+		    style != null && style.equals(top.style) &&
+		    color != null && color.equals(top.color));
+	} else {
+	    return false;
+	}
+    }
+
+    void check() {
+	if ((style != null)
+	    && (style.face.value == 0)) {
+	    if (width != null) {
+		width.face.value = new CssLength();
+	    }
+	}
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderTopCSS2.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,408 @@
+//
+// $Id: CssBorderTopCSS2.java,v 1.5 2008-03-25 18:43:30 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+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.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'border-top'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;border-top-width&gt; || &lt;border-style&gt; ||
+ *   &lt;color&gt;<BR>
+ *   <EM>Initial:</EM> not defined for shorthand properties<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   This is a shorthand property for setting the width, style and color of an
+ *   element's top border.
+ *   <PRE>
+ *   H1 { border-bottom: thick solid red }
+ * </PRE>
+ *   <P>
+ *   The above rule will set the width, style and color of the border below the
+ *   H1 element. Omitted values will be set to their initial values:
+ *   <PRE>
+ *   H1 { border-bottom: thick solid }
+ * </PRE>
+ *   <P>
+ *   Since the color value is omitted in the example above, the border color will
+ *   be the same as the 'color' value of the element itself.
+ *   <P>
+ *   Note that while the 'border-style' property accepts up to four values, this
+ *   property only accepts one style value.
+ *
+ * @version $Revision: 1.5 $
+ */
+public class CssBorderTopCSS2 extends CssProperty implements CssOperator {
+
+    CssBorderTopWidthCSS2 width = null;
+    CssBorderTopStyleCSS2 style = null;
+    CssBorderTopColorCSS2 color = null;
+    String output = null;
+    
+    /**
+     * Create a new CssBorderFaceCSS2
+     */
+    public CssBorderTopCSS2() {
+    }
+
+    /**
+     * Create a new CssBorderFaceCSS2
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssBorderTopCSS2(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	CssValue val = null;
+	char op = SPACE;
+	boolean find = true;
+
+	if(check && expression.getCount() > 3) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	boolean manyValues = (expression.getCount() > 1);
+
+	setByUser();
+
+	while (find) {
+	    find = false;
+	    val = expression.getValue();
+	    op = expression.getOperator();
+	    if (val == null)
+		break;
+
+	    // if there are many values, we can't have inherit as one of them
+	    if(manyValues && val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", null, null, ac);
+	    }
+
+	    if (op != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(op)).toString()),
+						ac);
+	    if (width == null) {
+		try {
+		    width = new CssBorderTopWidthCSS2(ac, expression);
+		    find = true;
+		} catch(InvalidParamException e){
+		    //nothing to do, style will test this value
+		}
+	    }
+	    if (!find && style == null) {
+		try {
+		    style = new CssBorderTopStyleCSS2(ac, expression);
+		    find = true;
+		} catch(InvalidParamException e){
+		    //nothing to do, color will test this value
+		}
+	    }
+	    if (!find && color == null) {
+		// throws an exception if the value is not valid
+		color = new CssBorderTopColorCSS2(ac, expression);
+		find = true;
+	    }
+	}
+
+	//if some values have not been set, we set them with their default ones
+	/*
+	if (width == null) {
+	    width = new CssBorderTopWidthCSS2();
+	}
+	if (style == null) {
+	    style = new CssBorderTopStyleCSS2();
+	}
+	if (color == null) {
+	    color = new CssBorderTopColorCSS2();
+	}*/
+    }
+
+    public CssBorderTopCSS2(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression,false);
+    }
+
+    /**
+     * @return Returns the color.
+     */
+    public CssBorderTopColorCSS2 getColor2() {
+        return color;
+    }
+
+    /**
+     * @return Returns the style.
+     */
+    public CssBorderTopStyleCSS2 getStyle2() {
+        return style;
+    }
+
+    /**
+     * @return Returns the width.
+     */
+    public CssBorderTopWidthCSS2 getWidth2() {
+        return width;
+    }
+
+    /**
+     * @param color The color to set.
+     */
+    public void setColor(CssBorderTopColorCSS2 color) {
+        this.color = color;
+	output = null;
+    }
+
+    /**
+     * @param style The style to set.
+     */
+    public void setStyle(CssBorderTopStyleCSS2 style) {
+        this.style = style;
+	output = null;
+    }
+
+    /**
+     * @param width The width to set.
+     */
+    public void setWidth(CssBorderTopWidthCSS2 width) {
+        this.width = width;
+	output = null;
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return width;
+    }
+
+    /**
+     * Returns the color property
+     */
+    public CssValue getColor() {
+	if (color != null) {
+	    return color.getColor();
+	}
+	return null;
+    }
+
+    /**
+     * Returns the width property
+     */
+    public CssValue getWidth() {
+	if (width != null) {
+	    return width.getValue();
+	}
+	return null;
+    }
+
+    /**
+     * Returns the style property
+     */
+    public String getStyle() {
+	if (style != null) {
+	    return style.getStyle();
+	}
+	return null;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (output != null) {
+	    return output;
+	}
+	StringBuilder sb = new StringBuilder();
+	boolean first = true;
+	if(width != null) {
+	    sb.append(width.toString());
+	    first = false;
+	}
+	if(style != null) {
+	    if (!first) {
+		sb.append(' ');
+	    } 
+	    first = false;
+	    sb.append(style.toString());
+	}
+	if(color != null) {
+	    if (!first) {
+		sb.append(' ');
+	    } 	    
+	    sb.append(color);
+	}
+	output = sb.toString();
+	return output;
+    }
+    
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-top";
+    }
+
+    /**
+     * Set this property to be important.
+     * Overrides this method for a macro
+     */
+    public void setImportant() {
+	if(width != null) {
+	    width.important = true;
+	}
+	if(style != null) {
+	    style.important = true;
+	}
+	if(color != null) {
+	    color.important = true;
+	}
+    }
+
+    /**
+     * Returns true if this property is important.
+     * Overrides this method for a macro
+     */
+    public boolean getImportant() {
+	return ((width == null || width.important) &&
+		(style == null || style.important) &&
+		(color == null || color.important));
+    }
+
+    /**
+     * Print this property.
+     *
+     * @param printer The printer.
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	if ((width != null && style != null &&
+	     color != null) &&
+	    (getImportant() ||
+	     (!width.important &&
+	      !style.important &&
+	      !color.important))) {
+	    printer.print(this);
+	} else {
+	    if (width != null)
+		width.print(printer);
+	    if (style != null)
+		style.print(printer);
+	    if (color != null)
+		color.print(printer);
+	}
+
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if(width != null) {
+	    width.addToStyle(ac, style);
+	}
+	if(this.style != null) {
+	    this.style.addToStyle(ac, style);
+	}
+	if(color != null) {
+	    color.addToStyle(ac, style);
+	}
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBorderTopCSS2();
+	} else {
+	    return ((Css1Style) style).cssBorderCSS2.getTop();
+	}
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	super.setInfo(line, source);
+	if(width != null) {
+	    width.setInfo(line, source);
+	}
+	if(style != null) {
+	    style.setInfo(line, source);
+	}
+	if(color != null) {
+	    color.setInfo(line, source);
+	}
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors selector) {
+	super.setSelectors(selector);
+	if (width != null) {
+	    width.setSelectors(selector);
+	}
+	if (style != null) {
+	    style.setSelectors(selector);
+	}
+	if (color != null) {
+	    color.setSelectors(selector);
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	if (property instanceof CssBorderTopCSS2) {
+	    CssBorderTopCSS2 top = (CssBorderTopCSS2) property;
+	    return (width != null && width.equals(top.width)
+		    && style != null && style.equals(top.style)
+		    && color != null && color.equals(top.color));
+	} else {
+	    return false;
+	}
+    }
+
+    void check() {
+	if ((style != null)
+	    && (style.face.value == 0)) {
+	    if (width != null) {
+		width.face.value = new CssLength();
+	    }
+	}
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderTopColor.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,145 @@
+//
+// $Id: CssBorderTopColor.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+/**
+ * Be careful, this is not a CSS1 property !
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderTopColor extends CssProperty {
+
+    CssBorderFaceColor face;
+
+    /**
+     * Create a new CssBorderTopColor
+     */
+    public CssBorderTopColor() {
+	face = new CssBorderFaceColor();
+    }
+
+    /**
+     * Create a new CssBorderTopColor with an another CssBorderFaceColor
+     * @param another The another side.
+     */
+    public CssBorderTopColor(CssBorderFaceColor another) {
+	setByUser();
+
+	face = another;
+    }
+
+    /**
+     * Create a new CssBorderTopColor
+     *
+     * @param expression The expression fir this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderTopColor(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	face = new CssBorderFaceColor(ac, expression);
+    }
+
+    public CssBorderTopColor(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression,false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return face;
+    }
+
+    /**
+     * Returns the color
+     */
+    public CssValue getColor() {
+	if (face != null) {
+	    return face.getColor();
+	} else {
+	    return null;
+	}
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if(face != null) {
+	    return face.toString();
+	}
+	return "";
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-top-color";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBorderTop top = ((Css1Style) style).cssBorder.top;
+	if (top.color != null)
+	    style.addRedefinitionWarning(ac, this);
+	top.color = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBorderTopColor();
+	} else {
+	    return ((Css1Style) style).cssBorder.getTop().color;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderTopColor &&
+		face.equals(((CssBorderTopColor) property).face));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     *
+     * @see #print(CssPrinterStyle)
+     */
+    public void print(CssPrinterStyle printer) {
+	if (face != null && !face.isDefault())
+	    printer.print(this);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderTopColorCSS1.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,145 @@
+//
+// $Id: CssBorderTopColorCSS1.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+/**
+ * Be careful, this is not a CSS1 property !
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderTopColorCSS1 extends CssProperty {
+
+    CssBorderFaceColorCSS1 face;
+
+    /**
+     * Create a new CssBorderTopColorCSS1
+     */
+    public CssBorderTopColorCSS1() {
+	face = new CssBorderFaceColorCSS1();
+    }
+
+    /**
+     * Create a new CssBorderTopColorCSS1 with an another CssBorderFaceColorCSS1
+     * @param another The another side.
+     */
+    public CssBorderTopColorCSS1(CssBorderFaceColorCSS1 another) {
+	setByUser();
+
+	face = another;
+    }
+
+    /**
+     * Create a new CssBorderTopColorCSS1
+     *
+     * @param expression The expression fir this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderTopColorCSS1(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	face = new CssBorderFaceColorCSS1(ac, expression);
+    }
+
+    public CssBorderTopColorCSS1(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression,false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return face;
+    }
+
+    /**
+     * Returns the color
+     */
+    public CssValue getColor() {
+	if (face != null) {
+	    return face.getColor();
+	} else {
+	    return null;
+	}
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if(face != null) {
+	    return face.toString();
+	}
+	return "";
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-top-color";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBorderTopCSS1 top = ((Css1Style) style).cssBorderCSS1.top;
+	if (top.color != null)
+	    style.addRedefinitionWarning(ac, this);
+	top.color = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBorderTopColorCSS1();
+	} else {
+	    return ((Css1Style) style).cssBorderCSS1.getTop().color;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderTopColorCSS1 &&
+		face.equals(((CssBorderTopColorCSS1) property).face));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     *
+     * @see #print(CssPrinterStyle)
+     */
+    public void print(CssPrinterStyle printer) {
+	if (face != null && !face.isDefault())
+	    printer.print(this);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderTopColorCSS2.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,159 @@
+//
+// $Id: CssBorderTopColorCSS2.java,v 1.4 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+/**
+ * Be careful, this is not a CSS1 property !
+ * @version $Revision: 1.4 $
+ */
+public class CssBorderTopColorCSS2 extends CssProperty {
+
+    CssBorderFaceColorCSS2 face;
+
+    /**
+     * Create a new CssBorderTopColorCSS2
+     */
+    public CssBorderTopColorCSS2() {
+	face = new CssBorderFaceColorCSS2();
+    }
+
+    /**
+     * Create a new CssBorderTopColorCSS2 with an another CssBorderFaceColorCSS2
+     * @param another The another side.
+     */
+    public CssBorderTopColorCSS2(CssBorderFaceColorCSS2 another) {
+	setByUser();
+
+	face = another;
+    }
+
+    /**
+     * Create a new CssBorderTopColorCSS2
+     *
+     * @param expression The expression fir this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderTopColorCSS2(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	face = new CssBorderFaceColorCSS2(ac, expression);
+    }
+
+    public CssBorderTopColorCSS2(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression,false);
+    }
+
+    /**
+     * @return Returns the face.
+     */
+    public CssBorderFaceColorCSS2 getFace() {
+        return face;
+    }
+
+    /**
+     * @param face The face to set.
+     */
+    public void setFace(CssBorderFaceColorCSS2 face) {
+        this.face = face;
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return face;
+    }
+
+    /**
+     * Returns the color
+     */
+    public CssValue getColor() {
+	if (face != null) {
+	    return face.getColor();
+	} else {
+	    return null;
+	}
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if(face != null) {
+	    return face.toString();
+	}
+	return "";
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-top-color";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBorderTopCSS2 top = ((Css1Style) style).cssBorderCSS2.top;
+	if (top.color != null)
+	    style.addRedefinitionWarning(ac, this);
+	top.color = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBorderTopColorCSS2();
+	} else {
+	    return ((Css1Style) style).cssBorderCSS2.getTop().color;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderTopColorCSS2 &&
+		face.equals(((CssBorderTopColorCSS2) property).face));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     *
+     * @see #print(CssPrinterStyle)
+     */
+    public void print(CssPrinterStyle printer) {
+	if (face != null && !face.isDefault())
+	    printer.print(this);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderTopStyle.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,132 @@
+//
+// $Id: CssBorderTopStyle.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+/**
+ * Be careful, this is not a CSS1 property !
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderTopStyle extends CssProperty {
+
+    CssBorderFaceStyle face;
+
+    /**
+     * Create a new CssBorderTopStyle
+     */
+    public CssBorderTopStyle() {
+	face = new CssBorderFaceStyle();
+    }
+
+    /**
+     * Create a new CssBorderTopStyle with an another CssBorderFaceStyle
+     *
+     * @param another The another side.
+     */
+    public CssBorderTopStyle(CssBorderFaceStyle another) {
+	setByUser();
+
+	face = another;
+    }
+
+    /**
+     * Create a new CssBorderTopStyle
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderTopStyle(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	face = new CssBorderFaceStyle(ac, expression);
+    }
+
+    public CssBorderTopStyle(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression,false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return face;
+    }
+
+    /**
+     * Returns the value
+     */
+    public String getStyle() {
+	if(face != null) {
+	    return face.getStyle();
+	}
+	return null;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if(face != null) {
+	    return face.toString();
+	}
+	return "";
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-top-style";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBorderTop top = ((Css1Style) style).cssBorder.getTop();
+	if (top.getStyle() != null)
+	    style.addRedefinitionWarning(ac, this);
+	top.style = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBorderTopStyle();
+	} else {
+	    return ((Css1Style) style).cssBorder.getTop().style;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderTopStyle &&
+		face.equals(((CssBorderTopStyle) property).face));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderTopStyleCSS1.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,132 @@
+//
+// $Id: CssBorderTopStyleCSS1.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+/**
+ * Be careful, this is not a CSS1 property !
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderTopStyleCSS1 extends CssProperty {
+
+    CssBorderFaceStyleCSS1 face;
+
+    /**
+     * Create a new CssBorderTopStyleCSS1
+     */
+    public CssBorderTopStyleCSS1() {
+	face = new CssBorderFaceStyleCSS1();
+    }
+
+    /**
+     * Create a new CssBorderTopStyleCSS1 with an another CssBorderFaceStyleCSS1
+     *
+     * @param another The another side.
+     */
+    public CssBorderTopStyleCSS1(CssBorderFaceStyleCSS1 another) {
+	setByUser();
+
+	face = another;
+    }
+
+    /**
+     * Create a new CssBorderTopStyleCSS1
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderTopStyleCSS1(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	face = new CssBorderFaceStyleCSS1(ac, expression);
+    }
+
+    public CssBorderTopStyleCSS1(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression,false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return face;
+    }
+
+    /**
+     * Returns the value
+     */
+    public String getStyle() {
+	if(face != null) {
+	    return face.getStyle();
+	}
+	return null;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if(face != null) {
+	    return face.toString();
+	}
+	return "";
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-top-style";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBorderTopCSS1 top = ((Css1Style) style).cssBorderCSS1.getTop();
+	if (top.getStyle() != null)
+	    style.addRedefinitionWarning(ac, this);
+	top.style = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBorderTopStyleCSS1();
+	} else {
+	    return ((Css1Style) style).cssBorderCSS1.getTop().style;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderTopStyleCSS1 &&
+		face.equals(((CssBorderTopStyleCSS1) property).face));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderTopStyleCSS2.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,132 @@
+//
+// $Id: CssBorderTopStyleCSS2.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+/**
+ * Be careful, this is not a CSS1 property !
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderTopStyleCSS2 extends CssProperty {
+
+    CssBorderFaceStyleCSS2 face;
+
+    /**
+     * Create a new CssBorderTopStyleCSS2
+     */
+    public CssBorderTopStyleCSS2() {
+	face = new CssBorderFaceStyleCSS2();
+    }
+
+    /**
+     * Create a new CssBorderTopStyleCSS2 with an another CssBorderFaceStyleCSS2
+     *
+     * @param another The another side.
+     */
+    public CssBorderTopStyleCSS2(CssBorderFaceStyleCSS2 another) {
+	setByUser();
+
+	face = another;
+    }
+
+    /**
+     * Create a new CssBorderTopStyleCSS2
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderTopStyleCSS2(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	face = new CssBorderFaceStyleCSS2(ac, expression);
+    }
+
+    public CssBorderTopStyleCSS2(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression,false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return face;
+    }
+
+    /**
+     * Returns the value
+     */
+    public String getStyle() {
+	if(face != null) {
+	    return face.getStyle();
+	}
+	return null;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if(face != null) {
+	    return face.toString();
+	}
+	return "";
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-top-style";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBorderTopCSS2 top = ((Css1Style) style).cssBorderCSS2.getTop();
+	if (top.getStyle() != null)
+	    style.addRedefinitionWarning(ac, this);
+	top.style = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBorderTopStyleCSS2();
+	} else {
+	    return ((Css1Style) style).cssBorderCSS2.getTop().style;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderTopStyleCSS2 &&
+		face.equals(((CssBorderTopStyleCSS2) property).face));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderTopWidth.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,162 @@
+//
+// $Id: CssBorderTopWidth.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'border-top-width'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> thin | medium | thick | &lt;length&gt;<BR>
+ *   <EM>Initial:</EM> 'medium'<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   This property sets the width of an element's top border. The width of the
+ *   keyword values are UA dependent, but the following holds: 'thin' &lt;= 'medium'
+ *   &lt;= 'thick'.
+ *   <P>
+ *   The keyword widths are constant throughout a document:
+ *   <PRE>
+ *   H1 { border: solid thick red }
+ *   P  { border: solid thick blue }
+ * </PRE>
+ *   <P>
+ *   In the example above, 'H1' and 'P' elements will have the same border width
+ *   regardless of font size. To achieve relative widths, the 'em' unit can be
+ *   used:
+ *   <PRE>
+ *   H1 { border: solid 0.5em }
+ * </PRE>
+ *   <P>
+ *   Border widths cannot be negative.
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderTopWidth extends CssProperty {
+
+    CssBorderFaceWidth face;
+
+    /**
+     * Create a new CssBorderTopWidth
+     */
+    public CssBorderTopWidth() {
+	face = new CssBorderFaceWidth();
+    }
+
+    /**
+     * Create a new CssBorderTopWidth with an another CssBorderFaceWidth
+     *
+     * @param another The another side.
+     */
+    public CssBorderTopWidth(CssBorderFaceWidth another) {
+	setByUser();
+
+	face = another;
+    }
+
+    /**
+     * Create a new CssBorderTopWidth
+     *
+     * @param expression The expression for this property.
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderTopWidth(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	face = new CssBorderFaceWidth(ac, expression);
+    }
+
+    public CssBorderTopWidth(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression,false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return face;
+    }
+
+    /**
+     * Return the value of this property
+     */
+    public CssValue getValue() {
+	if(face != null) {
+	    return face.getValue();
+	}
+	return null;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if(face != null) {
+	    return face.toString();
+	}
+	return "";
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-top-width";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBorderTop top = ((Css1Style) style).cssBorder.top;
+
+	if (top.width != null) {
+	    style.addRedefinitionWarning(ac, this);
+	}
+	top.width = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBorderTopWidth();
+	} else {
+	    return ((Css1Style) style).cssBorder.getTop().width;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderTopWidth &&
+		face.equals(((CssBorderTopWidth) property).face));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderTopWidthCSS1.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,162 @@
+//
+// $Id: CssBorderTopWidthCSS1.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'border-top-width'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> thin | medium | thick | &lt;length&gt;<BR>
+ *   <EM>Initial:</EM> 'medium'<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   This property sets the width of an element's top border. The width of the
+ *   keyword values are UA dependent, but the following holds: 'thin' &lt;= 'medium'
+ *   &lt;= 'thick'.
+ *   <P>
+ *   The keyword widths are constant throughout a document:
+ *   <PRE>
+ *   H1 { border: solid thick red }
+ *   P  { border: solid thick blue }
+ * </PRE>
+ *   <P>
+ *   In the example above, 'H1' and 'P' elements will have the same border width
+ *   regardless of font size. To achieve relative widths, the 'em' unit can be
+ *   used:
+ *   <PRE>
+ *   H1 { border: solid 0.5em }
+ * </PRE>
+ *   <P>
+ *   Border widths cannot be negative.
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderTopWidthCSS1 extends CssProperty {
+
+    CssBorderFaceWidthCSS1 face;
+
+    /**
+     * Create a new CssBorderTopWidth
+     */
+    public CssBorderTopWidthCSS1() {
+	face = new CssBorderFaceWidthCSS1();
+    }
+
+    /**
+     * Create a new CssBorderTopWidth with an another CssBorderFaceWidth
+     *
+     * @param another The another side.
+     */
+    public CssBorderTopWidthCSS1(CssBorderFaceWidthCSS1 another) {
+	setByUser();
+
+	face = another;
+    }
+
+    /**
+     * Create a new CssBorderTopWidthCSS1
+     *
+     * @param expression The expression for this property.
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderTopWidthCSS1(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	face = new CssBorderFaceWidthCSS1(ac, expression);
+    }
+
+    public CssBorderTopWidthCSS1(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression,false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return face;
+    }
+
+    /**
+     * Return the value of this property
+     */
+    public CssValue getValue() {
+	if(face != null) {
+	    return face.getValue();
+	}
+	return null;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if(face != null) {
+	    return face.toString();
+	}
+	return "";
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-top-width";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBorderTopCSS1 top = ((Css1Style) style).cssBorderCSS1.top;
+
+	if (top.width != null) {
+	    style.addRedefinitionWarning(ac, this);
+	}
+	top.width = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBorderTopWidthCSS1();
+	} else {
+	    return ((Css1Style) style).cssBorderCSS1.getTop().width;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderTopWidthCSS1 &&
+		face.equals(((CssBorderTopWidthCSS1) property).face));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderTopWidthCSS2.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,162 @@
+//
+// $Id: CssBorderTopWidthCSS2.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'border-top-width'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> thin | medium | thick | &lt;length&gt;<BR>
+ *   <EM>Initial:</EM> 'medium'<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   This property sets the width of an element's top border. The width of the
+ *   keyword values are UA dependent, but the following holds: 'thin' &lt;= 'medium'
+ *   &lt;= 'thick'.
+ *   <P>
+ *   The keyword widths are constant throughout a document:
+ *   <PRE>
+ *   H1 { border: solid thick red }
+ *   P  { border: solid thick blue }
+ * </PRE>
+ *   <P>
+ *   In the example above, 'H1' and 'P' elements will have the same border width
+ *   regardless of font size. To achieve relative widths, the 'em' unit can be
+ *   used:
+ *   <PRE>
+ *   H1 { border: solid 0.5em }
+ * </PRE>
+ *   <P>
+ *   Border widths cannot be negative.
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderTopWidthCSS2 extends CssProperty {
+
+    CssBorderFaceWidthCSS2 face;
+
+    /**
+     * Create a new CssBorderTopWidth
+     */
+    public CssBorderTopWidthCSS2() {
+	face = new CssBorderFaceWidthCSS2();
+    }
+
+    /**
+     * Create a new CssBorderTopWidth with an another CssBorderFaceWidth
+     *
+     * @param another The another side.
+     */
+    public CssBorderTopWidthCSS2(CssBorderFaceWidthCSS2 another) {
+	setByUser();
+
+	face = another;
+    }
+
+    /**
+     * Create a new CssBorderTopWidthCSS2
+     *
+     * @param expression The expression for this property.
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderTopWidthCSS2(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	face = new CssBorderFaceWidthCSS2(ac, expression);
+    }
+
+    public CssBorderTopWidthCSS2(ApplContext ac, CssExpression expression)
+    	throws InvalidParamException {
+	this(ac, expression,false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return face;
+    }
+
+    /**
+     * Return the value of this property
+     */
+    public CssValue getValue() {
+	if(face != null) {
+	    return face.getValue();
+	}
+	return null;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if(face != null) {
+	    return face.toString();
+	}
+	return null;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-top-width";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssBorderTopCSS2 top = ((Css1Style) style).cssBorderCSS2.top;
+
+	if (top.width != null) {
+	    style.addRedefinitionWarning(ac, this);
+	}
+	top.width = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBorderTopWidthCSS2();
+	} else {
+	    return ((Css1Style) style).cssBorderCSS2.getTop().width;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderTopWidthCSS2 &&
+		face.equals(((CssBorderTopWidthCSS2) property).face));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderWidth.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,347 @@
+//
+// $Id: CssBorderWidth.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssOperator;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'border-width'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> [thin | medium | thick | &lt;length&gt;]{1,4}<BR>
+ *   <EM>Initial:</EM> not defined for shorthand properties<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   This property is a shorthand property for setting 'border-width-top',
+ *   'border-width-right', 'border-width-bottom' and 'border-width-left' at the
+ *   same place in the style sheet.
+ *   <P>
+ *   There can be from one to four values, with the following interpretation:
+ *   <UL>
+ *     <LI>
+ *       one value: all four border widths are set to that value
+ *     <LI>
+ *       two values: top and bottom border widths are set to the first value, right
+ *       and left are set to the second
+ *     <LI>
+ *       three values: top is set to the first, right and left are set to the second,
+ *       bottom is set to the third
+ *     <LI>
+ *       four values: top, right, bottom and left, respectively
+ *   </UL>
+ *   <P>
+ *   In the examples below, the comments indicate the resulting widths of the
+ *   top, right, bottom and left borders:
+ *   <PRE>
+ *   H1 { border-width: thin }                   / * thin thin thin thin * /
+ *   H1 { border-width: thin thick }             / * thin thick thin thick * /
+ *   H1 { border-width: thin thick medium }      / * thin thick medium thin * /
+ *   H1 { border-width: thin thick medium 12cm } / * thin thick medium 12cm * /
+ * </PRE>
+ *   <P>
+ *   Border widths cannot be negative.
+ * @version $Revision: 1.3 $
+ */
+public class CssBorderWidth extends CssProperty implements CssOperator {
+
+    CssBorderTopWidth top;
+    CssBorderBottomWidth bottom;
+    CssBorderRightWidth right;
+    CssBorderLeftWidth left;
+
+    /**
+     * Create a new CssBorderWidth
+     */
+    public CssBorderWidth(CssBorderTopWidth top,
+			  CssBorderBottomWidth bottom,
+			  CssBorderRightWidth right,
+			  CssBorderLeftWidth left) {
+	this.top = top;
+	this.bottom = bottom;
+	this.left = left;
+	this.right = right;
+    }
+
+    /**
+     * Create a new CssBorder
+     *
+     * @param expression The expression for this property
+     * @param check true will test the number of values
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderWidth(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+
+	setByUser();
+	switch (expression.getCount()) {
+	case 1:
+	    top = new CssBorderTopWidth(ac, expression);
+	    bottom = new CssBorderBottomWidth((CssBorderFaceWidth) top.get());
+	    right = new CssBorderRightWidth((CssBorderFaceWidth) top.get());
+	    left = new CssBorderLeftWidth((CssBorderFaceWidth) top.get());
+	    break;
+	case 2:
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(expression.getOperator())).toString()),
+			ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    top = new CssBorderTopWidth(ac, expression);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    right = new CssBorderRightWidth(ac, expression);
+	    bottom = new CssBorderBottomWidth((CssBorderFaceWidth) top.get());
+	    left = new CssBorderLeftWidth((CssBorderFaceWidth) right.get());
+	    break;
+	case 3:
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(expression.getOperator())).toString()),
+			ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    top = new CssBorderTopWidth(ac, expression);
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(expression.getOperator())).toString()),
+			ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    right = new CssBorderRightWidth(ac, expression);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    bottom = new CssBorderBottomWidth(ac, expression);
+	    left = new CssBorderLeftWidth((CssBorderFaceWidth) right.get());
+	    break;
+	default:
+	    // checks the number of parameters
+	    if(check && expression.getCount() > 4) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(expression.getOperator())).toString()),
+			ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    top = new CssBorderTopWidth(ac, expression);
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(expression.getOperator())).toString()),
+			ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    right = new CssBorderRightWidth(ac, expression);
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(expression.getOperator())).toString()),
+			ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    bottom = new CssBorderBottomWidth(ac, expression);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    left = new CssBorderLeftWidth(ac, expression);
+	    break;
+	}
+    }
+
+    public CssBorderWidth(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return top;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-width";
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (right.face.equals(left.face)) {
+	    if (top.face.equals(bottom.face)) {
+		if (top.face.equals(right.face)) {
+		    return top.toString();
+		} else {
+		    return top + " " + right;
+		}
+	    } else {
+		return top + " " + right + " " + bottom;
+	    }
+	} else {
+	    return top + " " + right + " " + bottom + " " + left;
+	}
+    }
+
+    /**
+     * Set this property to be important.
+     * Overrides this method for a macro
+     */
+    public void setImportant() {
+	top.important = true;
+	right.important = true;
+	left.important = true;
+	bottom.important = true;
+    }
+
+    /**
+     * Returns true if this property is important.
+     * Overrides this method for a macro
+     */
+    public boolean getImportant() {
+	return ((top == null || top.important) &&
+		(right == null || right.important) &&
+		(left == null || left.important) &&
+		(bottom == null || bottom.important));
+    }
+
+    /**
+     * Print this property.
+     *
+     * @param printer The printer.
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	if ((top != null && right != null &&
+	     left != null && bottom != null) &&
+	    (getImportant() ||
+	     (!top.important &&
+	      !right.important &&
+	      !left.important &&
+	      !bottom.important))) {
+	    printer.print(this);
+	} else {
+	    if (top != null)
+		top.print(printer);
+	    if (right != null)
+		right.print(printer);
+	    if (left != null)
+		left.print(printer);
+	    if (bottom != null)
+		bottom.print(printer);
+	}
+
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors selector) {
+	super.setSelectors(selector);
+	if (top != null) {
+	    top.setSelectors(selector);
+	}
+	if (right != null) {
+	    right.setSelectors(selector);
+	}
+	if (bottom != null) {
+	    bottom.setSelectors(selector);
+	}
+	if (left != null) {
+	    left.setSelectors(selector);
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if(top != null) {
+	    top.addToStyle(ac, style);
+	}
+	if(right != null) {
+	    right.addToStyle(ac, style);
+	}
+	if(left != null) {
+	    left.addToStyle(ac, style);
+	}
+	if(bottom != null) {
+	    bottom.addToStyle(ac, style);
+	}
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	throw new IllegalStateException("Can't invoke this method on the property " +
+					getPropertyName());
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	super.setInfo(line, source);
+	if(top != null) {
+	    top.setInfo(line, source);
+	}
+	if(right != null) {
+	    right.setInfo(line, source);
+	}
+	if(left != null) {
+	    left.setInfo(line, source);
+	}
+	if(bottom != null) {
+	    bottom.setInfo(line, source);
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return false; //FIXME
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderWidthCSS1.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,361 @@
+//
+// $Id: CssBorderWidthCSS1.java,v 1.4 2006-04-19 11:28:05 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssOperator;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'border-width'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> [thin | medium | thick | &lt;length&gt;]{1,4}<BR>
+ *   <EM>Initial:</EM> not defined for shorthand properties<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   This property is a shorthand property for setting 'border-width-top',
+ *   'border-width-right', 'border-width-bottom' and 'border-width-left' at the
+ *   same place in the style sheet.
+ *   <P>
+ *   There can be from one to four values, with the following interpretation:
+ *   <UL>
+ *     <LI>
+ *       one value: all four border widths are set to that value
+ *     <LI>
+ *       two values: top and bottom border widths are set to the first value, right
+ *       and left are set to the second
+ *     <LI>
+ *       three values: top is set to the first, right and left are set to the second,
+ *       bottom is set to the third
+ *     <LI>
+ *       four values: top, right, bottom and left, respectively
+ *   </UL>
+ *   <P>
+ *   In the examples below, the comments indicate the resulting widths of the
+ *   top, right, bottom and left borders:
+ *   <PRE>
+ *   H1 { border-width: thin }                   / * thin thin thin thin * /
+ *   H1 { border-width: thin thick }             / * thin thick thin thick * /
+ *   H1 { border-width: thin thick medium }      / * thin thick medium thin * /
+ *   H1 { border-width: thin thick medium 12cm } / * thin thick medium 12cm * /
+ * </PRE>
+ *   <P>
+ *   Border widths cannot be negative.
+ * @version $Revision: 1.4 $
+ */
+public class CssBorderWidthCSS1 extends CssProperty implements CssOperator {
+
+    CssBorderTopWidthCSS1 top;
+    CssBorderBottomWidthCSS1 bottom;
+    CssBorderRightWidthCSS1 right;
+    CssBorderLeftWidthCSS1 left;
+
+    /**
+     * Create a new CssBorderWidthCSS1
+     */
+    public CssBorderWidthCSS1(CssBorderTopWidthCSS1 top,
+			  CssBorderBottomWidthCSS1 bottom,
+			  CssBorderRightWidthCSS1 right,
+			  CssBorderLeftWidthCSS1 left) {
+	this.top = top;
+	this.bottom = bottom;
+	this.left = left;
+	this.right = right;
+    }
+
+    /**
+     * Create a new CssBorderCSS1
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderWidthCSS1(ApplContext ac, CssExpression expression,
+	    boolean check)  throws InvalidParamException {
+
+	setByUser();
+	switch (expression.getCount()) {
+	case 1:
+	    top = new CssBorderTopWidthCSS1(ac, expression);
+	    /*bottom = new CssBorderBottomWidthCSS1((CssBorderFaceWidthCSS1) top.get());
+	    right = new CssBorderRightWidthCSS1((CssBorderFaceWidthCSS1) top.get());
+	    left = new CssBorderLeftWidthCSS1((CssBorderFaceWidthCSS1) top.get());*/
+	    break;
+	case 2:
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(expression.getOperator())).toString()),
+						ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    top = new CssBorderTopWidthCSS1(ac, expression);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    right = new CssBorderRightWidthCSS1(ac, expression);
+	    /*bottom = new CssBorderBottomWidthCSS1((CssBorderFaceWidthCSS1) top.get());
+	    left = new CssBorderLeftWidthCSS1((CssBorderFaceWidthCSS1) right.get());*/
+	    break;
+	case 3:
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(expression.getOperator())).toString()),
+						ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    top = new CssBorderTopWidthCSS1(ac, expression);
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(expression.getOperator())).toString()),
+						ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    right = new CssBorderRightWidthCSS1(ac, expression);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    bottom = new CssBorderBottomWidthCSS1(ac, expression);
+	    //left = new CssBorderLeftWidthCSS1((CssBorderFaceWidthCSS1) right.get());
+	    break;
+	case 4:
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(expression.getOperator())).toString()),
+						ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    top = new CssBorderTopWidthCSS1(ac, expression);
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(expression.getOperator())).toString()),
+						ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    right = new CssBorderRightWidthCSS1(ac, expression);
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(expression.getOperator())).toString()),
+						ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    bottom = new CssBorderBottomWidthCSS1(ac, expression);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    left = new CssBorderLeftWidthCSS1(ac, expression);
+	    break;
+	default:
+	    if(check) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	}
+    }
+
+    CssBorderWidthCSS1(ApplContext ac, CssExpression expression)
+    	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return top;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-width";
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+        String result = "";
+        // top should never be null
+        if(top != null) result += top;
+        if(right != null) result += " " + right;
+        if(bottom != null) result += " " + bottom;
+        if(left != null) result += " " + left;
+        return result;
+	/*if (right.face.equals(left.face)) {
+	    if (top.face.equals(bottom.face)) {
+		if (top.face.equals(right.face)) {
+		    return top.toString();
+		} else {
+		    return top + " " + right;
+		}
+	    } else {
+		return top + " " + right + " " + bottom;
+	    }
+	} else {
+	    return top + " " + right + " " + bottom + " " + left;
+	}*/
+    }
+
+    /**
+     * Set this property to be important.
+     * Overrides this method for a macro
+     */
+    public void setImportant() {
+	if(top != null) {
+	    top.important = true;
+	}
+	if(right != null) {
+	    right.important = true;
+	}
+	if(left != null) {
+	    left.important = true;
+	}
+	if(bottom != null) {
+	    bottom.important = true;
+	}
+    }
+
+    /**
+     * Returns true if this property is important.
+     * Overrides this method for a macro
+     */
+    public boolean getImportant() {
+	return ((top == null || top.important) &&
+		(right == null || right.important) &&
+		(left == null || left.important) &&
+		(bottom == null || bottom.important));
+    }
+
+    /**
+     * Print this property.
+     *
+     * @param printer The printer.
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	if ((top != null && right != null &&
+	     left != null && bottom != null) &&
+	    (getImportant() ||
+	     (!top.important &&
+	      !right.important &&
+	      !left.important &&
+	      !bottom.important))) {
+	    printer.print(this);
+	} else {
+	    if (top != null)
+		top.print(printer);
+	    if (right != null)
+		right.print(printer);
+	    if (left != null)
+		left.print(printer);
+	    if (bottom != null)
+		bottom.print(printer);
+	}
+
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors selector) {
+	super.setSelectors(selector);
+	if (top != null) {
+	    top.setSelectors(selector);
+	}
+	if (right != null) {
+	    right.setSelectors(selector);
+	}
+	if (bottom != null) {
+	    bottom.setSelectors(selector);
+	}
+	if (left != null) {
+	    left.setSelectors(selector);
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if(top != null) {
+	    top.addToStyle(ac, style);
+	}
+	if(right != null) {
+	    right.addToStyle(ac, style);
+	}
+	if(left != null) {
+	    left.addToStyle(ac, style);
+	}
+	if(bottom != null) {
+	    bottom.addToStyle(ac, style);
+	}
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	throw new IllegalStateException("Can't invoke this method on the property " +
+					getPropertyName());
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	super.setInfo(line, source);
+	if(top != null) {
+	    top.setInfo(line, source);
+	}
+	if(right != null) {
+	    right.setInfo(line, source);
+	}
+	if(left != null) {
+	    left.setInfo(line, source);
+	}
+	if(bottom != null) {
+	    bottom.setInfo(line, source);
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return false; // FIXME
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBorderWidthCSS2.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,361 @@
+//
+// $Id: CssBorderWidthCSS2.java,v 1.4 2006-04-19 11:28:05 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssOperator;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'border-width'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> [thin | medium | thick | &lt;length&gt;]{1,4}<BR>
+ *   <EM>Initial:</EM> not defined for shorthand properties<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   This property is a shorthand property for setting 'border-width-top',
+ *   'border-width-right', 'border-width-bottom' and 'border-width-left' at the
+ *   same place in the style sheet.
+ *   <P>
+ *   There can be from one to four values, with the following interpretation:
+ *   <UL>
+ *     <LI>
+ *       one value: all four border widths are set to that value
+ *     <LI>
+ *       two values: top and bottom border widths are set to the first value, right
+ *       and left are set to the second
+ *     <LI>
+ *       three values: top is set to the first, right and left are set to the second,
+ *       bottom is set to the third
+ *     <LI>
+ *       four values: top, right, bottom and left, respectively
+ *   </UL>
+ *   <P>
+ *   In the examples below, the comments indicate the resulting widths of the
+ *   top, right, bottom and left borders:
+ *   <PRE>
+ *   H1 { border-width: thin }                   / * thin thin thin thin * /
+ *   H1 { border-width: thin thick }             / * thin thick thin thick * /
+ *   H1 { border-width: thin thick medium }      / * thin thick medium thin * /
+ *   H1 { border-width: thin thick medium 12cm } / * thin thick medium 12cm * /
+ * </PRE>
+ *   <P>
+ *   Border widths cannot be negative.
+ * @version $Revision: 1.4 $
+ */
+public class CssBorderWidthCSS2 extends CssProperty implements CssOperator {
+
+    CssBorderTopWidthCSS2 top;
+    CssBorderBottomWidthCSS2 bottom;
+    CssBorderRightWidthCSS2 right;
+    CssBorderLeftWidthCSS2 left;
+
+    /**
+     * Create a new CssBorderWidthCSS2
+     */
+    public CssBorderWidthCSS2(CssBorderTopWidthCSS2 top,
+			  CssBorderBottomWidthCSS2 bottom,
+			  CssBorderRightWidthCSS2 right,
+			  CssBorderLeftWidthCSS2 left) {
+	this.top = top;
+	this.bottom = bottom;
+	this.left = left;
+	this.right = right;
+    }
+
+    /**
+     * Create a new CssBorderCSS2
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderWidthCSS2(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	switch (expression.getCount()) {
+	case 1:
+	    top = new CssBorderTopWidthCSS2(ac, expression);
+	    /*bottom = new CssBorderBottomWidthCSS2((CssBorderFaceWidthCSS2) top.get());
+	    right = new CssBorderRightWidthCSS2((CssBorderFaceWidthCSS2) top.get());
+	    left = new CssBorderLeftWidthCSS2((CssBorderFaceWidthCSS2) top.get());*/
+	    break;
+	case 2:
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(expression.getOperator())).toString()),
+						ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    top = new CssBorderTopWidthCSS2(ac, expression);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    right = new CssBorderRightWidthCSS2(ac, expression);
+	    /*bottom = new CssBorderBottomWidthCSS2((CssBorderFaceWidthCSS2) top.get());
+	    left = new CssBorderLeftWidthCSS2((CssBorderFaceWidthCSS2) right.get());*/
+	    break;
+	case 3:
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(expression.getOperator())).toString()),
+						ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    top = new CssBorderTopWidthCSS2(ac, expression);
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(expression.getOperator())).toString()),
+						ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    right = new CssBorderRightWidthCSS2(ac, expression);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    bottom = new CssBorderBottomWidthCSS2(ac, expression);
+	    //left = new CssBorderLeftWidthCSS2((CssBorderFaceWidthCSS2) right.get());
+	    break;
+	case 4:
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(expression.getOperator())).toString()),
+						ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    top = new CssBorderTopWidthCSS2(ac, expression);
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(expression.getOperator())).toString()),
+						ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    right = new CssBorderRightWidthCSS2(ac, expression);
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(expression.getOperator())).toString()),
+						ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    bottom = new CssBorderBottomWidthCSS2(ac, expression);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    left = new CssBorderLeftWidthCSS2(ac, expression);
+	    break;
+	default:
+	    if(check) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	}
+    }
+
+    public CssBorderWidthCSS2(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return top;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-width";
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+        String result = "";
+        // top should never be null
+        if(top != null) result += top;
+        if(right != null) result += " " + right;
+        if(bottom != null) result += " " + bottom;
+        if(left != null) result += " " + left;
+        return result;
+	/*if (right.face.equals(left.face)) {
+	    if (top.face.equals(bottom.face)) {
+		if (top.face.equals(right.face)) {
+		    return top.toString();
+		} else {
+		    return top + " " + right;
+		}
+	    } else {
+		return top + " " + right + " " + bottom;
+	    }
+	} else {
+	    return top + " " + right + " " + bottom + " " + left;
+	}*/
+    }
+
+    /**
+     * Set this property to be important.
+     * Overrides this method for a macro
+     */
+    public void setImportant() {
+	if(top != null) {
+	    top.important = true;
+	}
+	if(right != null) {
+	    right.important = true;
+	}
+	if(left != null) {
+	    left.important = true;
+	}
+	if(bottom != null) {
+	    bottom.important = true;
+	}
+    }
+
+    /**
+     * Returns true if this property is important.
+     * Overrides this method for a macro
+     */
+    public boolean getImportant() {
+	return ((top == null || top.important) &&
+		(right == null || right.important) &&
+		(left == null || left.important) &&
+		(bottom == null || bottom.important));
+    }
+
+    /**
+     * Print this property.
+     *
+     * @param printer The printer.
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	if ((top != null && right != null &&
+	     left != null && bottom != null) &&
+	    (getImportant() ||
+	     (!top.important &&
+	      !right.important &&
+	      !left.important &&
+	      !bottom.important))) {
+	    printer.print(this);
+	} else {
+	    if (top != null)
+		top.print(printer);
+	    if (right != null)
+		right.print(printer);
+	    if (left != null)
+		left.print(printer);
+	    if (bottom != null)
+		bottom.print(printer);
+	}
+
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors selector) {
+	super.setSelectors(selector);
+	if (top != null) {
+	    top.setSelectors(selector);
+	}
+	if (right != null) {
+	    right.setSelectors(selector);
+	}
+	if (bottom != null) {
+	    bottom.setSelectors(selector);
+	}
+	if (left != null) {
+	    left.setSelectors(selector);
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if(top != null) {
+	    top.addToStyle(ac, style);
+	}
+	if(right != null) {
+	    right.addToStyle(ac, style);
+	}
+	if(left != null) {
+	    left.addToStyle(ac, style);
+	}
+	if(bottom != null) {
+	    bottom.addToStyle(ac, style);
+	}
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	throw new IllegalStateException("Can't invoke this method on the property " +
+					getPropertyName());
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	super.setInfo(line, source);
+	if(top != null) {
+	    top.setInfo(line, source);
+	}
+	if(right != null) {
+	    right.setInfo(line, source);
+	}
+	if(left != null) {
+	    left.setInfo(line, source);
+	}
+	if(bottom != null) {
+	    bottom.setInfo(line, source);
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return false; // FIXME
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBottom.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,86 @@
+//
+// $Id: CssBottom.java,v 1.2 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+/**
+ */
+public class CssBottom extends CssBoxOffsetFace {
+
+    /**
+     * Create a new CssBottom
+     */
+    public CssBottom() {
+	super();
+    }
+
+    /**
+     * Create a new CssBottom
+     *
+     * @param expression The expression for this property.
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBottom(ApplContext ac, CssExpression expression)
+    	throws InvalidParamException {
+	super(ac, expression);
+    }
+
+    public CssBottom(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+	super(ac, expression, check);
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "bottom";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssBottom != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssBottom = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getBottom();
+	} else {
+	    return ((Css1Style) style).getBottom();
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBottom &&
+		value.equals(((CssBottom) property).value));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssBoxOffsetFace.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,133 @@
+//
+// $Id: CssBoxOffsetFace.java,v 1.2 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+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.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.2 $
+ */
+public abstract class CssBoxOffsetFace extends CssProperty {
+
+    CssValue value;
+
+    private static CssIdent auto = new CssIdent("auto");
+
+    /**
+     * Create a new CssBoxOffsetFace
+     */
+    public CssBoxOffsetFace() {
+	value = auto;
+    }
+
+    /**
+     * Create a new CssBoxOffsetFace
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBoxOffsetFace(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	    expression.next();
+	} else if (val.equals(auto)) {
+	    value = auto;
+	    expression.next();
+	} else if (val instanceof CssLength || val instanceof CssPercentage) {
+	    value = val;
+	    expression.next();
+	} else if (val instanceof CssNumber) {
+	    value = ((CssNumber) val).getLength();
+	    expression.next();
+	} else if (val.equals(auto)) {
+	    value = auto;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", val.toString(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssBoxOffsetFace(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the internal CssValue value.
+     */
+    public CssValue getValue() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if(value != null) {
+	    return value.toString();
+	}
+	return "";
+    }
+
+    /**
+     * Compares two sides for equality.
+     *
+     * @param side The other side.
+     */
+    public boolean equals(CssBoxOffsetFace side) {
+	if(value != null) {
+	    return value.equals(side.value);
+	}
+	return side == null;
+    }
+
+    /**
+     * Is this property contains a default value.
+     */
+    public boolean isDefault() {
+	if (value != null && value != auto)
+	    return ((Float) value.get()).floatValue() == 0;
+	else
+	    return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssClear.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,163 @@
+//
+// $Id: CssClear.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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;
+
+/**
+ *   <H4>
+ *     <A NAME="clear">5.5.26 &nbsp;&nbsp; 'clear'</A>
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> none | left | right | both<BR>
+ *   <EM>Initial:</EM> none<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P> This property specifies if an element allows floating elements on its
+ *   sides.  More specifically, the value of this property lists the sides where
+ *   floating elements are not accepted. With 'clear' set to 'left', an element
+ *   will be moved below any floating element on the left side. With 'clear' set
+ *   to 'none', floating elements are allowed on all sides. Example:
+ *   <PRE>
+ *   H1 { clear: left }
+ *  </PRE>
+ *
+ * @version $Revision: 1.3 $ */
+public class CssClear extends CssProperty {
+
+    int value;
+
+    private static String[] CLEAR = {
+	"none", "left", "right", "both", "inherit" };
+    private static int[] hash_values;
+
+    /**
+     * Create a new CssClear
+     */
+    public CssClear() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new CssClear
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssClear(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+	if ( val instanceof CssIdent) {
+	    int hash = val.hashCode();
+	    for (int i = 0; i < CLEAR.length; i++)
+		if (hash_values[i] == hash) {
+		    value = i;
+		    expression.next();
+		    return;
+		}
+	}
+	throw new InvalidParamException("value", expression.getValue(),
+					getPropertyName(), ac);
+    }
+
+    public CssClear(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return CLEAR[value];
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "clear";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == CLEAR.length - 1;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return CLEAR[value];
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssClear != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssClear = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getClear();
+	} else {
+	    return ((Css1Style) style).cssClear;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssClear &&
+		value == ((CssClear) property).value);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == 0;
+    }
+
+    static {
+	hash_values = new int[CLEAR.length];
+	for (int i = 0; i < CLEAR.length; i++)
+	    hash_values[i] = CLEAR[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssClip.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,194 @@
+//
+// $Id: CssClip.java,v 1.2 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssFunction;
+import org.w3c.css.values.CssIdent;
+import org.w3c.css.values.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class CssClip extends CssProperty {
+
+    CssValue value;
+
+    private static CssIdent auto = new CssIdent("auto");
+
+    /**
+     * Create a new CssClip
+     */
+    public CssClip() {
+	value = auto;
+    }
+
+    /**
+     * Create a new CssClip
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssClip(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+	if (val.equals(inherit)) {
+	    value = inherit;
+	    expression.next();
+	} else if (val.equals(auto)) {
+	    value = auto;
+	    expression.next();
+	} else if (val instanceof CssFunction) {
+	    CssFunction shape = (CssFunction) val;
+	    if (!shape.getName().equals("rect")) {
+		throw new InvalidParamException("shape", expression.getValue(),
+						getPropertyName(), ac);
+	    }
+	    CssExpression params = shape.getParameters();
+	    int i = 0;
+	    params.starts();
+	    if (params.getCount() != 4) {
+		throw new InvalidParamException("shape", params.getValue(),
+						getPropertyName(), ac);
+	    }
+
+	    while (i < 4) {
+		CssValue v = params.getValue();
+		char op = params.getOperator();
+		if (i != 3) {
+		    if (op != CssOperator.COMMA) {
+			throw new InvalidParamException("shape-separator",
+							params.getValue(),
+							getPropertyName(), ac);
+		    }
+		}
+		if (v != null) {
+		    isValidParameter(v, ac);
+		    params.next();
+		} else {
+		    throw new InvalidParamException("shape",
+						    params.getValue(),
+						    getPropertyName(), ac);
+		}
+		i++;
+	    }
+	    params.starts();
+	    value = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+
+    }
+
+    public CssClip(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "clip";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssClip != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssClip = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getClip();
+	} else {
+	    return ((Css1Style) style).cssClip;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssClip &&
+		value.equals(((CssClip) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == auto;
+    }
+
+    private void isValidParameter(CssValue val, ApplContext ac)
+	    throws InvalidParamException {
+	if (val instanceof CssNumber) {
+	    //CssLength le = ((CssNumber) val).getLength();
+	    return;
+	} else if (auto.equals(val)
+		   || (val instanceof CssLength)) {
+	    return;
+	}
+	throw new InvalidParamException("shape",
+					val,
+					getPropertyName(), ac);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssColor.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,228 @@
+//
+// $Id: CssColor.java,v 1.8 2009-03-06 11:17:16 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 org.w3c.css.properties.css1;
+
+import java.util.Vector;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssFunction;
+import org.w3c.css.values.CssIdent;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssTypes;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'color'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;color&gt;<BR>
+ *   <EM>Initial:</EM> UA specific<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   This property describes the text color of an element (often referred to as
+ *   the <EM>foreground</EM> color). There are different ways to specify red:
+ *   <PRE>
+ *   EM { color: red }              /* natural language * /
+ *   EM { color: rgb(255,0,0) }     /* RGB range 0-255   * /
+ * </PRE>
+ * @version $Revision: 1.8 $
+ */
+public class CssColor extends CssProperty implements CssOperator {
+
+    CssValue color;
+    org.w3c.css.values.CssColor tempcolor = new org.w3c.css.values.CssColor();
+    String attrvalue = null;
+
+    /**
+     * Create a new CssColor
+     */
+    public CssColor() {
+	color = inherit;
+    }
+
+    /**
+     * Set the value of the property
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssColor(ApplContext ac, CssExpression expression, boolean check)
+	throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	setByUser();
+
+	switch(val.getType()) {
+	case CssTypes.CSS_IDENT:
+	    if (inherit.equals(val)) {
+		color = inherit;
+		break;
+	    }
+	    if ("css1".equals(ac.getCssVersion())) {
+		color = new org.w3c.css.values.CssColorCSS1(ac,
+							    (String) val.get());
+	    } else if ("css2".equals(ac.getCssVersion())) {
+		color = new org.w3c.css.values.CssColorCSS2(ac, 
+							    (String) val.get());
+	    } else if ("css3".equals(ac.getCssVersion())){
+		color = new org.w3c.css.values.CssColor(ac, (String) val.get());
+	    } else {
+		color = new org.w3c.css.values.CssColorCSS2(ac, 
+							    (String) val.get()); // SVG profiles
+	    }
+	    //	    color = new org.w3c.css.values.CssColor();
+	    break;
+	case CssTypes.CSS_COLOR:
+	    color = val;
+	    break;
+	case CssTypes.CSS_FUNCTION:
+	    CssFunction attr = (CssFunction) val;
+	    CssExpression params = attr.getParameters();
+
+	    if (attr.getName().equals("attr")) {
+		CssValue v1 = params.getValue();
+		params.next();
+		CssValue v2 = params.getValue();
+		if ((params.getCount() != 2)) {
+		    throw new InvalidParamException("value",
+						    params.getValue(),
+						    getPropertyName(), ac);
+		} else if (v1.getType() != CssTypes.CSS_IDENT) {
+		    throw new InvalidParamException("value",
+						    params.getValue(),
+						    getPropertyName(), ac);
+
+		} else if (!(v2.toString().equals("color"))) {
+		    throw new InvalidParamException("value",
+						    params.getValue(),
+						    getPropertyName(), ac);
+		} else {
+		    attrvalue = "attr(" + v1 + ", " + v2 + ")";
+		}
+	    } else if (attr.getName().equals("rgba")) {
+		tempcolor.setRGBAColor(params, ac);
+		color = tempcolor;
+	    } else if (attr.getName().equals("hsl")) {
+		tempcolor.setHSLColor(params, ac);
+		color = tempcolor;
+	    } else if (attr.getName().equals("hsla")) {
+		tempcolor.setHSLAColor(params, ac);
+		color = tempcolor;
+	    } else {
+		throw new InvalidParamException("value",
+						params.getValue(),
+						getPropertyName(), ac);
+	    }
+	    break;
+	default:
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+	expression.next();
+    }
+
+    public CssColor(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return color;
+    }
+
+    /**
+     * Returns the color
+     */
+    public org.w3c.css.values.CssColor getColor() {
+	if (color.equals(inherit)) {
+	    /*
+	      System.err.println("[ERROR] org.w3c.css.properties.CssColor");
+	      System.err.println("[ERROR] value is inherited");
+	    */
+	    return null;
+	} else {
+	    return (org.w3c.css.values.CssColor) color;
+	}
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return color.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (attrvalue != null) {
+	    return attrvalue;
+	} else {
+	    return color.toString();
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssColor != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.cssColor = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getColor();
+	} else {
+	    return ((Css1Style) style).cssColor;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssColor &&
+		color.equals(((CssColor) property).color));
+    }
+    
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "color";
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssColorCSS1.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,154 @@
+//
+// $Id: CssColorCSS1.java,v 1.5 2009-03-09 21:12:00 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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.CssTypes;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'color'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;color&gt;<BR>
+ *   <EM>Initial:</EM> UA specific<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   This property describes the text color of an element (often referred to as
+ *   the <EM>foreground</EM> color). There are different ways to specify red:
+ *   <PRE>
+ *   EM { color: red }              /* natural language * /
+ *   EM { color: rgb(255,0,0) }     /* RGB range 0-255   * /
+ * </PRE>
+ * @version $Revision: 1.5 $
+ */
+public class CssColorCSS1 extends CssProperty {
+
+    CssValue color;
+
+    /**
+     * Create a new CssColor
+     */
+    public CssColorCSS1() {
+    }
+
+    /**
+     * Set the value of the property
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssColorCSS1(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = expression.getValue();
+	setByUser();
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	switch (val.getType()) {
+	case CssTypes.CSS_COLOR:
+	    color = val;
+	    break;
+	case CssTypes.CSS_IDENT:
+	    color = new org.w3c.css.values.CssColorCSS1(ac, (String) val.get());
+	    break;
+	default:
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+	expression.next();
+    }
+
+    public CssColorCSS1(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return color;
+    }
+
+    /**
+     * Returns the color
+     */
+    public org.w3c.css.values.CssColor getColor() {
+	return (org.w3c.css.values.CssColor) color;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return color.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if(color != null)
+	    return color.toString();
+	return "";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssColorCSS1 != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.cssColorCSS1 = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getColorCSS1();
+	} else {
+	    return ((Css1Style) style).cssColorCSS1;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssColorCSS1 &&
+		color.equals(((CssColorCSS1) property).color));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "color";
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssColorCSS2.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,171 @@
+//
+// $Id: CssColorCSS2.java,v 1.5 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'color'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;color&gt;<BR>
+ *   <EM>Initial:</EM> UA specific<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   This property describes the text color of an element (often referred to as
+ *   the <EM>foreground</EM> color). There are different ways to specify red:
+ *   <PRE>
+ *   EM { color: red }              /* natural language * /
+ *   EM { color: rgb(255,0,0) }     /* RGB range 0-255   * /
+ * </PRE>
+ * @version $Revision: 1.5 $
+ */
+public class CssColorCSS2 extends CssProperty {
+
+    CssValue color;
+
+    /**
+     * Create a new CssColorCSS2
+     */
+    public CssColorCSS2() {
+	color = inherit;
+    }
+
+    /**
+     * @param color The color to set.
+     */
+    public void setColor(CssValue color) {
+        this.color = color;
+    }
+
+    /**
+     * Set the value of the property
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssColorCSS2(ApplContext ac, CssExpression expression, boolean check)
+	throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	setByUser();
+	if (val.equals(inherit)) {
+	    color = inherit;
+	    expression.next();
+	} else if (val instanceof org.w3c.css.values.CssColor) {
+	    color = val;
+	    expression.next();
+	} else if (val instanceof CssIdent) {
+	    color = new org.w3c.css.values.CssColorCSS2(ac,
+							(String) val.get());
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssColorCSS2(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return color;
+    }
+
+    /**
+     * Returns the color
+     */
+    public org.w3c.css.values.CssColor getColor() {
+	if (color.equals(inherit)) {
+	    /*
+	    System.err.println("[ERROR] org.w3c.css.properties.CssColorCSS2");
+	    System.err.println("[ERROR] value is inherited");
+	    */
+	    return null;
+	} else {
+	    return (org.w3c.css.values.CssColor) color;
+	}
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return color.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if(color != null)
+	    return color.toString();
+	return "";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssColorCSS2 != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.cssColorCSS2 = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getColorCSS2();
+	} else {
+	    return ((Css1Style) style).cssColorCSS2;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssColorCSS2 &&
+		color.equals(((CssColorCSS2) property).color));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "color";
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssContent.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,299 @@
+//
+// $Id: CssContent.java,v 1.2 2005-09-14 15:14:31 ylafon Exp $
+// From Philippe Le Hegaret (Philippe.Le_Hegaret@sophia.inria.fr)
+// Updated September 14th Sijtsche de Jong (sy.de.jong@.let.rug.nl)
+//
+// (c) COPYRIGHT MIT and INRIA, 1997.
+// Please first read the full copyright statement in file COPYRIGHT.html
+/*
+ */
+package org.w3c.css.properties.css1;
+
+import java.util.Vector;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssFunction;
+import org.w3c.css.values.CssIdent;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssString;
+import org.w3c.css.values.CssURL;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class CssContent extends CssProperty {
+
+    CssValue value;
+    Vector values = new Vector();
+
+    CssIdent normal = new CssIdent("normal");
+
+    private static String CONTENT[] = {
+	"open-quote", "close-quote", "no-open-quote", "no-close-quote",
+	"normal", "check", "diamond", "menu-check", "menu-diamond",
+        "radio", "radio-on", "radio-off", "radio-ind", "enabled-radio-on",
+	"enabled-radio-off", "enabled-radio-ind", "disabled-radio-on",
+	"disabled-radio-off", "disabled-radio-ind", "active-radio-off",
+	"active-radio-on", "active-radio-ind", "hover-radio-off",
+	"hover-radio-on", "hover-radio-ind", "checkbox", "checkbox-on",
+	"checkbox-off", "checkbox-ind", "enabled-checkbox-on",
+	"enabled-checkbox-off", "enabled-checkbox-ind", "disabled-checkbox-on",
+	"disabled-checkbox-off", "disabled-checkbox-ind",
+	"active-checkbox-on", "active-checkbox-off", "active-checkbox-ind",
+	"hover-checkbox-on", "hover-checkbox-off", "hover-checkbox-ind",
+	"disc", "circle", "square", "box"
+    };
+
+    private static int[] hash_values;
+
+
+    /**
+     * Create a new CssContent
+     */
+    public CssContent() {
+	value = normal;
+    }
+
+    /**
+     * Create a new CssContent
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssContent(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+	CssValue val = expression.getValue();
+	int counter = 0;
+	char op = expression.getOperator();
+	value = val;
+
+	setByUser();
+	if (val.equals(inherit)) {
+	    if(expression.getCount() > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    values.addElement(inherit);
+	    expression.next();
+	    return;
+	}
+
+	while ((op == CssOperator.SPACE)
+	       && (counter < expression.getCount())) {
+	    if (val instanceof CssIdent) {
+		int hash = val.hashCode();
+		int i = 0;
+
+		for (;i < CONTENT.length; i++) {
+		    if (hash_values[i] == hash) {
+			break;
+		    }
+		}
+		if (i == CONTENT.length) {
+		    throw new InvalidParamException("value",
+						    expression.getValue(),
+						    getPropertyName(), ac);
+		}
+	    } else if (val instanceof CssString) {
+		// nothing
+	    } else if (val instanceof CssURL) {
+		// nothing
+	    } else if (val instanceof CssFunction) {
+		CssFunction attr = (CssFunction) val;
+		CssExpression params = attr.getParameters();
+		CssValue v = params.getValue();
+
+		if (attr.getName().equals("attr")) {
+		    if ((params.getCount() != 1)
+			|| !(v instanceof CssIdent)) {
+			throw new InvalidParamException("attr",
+							params.getValue(),
+							getPropertyName(), ac);
+		    }
+		} else if (attr.getName().equals("counter")) {
+		    if ((params.getCount() == 1)
+			&& (v instanceof CssIdent)) {
+			// nothing
+		    } else if ((params.getCount() == 2)
+			       && (v instanceof CssIdent)) {
+			op = params.getOperator();
+			params.next();
+			v = params.getValue();
+
+			//-----------
+
+			if (v != null) {
+			    CssExpression expr = new CssExpression();
+			    expr.addValue(v);
+			    try {
+				CssListStyleType listStyleType = new CssListStyleType(ac, expr);
+			    } catch (InvalidParamException e) {
+				throw new InvalidParamException("counter",
+								params.getValue(),
+								getPropertyName(), ac);
+			    }
+			}
+
+			// --------------
+			if ((op != CssOperator.COMMA)
+			    || !(v instanceof CssIdent)) {
+			    throw new InvalidParamException("counter",
+							    params.getValue(),
+							    getPropertyName(), ac);
+			}
+		    } else {
+			throw new InvalidParamException("counter",
+							params.getValue(),
+							getPropertyName(), ac);
+		    }
+		    params.starts();
+		} else if (attr.getName().equals("counters")) {
+		    if ((params.getCount() == 2)
+			&& (v instanceof CssIdent)) {
+			op = params.getOperator();
+			params.next();
+			v = params.getValue();
+			if ((op != CssOperator.COMMA)
+			    || !(v instanceof CssString)) {
+			    throw new InvalidParamException("counters",
+							    params.getValue(),
+							    getPropertyName(), ac);
+			}
+		    } else if ((params.getCount() == 3)
+			       && (v instanceof CssIdent)) {
+			op = params.getOperator();
+			params.next();
+			v = params.getValue();
+			if ((op != CssOperator.COMMA)
+			    || !(v instanceof CssString)) {
+			    throw new InvalidParamException("counters",
+							    params.getValue(),
+							    getPropertyName(), ac);
+			}
+			op = params.getOperator();
+			params.next();
+			v = params.getValue();
+			if ((op != CssOperator.COMMA)
+			    || !(v instanceof CssIdent)) {
+			    throw new InvalidParamException("counters",
+							    params.getValue(),
+							    getPropertyName(), ac);
+			}
+		    } else {
+			throw new InvalidParamException("counters",
+							params.getValue(),
+							getPropertyName(), ac);
+		    }
+		    params.starts();
+		} else {
+		    throw new InvalidParamException("value",
+						    expression.getValue(),
+						    getPropertyName(), ac);
+		}
+	    } else {
+		throw new InvalidParamException("value",
+						expression.getValue(),
+						getPropertyName(), ac);
+	    }
+	    values.addElement(val);
+	    expression.next();
+	    counter++;
+	    val = expression.getValue();
+	    op = expression.getOperator();
+	}
+
+    }
+
+    public CssContent(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return values;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "content";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return values.elementAt(0) == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	int i = 0;
+	String ret = "";
+	while (i < values.size()) {
+	    ret += " " + values.elementAt(i);
+	    i++;
+	}
+	return ret.substring(1);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssContent != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.cssContent = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getContent();
+	} else {
+	    return ((Css1Style) style).cssContent;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @@TODO
+	return false;
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == normal;
+    }
+
+    static {
+	hash_values = new int[CONTENT.length];
+	for (int i=0; i<CONTENT.length; i++)
+	    hash_values[i] = CONTENT[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssContentCSS2.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,288 @@
+//
+// $Id: CssContentCSS2.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import java.util.Vector;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssFunction;
+import org.w3c.css.values.CssIdent;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssString;
+import org.w3c.css.values.CssURL;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class CssContentCSS2 extends CssProperty {
+
+    Vector values = new Vector();
+
+    private static String CONTENT[] = {
+	"open-quote", "close-quote", "no-open-quote", "no-close-quote" };
+
+    private static int[] hash_values;
+
+
+    /**
+     * Create a new CssContent
+     */
+    public CssContentCSS2() {
+    }
+
+    /**
+     * Create a new CssContent
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssContentCSS2(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+	if (val.equals(inherit)) {
+	    if(expression.getCount() > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    values.addElement(inherit);
+	    expression.next();
+	    return;
+	}
+
+	addContent(ac, expression);
+
+    }
+
+    /**
+     * @param ac
+     * @param expression
+     * @throws InvalidParamException
+     */
+    protected void addContent(ApplContext ac, CssExpression expression)
+    throws InvalidParamException {
+	CssValue val = expression.getValue();
+	int counter = 0;
+	char op = expression.getOperator();
+	while ((op == CssOperator.SPACE)
+	       && (counter < expression.getCount())) {
+	    if (val instanceof CssIdent) {
+		int hash = val.hashCode();
+		int i = 0;
+		for (;i < CONTENT.length; i++) {
+		    if (hash_values[i] == hash) {
+			break;
+		    }
+		}
+		if (i == CONTENT.length) {
+		    throw new InvalidParamException("value",
+						    expression.getValue(),
+						    getPropertyName(), ac);
+		}
+	    } else if (val instanceof CssString) {
+		// nothing
+	    } else if (val instanceof CssURL) {
+		// nothing
+	    } else if (val instanceof CssFunction) {
+		CssFunction attr = (CssFunction) val;
+		CssExpression params = attr.getParameters();
+		CssValue v = params.getValue();
+		if (attr.getName().equals("attr")) {
+		    if ((params.getCount() != 1)
+			|| !(v instanceof CssIdent)) {
+			throw new InvalidParamException("attr",
+							params.getValue(),
+							getPropertyName(), ac);
+		    }
+		} else if (attr.getName().equals("counter")) {
+		    if ((params.getCount() == 1)
+			&& (v instanceof CssIdent)) {
+			// nothing
+		    } else if ((params.getCount() == 2)
+			       && (v instanceof CssIdent)) {
+			op = params.getOperator();
+			params.next();
+			v = params.getValue();
+			if ((op != CssOperator.COMMA)
+			    || !(v instanceof CssIdent)) {
+			    throw new InvalidParamException("counter",
+							    params.getValue(),
+							    getPropertyName(), ac);
+			}
+		    } else {
+			throw new InvalidParamException("counter",
+							params.getValue(),
+							getPropertyName(), ac);
+		    }
+		    params.starts();
+		} else if (attr.getName().equals("counters")) {
+		    if ((params.getCount() == 2)
+			&& (v instanceof CssIdent)) {
+			op = params.getOperator();
+			params.next();
+			v = params.getValue();
+			if ((op != CssOperator.COMMA)
+			    || !(v instanceof CssString)) {
+			    throw new InvalidParamException("counters",
+							    params.getValue(),
+							    getPropertyName(), ac);
+			}
+		    } else if ((params.getCount() == 3)
+			       && (v instanceof CssIdent)) {
+			op = params.getOperator();
+			params.next();
+			v = params.getValue();
+			if ((op != CssOperator.COMMA)
+			    || !(v instanceof CssString)) {
+			    throw new InvalidParamException("counters",
+							    params.getValue(),
+							    getPropertyName(), ac);
+			}
+			op = params.getOperator();
+			params.next();
+			v = params.getValue();
+			if ((op != CssOperator.COMMA)
+			    || !(v instanceof CssIdent)) {
+			    throw new InvalidParamException("counters",
+							    params.getValue(),
+							    getPropertyName(), ac);
+			}
+		    } else {
+			throw new InvalidParamException("counters",
+							params.getValue(),
+							getPropertyName(), ac);
+		    }
+		    params.starts();
+		} else {
+		    throw new InvalidParamException("value",
+						    expression.getValue(),
+						    getPropertyName(), ac);
+		}
+	    } else {
+		throw new InvalidParamException("value",
+						expression.getValue(),
+						getPropertyName(), ac);
+	    }
+	    values.addElement(val);
+	    expression.next();
+	    counter++;
+	    val = expression.getValue();
+	    op = expression.getOperator();
+	}
+    }
+
+    public CssContentCSS2(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * @return Returns the values.
+     */
+    public Vector getValues() {
+        return values;
+    }
+
+    /**
+     * @param values The values to set.
+     */
+    public void setValues(Vector values) {
+        this.values = values;
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return values;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "content";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return values.elementAt(0) == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	int i = 0;
+	String ret = "";
+	while (i < values.size()) {
+	    ret += " " + values.elementAt(i);
+	    i++;
+	}
+	return ret.substring(1);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssContentCSS2 != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.cssContentCSS2 = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getContent();
+	} else {
+	    return ((Css1Style) style).cssContent;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @@TODO
+	return false;
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+    static {
+	hash_values = new int[CONTENT.length];
+	for (int i=0; i<CONTENT.length; i++)
+	    hash_values[i] = CONTENT[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssCounterIncrement.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,216 @@
+//
+// $Id: CssCounterIncrement.java,v 1.2 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import java.util.Vector;
+
+import org.w3c.css.parser.CssStyle;
+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.CssNumber;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class CssCounterIncrement extends CssProperty {
+
+    Vector values = new Vector();
+
+    private static CssIdent none = new CssIdent("none");
+
+
+    /**
+     * Create a new CssCounterIncrement
+     */
+    public CssCounterIncrement() {
+    }
+
+    /**
+     * Create a new CssCounterIncrement
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssCounterIncrement(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = expression.getValue();
+	int counter = 0;
+	char op = expression.getOperator();
+
+	setByUser();
+	if (val.equals(inherit)) {
+	    if(expression.getCount() > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    values.addElement(inherit);
+	    expression.next();
+	    return;
+	} else if (val.equals(none)) {
+	    if(expression.getCount() > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    values.addElement(none);
+	    expression.next();
+	    return;
+	}
+
+	while(counter < expression.getCount()) {
+
+	    if(val.equals(inherit) || val.equals(none)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+
+	    // the operator must be a space
+	    if(op != CssOperator.SPACE) {
+		throw new InvalidParamException("operator",
+			new Character(op), ac);
+	    }
+	    // an ident
+	    if(val instanceof CssIdent) {
+		values.addElement(val);
+	    }
+	    // a number associated to the previous ident
+	    else if(val instanceof CssNumber
+		    && ((CssNumber) val).isInteger()
+		    && (values.get(values.size() - 1) instanceof CssIdent)) {
+		values.add(val);
+	    }
+	    else {
+		throw new InvalidParamException("value",
+			expression.getValue(),
+			getPropertyName(), ac);
+	    }
+	    expression.next();
+	    counter++;
+
+	    val = expression.getValue();
+	    op = expression.getOperator();
+	}/*
+	while ((op == CssOperator.SPACE)
+	       && (counter < expression.getCount())) {
+	    if (val instanceof CssIdent) {
+		expression.next();
+		counter++;
+		if (counter < expression.getCount()) {
+		    values.addElement(val);
+		    val = expression.getValue();
+		    op = expression.getOperator();
+		    if ((op == CssOperator.SPACE)
+			&& (val instanceof CssNumber)
+			&& ((CssNumber) val).isInteger()) {
+			// nothing
+		    } else {
+			throw new InvalidParamException("value",
+							expression.getValue(),
+							getPropertyName(), ac);
+		    }
+		}
+	    } else {
+		throw new InvalidParamException("value",
+						expression.getValue(),
+						getPropertyName(), ac);
+	    }
+	    values.addElement(val);
+	    expression.next();
+	    counter++;
+	    val = expression.getValue();
+	    op = expression.getOperator();
+	}*/
+
+    }
+
+    public CssCounterIncrement(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return values;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "counter-increment";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return values.elementAt(0) == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	int i = 0;
+	String ret = "";
+	while (i < values.size()) {
+	    ret += " " + values.elementAt(i);
+	    i++;
+	}
+	return ret.substring(1);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssCounterIncrement != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.cssCounterIncrement = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getCounterIncrement();
+	} else {
+	    return ((Css1Style) style).cssCounterIncrement;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @@TODO
+	return false;
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssCounterReset.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,216 @@
+//
+// $Id: CssCounterReset.java,v 1.2 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import java.util.Vector;
+
+import org.w3c.css.parser.CssStyle;
+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.CssNumber;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class CssCounterReset extends CssProperty {
+
+    Vector values = new Vector();
+
+    private static CssIdent none = new CssIdent("none");
+
+
+    /**
+     * Create a new CssCounterReset
+     */
+    public CssCounterReset() {
+    }
+
+    /**
+     * Create a new CssCounterReset
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssCounterReset(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = expression.getValue();
+	int counter = 0;
+	char op = expression.getOperator();
+
+	setByUser();
+	if (val.equals(inherit)) {
+	    if(expression.getCount() > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    values.addElement(inherit);
+	    expression.next();
+	    return;
+	} else if (val.equals(none)) {
+	    if(expression.getCount() > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    values.addElement(none);
+	    expression.next();
+	    return;
+	}
+
+	while(counter < expression.getCount()) {
+
+	    if(val.equals(inherit) || val.equals(none)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+
+	    // the operator must be a space
+	    if(op != CssOperator.SPACE) {
+		throw new InvalidParamException("operator",
+			new Character(op), ac);
+	    }
+	    // an ident
+	    if(val instanceof CssIdent) {
+		values.addElement(val);
+	    }
+	    // a number associated to the previous ident
+	    else if(val instanceof CssNumber
+		    && ((CssNumber) val).isInteger()
+		    && (values.get(values.size() - 1) instanceof CssIdent)) {
+		values.add(val);
+	    }
+	    else {
+		throw new InvalidParamException("value",
+			expression.getValue(),
+			getPropertyName(), ac);
+	    }
+	    expression.next();
+	    counter++;
+
+	    val = expression.getValue();
+	    op = expression.getOperator();
+	}
+	/*
+	while ((op == CssOperator.SPACE)
+	       && (counter < expression.getCount())) {
+	    if (val instanceof CssIdent) {
+		expression.next();
+		counter++;
+		if (counter < expression.getCount()) {
+		    values.addElement(val);
+		    val = expression.getValue();
+		    op = expression.getOperator();
+		    if ((op == CssOperator.SPACE)
+			&& (val instanceof CssNumber)
+			&& ((CssNumber) val).isInteger()) {
+			// nothing
+		    } else {
+			throw new InvalidParamException("value",
+							expression.getValue(),
+							getPropertyName(), ac);
+		    }
+		}
+	    } else {
+		throw new InvalidParamException("value",
+						expression.getValue(),
+						getPropertyName(), ac);
+	    }
+	    values.addElement(val);
+	    expression.next();
+	    counter++;
+	    val = expression.getValue();
+	    op = expression.getOperator();
+	}*/
+    }
+
+    public CssCounterReset(ApplContext ac, CssExpression expression)
+    	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return values;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "counter-reset";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return values.elementAt(0) == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	int i = 0;
+	String ret = "";
+	while (i < values.size()) {
+	    ret += " " + values.elementAt(i);
+	    i++;
+	}
+	return ret.substring(1);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssCounterReset != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.cssCounterReset = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getCounterReset();
+	} else {
+	    return ((Css1Style) style).cssCounterReset;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @@TODO
+	return false;
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssDirection.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,144 @@
+//
+// $Id: CssDirection.java,v 1.2 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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 CssDirection extends CssProperty {
+
+    CssValue value;
+
+    private static CssIdent ltr = new CssIdent("ltr");
+    private static CssIdent rtl = new CssIdent("rtl");
+
+    /**
+     * Create a new CssDirection
+     */
+    public CssDirection() {
+	value = ltr;
+    }
+
+    /**
+     * Create a new CssDirection
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssDirection(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+	if (val.equals(inherit)) {
+	    value = inherit;
+	    expression.next();
+	} else if (val.equals(ltr)) {
+	    value = ltr;
+	    expression.next();
+	} else if (val.equals(rtl)) {
+	    value = rtl;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+
+    }
+
+    public CssDirection(ApplContext ac, CssExpression expression)
+    	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "direction";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssDirection != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssDirection = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getDirection();
+	} else {
+	    return ((Css1Style) style).cssDirection;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssDirection &&
+		value.equals(((CssDirection) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == ltr;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssDirectionATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,146 @@
+//
+// $Id: CssDirectionATSC.java,v 1.2 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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 CssDirectionATSC extends CssProperty {
+
+    CssValue value;
+
+    private static CssIdent ltr = new CssIdent("ltr");
+    private static CssIdent rtl = new CssIdent("rtl");
+
+    /**
+     * Create a new CssDirectionATSC
+     */
+    public CssDirectionATSC() {
+	value = ltr;
+    }
+
+    /**
+     * Create a new CssDirectionATSC
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssDirectionATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	ac.getFrame().addWarning("atsc", val.toString());
+
+	setByUser();
+	if (val.equals(inherit)) {
+	    value = inherit;
+	    expression.next();
+	} else if (val.equals(ltr)) {
+	    value = ltr;
+	    expression.next();
+	} else if (val.equals(rtl)) {
+	    value = rtl;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+
+    }
+
+    public CssDirectionATSC(ApplContext ac, CssExpression expression)
+    	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "direction";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssDirectionATSC != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssDirectionATSC = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getDirectionATSC();
+	} else {
+	    return ((Css1Style) style).cssDirectionATSC;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssDirectionATSC &&
+		value.equals(((CssDirectionATSC) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == ltr;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssDisplay.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,156 @@
+//
+// $Id: CssDisplay.java,v 1.4 2005-09-14 15:14:31 ylafon Exp $
+// From Philippe Le Hegaret (Philippe.Le_Hegaret@sophia.inria.fr)
+// Updated September 14th 2000 Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT MIT and INRIA, 1997.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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;
+
+/**
+ *
+ * @version $Revision: 1.4 $
+ */
+public class CssDisplay extends CssProperty {
+
+    int value;
+
+    private static String[] DISPLAY = {
+	"none", "block", "inline", "list-item", "run-in", "compact", "table", "table-row",
+	"table-cell", "table-row-group", "table-header-group", "table-footer-group",
+	"table-column", "table-column-group", "table-caption", "ruby-text", "ruby-base",
+	"ruby-base-group", "ruby-text-group", "initial", "inherit", "inline-block", "icon"
+    };
+
+    private static int[] hash_values;
+
+    /**
+     * Create a new CssDisplay
+     */
+    public CssDisplay() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new CssDisplay
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorect
+     */
+    public CssDisplay(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	if ( val instanceof CssIdent) {
+	    int hash = val.hashCode();
+	    for (int i = 0; i < DISPLAY.length; i++) {
+		if (hash_values[i] == hash) {
+		    value = i;
+		    expression.next();
+		    return;
+		}
+	    }
+	}
+
+	throw new InvalidParamException("value", expression.getValue(),
+					getPropertyName(), ac);
+    }
+
+    public CssDisplay(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+		return DISPLAY[value];
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+		return "display";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+		return value == DISPLAY.length - 1;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+		return DISPLAY[value];
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+		Css1Style style0 = (Css1Style) style;
+		if (style0.cssDisplay != null)
+		    style0.addRedefinitionWarning(ac, this);
+		style0.cssDisplay = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+		if (resolve) {
+		    return ((Css1Style) style).getDisplay();
+		} else {
+		    return ((Css1Style) style).cssDisplay;
+		}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+		return (property instanceof CssDisplay &&
+			value == ((CssDisplay) property).value);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+		return value == 0;
+    }
+
+    static {
+		hash_values = new int[DISPLAY.length];
+		for (int i = 0; i < DISPLAY.length; i++)
+		    hash_values[i] = DISPLAY[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssDisplayCSS1.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,190 @@
+//
+// $Id: CssDisplayCSS1.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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;
+
+/**
+ *   <H4>
+ *      &nbsp;&nbsp; 'display'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> block | inline | list-item | none<BR>
+ *   <EM>Initial:</EM> block<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   This property describes how/if an element is displayed on the canvas (which
+ *   may be on a printed page, a computer display etc.).
+ *   <P> An element with a 'display' value of 'block' opens a new box. The box
+ *   is positioned relative to adjacent boxes according to the CSS <A
+ *   HREF="#formatting-model">formatting model</A>. Typically, elements like
+ *   'H1' and 'P' are of type 'block'. A value of 'list-item' is similar to
+ *   'block' except that a list-item marker is added. In HTML, 'LI' will
+ *   typically have this value.
+ *   <P>
+ *   An element with a 'display' value of 'inline' results in a new inline box
+ *   on the same line as the previous content. The box is dimensioned according
+ *   to the formatted size of the content. If the content is text, it may span
+ *   several lines, and there will be a box on each line. The margin, border and
+ *   padding properties apply to 'inline' elements, but will not have any effect
+ *   at the line breaks.
+ *   <P>
+ *   A value of 'none' turns off the display of the element, including children
+ *   elements and the surrounding box.
+ *   <PRE>
+ *   P { display: block }
+ *   EM { display: inline }
+ *   LI { display: list-item }
+ *   IMG { display: none }
+ * </PRE>
+ *   <P>
+ *   The last rule turns off the display of images.
+ *   <P> The initial value of 'display' is 'block', but a UA will typically have
+ *   default values for all HTML elements according to the suggested rendering
+ *   of elements in the HTML specification.
+ *
+ * @version $Revision: 1.3 $
+ */
+public class CssDisplayCSS1 extends CssProperty {
+
+    int value;
+
+    private static String[] DISPLAY = {
+	"inline", "block", "list-item", "none", };
+
+    private static int[] hash_values;
+
+    /**
+     * Create a new CssDisplayCSS1
+     */
+    public CssDisplayCSS1() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new CssDisplayCSS1
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorect
+     */
+    public CssDisplayCSS1(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	if ( val instanceof CssIdent) {
+	    int hash = val.hashCode();
+	    for (int i = 0; i < DISPLAY.length; i++) {
+		if (hash_values[i] == hash) {
+		    value = i;
+		    expression.next();
+		    return;
+		}
+	    }
+	}
+
+	throw new InvalidParamException("value", expression.getValue(),
+					getPropertyName(), ac);
+    }
+
+    public CssDisplayCSS1(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return DISPLAY[value];
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "display";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == DISPLAY.length - 1;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return DISPLAY[value];
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssDisplayCSS1 != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssDisplayCSS1 = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getDisplayCSS1();
+	} else {
+	    return ((Css1Style) style).cssDisplayCSS1;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssDisplayCSS1 &&
+		value == ((CssDisplay) property).value);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == 0;
+    }
+
+    static {
+	hash_values = new int[DISPLAY.length];
+	for (int i = 0; i < DISPLAY.length; i++)
+	    hash_values[i] = DISPLAY[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssDisplayCSS2.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,207 @@
+//
+// $Id: CssDisplayCSS2.java,v 1.4 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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;
+
+/**
+ *   <H4>
+ *      &nbsp;&nbsp; 'display'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> block | inline | list-item | none<BR>
+ *   <EM>Initial:</EM> block<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   This property describes how/if an element is displayed on the canvas (which
+ *   may be on a printed page, a computer display etc.).
+ *   <P> An element with a 'display' value of 'block' opens a new box. The box
+ *   is positioned relative to adjacent boxes according to the CSS <A
+ *   HREF="#formatting-model">formatting model</A>. Typically, elements like
+ *   'H1' and 'P' are of type 'block'. A value of 'list-item' is similar to
+ *   'block' except that a list-item marker is added. In HTML, 'LI' will
+ *   typically have this value.
+ *   <P>
+ *   An element with a 'display' value of 'inline' results in a new inline box
+ *   on the same line as the previous content. The box is dimensioned according
+ *   to the formatted size of the content. If the content is text, it may span
+ *   several lines, and there will be a box on each line. The margin, border and
+ *   padding properties apply to 'inline' elements, but will not have any effect
+ *   at the line breaks.
+ *   <P>
+ *   A value of 'none' turns off the display of the element, including children
+ *   elements and the surrounding box.
+ *   <PRE>
+ *   P { display: block }
+ *   EM { display: inline }
+ *   LI { display: list-item }
+ *   IMG { display: none }
+ * </PRE>
+ *   <P>
+ *   The last rule turns off the display of images.
+ *   <P> The initial value of 'display' is 'block', but a UA will typically have
+ *   default values for all HTML elements according to the suggested rendering
+ *   of elements in the HTML specification.
+ *
+ * @version $Revision: 1.4 $
+ */
+public class CssDisplayCSS2 extends CssProperty {
+
+    int value;
+
+    private static String[] DISPLAY = {
+	"inline", "block", "list-item", "run-in", "compact", "marker", "table",
+	"inline-table", "table-row-group", "table-column-group",
+	"table-header-group", "table-footer-group", "table-row", "table-column",
+	"table-cell", "table-caption", "none", "inherit" };
+
+    private static int[] hash_values;
+
+    /**
+     * Create a new CssDisplay
+     */
+    public CssDisplayCSS2() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new CssDisplay
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorect
+     */
+    public CssDisplayCSS2(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	if ( val instanceof CssIdent) {
+	    int hash = val.hashCode();
+	    for (int i = 0; i < DISPLAY.length; i++) {
+		if (hash_values[i] == hash) {
+		    value = i;
+		    expression.next();
+		    return;
+		}
+	    }
+	}
+
+	throw new InvalidParamException("value", expression.getValue(),
+					getPropertyName(), ac);
+    }
+
+    public CssDisplayCSS2(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * @return Returns the value.
+     */
+    public int getValue() {
+        return value;
+    }
+
+    /**
+     * @param value The value to set.
+     */
+    public void setValue(int value) {
+        this.value = value;
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return DISPLAY[value];
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "display";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == DISPLAY.length - 1;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return DISPLAY[value];
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssDisplayCSS2 != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssDisplayCSS2 = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getDisplayCSS2();
+	} else {
+	    return ((Css1Style) style).cssDisplayCSS2;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssDisplayCSS2 &&
+		value == ((CssDisplay) property).value);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == 0;
+    }
+
+    static {
+	hash_values = new int[DISPLAY.length];
+	for (int i = 0; i < DISPLAY.length; i++)
+	    hash_values[i] = DISPLAY[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssFloat.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,251 @@
+//
+// $Id: CssFloat.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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;
+
+/**
+ *   <H4>
+ *      &nbsp;&nbsp; 'float'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> left | right | none<BR>
+ *   <EM>Initial:</EM> none<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+
+ *   <P> With the value 'none', the element will be displayed where it appears
+ *   in the text. With a value of 'left' ('right') the element will be moved to
+ *   the left ('right') and the text will wrap on the right (left) side of the
+ *   element.  With a value of 'left' or 'right', the element is treated as
+ *   block-level (i.e. the 'display' property is ignored).
+ *
+ *   <H3>
+ *      &nbsp;&nbsp; Floating elements
+ *   </H3>
+
+ *   <P> Using the <A HREF="#float">'float'</A> property, an element can be
+ *   declared to be outside the normal flow of elements and is then formatted as
+ *   a block-level element. For example, by setting the 'float' property of an
+ *   image to 'left', the image is moved to the left until the margin, padding
+ *   or border of another block-level element is reached. The normal flow will
+ *   wrap around on the right side. The margins, borders and padding of the
+ *   element itself will be honored, and the margins never collapse with the
+ *   margins of adjacent elements.
+
+ *   <P> A floating element is positioned subject to the following constraints:
+
+ *   <OL>
+
+ *     <LI> The left outer edge of a left-floating element may not be to the
+ *     left of the left inner edge of its parent element. Analogously for right
+ *     floating elements.
+
+ *     <LI> The left outer edge of a left floating element must be to the right
+ *     of the right outer edge of every earlier (in the HTML source)
+ *     left-floating element or the top of the former must be lower than the
+ *     bottom of the latter. Analogously for right floating elements.
+
+ *     <LI> The right outer edge of a left-floating element may not be to the
+ *     right of the left outer edge of any right-floating element that is to the
+ *     right of it. Analogously for right-floating elements.
+
+ *     <LI> A floating element's top may not be higher than the inner top of its
+ *     parent.
+
+ *     <LI> A floating element's top may not be higher than the top of any
+ *     earlier floating or block-level element.
+
+ *     <LI> A floating element's top may not be higher than the top of any
+ *     <EM>line-box</EM> (see section 4.4) with content that precedes the
+ *     floating element in the HTML source.
+
+ *     <LI> A floating element must be placed as high as possible.
+
+ *     <LI> A left-floating element must be put as far to the left as possible,
+ *     a right-floating element as far to the right as possible. A higher
+ *     position is preferred over one that is further to the left/right.
+
+ *   </OL>
+ *   <PRE>
+ *   &lt;STYLE TYPE="text/css"&gt;
+ *     IMG { float: left }
+ *     BODY, P, IMG { margin: 2em }
+ *   &lt;/STYLE&gt;
+
+ *   &lt;BODY&gt;
+ *     &lt;P&gt;
+ *       &lt;IMG SRC=img.gif&gt;
+ *       Some sample text that has no other...
+ *   &lt;/BODY&gt;
+ * </PRE>
+ *   <P>
+ *   The above example could be formatted as:
+ *   <PRE>
+ *    ________________________________________
+ *   |
+ *   |          max(BODY margin, P margin)
+ *   |          ______________________________
+ *   |    |    |             Some sample text
+ *   | B  | P  | IMG margins that has no other
+ *   | O  |    |    _____    purpose than to
+ *   | D  | m  |   |     |   show how floating
+ *   | Y  | a  |   | IMG |   elements are moved
+ *   |    | r  |   |     |   to the side of the
+ *   | m  | g  |   |_____|   parent element
+ *   | a  | i  |             while honoring
+ *   | r  | n  |             margins, borders
+ *   | g  |    |             and padding. Note
+ *   | i  |    |how adjacent vertical margins
+ *   | n  |    |are collapsed between non-
+ *   |    |    |floating block-level elements.
+ * </PRE>
+ *   <P> Note that the margin of the 'P' elements enclose the floating 'IMG'
+ *   element.
+ *   <P> There are two situations when floating elements can overlap with the
+ *   margin, border and padding areas of other elements:
+ *   <UL>
+ *     <LI> when the floating element has a negative margin: negative margins on
+ *     floating elements are honored as on other block-level elements.
+ *     <LI> when the floating element is wider or higher than the element it is
+ *     inside
+ *   </UL>
+ *
+ * @version $Revision: 1.3 $
+ */
+public class CssFloat extends CssProperty {
+
+    int value;
+
+    private static String[] FLOAT = { "none", "left", "right", "inherit" };
+    private static int[] hash_values;
+
+    /**
+     * Create a new CssFloat
+     */
+    public CssFloat() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new CssFloat
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssFloat(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	setByUser();
+	if ( val instanceof CssIdent) {
+	    int hash = val.hashCode();
+	    for (int i = 0; i < FLOAT.length; i++)
+		if (hash_values[i] == hash) {
+		    value = i;
+		    expression.next();
+		    return;
+		}
+	}
+	throw new InvalidParamException("value", expression.getValue(),
+					getPropertyName(), ac);
+    }
+
+    public CssFloat(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return FLOAT[value];
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "float";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == FLOAT.length - 1;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return FLOAT[value];
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssFloat != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssFloat = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getFloat();
+	} else {
+	    return ((Css1Style) style).cssFloat;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssFloat &&
+		value == ((CssFloat) property).value);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == 0;
+    }
+
+    static {
+	hash_values = new int[FLOAT.length];
+	for (int i = 0; i < FLOAT.length; i++)
+	    hash_values[i] = FLOAT[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssFont.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,488 @@
+//
+// $Id: CssFont.java,v 1.4 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+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.CssLength;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *      &nbsp;&nbsp; 'font'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> [ &lt;font-style&gt; || &lt;font-variant&gt; ||
+ *   &lt;font-weight&gt; ]? &lt;font-size&gt; [ / &lt;line-height&gt; ]?
+ *   &lt;font-family&gt;<BR>
+ *   <EM>Initial:</EM> not defined for shorthand properties<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> allowed on &lt;font-size&gt; and
+ *   &lt;line-height&gt;<BR>
+ *   <P>
+ *   The 'font' property is a shorthand property for setting
+ *   'font-style',
+ *   'font-variant',
+ *   'font-weight',
+ *   'font-size',
+ *   'line-height' and
+ *   'font-family' at the same place in the style sheet.
+ *   The syntax of this property is based on a traditional typographical
+ *   shorthand notation to set multiple properties related to fonts.
+ *   <P> For a definition of allowed and initial values, see the previously
+ *   defined properties. Properties for which no values are given are set to
+ *   their initial value.
+ *   <PRE>
+ *   P { font: 12pt/14pt sans-serif }
+ *   P { font: 80% sans-serif }
+ *   P { font: x-large/110% "new century schoolbook", serif }
+ *   P { font: bold italic large Palatino, serif }
+ *   P { font: normal small-caps 120%/120% fantasy }
+ *   </PRE>
+ *   <P> In the second rule, the font size percentage value ('80%') refers to
+ *   the font size of the parent element. In the third rule, the line height
+ *   percentage refers to the font size of the element itself.
+ *   <P> In the first three rules above, the 'font-style', 'font-variant' and
+ *   'font-weight' are not explicitly mentioned, which means they are all three
+ *   set to their initial value ('normal'). The fourth rule sets the
+ *   'font-weight' to 'bold', the 'font-style' to 'italic' and implicitly sets
+ *   'font-variant' to 'normal'.
+ *   <P> The fifth rule sets the 'font-variant' ('small-caps'), the 'font-size'
+ *   (120% of the parent's font), the 'line-height' (120% times the font size)
+ *   and the 'font-family' ('fantasy'). It follows that the keyword 'normal'
+ *   applies to the two remaining properties: 'font-style' and 'font-weight'.
+ *
+ * @see CssFontStyle
+ * @see CssFontVariant
+ * @see CssFontWeight
+ * @see CssFontSize
+ * @see CssLineHeight
+ * @see CssFontFamily
+ * @see CssPercentage
+ * @see CssLength
+ * @version $Revision: 1.4 $
+ */
+public class CssFont extends CssProperty
+    implements CssOperator, CssFontConstant {
+
+    CssValue value;
+
+    CssFontStyle   fontStyle;
+    CssFontVariant fontVariant;
+    CssFontWeight  fontWeight;
+
+    CssFontSize    fontSize;
+    CssLineHeight  lineHeight;
+    CssFontFamily  fontFamily;
+
+    // internal hack for strings comparaison
+    private static int[] hash_values;
+
+    static CssIdent normal = new CssIdent("normal");
+
+    /**
+     * Create a new CssFont
+     */
+    public CssFont() {
+    }
+
+    /**
+     * Creates a new CssFont
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssFont(ApplContext ac, CssExpression expression,boolean check)
+    	throws InvalidParamException {
+
+	CssValue val = expression.getValue();
+	char op = SPACE;
+	boolean find = true;
+	int max_values = 3;
+
+	int normalNb = 0;
+
+	if (val instanceof CssIdent) {
+	    CssIdent ident = checkIdent((CssIdent) val);
+	    if (ident != null) {
+		if(expression.getCount() > 1) {
+		    throw new InvalidParamException("unrecognize", ac);
+		}
+		value = ident;
+		expression.next();
+		return;
+	    } // else continue;
+	}
+
+	while (find && max_values-- > 0) {
+	    find = false;
+	    val = expression.getValue();
+	    op = expression.getOperator();
+
+	    if (val == null) {
+		throw new InvalidParamException("few-value", getPropertyName(), ac);
+	    }
+
+	    if(val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+
+	    if(val.equals(normal)) {
+		normalNb++;
+		expression.next();
+		find = true;
+	    }
+
+	    if (!find && fontStyle == null) {
+		try {
+		    fontStyle = new CssFontStyle(ac, expression);
+		    find = true;
+		} catch (InvalidParamException e) {
+		}
+	    }
+
+	    if (!find && fontVariant == null) {
+		try {
+		    fontVariant = new CssFontVariant(ac, expression);
+		    find = true;
+		} catch (InvalidParamException e) {
+		}
+	    }
+
+	    if (!find && fontWeight == null) {
+		try {
+		    fontWeight = new CssFontWeight(ac, expression);
+		    find = true;
+		} catch (InvalidParamException e) {
+		    // we have now (or not)
+		    // [ 'font-style' || 'font-variant' || 'font-weight' ]?
+		    //break;
+		}
+	    }
+
+	    if (find && op != SPACE) {
+		throw new InvalidParamException("operator",
+						((new Character(op)).toString()), ac);
+	    }
+	}
+
+	// "normal" values
+	CssExpression normalExpr = new CssExpression();
+	normalExpr.addValue(normal);
+
+	for(int i = 0; i < normalNb; i++) {
+	    if (fontStyle == null) {
+		fontStyle = new CssFontStyle(ac, normalExpr);
+		normalExpr.starts();
+	    }
+	    else if (fontVariant == null) {
+		fontVariant = new CssFontVariant(ac, normalExpr);
+		normalExpr.starts();
+	    }
+	    else if (fontWeight == null) {
+		fontWeight = new CssFontWeight(ac, normalExpr);
+		normalExpr.starts();
+	    }
+	}
+
+	val = expression.getValue();
+	op = expression.getOperator();
+
+	if (val == null) {
+	    throw new InvalidParamException("few-value", getPropertyName(), ac);
+	}
+
+	if(val.equals(inherit)) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	fontSize = new CssFontSize(ac, expression);
+
+	if (op == SLASH) {
+	    op = expression.getOperator();
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    lineHeight = new CssLineHeight(ac, expression);
+	}
+
+	if(expression.getValue().equals(inherit)) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	if (op == SPACE && expression.getValue() != null) {
+	    fontFamily = new CssFontFamily(ac, expression, true);
+	} else {
+	    expression.starts();
+	    throw new InvalidParamException("few-value", expression.toString(), ac);
+	}
+	setByUser();
+    }
+
+    public CssFont(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return null;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (value != null) {
+	    return value.toString();
+	} else {
+	    String ret = "";
+	    if (fontStyle != null) {
+		ret += " " + fontStyle;
+	    }
+	    if (fontVariant != null) {
+		ret += " " + fontVariant;
+	    }
+	    if (fontWeight != null) {
+		ret += " " + fontWeight;
+	    }
+	    if(fontSize != null) {
+		ret += " " + fontSize;
+	    }
+	    if (lineHeight != null) {
+		ret += "/" + lineHeight;
+	    }
+	    if (fontFamily.size() != 0) {
+		ret += " " + fontFamily;
+	    }
+	    return ret.substring(1);
+	}
+    }
+
+    /**
+     * Set this property to be important.
+     * Overrides this method for a macro
+     */
+    public void setImportant() {
+	super.setImportant();
+	if (value == null) {
+	    if(fontStyle != null)
+		fontStyle.important = true;
+	    if(fontVariant != null)
+		fontVariant.important = true;
+	    if(fontWeight != null)
+		fontWeight.important = true;
+	    if(fontSize != null)
+		fontSize.important = true;
+	    if(lineHeight != null)
+		lineHeight.important = true;
+	    if(fontFamily != null)
+		fontFamily.important = true;
+	}
+    }
+
+    /**
+     * Returns true if this property is important.
+     * Overrides this method for a macro
+     */
+    public boolean getImportant() {
+	if (value != null) {
+	    return super.getImportant();
+	} else {
+	    return ((fontStyle == null || fontStyle.important) &&
+		    (fontVariant == null || fontVariant.important) &&
+		    (fontWeight == null || fontWeight.important) &&
+		    (fontSize == null || fontSize.important) &&
+		    (lineHeight == null || lineHeight.important) &&
+		    (fontFamily == null || fontFamily.important));
+	}
+    }
+
+    /**
+     * Print this property.
+     *
+     * @param printer The printer
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	if (value != null) {
+	    printer.print(this);
+	} else if ((fontStyle != null && fontVariant != null &&
+	     fontWeight != null && fontSize !=null &&
+	     lineHeight != null && fontFamily != null) &&
+	    (getImportant() ||
+	     (!fontStyle.important &&
+	      !fontVariant.important &&
+	      !fontWeight.important &&
+	      !fontSize.important &&
+	      !lineHeight.important &&
+	      !fontFamily.important))) {
+	    printer.print(this);
+	} else {
+	    if (fontStyle != null) {
+		fontStyle.print(printer);
+	    }
+	    if (fontVariant != null) {
+		fontVariant.print(printer);
+	    }
+	    if (fontWeight != null) {
+		fontWeight.print(printer);
+	    }
+	    if (fontSize != null) {
+		fontSize.print(printer);
+	    }
+	    if (lineHeight != null) {
+		lineHeight.print(printer);
+	    }
+	    if ((fontFamily != null) &&
+		((fontFamily.isSoftlyInherited()) || (fontFamily.size() != 0))) {
+		fontFamily.print(printer);
+	    }
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (value != null) {
+	    ((Css1Style) style).cssFont.value = value;
+	} else {
+	    if(fontStyle != null)
+		fontStyle.addToStyle(ac, style);
+	    if(fontVariant != null)
+		fontVariant.addToStyle(ac, style);
+	    if(fontSize != null)
+		fontSize.addToStyle(ac, style);
+	    if(fontWeight != null)
+		fontWeight.addToStyle(ac, style);
+	    if(lineHeight != null)
+		lineHeight.addToStyle(ac, style);
+	    if(fontFamily != null)
+		fontFamily.addToStyle(ac, style);
+	}
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	super.setInfo(line, source);
+	if (value == null) {
+	    if(fontStyle != null)
+		fontStyle.setInfo(line, source);
+	    if(fontVariant != null)
+		fontVariant.setInfo(line, source);
+	    if(fontWeight != null)
+		fontWeight.setInfo(line, source);
+	    if(fontSize != null)
+		fontSize.setInfo(line, source);
+	    if(lineHeight != null)
+		lineHeight.setInfo(line, source);
+	    if(fontFamily != null)
+		fontFamily.setInfo(line, source);
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return false;
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors selector) {
+	super.setSelectors(selector);
+	if (fontStyle != null) {
+	    fontStyle.setSelectors(selector);
+	}
+	if (fontVariant != null) {
+	    fontVariant.setSelectors(selector);
+	}
+	if (fontWeight != null) {
+	    fontWeight.setSelectors(selector);
+	}
+	if (fontSize != null) {
+	    fontSize.setSelectors(selector);
+	}
+	if (lineHeight != null) {
+	    lineHeight.setSelectors(selector);
+	}
+	if (fontFamily != null) {
+	    fontFamily.setSelectors(selector);
+	}
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getFont();
+	} else {
+	    return ((Css1Style) style).cssFont;
+	}
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "font";
+    }
+
+    private CssIdent checkIdent(CssIdent ident) {
+	int hash = ident.hashCode();
+	for (int i = 0; i < CssFontConstant.FONT.length; i++) {
+	    if (hash_values[i] == hash) {
+		return ident;
+	    }
+	}
+
+	return null;
+    }
+
+    static {
+	hash_values = new int[CssFontConstant.FONT.length];
+	for (int i=0; i<CssFontConstant.FONT.length; i++)
+	    hash_values[i] = CssFontConstant.FONT[i].hashCode();
+    }
+}
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssFontCSS1.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,445 @@
+//
+// $Id: CssFontCSS1.java,v 1.4 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+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.CssLength;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *      &nbsp;&nbsp; 'font'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> [ &lt;font-style&gt; || &lt;font-variant&gt; ||
+ *   &lt;font-weight&gt; ]? &lt;font-size&gt; [ / &lt;line-height&gt; ]?
+ *   &lt;font-family&gt;<BR>
+ *   <EM>Initial:</EM> not defined for shorthand properties<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> allowed on &lt;font-size&gt; and
+ *   &lt;line-height&gt;<BR>
+ *   <P>
+ *   The 'font' property is a shorthand property for setting
+ *   'font-style',
+ *   'font-variant',
+ *   'font-weight',
+ *   'font-size',
+ *   'line-height' and
+ *   'font-family' at the same place in the style sheet.
+ *   The syntax of this property is based on a traditional typographical
+ *   shorthand notation to set multiple properties related to fonts.
+ *   <P> For a definition of allowed and initial values, see the previously
+ *   defined properties. Properties for which no values are given are set to
+ *   their initial value.
+ *   <PRE>
+ *   P { font: 12pt/14pt sans-serif }
+ *   P { font: 80% sans-serif }
+ *   P { font: x-large/110% "new century schoolbook", serif }
+ *   P { font: bold italic large Palatino, serif }
+ *   P { font: normal small-caps 120%/120% fantasy }
+ *   </PRE>
+ *   <P> In the second rule, the font size percentage value ('80%') refers to
+ *   the font size of the parent element. In the third rule, the line height
+ *   percentage refers to the font size of the element itself.
+ *   <P> In the first three rules above, the 'font-style', 'font-variant' and
+ *   'font-weight' are not explicitly mentioned, which means they are all three
+ *   set to their initial value ('normal'). The fourth rule sets the
+ *   'font-weight' to 'bold', the 'font-style' to 'italic' and implicitly sets
+ *   'font-variant' to 'normal'.
+ *   <P> The fifth rule sets the 'font-variant' ('small-caps'), the 'font-size'
+ *   (120% of the parent's font), the 'line-height' (120% times the font size)
+ *   and the 'font-family' ('fantasy'). It follows that the keyword 'normal'
+ *   applies to the two remaining properties: 'font-style' and 'font-weight'.
+ *
+ * @see CssFontStyle
+ * @see CssFontVariant
+ * @see CssFontWeight
+ * @see CssFontSize
+ * @see CssLineHeight
+ * @see CssFontFamily
+ * @see CssPercentage
+ * @see CssLength
+ * @version $Revision: 1.4 $
+ */
+public class CssFontCSS1 extends CssProperty
+    implements CssOperator, CssFontConstantCSS1 {
+
+    CssValue value;
+
+    CssFontStyleCSS1   fontStyle;
+    CssFontVariantCSS1 fontVariant;
+    CssFontWeightCSS1  fontWeight;
+
+    CssFontSizeCSS1    fontSize;
+    CssLineHeightCSS1  lineHeight;
+    CssFontFamilyCSS1  fontFamily;
+
+    // internal hack for strings comparaison
+    //private static int[] hash_values;
+
+    static CssIdent normal = new CssIdent("normal");
+
+    /**
+     * Create a new CssFontCSS1
+     */
+    public CssFontCSS1() {
+    }
+
+    /**
+     * Creates a new CssFont
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssFontCSS1(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+
+	CssValue val = expression.getValue();
+	char op = SPACE;
+	boolean find = true;
+	int max_values = 3;
+
+	int normalNb = 0;
+
+	while (find && max_values-- > 0) {
+	    find = false;
+	    val = expression.getValue();
+	    op = expression.getOperator();
+
+	    if (val == null) {
+		throw new InvalidParamException("few-value", getPropertyName(), ac);
+	    }
+
+	    if(val.equals(normal)) {
+		normalNb++;
+		expression.next();
+		find = true;
+	    }
+
+	    if (!find && fontStyle == null) {
+		try {
+		    fontStyle = new CssFontStyleCSS1(ac, expression);
+		    find = true;
+		} catch (InvalidParamException e) {
+		}
+	    }
+
+	    if (!find && fontVariant == null) {
+		try {
+		    fontVariant = new CssFontVariantCSS1(ac, expression);
+		    find = true;
+		} catch (InvalidParamException e) {
+		}
+	    }
+
+	    if (!find && fontWeight == null) {
+		try {
+		    fontWeight = new CssFontWeightCSS1(ac, expression);
+		    find = true;
+		} catch (InvalidParamException e) {
+		    // we have now (or not)
+		    // [ 'font-style' || 'font-variant' || 'font-weight' ]?
+		    //break;
+		}
+	    }
+
+	    if (find && op != SPACE) {
+		throw new InvalidParamException("operator",
+						((new Character(op)).toString()), ac);
+	    }
+	}
+
+	// "normal" values
+	CssExpression normalExpr = new CssExpression();
+	normalExpr.addValue(normal);
+
+	for(int i = 0; i < normalNb; i++) {
+	    if (fontStyle == null) {
+		fontStyle = new CssFontStyleCSS1(ac, normalExpr);
+		normalExpr.starts();
+	    }
+	    else if (fontVariant == null) {
+		fontVariant = new CssFontVariantCSS1(ac, normalExpr);
+		normalExpr.starts();
+	    }
+	    else if (fontWeight == null) {
+		fontWeight = new CssFontWeightCSS1(ac, normalExpr);
+		normalExpr.starts();
+	    }
+	}
+
+	val = expression.getValue();
+	op = expression.getOperator();
+
+	if (val == null) {
+	    throw new InvalidParamException("few-value", getPropertyName(), ac);
+	}
+
+	fontSize = new CssFontSizeCSS1(ac, expression);
+
+	if (op == SLASH) {
+	    op = expression.getOperator();
+	    lineHeight = new CssLineHeightCSS1(ac, expression);
+	}
+
+	if (op == SPACE && expression.getValue() != null) {
+	    fontFamily = new CssFontFamilyCSS1(ac, expression, true);
+	} else {
+	    expression.starts();
+	    throw new InvalidParamException("few-value", expression.toString(), ac);
+	}
+	setByUser();
+    }
+
+    public CssFontCSS1(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return null;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (value != null) {
+	    return value.toString();
+	} else {
+	    String ret = "";
+	    if (fontStyle != null) {
+		ret += " " + fontStyle;
+	    }
+	    if (fontVariant != null) {
+		ret += " " + fontVariant;
+	    }
+	    if (fontWeight != null) {
+		ret += " " + fontWeight;
+	    }
+	    if(fontSize != null) {
+		ret += " " + fontSize;
+	    }
+	    if (lineHeight != null) {
+		ret += "/" + lineHeight;
+	    }
+	    if (fontFamily.size() != 0) {
+		ret += " " + fontFamily;
+	    }
+	    return ret.substring(1);
+	}
+    }
+
+    /**
+     * Set this property to be important.
+     * Overrides this method for a macro
+     */
+    public void setImportant() {
+	super.setImportant();
+	if (value == null) {
+	    if(fontStyle != null)
+		fontStyle.important = true;
+	    if(fontVariant != null)
+		fontVariant.important = true;
+	    if(fontWeight != null)
+		fontWeight.important = true;
+	    if(fontSize != null)
+		fontSize.important = true;
+	    if(lineHeight != null)
+		lineHeight.important = true;
+	    if(fontFamily != null)
+		fontFamily.important = true;
+	}
+    }
+
+    /**
+     * Returns true if this property is important.
+     * Overrides this method for a macro
+     */
+    public boolean getImportant() {
+	if (value != null) {
+	    return super.getImportant();
+	} else {
+	    return ((fontStyle == null || fontStyle.important) &&
+		    (fontVariant == null || fontVariant.important) &&
+		    (fontWeight == null || fontWeight.important) &&
+		    (fontSize == null || fontSize.important) &&
+		    (lineHeight == null || lineHeight.important) &&
+		    (fontFamily == null || fontFamily.important));
+	}
+    }
+
+    /**
+     * Print this property.
+     *
+     * @param printer The printer
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	if (value != null) {
+	    printer.print(this);
+	} else if ((fontStyle != null && fontVariant != null &&
+	     fontWeight != null && fontSize !=null &&
+	     lineHeight != null && fontFamily != null) &&
+	    (getImportant() ||
+	     (!fontStyle.important &&
+	      !fontVariant.important &&
+	      !fontWeight.important &&
+	      !fontSize.important &&
+	      !lineHeight.important &&
+	      !fontFamily.important))) {
+	    printer.print(this);
+	} else {
+	    if (fontStyle != null) {
+		fontStyle.print(printer);
+	    }
+	    if (fontVariant != null) {
+		fontVariant.print(printer);
+	    }
+	    if (fontWeight != null) {
+		fontWeight.print(printer);
+	    }
+	    if (fontSize != null) {
+		fontSize.print(printer);
+	    }
+	    if (lineHeight != null) {
+		lineHeight.print(printer);
+	    }
+	    if ((fontFamily != null) &&
+		((fontFamily.isSoftlyInherited()) || (fontFamily.size() != 0))) {
+		fontFamily.print(printer);
+	    }
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (value != null) {
+	    ((Css1Style) style).cssFontCSS1.value = value;
+	} else {
+	    if(fontStyle != null)
+		fontStyle.addToStyle(ac, style);
+	    if(fontVariant != null)
+		fontVariant.addToStyle(ac, style);
+	    if(fontSize != null)
+		fontSize.addToStyle(ac, style);
+	    if(fontWeight != null)
+		fontWeight.addToStyle(ac, style);
+	    if(lineHeight != null)
+		lineHeight.addToStyle(ac, style);
+	    if(fontFamily != null)
+		fontFamily.addToStyle(ac, style);
+	}
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	super.setInfo(line, source);
+	if (value == null) {
+	    if(fontStyle != null)
+		fontStyle.setInfo(line, source);
+	    if(fontVariant != null)
+		fontVariant.setInfo(line, source);
+	    if(fontWeight != null)
+		fontWeight.setInfo(line, source);
+	    if(fontSize != null)
+		fontSize.setInfo(line, source);
+	    if(lineHeight != null)
+		lineHeight.setInfo(line, source);
+	    if(fontFamily != null)
+		fontFamily.setInfo(line, source);
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return false;
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors selector) {
+	super.setSelectors(selector);
+	if (fontStyle != null) {
+	    fontStyle.setSelectors(selector);
+	}
+	if (fontVariant != null) {
+	    fontVariant.setSelectors(selector);
+	}
+	if (fontWeight != null) {
+	    fontWeight.setSelectors(selector);
+	}
+	if (fontSize != null) {
+	    fontSize.setSelectors(selector);
+	}
+	if (lineHeight != null) {
+	    lineHeight.setSelectors(selector);
+	}
+	if (fontFamily != null) {
+	    fontFamily.setSelectors(selector);
+	}
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getFontCSS1();
+	} else {
+	    return ((Css1Style) style).cssFontCSS1;
+	}
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "font";
+    }
+
+}
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssFontCSS2.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,488 @@
+//
+// $Id: CssFontCSS2.java,v 1.4 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+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.CssLength;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *      &nbsp;&nbsp; 'font'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> [ &lt;font-style&gt; || &lt;font-variant&gt; ||
+ *   &lt;font-weight&gt; ]? &lt;font-size&gt; [ / &lt;line-height&gt; ]?
+ *   &lt;font-family&gt;<BR>
+ *   <EM>Initial:</EM> not defined for shorthand properties<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> allowed on &lt;font-size&gt; and
+ *   &lt;line-height&gt;<BR>
+ *   <P>
+ *   The 'font' property is a shorthand property for setting
+ *   'font-style',
+ *   'font-variant',
+ *   'font-weight',
+ *   'font-size',
+ *   'line-height' and
+ *   'font-family' at the same place in the style sheet.
+ *   The syntax of this property is based on a traditional typographical
+ *   shorthand notation to set multiple properties related to fonts.
+ *   <P> For a definition of allowed and initial values, see the previously
+ *   defined properties. Properties for which no values are given are set to
+ *   their initial value.
+ *   <PRE>
+ *   P { font: 12pt/14pt sans-serif }
+ *   P { font: 80% sans-serif }
+ *   P { font: x-large/110% "new century schoolbook", serif }
+ *   P { font: bold italic large Palatino, serif }
+ *   P { font: normal small-caps 120%/120% fantasy }
+ *   </PRE>
+ *   <P> In the second rule, the font size percentage value ('80%') refers to
+ *   the font size of the parent element. In the third rule, the line height
+ *   percentage refers to the font size of the element itself.
+ *   <P> In the first three rules above, the 'font-style', 'font-variant' and
+ *   'font-weight' are not explicitly mentioned, which means they are all three
+ *   set to their initial value ('normal'). The fourth rule sets the
+ *   'font-weight' to 'bold', the 'font-style' to 'italic' and implicitly sets
+ *   'font-variant' to 'normal'.
+ *   <P> The fifth rule sets the 'font-variant' ('small-caps'), the 'font-size'
+ *   (120% of the parent's font), the 'line-height' (120% times the font size)
+ *   and the 'font-family' ('fantasy'). It follows that the keyword 'normal'
+ *   applies to the two remaining properties: 'font-style' and 'font-weight'.
+ *
+ * @see CssFontStyle
+ * @see CssFontVariant
+ * @see CssFontWeight
+ * @see CssFontSize
+ * @see CssLineHeight
+ * @see CssFontFamily
+ * @see CssPercentage
+ * @see CssLength
+ * @version $Revision: 1.4 $
+ */
+public class CssFontCSS2 extends CssProperty
+    implements CssOperator, CssFontConstant {
+
+    CssValue value;
+
+    CssFontStyleCSS2   fontStyle;
+    CssFontVariantCSS2 fontVariant;
+    CssFontWeightCSS2  fontWeight;
+
+    CssFontSizeCSS2    fontSize;
+    CssLineHeightCSS2  lineHeight;
+    CssFontFamilyCSS2  fontFamily;
+
+    // internal hack for strings comparaison
+    private static int[] hash_values;
+
+    static CssIdent normal = new CssIdent("normal");
+
+    /**
+     * Create a new CssFont
+     */
+    public CssFontCSS2() {
+    }
+
+    /**
+     * Creates a new CssFont
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssFontCSS2(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+
+	CssValue val = expression.getValue();
+	char op = SPACE;
+	boolean find = true;
+	int max_values = 3;
+
+	int normalNb = 0;
+
+	if (val instanceof CssIdent) {
+	    CssIdent ident = checkIdent((CssIdent) val);
+	    if (ident != null) {
+		if(expression.getCount() > 1) {
+		    throw new InvalidParamException("unrecognize", ac);
+		}
+		value = ident;
+		expression.next();
+		return;
+	    } // else continue;
+	}
+
+	while (find && max_values-- > 0) {
+	    find = false;
+	    val = expression.getValue();
+	    op = expression.getOperator();
+
+	    if (val == null) {
+		throw new InvalidParamException("few-value", getPropertyName(), ac);
+	    }
+
+	    if(val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+
+	    if(val.equals(normal)) {
+		normalNb++;
+		expression.next();
+		find = true;
+	    }
+
+	    if (!find && fontStyle == null) {
+		try {
+		    fontStyle = new CssFontStyleCSS2(ac, expression);
+		    find = true;
+		} catch (InvalidParamException e) {
+		}
+	    }
+
+	    if (!find && fontVariant == null) {
+		try {
+		    fontVariant = new CssFontVariantCSS2(ac, expression);
+		    find = true;
+		} catch (InvalidParamException e) {
+		}
+	    }
+
+	    if (!find && fontWeight == null) {
+		try {
+		    fontWeight = new CssFontWeightCSS2(ac, expression);
+		    find = true;
+		} catch (InvalidParamException e) {
+		    // we have now (or not)
+		    // [ 'font-style' || 'font-variant' || 'font-weight' ]?
+		    //break;
+		}
+	    }
+
+	    if (find && op != SPACE) {
+		throw new InvalidParamException("operator",
+						((new Character(op)).toString()), ac);
+	    }
+	}
+
+	// "normal" values
+	CssExpression normalExpr = new CssExpression();
+	normalExpr.addValue(normal);
+
+	for(int i = 0; i < normalNb; i++) {
+	    if (fontStyle == null) {
+		fontStyle = new CssFontStyleCSS2(ac, normalExpr);
+		normalExpr.starts();
+	    }
+	    else if (fontVariant == null) {
+		fontVariant = new CssFontVariantCSS2(ac, normalExpr);
+		normalExpr.starts();
+	    }
+	    else if (fontWeight == null) {
+		fontWeight = new CssFontWeightCSS2(ac, normalExpr);
+		normalExpr.starts();
+	    }
+	}
+
+	val = expression.getValue();
+	op = expression.getOperator();
+
+	if (val == null) {
+	    throw new InvalidParamException("few-value", getPropertyName(), ac);
+	}
+
+	if(val.equals(inherit)) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	fontSize = new CssFontSizeCSS2(ac, expression);
+
+	if (op == SLASH) {
+	    op = expression.getOperator();
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    lineHeight = new CssLineHeightCSS2(ac, expression);
+	}
+
+	if(expression.getValue().equals(inherit)) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	if (op == SPACE && expression.getValue() != null) {
+	    fontFamily = new CssFontFamilyCSS2(ac, expression, true);
+	} else {
+	    expression.starts();
+	    throw new InvalidParamException("few-value", expression.toString(), ac);
+	}
+	setByUser();
+    }
+
+    public CssFontCSS2(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return null;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (value != null) {
+	    return value.toString();
+	} else {
+	    String ret = "";
+	    if (fontStyle != null) {
+		ret += " " + fontStyle;
+	    }
+	    if (fontVariant != null) {
+		ret += " " + fontVariant;
+	    }
+	    if (fontWeight != null) {
+		ret += " " + fontWeight;
+	    }
+	    if(fontSize != null) {
+		ret += " " + fontSize;
+	    }
+	    if (lineHeight != null) {
+		ret += "/" + lineHeight;
+	    }
+	    if (fontFamily.size() != 0) {
+		ret += " " + fontFamily;
+	    }
+	    return ret.substring(1);
+	}
+    }
+
+    /**
+     * Set this property to be important.
+     * Overrides this method for a macro
+     */
+    public void setImportant() {
+	super.setImportant();
+	if (value == null) {
+	    if(fontStyle != null)
+		fontStyle.important = true;
+	    if(fontVariant != null)
+		fontVariant.important = true;
+	    if(fontWeight != null)
+		fontWeight.important = true;
+	    if(fontSize != null)
+		fontSize.important = true;
+	    if(lineHeight != null)
+		lineHeight.important = true;
+	    if(fontFamily != null)
+		fontFamily.important = true;
+	}
+    }
+
+    /**
+     * Returns true if this property is important.
+     * Overrides this method for a macro
+     */
+    public boolean getImportant() {
+	if (value != null) {
+	    return super.getImportant();
+	} else {
+	    return ((fontStyle == null || fontStyle.important) &&
+		    (fontVariant == null || fontVariant.important) &&
+		    (fontWeight == null || fontWeight.important) &&
+		    (fontSize == null || fontSize.important) &&
+		    (lineHeight == null || lineHeight.important) &&
+		    (fontFamily == null || fontFamily.important));
+	}
+    }
+
+    /**
+     * Print this property.
+     *
+     * @param printer The printer
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	if (value != null) {
+	    printer.print(this);
+	} else if ((fontStyle != null && fontVariant != null &&
+	     fontWeight != null && fontSize !=null &&
+	     lineHeight != null && fontFamily != null) &&
+	    (getImportant() ||
+	     (!fontStyle.important &&
+	      !fontVariant.important &&
+	      !fontWeight.important &&
+	      !fontSize.important &&
+	      !lineHeight.important &&
+	      !fontFamily.important))) {
+	    printer.print(this);
+	} else {
+	    if (fontStyle != null) {
+		fontStyle.print(printer);
+	    }
+	    if (fontVariant != null) {
+		fontVariant.print(printer);
+	    }
+	    if (fontWeight != null) {
+		fontWeight.print(printer);
+	    }
+	    if (fontSize != null) {
+		fontSize.print(printer);
+	    }
+	    if (lineHeight != null) {
+		lineHeight.print(printer);
+	    }
+	    if ((fontFamily != null) &&
+		((fontFamily.isSoftlyInherited()) || (fontFamily.size() != 0))) {
+		fontFamily.print(printer);
+	    }
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (value != null) {
+	    ((Css1Style) style).cssFontCSS2.value = value;
+	} else {
+	    if(fontStyle != null)
+		fontStyle.addToStyle(ac, style);
+	    if(fontVariant != null)
+		fontVariant.addToStyle(ac, style);
+	    if(fontSize != null)
+		fontSize.addToStyle(ac, style);
+	    if(fontWeight != null)
+		fontWeight.addToStyle(ac, style);
+	    if(lineHeight != null)
+		lineHeight.addToStyle(ac, style);
+	    if(fontFamily != null)
+		fontFamily.addToStyle(ac, style);
+	}
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	super.setInfo(line, source);
+	if (value == null) {
+	    if(fontStyle != null)
+		fontStyle.setInfo(line, source);
+	    if(fontVariant != null)
+		fontVariant.setInfo(line, source);
+	    if(fontWeight != null)
+		fontWeight.setInfo(line, source);
+	    if(fontSize != null)
+		fontSize.setInfo(line, source);
+	    if(lineHeight != null)
+		lineHeight.setInfo(line, source);
+	    if(fontFamily != null)
+		fontFamily.setInfo(line, source);
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return false;
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors selector) {
+	super.setSelectors(selector);
+	if (fontStyle != null) {
+	    fontStyle.setSelectors(selector);
+	}
+	if (fontVariant != null) {
+	    fontVariant.setSelectors(selector);
+	}
+	if (fontWeight != null) {
+	    fontWeight.setSelectors(selector);
+	}
+	if (fontSize != null) {
+	    fontSize.setSelectors(selector);
+	}
+	if (lineHeight != null) {
+	    lineHeight.setSelectors(selector);
+	}
+	if (fontFamily != null) {
+	    fontFamily.setSelectors(selector);
+	}
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getFontCSS2();
+	} else {
+	    return ((Css1Style) style).cssFontCSS2;
+	}
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "font";
+    }
+
+    private CssIdent checkIdent(CssIdent ident) {
+	int hash = ident.hashCode();
+	for (int i = 0; i < CssFontConstantCSS2.FONT.length; i++) {
+	    if (hash_values[i] == hash) {
+		return ident;
+	    }
+	}
+
+	return null;
+    }
+
+    static {
+	hash_values = new int[CssFontConstantCSS2.FONT.length];
+	for (int i=0; i<CssFontConstantCSS2.FONT.length; i++)
+	    hash_values[i] = CssFontConstantCSS2.FONT[i].hashCode();
+    }
+}
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssFontConstant.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,56 @@
+//
+// $Id: CssFontConstant.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public interface CssFontConstant {
+
+  /**
+   * Array of font-style values
+   */
+  static String[] FONTSTYLE = { "normal", "italic", "oblique", "inherit" };
+
+  /**
+   * Array of font-variant values
+   */
+  static String[] FONTVARIANT = { "normal", "small-caps", "inherit" };
+
+  /**
+   * Array of font-size values
+   */
+  static String[] FONTSIZE = {
+    "xx-small", "x-small", "small", "medium", "large", "x-large", "xx-large",
+    "larger", "smaller", "inherit"
+  }; // relative-size
+
+  /**
+   * Array of font-weight values
+   */
+  static String[] FONTWEIGHT = { "normal", "bold", "bolder",
+				 "lighter", "inherit" };
+
+  /**
+   * Array of font-stretch values
+   */
+  static String[] FONTSTRETCH = { "normal", "wider", "narrower",
+				  "ultra-condensed", "extra-condensed",
+				  "condensed", "semi-condensed",
+				  "semi-expanded", "expanded", "extra-expanded",
+				  "ultra-expanded", "inherit" };
+
+  /**
+   * Array of font values
+   */
+  static String[] FONT = { "icon", "window", "status-bar", "document",
+      "workspace", "desktop", "tooltip", "message-box", "dialog",
+      "small-caption", "caption", "button", "default-button", "hyperlink",
+      "menu", "pull-down-menu", "pop-up-menu", "list-menu", "field", "inherit"
+  };
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssFontConstantCSS1.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,49 @@
+//
+// $Id: CssFontConstantCSS1.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public interface CssFontConstantCSS1 {
+
+  /**
+   * Array of font-style values
+   */
+  static String[] FONTSTYLE = { "normal", "italic", "oblique", "inherit" };
+
+  /**
+   * Array of font-variant values
+   */
+  static String[] FONTVARIANT = { "normal", "small-caps", "inherit" };
+
+  /**
+   * Array of font-size values
+   */
+  static String[] FONTSIZE = {
+    "xx-small", "x-small", "small", "medium", "large", "x-large", "xx-large",
+    "larger", "smaller", "inherit"
+  }; // relative-size
+
+  /**
+   * Array of font-weight values
+   */
+  static String[] FONTWEIGHT = { "normal", "bold", "bolder",
+				 "lighter", "inherit" };
+
+  /**
+   * Array of font-stretch values
+   */
+  static String[] FONTSTRETCH = { "normal", "wider", "narrower",
+				  "ultra-condensed", "extra-condensed",
+				  "condensed", "semi-condensed",
+				  "semi-expanded", "expanded", "extra-expanded",
+				  "ultra-expanded", "inherit" };
+
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssFontConstantCSS2.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,54 @@
+//
+// $Id: CssFontConstantCSS2.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public interface CssFontConstantCSS2 {
+
+  /**
+   * Array of font-style values
+   */
+  static String[] FONTSTYLE = { "normal", "italic", "oblique", "inherit" };
+
+  /**
+   * Array of font-variant values
+   */
+  static String[] FONTVARIANT = { "normal", "small-caps", "inherit" };
+
+  /**
+   * Array of font-size values
+   */
+  static String[] FONTSIZE = {
+    "xx-small", "x-small", "small", "medium", "large", "x-large", "xx-large",
+    "larger", "smaller", "inherit"
+  }; // relative-size
+
+  /**
+   * Array of font-weight values
+   */
+  static String[] FONTWEIGHT = { "normal", "bold", "bolder",
+				 "lighter", "inherit" };
+
+  /**
+   * Array of font-stretch values
+   */
+  static String[] FONTSTRETCH = { "normal", "wider", "narrower",
+				  "ultra-condensed", "extra-condensed",
+				  "condensed", "semi-condensed",
+				  "semi-expanded", "expanded", "extra-expanded",
+				  "ultra-expanded", "inherit" };
+
+  /**
+   * Array of font values
+   */
+  static String[] FONT = { "caption", "icon", "menu",
+			   "message-box", "small-caption",
+			   "status-bar", "inherit" };
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssFontFamily.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,371 @@
+//
+// $Id: CssFontFamily.java,v 1.4 2006-12-13 07:09:09 ot 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 org.w3c.css.properties.css1;
+
+import java.util.Enumeration;
+import java.util.Vector;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.util.Util;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssIdent;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssString;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'font-family'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> [[&lt;family-name&gt; | &lt;generic-family&gt;],]*
+ *   [&lt;family-name&gt; | &lt;generic-family&gt;]<BR>
+ *   <EM>Initial:</EM> UA specific<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   The value is a prioritized list of font family names and/or generic family
+ *   names. Unlike most other CSS1 properties, values are separated by a comma
+ *   to indicate that they are alternatives:
+ *   <PRE>
+ *   BODY { font-family: gill, helvetica, sans-serif }
+ * </PRE>
+ *   <P>
+ *   There are two types of list values:
+ *   <DL>
+ *     <DT>
+ *       <STRONG>&lt;family-name&gt;</STRONG>
+ *     <DD> The name of a font family of choice. In the last example, "gill" and
+ *     "helvetica" are font families.
+ *     <DT>
+ *       <STRONG>&lt;generic-family&gt;</STRONG>
+ *     <DD> In the example above, the last value is a generic family name. The
+ *     following generic families are defined:
+ *       <UL>
+ * 	<LI>
+ * 	  'serif' (e.g. Times)
+ * 	<LI>
+ * 	  'sans-serif' (e.g. Helvetica)
+ * 	<LI>
+ * 	  'cursive' (e.g. Zapf-Chancery)
+ * 	<LI>
+ * 	  'fantasy' (e.g. Western)
+ * 	<LI>
+ * 	  'monospace' (e.g. Courier)
+ *       </UL>
+ *       <P> Style sheet designers are encouraged to offer a generic font family
+ *       as a last alternative.
+ *   </DL>
+ *   <P>
+ *   Font names containing whitespace should be quoted:
+ *   <PRE>
+ *   BODY { font-family: "new century schoolbook", serif }
+ *
+ *   &lt;BODY STYLE="font-family: 'My own font', fantasy"&gt;
+ *  </PRE>
+ *   <P>
+ *   If quoting is omitted, any whitespace characters before and after the font
+ *   name are ignored and any sequence of whitespace characters inside the font
+ *   name is converted to a single space.
+ *
+ * @see CssFont
+ * @version $Revision: 1.4 $
+ */
+public class CssFontFamily extends CssProperty implements CssOperator {
+
+    Vector family_name = new Vector();
+
+    boolean inheritedValue;
+
+	CssIdent none = new CssIdent("none");
+	CssValue fontfamily = null;
+
+    static String[] genericFamily = { "serif", "sans-serif", "cursive",
+				      "fantasy", "monospace" };
+
+    static int[] genericFamilyHash;
+
+    boolean withSpace = false;
+
+    /**
+     * Create a new CssFontFamily
+     */
+    public CssFontFamily() {
+    }
+
+    /**
+     * Create a new CssFontFamily
+     *
+     * @param expression the font name
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssFontFamily(ApplContext ac, CssExpression expression,
+	    boolean check)
+	    throws InvalidParamException {
+
+	boolean manyValues = expression.getCount() > 1;
+
+	boolean family = true;
+	CssValue val = expression.getValue();
+	char op;
+
+	setByUser();
+	//@@ and if name is already in the vector ?
+
+
+	if (val.equals(inherit)) {
+	    if(expression.getCount() > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    inheritedValue = true;
+	    expression.next();
+	    return;
+	} else if (val.equals(none)) {
+	    if(expression.getCount() > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    fontfamily = none;
+	    expression.next();
+	    return;
+	}
+
+	while (family) {
+	    val = expression.getValue();
+	    op = expression.getOperator();
+
+	    if(manyValues && val != null && val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+
+	    if ((op != COMMA) && (op != SPACE)) {
+		throw new InvalidParamException("operator",
+			((new Character(op)).toString()),
+			ac);
+	    }
+
+	    if(val != null && val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+
+	    if (val instanceof CssString) {
+		String familyName = null;
+		if (op == COMMA) { // "helvetica", "roman"
+		    familyName = trimToOneSpace(val.toString());
+		    expression.next();
+		} else { // "helvetica" CssValue
+		    familyName = trimToOneSpace(val.toString());
+		    family = false;
+		    expression.next();
+		}
+		if (familyName.length() > 2) {
+		    String tmp = familyName.substring(1, familyName.length()-1);
+		    for (int i = 0; i < genericFamily.length; i++) {
+			if (genericFamily[i].equals(tmp)) {
+			    throw new InvalidParamException("generic-family.quote",
+				    genericFamily[i],
+				    getPropertyName(),
+				    ac);
+			}
+		    }
+		}
+		family_name.addElement(familyName);
+	    } else if (val instanceof CssIdent) {
+		if (op == COMMA) {
+		    family_name.addElement(convertString(val.toString()));
+		    expression.next();
+		} else {
+		    CssValue next = expression.getNextValue();
+
+		    if (next != null) {
+			CssIdent New = new CssIdent(val.get() + " "
+						    + next.get());
+			withSpace = true;
+			expression.remove();
+			op = expression.getOperator();
+			expression.remove();
+			expression.insert(New);
+			expression.setCurrentOperator(op);
+		    } else {
+			family_name.addElement(convertString(val.toString()));
+			expression.next();
+			family = false;
+		    }
+		}
+	    } else
+		throw new InvalidParamException("value", expression.getValue(),
+						getPropertyName(), ac);
+	}
+	if(check && !expression.end()) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+	// This looks like obsolete code: (no context, no level, and duplicate 
+	// of a warning handled already in CSS1Style.java
+	// olivier 2006-12-13
+	//if (!containsGenericFamily()) {
+	//    ac.getFrame().addWarning("no-generic-family", "font-family");
+	//}
+    }
+
+    public CssFontFamily(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns all fonts name
+     */
+    public Enumeration elements() {
+	return family_name.elements();
+    }
+
+    /**
+     * Returns the size
+     */
+    public int size() {
+	return family_name.size();
+    }
+
+    /**
+     * Returns the font (null if no font)
+     */
+    public Object get() {
+
+		if (fontfamily != null) {
+			return fontfamily;
+		} else if (family_name.size() == 0) {
+		    return null;
+		}
+
+		return family_name.firstElement();
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return inheritedValue;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (inheritedValue) {
+	    return inherit.toString();
+	} else {
+	    String r = "";
+	    for (Enumeration e = elements(); e.hasMoreElements();)
+		//		r += ", " + convertString(e.nextElement().toString());
+		r += ", " + e.nextElement().toString();
+	    if (r.length() < 3) {
+		return null;
+	    }
+	    return r.substring(2);
+	}
+    }
+
+    String convertString (String value) {
+	if (value.indexOf('"') != -1) {
+	    return '\'' + value + '\'';
+	} else if (value.indexOf('\'') != -1) {
+	    return '"' + value + '"';
+	} else {
+	    return value;
+	}
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "font-family";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssFont cssFont = ((Css1Style) style).cssFont;
+
+	if (cssFont.fontFamily != null)
+	    style.addRedefinitionWarning(ac, this);
+	cssFont.fontFamily = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getFontFamily();
+	} else {
+	    return ((Css1Style) style).cssFont.fontFamily;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return false; //@@ FIXME
+    }
+
+    private static String trimToOneSpace(String name) {
+	int count = name.length();
+	char[] dst = new char[count];
+	char[] src = new char[count];
+	int index = -1;
+
+	name.getChars(0, count, src, 0);
+	for(int i=0; i < count; i++)
+	    if ( i == 0 || ! Util.isWhiteSpace(src[i]) ||
+		 ( Util.isWhiteSpace(src[i]) &&
+		   !Util.isWhiteSpace(dst[index]) ) )
+		dst[++index] = src[i];
+
+	return new String(dst, 0, index+1);
+    }
+
+    /**
+     * Returns true if this property contains a generic family name
+     */
+    public boolean containsGenericFamily() {
+	if (family_name.size() == 0) {
+	    return true;
+	} else {
+	    for (Enumeration e = family_name.elements();
+		 e.hasMoreElements();) {
+		int hash = ((String) e.nextElement()).toLowerCase().hashCode();
+		for (int i = 0; i < genericFamilyHash.length; i++) {
+		    if (hash == genericFamilyHash[i])
+			return true;
+		}
+	    }
+	    return false;
+	}
+    }
+
+
+    static {
+	genericFamilyHash = new int[genericFamily.length];
+	for (int i = 0; i < genericFamily.length; i++) {
+	    genericFamilyHash[i] = genericFamily[i].hashCode();
+	}
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssFontFamilyCSS1.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,343 @@
+//
+// $Id: CssFontFamilyCSS1.java,v 1.4 2006-12-13 07:09:09 ot 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 org.w3c.css.properties.css1;
+
+import java.util.Enumeration;
+import java.util.Vector;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.util.Util;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssIdent;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssString;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'font-family'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> [[&lt;family-name&gt; | &lt;generic-family&gt;],]*
+ *   [&lt;family-name&gt; | &lt;generic-family&gt;]<BR>
+ *   <EM>Initial:</EM> UA specific<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   The value is a prioritized list of font family names and/or generic family
+ *   names. Unlike most other CSS1 properties, values are separated by a comma
+ *   to indicate that they are alternatives:
+ *   <PRE>
+ *   BODY { font-family: gill, helvetica, sans-serif }
+ * </PRE>
+ *   <P>
+ *   There are two types of list values:
+ *   <DL>
+ *     <DT>
+ *       <STRONG>&lt;family-name&gt;</STRONG>
+ *     <DD> The name of a font family of choice. In the last example, "gill" and
+ *     "helvetica" are font families.
+ *     <DT>
+ *       <STRONG>&lt;generic-family&gt;</STRONG>
+ *     <DD> In the example above, the last value is a generic family name. The
+ *     following generic families are defined:
+ *       <UL>
+ * 	<LI>
+ * 	  'serif' (e.g. Times)
+ * 	<LI>
+ * 	  'sans-serif' (e.g. Helvetica)
+ * 	<LI>
+ * 	  'cursive' (e.g. Zapf-Chancery)
+ * 	<LI>
+ * 	  'fantasy' (e.g. Western)
+ * 	<LI>
+ * 	  'monospace' (e.g. Courier)
+ *       </UL>
+ *       <P> Style sheet designers are encouraged to offer a generic font family
+ *       as a last alternative.
+ *   </DL>
+ *   <P>
+ *   Font names containing whitespace should be quoted:
+ *   <PRE>
+ *   BODY { font-family: "new century schoolbook", serif }
+ *
+ *   &lt;BODY STYLE="font-family: 'My own font', fantasy"&gt;
+ *  </PRE>
+ *   <P>
+ *   If quoting is omitted, any whitespace characters before and after the font
+ *   name are ignored and any sequence of whitespace characters inside the font
+ *   name is converted to a single space.
+ *
+ * @see CssFont
+ * @version $Revision: 1.4 $
+ */
+public class CssFontFamilyCSS1 extends CssProperty implements CssOperator {
+
+    Vector family_name = new Vector();
+
+    boolean inheritedValue;
+
+    static String[] genericFamily = { "serif", "sans-serif", "cursive",
+				      "fantasy", "monospace" };
+
+    static int[] genericFamilyHash;
+
+    boolean withSpace = false;
+
+    /**
+     * Create a new CssFontFamilyCSS1
+     */
+    public CssFontFamilyCSS1() {
+    }
+
+    /**
+     * Create a new CssFontFamilyCSS1
+     *
+     * @param expression the font name
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssFontFamilyCSS1(ApplContext ac, CssExpression expression,
+	    boolean check)
+	    throws InvalidParamException {
+
+	boolean family = true;
+	CssValue val = expression.getValue();
+	char op;
+
+	setByUser();
+	//@@ and if name is already in the vector ?
+
+	// should pass here only if it's not 'inherit'
+	while (family) {
+	    val = expression.getValue();
+	    op = expression.getOperator();
+
+	    if(val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+
+	    if ((op != COMMA) && (op != SPACE)) {
+		throw new InvalidParamException("operator",
+						((new Character(op)).toString()),
+						ac);
+	    }
+
+	    if (val instanceof CssString) {
+		String familyName = null;
+		if (op == COMMA) { // "helvetica", "roman"
+		    familyName = trimToOneSpace(val.toString());
+		    expression.next();
+		} else { // "helvetica" CssValue
+		    familyName = trimToOneSpace(val.toString());
+		    family = false;
+		    expression.next();
+		}
+		if (familyName.length() > 2) {
+		    String tmp = familyName.substring(1, familyName.length()-1);
+		    for (int i = 0; i < genericFamily.length; i++) {
+			if (genericFamily[i].equals(tmp)) {
+			    throw new InvalidParamException("generic-family.quote",
+							    genericFamily[i],
+							    getPropertyName(),
+							    ac);
+			}
+		    }
+		}
+		family_name.addElement(familyName);
+	    } else if (val instanceof CssIdent) {
+		if (op == COMMA) {
+		    family_name.addElement(convertString(val.toString()));
+		    expression.next();
+		} else {
+		    CssValue next = expression.getNextValue();
+
+		    if (next != null) {
+			CssIdent New = new CssIdent(val.get() + " "
+						    + next.get());
+			withSpace = true;
+			expression.remove();
+			op = expression.getOperator();
+			expression.remove();
+			expression.insert(New);
+			expression.setCurrentOperator(op);
+		    } else {
+			family_name.addElement(convertString(val.toString()));
+			expression.next();
+			family = false;
+		    }
+		}
+	    } else
+		throw new InvalidParamException("value", expression.getValue(),
+						getPropertyName(), ac);
+	}
+	if(check && !expression.end()) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+	// This looks like obsolete code: (no context, no level, and duplicate 
+	// of a warning handled already in CSS1Style.java
+	// olivier 2006-12-13
+	//if (!containsGenericFamily()) {
+	//    ac.getFrame().addWarning("no-generic-family", "font-family");
+	//}
+
+    }
+
+    public CssFontFamilyCSS1(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns all fonts name
+     */
+    public Enumeration elements() {
+	return family_name.elements();
+    }
+
+    /**
+     * Returns the size
+     */
+    public int size() {
+	return family_name.size();
+    }
+
+    /**
+     * Returns the font (null if no font)
+     */
+    public Object get() {
+	if (family_name.size() == 0) {
+	    return null;
+	}
+	return family_name.firstElement();
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return inheritedValue;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (inheritedValue) {
+	    return inherit.toString();
+	} else {
+	    String r = "";
+	    for (Enumeration e = elements(); e.hasMoreElements();)
+		//		r += ", " + convertString(e.nextElement().toString());
+		r += ", " + e.nextElement().toString();
+	    if (r.length() < 3) {
+		return null;
+	    }
+	    return r.substring(2);
+	}
+    }
+
+    String convertString (String value) {
+	if (value.indexOf('"') != -1) {
+	    return '\'' + value + '\'';
+	} else if (value.indexOf('\'') != -1) {
+	    return '"' + value + '"';
+	} else {
+	    return value;
+	}
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "font-family";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssFontCSS1 cssFont = ((Css1Style) style).cssFontCSS1;
+
+	if (cssFont.fontFamily != null)
+	    style.addRedefinitionWarning(ac, this);
+	cssFont.fontFamily = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getFontFamilyCSS1();
+	} else {
+	    return ((Css1Style) style).cssFontCSS1.fontFamily;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return false; //@@ FIXME
+    }
+
+    private static String trimToOneSpace(String name) {
+	int count = name.length();
+	char[] dst = new char[count];
+	char[] src = new char[count];
+	int index = -1;
+
+	name.getChars(0, count, src, 0);
+	for(int i=0; i < count; i++)
+	    if ( i == 0 || ! Util.isWhiteSpace(src[i]) ||
+		 ( Util.isWhiteSpace(src[i]) &&
+		   !Util.isWhiteSpace(dst[index]) ) )
+		dst[++index] = src[i];
+
+	return new String(dst, 0, index+1);
+    }
+
+    /**
+     * Returns true if this property contains a generic family name
+     */
+    public boolean containsGenericFamily() {
+	if (family_name.size() == 0) {
+	    return true;
+	} else {
+	    for (Enumeration e = family_name.elements();
+		 e.hasMoreElements();) {
+		int hash = ((String) e.nextElement()).toLowerCase().hashCode();
+		for (int i = 0; i < genericFamilyHash.length; i++) {
+		    if (hash == genericFamilyHash[i])
+			return true;
+		}
+	    }
+	    return false;
+	}
+    }
+
+
+    static {
+	genericFamilyHash = new int[genericFamily.length];
+	for (int i = 0; i < genericFamily.length; i++) {
+	    genericFamilyHash[i] = genericFamily[i].hashCode();
+	}
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssFontFamilyCSS2.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,349 @@
+//
+// $Id: CssFontFamilyCSS2.java,v 1.4 2006-12-13 07:09:09 ot 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 org.w3c.css.properties.css1;
+
+import java.util.Enumeration;
+import java.util.Vector;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.util.Util;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssIdent;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssString;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'font-family'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> [[&lt;family-name&gt; | &lt;generic-family&gt;],]*
+ *   [&lt;family-name&gt; | &lt;generic-family&gt;]<BR>
+ *   <EM>Initial:</EM> UA specific<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   The value is a prioritized list of font family names and/or generic family
+ *   names. Unlike most other CSS1 properties, values are separated by a comma
+ *   to indicate that they are alternatives:
+ *   <PRE>
+ *   BODY { font-family: gill, helvetica, sans-serif }
+ * </PRE>
+ *   <P>
+ *   There are two types of list values:
+ *   <DL>
+ *     <DT>
+ *       <STRONG>&lt;family-name&gt;</STRONG>
+ *     <DD> The name of a font family of choice. In the last example, "gill" and
+ *     "helvetica" are font families.
+ *     <DT>
+ *       <STRONG>&lt;generic-family&gt;</STRONG>
+ *     <DD> In the example above, the last value is a generic family name. The
+ *     following generic families are defined:
+ *       <UL>
+ * 	<LI>
+ * 	  'serif' (e.g. Times)
+ * 	<LI>
+ * 	  'sans-serif' (e.g. Helvetica)
+ * 	<LI>
+ * 	  'cursive' (e.g. Zapf-Chancery)
+ * 	<LI>
+ * 	  'fantasy' (e.g. Western)
+ * 	<LI>
+ * 	  'monospace' (e.g. Courier)
+ *       </UL>
+ *       <P> Style sheet designers are encouraged to offer a generic font family
+ *       as a last alternative.
+ *   </DL>
+ *   <P>
+ *   Font names containing whitespace should be quoted:
+ *   <PRE>
+ *   BODY { font-family: "new century schoolbook", serif }
+ *
+ *   &lt;BODY STYLE="font-family: 'My own font', fantasy"&gt;
+ *  </PRE>
+ *   <P>
+ *   If quoting is omitted, any whitespace characters before and after the font
+ *   name are ignored and any sequence of whitespace characters inside the font
+ *   name is converted to a single space.
+ *
+ * @see CssFont
+ * @version $Revision: 1.4 $
+ */
+public class CssFontFamilyCSS2 extends CssProperty implements CssOperator {
+
+    Vector family_name = new Vector();
+
+    boolean inheritedValue;
+
+    static String[] genericFamily = { "serif", "sans-serif", "cursive",
+				      "fantasy", "monospace" };
+
+    static int[] genericFamilyHash;
+
+    boolean withSpace = false;
+
+    /**
+     * Create a new CssFontFamilyCSS2
+     */
+    public CssFontFamilyCSS2() {
+    }
+
+    /**
+     * Create a new CssFontFamilyCSS2
+     *
+     * @param expression the font name
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssFontFamilyCSS2(ApplContext ac, CssExpression expression,
+	    boolean check)
+	    throws InvalidParamException {
+	boolean family = true;
+	CssValue val = expression.getValue();
+	char op;
+
+	boolean manyValues = expression.getCount() > 1;
+
+	setByUser();
+	//@@ and if name is already in the vector ?
+
+	if (val.equals(inherit)) {
+	    if(expression.getCount() > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    inheritedValue = true;
+	    expression.next();
+	    return;
+	}
+
+	while (family) {
+	    val = expression.getValue();
+	    op = expression.getOperator();
+
+	    if(manyValues && val != null && val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+
+	    if ((op != COMMA) && (op != SPACE)) {
+		throw new InvalidParamException("operator",
+			((new Character(op)).toString()), ac);
+	    }
+
+	    if (val instanceof CssString) {
+		String familyName = null;
+		if (op == COMMA) { // "helvetica", "roman"
+		    familyName = trimToOneSpace(val.toString());
+		    expression.next();
+		} else { // "helvetica" CssValue
+		    familyName = trimToOneSpace(val.toString());
+		    family = false;
+		    expression.next();
+		}
+		if (familyName.length() > 2) {
+		    String tmp = familyName.substring(1, familyName.length()-1);
+		    for (int i = 0; i < genericFamily.length; i++) {
+			if (genericFamily[i].equals(tmp)) {
+			    throw new InvalidParamException(
+				    "generic-family.quote", genericFamily[i],
+				    getPropertyName(), ac);
+			}
+		    }
+		}
+		family_name.addElement(familyName);
+	    } else if (val instanceof CssIdent) {
+
+		if (op == COMMA) {
+		    family_name.addElement(convertString(val.toString()));
+		    expression.next();
+		} else {
+		    CssValue next = expression.getNextValue();
+		    if (next != null) {
+			CssIdent New = new CssIdent(val.get() + " " + next.get());
+			withSpace = true;
+			expression.remove();
+			op = expression.getOperator();
+			expression.remove();
+			expression.insert(New);
+			expression.setCurrentOperator(op);
+		    } else {
+			family_name.addElement(convertString(val.toString()));
+			expression.next();
+			family = false;
+		    }
+		}
+	    } else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+	}
+	if(check && !expression.end()) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+	// This looks like obsolete code: (no context, no level, and duplicate 
+	// of a warning handled already in CSS1Style.java
+	// olivier 2006-12-13
+	//if (!containsGenericFamily()) {
+	//    ac.getFrame().addWarning("no-generic-family", "font-family");
+	//}
+    }
+
+    public CssFontFamilyCSS2(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns all fonts name
+     */
+    public Enumeration elements() {
+	return family_name.elements();
+    }
+
+    /**
+     * Returns the size
+     */
+    public int size() {
+	return family_name.size();
+    }
+
+    /**
+     * Returns the font (null if no font)
+     */
+    public Object get() {
+	if (family_name.size() == 0) {
+	    return null;
+	}
+	return family_name.firstElement();
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return inheritedValue;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (inheritedValue) {
+	    return inherit.toString();
+	} else {
+	    String r = "";
+	    for (Enumeration e = elements(); e.hasMoreElements();)
+		//		r += ", " + convertString(e.nextElement().toString());
+		r += ", " + e.nextElement().toString();
+	    if (r.length() < 3) {
+		return null;
+	    }
+	    return r.substring(2);
+	}
+    }
+
+    String convertString (String value) {
+	if (value.indexOf('"') != -1) {
+	    return '\'' + value + '\'';
+	} else if (value.indexOf('\'') != -1) {
+	    return '"' + value + '"';
+	} else {
+	    return value;
+	}
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "font-family";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssFontCSS2 cssFont = ((Css1Style) style).cssFontCSS2;
+
+	if (cssFont.fontFamily != null)
+	    style.addRedefinitionWarning(ac, this);
+	cssFont.fontFamily = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getFontFamilyCSS2();
+	} else {
+	    return ((Css1Style) style).cssFontCSS2.fontFamily;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return false; //@@ FIXME
+    }
+
+    private static String trimToOneSpace(String name) {
+	int count = name.length();
+	char[] dst = new char[count];
+	char[] src = new char[count];
+	int index = -1;
+
+	name.getChars(0, count, src, 0);
+	for(int i=0; i < count; i++)
+	    if ( i == 0 || ! Util.isWhiteSpace(src[i]) ||
+		 ( Util.isWhiteSpace(src[i]) &&
+		   !Util.isWhiteSpace(dst[index]) ) )
+		dst[++index] = src[i];
+
+	return new String(dst, 0, index+1);
+    }
+
+    /**
+     * Returns true if this property contains a generic family name
+     */
+    public boolean containsGenericFamily() {
+	if (family_name.size() == 0) {
+	    return true;
+	} else {
+	    for (Enumeration e = family_name.elements();
+		 e.hasMoreElements();) {
+		int hash = ((String) e.nextElement()).toLowerCase().hashCode();
+		for (int i = 0; i < genericFamilyHash.length; i++) {
+		    if (hash == genericFamilyHash[i])
+			return true;
+		}
+	    }
+	    return false;
+	}
+    }
+
+
+    static {
+	genericFamilyHash = new int[genericFamily.length];
+	for (int i = 0; i < genericFamily.length; i++) {
+	    genericFamilyHash[i] = genericFamily[i].hashCode();
+	}
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssFontSize.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,234 @@
+//
+// $Id: CssFontSize.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'font-size'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;absolute-size&gt; | &lt;relative-size&gt; |
+ *   &lt;length&gt; | &lt;percentage&gt;<BR>
+ *   <EM>Initial:</EM> medium<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> relative to parent element's font size<BR>
+ *   <DL>
+ *     <DT>
+ *       <B>&lt;absolute-size&gt;</B>
+ *     <DD> An &lt;absolute-size&gt; keyword is an index to a table of font
+ *     sizes computed and kept by the UA. Possible values are: [ xx-small |
+ *     x-small | small | medium | large | x-large | xx-large ]. On a computer
+ *     screen a scaling factor of 1.5 is suggested between adjacent indexes; if
+ *     the 'medium' font is 10pt, the 'large' font could be 15pt. Different
+ *     media may need different scaling factors. Also, the UA should take the
+ *     quality and availability of fonts into account when computing the
+ *     table. The table may be different from one font family to another.
+ *     <DT>
+ *       <B>&lt;relative-size&gt;</B>
+ *     <DD> A &lt;relative-size&gt; keyword is interpreted relative to the table
+ *     of font sizes and the font size of the parent element. Possible values
+ *     are: [ larger | smaller ]. For example, if the parent element has a font
+ *     size of 'medium', a value of 'larger' will make the font size of the
+ *     current element be 'large'.  If the parent element's size is not close to
+ *     a table entry, the UA is free to interpolate between table entries or
+ *     round off to the closest one. The UA may have to extrapolate table values
+ *     if the numerical value goes beyond the keywords.
+ *   </DL>
+ *   <P> Length and percentage values should not take the font size table into
+ *   account when calculating the font size of the element.
+ *   <P> Negative values are not allowed.
+ *   <P> On all other properties, 'em' and 'ex' length values refer to the font
+ *   size of the current element. On the 'font-size' property, these length
+ *   units refer to the font size of the parent element.
+ *   <P>
+ *   Note that an application may reinterpret an explicit size, depending on the
+ *   context. E.g., inside a VR scene a font may get a different size because
+ *   of perspective distortion.
+ *   <P>
+ *   Examples:
+ *   <PRE>
+ *   P { font-size: 12pt; }
+ *   BLOCKQUOTE { font-size: larger }
+ *   EM { font-size: 150% }
+ *   EM { font-size: 1.5em }
+ *   </PRE>
+ *   <P>
+ *   If the suggested scaling factor of 1.5 is used, the last three declarations
+ *   are identical.
+ * @version $Revision: 1.3 $
+ */
+public class CssFontSize extends CssProperty implements CssFontConstant {
+
+    int value;
+    CssValue cssValue;
+
+    /**
+     * Create a new FontSize
+     */
+    public CssFontSize() {
+	value = 3; // default value is medium
+    }
+
+    /**
+     * Creates a new CssFontSize
+     *
+     * @param expression the expression of the size
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssFontSize(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	setByUser();
+	if (val instanceof CssIdent) {
+	    int hash = val.hashCode();
+	    for (int i=0; i<hash_values.length; i++) {
+		if (hash_values[i] == hash) {
+		    value = i;
+		    cssValue = null;
+		    expression.next();
+		    return;
+		}
+	    }
+	} else if (val instanceof CssPercentage) {
+	    float num = ((Float) val.get()).floatValue();
+	    if (num < 0) {
+		throw new InvalidParamException("negative-value",
+						val.toString(), ac);
+	    }
+	    this.cssValue = val;
+	    expression.next();
+	    return;
+	} else if (val instanceof CssNumber) {
+	    CssValue length = ((CssNumber) val).getLength();
+	    if (length != null) {
+		cssValue = length;
+		expression.next();
+		return;
+	    }
+	} else if (val instanceof CssLength) {
+	    float f = ((Float) val.get()).floatValue();
+	    if (f >= 0) {
+		cssValue = val;
+		expression.next();
+		return;
+	    } else {
+		throw new InvalidParamException("negative-value",
+						val.toString(), ac);
+	    }
+	}
+
+	throw new InvalidParamException("value",
+					val, getPropertyName(), ac);
+    }
+
+    public CssFontSize(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	if (cssValue != null)
+	    return cssValue;
+	else
+	    return FONTSIZE[value];
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == FONTSIZE.length - 1;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (cssValue != null)
+	    return cssValue.toString();
+	else
+	    return FONTSIZE[value];
+    }
+
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "font-size";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssFont cssFont = ((Css1Style) style).cssFont;
+	if (cssFont.fontSize != null)
+	    style.addRedefinitionWarning(ac, this);
+	cssFont.fontSize = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getFontSize();
+	} else {
+	    return ((Css1Style) style).cssFont.fontSize;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	if (cssValue == null)
+	    return (property instanceof CssFontSize &&
+		    ((CssFontSize) property).value == value);
+	else
+	    return (property instanceof CssFontSize &&
+		    ((CssFontSize) property).cssValue.equals(cssValue));
+    }
+
+    private static int[] hash_values;
+
+    static {
+	hash_values = new int[FONTSIZE.length];
+	for (int i=0; i<FONTSIZE.length; i++)
+	    hash_values[i] = FONTSIZE[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssFontSizeAdjust.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,143 @@
+//
+// $Id: CssFontSizeAdjust.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ *
+ * @see CssFont
+ * @version $Revision: 1.3 $
+ */
+public class CssFontSizeAdjust extends CssProperty implements CssFontConstant {
+
+    CssValue value;
+
+    private static CssIdent none = new CssIdent("none");
+
+    /**
+     * Create a new CssFontSize-Adjust
+     */
+    public CssFontSizeAdjust() {
+	value = none;
+    }
+
+    /**
+     * Creates a new CssFontSize-Adjust
+     *
+     * @param expression the font size-adjust
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssFontSizeAdjust(ApplContext ac, CssExpression expression,
+	    boolean check)
+	throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	setByUser();
+
+	if (val.equals(none)) {
+	    value = none;
+	} else if (val.equals(inherit)) {
+	    value = inherit;
+	} else if (val instanceof CssNumber) {
+	    value = val;
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+
+	expression.next();
+    }
+
+    public CssFontSizeAdjust(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "font-size-adjust";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssFontSizeAdjust != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssFontSizeAdjust = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getFontSizeAdjust();
+	} else {
+	    return ((Css1Style) style).cssFontSizeAdjust;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssFontSizeAdjust &&
+		((CssFontSizeAdjust) property).value.equals(value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == none;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssFontSizeAdjustCSS2.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,143 @@
+//
+// $Id: CssFontSizeAdjustCSS2.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ *
+ * @see CssFont
+ * @version $Revision: 1.3 $
+ */
+public class CssFontSizeAdjustCSS2 extends CssProperty implements CssFontConstantCSS2 {
+
+    CssValue value;
+
+    private static CssIdent none = new CssIdent("none");
+
+    /**
+     * Create a new CssFontSize-AdjustCSS2
+     */
+    public CssFontSizeAdjustCSS2() {
+	value = none;
+    }
+
+    /**
+     * Creates a new CssFontSize-AdjustCSS2
+     *
+     * @param expression the font size-adjust
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssFontSizeAdjustCSS2(ApplContext ac, CssExpression expression,
+	    boolean check)
+	throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	setByUser();
+
+	if (val.equals(none)) {
+	    value = none;
+	} else if (val.equals(inherit)) {
+	    value = inherit;
+	} else if (val instanceof CssNumber) {
+	    value = val;
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+
+	expression.next();
+    }
+
+    public CssFontSizeAdjustCSS2(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "font-size-adjust";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssFontSizeAdjustCSS2 != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssFontSizeAdjustCSS2 = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getFontSizeAdjustCSS2();
+	} else {
+	    return ((Css1Style) style).cssFontSizeAdjustCSS2;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssFontSizeAdjustCSS2 &&
+		((CssFontSizeAdjustCSS2) property).value.equals(value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == none;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssFontSizeCSS1.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,234 @@
+//
+// $Id: CssFontSizeCSS1.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'font-size'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;absolute-size&gt; | &lt;relative-size&gt; |
+ *   &lt;length&gt; | &lt;percentage&gt;<BR>
+ *   <EM>Initial:</EM> medium<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> relative to parent element's font size<BR>
+ *   <DL>
+ *     <DT>
+ *       <B>&lt;absolute-size&gt;</B>
+ *     <DD> An &lt;absolute-size&gt; keyword is an index to a table of font
+ *     sizes computed and kept by the UA. Possible values are: [ xx-small |
+ *     x-small | small | medium | large | x-large | xx-large ]. On a computer
+ *     screen a scaling factor of 1.5 is suggested between adjacent indexes; if
+ *     the 'medium' font is 10pt, the 'large' font could be 15pt. Different
+ *     media may need different scaling factors. Also, the UA should take the
+ *     quality and availability of fonts into account when computing the
+ *     table. The table may be different from one font family to another.
+ *     <DT>
+ *       <B>&lt;relative-size&gt;</B>
+ *     <DD> A &lt;relative-size&gt; keyword is interpreted relative to the table
+ *     of font sizes and the font size of the parent element. Possible values
+ *     are: [ larger | smaller ]. For example, if the parent element has a font
+ *     size of 'medium', a value of 'larger' will make the font size of the
+ *     current element be 'large'.  If the parent element's size is not close to
+ *     a table entry, the UA is free to interpolate between table entries or
+ *     round off to the closest one. The UA may have to extrapolate table values
+ *     if the numerical value goes beyond the keywords.
+ *   </DL>
+ *   <P> Length and percentage values should not take the font size table into
+ *   account when calculating the font size of the element.
+ *   <P> Negative values are not allowed.
+ *   <P> On all other properties, 'em' and 'ex' length values refer to the font
+ *   size of the current element. On the 'font-size' property, these length
+ *   units refer to the font size of the parent element.
+ *   <P>
+ *   Note that an application may reinterpret an explicit size, depending on the
+ *   context. E.g., inside a VR scene a font may get a different size because
+ *   of perspective distortion.
+ *   <P>
+ *   Examples:
+ *   <PRE>
+ *   P { font-size: 12pt; }
+ *   BLOCKQUOTE { font-size: larger }
+ *   EM { font-size: 150% }
+ *   EM { font-size: 1.5em }
+ *   </PRE>
+ *   <P>
+ *   If the suggested scaling factor of 1.5 is used, the last three declarations
+ *   are identical.
+ * @version $Revision: 1.3 $
+ */
+public class CssFontSizeCSS1 extends CssProperty implements CssFontConstantCSS1 {
+
+    int value;
+    CssValue cssValue;
+
+    /**
+     * Create a new FontSizeCSS1
+     */
+    public CssFontSizeCSS1() {
+	value = 3; // default value is medium
+    }
+
+    /**
+     * Creates a new CssFontSizeCSS1
+     *
+     * @param expression the expression of the size
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssFontSizeCSS1(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	setByUser();
+	if (val instanceof CssIdent) {
+	    int hash = val.hashCode();
+	    for (int i=0; i<hash_values.length; i++) {
+		if (hash_values[i] == hash) {
+		    value = i;
+		    cssValue = null;
+		    expression.next();
+		    return;
+		}
+	    }
+	} else if (val instanceof CssPercentage) {
+	    float num = ((Float) val.get()).floatValue();
+	    if (num < 0) {
+		throw new InvalidParamException("negative-value",
+						val.toString(), ac);
+	    }
+	    this.cssValue = val;
+	    expression.next();
+	    return;
+	} else if (val instanceof CssNumber) {
+	    CssValue length = ((CssNumber) val).getLength();
+	    if (length != null) {
+		cssValue = length;
+		expression.next();
+		return;
+	    }
+	} else if (val instanceof CssLength) {
+	    float f = ((Float) val.get()).floatValue();
+	    if (f >= 0) {
+		cssValue = val;
+		expression.next();
+		return;
+	    } else {
+		throw new InvalidParamException("negative-value",
+						val.toString(), ac);
+	    }
+	}
+
+	throw new InvalidParamException("value",
+					val, getPropertyName(), ac);
+    }
+
+    public CssFontSizeCSS1(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	if (cssValue != null)
+	    return cssValue;
+	else
+	    return FONTSIZE[value];
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == FONTSIZE.length - 1;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (cssValue != null)
+	    return cssValue.toString();
+	else
+	    return FONTSIZE[value];
+    }
+
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "font-size";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssFontCSS1 cssFont = ((Css1Style) style).cssFontCSS1;
+	if (cssFont.fontSize != null)
+	    style.addRedefinitionWarning(ac, this);
+	cssFont.fontSize = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getFontSizeCSS1();
+	} else {
+	    return ((Css1Style) style).cssFontCSS1.fontSize;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	if (cssValue == null)
+	    return (property instanceof CssFontSizeCSS1 &&
+		    ((CssFontSizeCSS1) property).value == value);
+	else
+	    return (property instanceof CssFontSizeCSS1 &&
+		    ((CssFontSizeCSS1) property).cssValue.equals(cssValue));
+    }
+
+    private static int[] hash_values;
+
+    static {
+	hash_values = new int[FONTSIZE.length];
+	for (int i=0; i<FONTSIZE.length; i++)
+	    hash_values[i] = FONTSIZE[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssFontSizeCSS2.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,234 @@
+//
+// $Id: CssFontSizeCSS2.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'font-size'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;absolute-size&gt; | &lt;relative-size&gt; |
+ *   &lt;length&gt; | &lt;percentage&gt;<BR>
+ *   <EM>Initial:</EM> medium<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> relative to parent element's font size<BR>
+ *   <DL>
+ *     <DT>
+ *       <B>&lt;absolute-size&gt;</B>
+ *     <DD> An &lt;absolute-size&gt; keyword is an index to a table of font
+ *     sizes computed and kept by the UA. Possible values are: [ xx-small |
+ *     x-small | small | medium | large | x-large | xx-large ]. On a computer
+ *     screen a scaling factor of 1.5 is suggested between adjacent indexes; if
+ *     the 'medium' font is 10pt, the 'large' font could be 15pt. Different
+ *     media may need different scaling factors. Also, the UA should take the
+ *     quality and availability of fonts into account when computing the
+ *     table. The table may be different from one font family to another.
+ *     <DT>
+ *       <B>&lt;relative-size&gt;</B>
+ *     <DD> A &lt;relative-size&gt; keyword is interpreted relative to the table
+ *     of font sizes and the font size of the parent element. Possible values
+ *     are: [ larger | smaller ]. For example, if the parent element has a font
+ *     size of 'medium', a value of 'larger' will make the font size of the
+ *     current element be 'large'.  If the parent element's size is not close to
+ *     a table entry, the UA is free to interpolate between table entries or
+ *     round off to the closest one. The UA may have to extrapolate table values
+ *     if the numerical value goes beyond the keywords.
+ *   </DL>
+ *   <P> Length and percentage values should not take the font size table into
+ *   account when calculating the font size of the element.
+ *   <P> Negative values are not allowed.
+ *   <P> On all other properties, 'em' and 'ex' length values refer to the font
+ *   size of the current element. On the 'font-size' property, these length
+ *   units refer to the font size of the parent element.
+ *   <P>
+ *   Note that an application may reinterpret an explicit size, depending on the
+ *   context. E.g., inside a VR scene a font may get a different size because
+ *   of perspective distortion.
+ *   <P>
+ *   Examples:
+ *   <PRE>
+ *   P { font-size: 12pt; }
+ *   BLOCKQUOTE { font-size: larger }
+ *   EM { font-size: 150% }
+ *   EM { font-size: 1.5em }
+ *   </PRE>
+ *   <P>
+ *   If the suggested scaling factor of 1.5 is used, the last three declarations
+ *   are identical.
+ * @version $Revision: 1.3 $
+ */
+public class CssFontSizeCSS2 extends CssProperty implements CssFontConstantCSS2 {
+
+    int value;
+    CssValue cssValue;
+
+    /**
+     * Create a new FontSizeCSS2
+     */
+    public CssFontSizeCSS2() {
+	value = 3; // default value is medium
+    }
+
+    /**
+     * Creates a new CssFontSizeCSS2
+     *
+     * @param expression the expression of the size
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssFontSizeCSS2(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	setByUser();
+	if (val instanceof CssIdent) {
+	    int hash = val.hashCode();
+	    for (int i=0; i<hash_values.length; i++) {
+		if (hash_values[i] == hash) {
+		    value = i;
+		    cssValue = null;
+		    expression.next();
+		    return;
+		}
+	    }
+	} else if (val instanceof CssPercentage) {
+	    float num = ((Float) val.get()).floatValue();
+	    if (num < 0) {
+		throw new InvalidParamException("negative-value",
+						val.toString(), ac);
+	    }
+	    this.cssValue = val;
+	    expression.next();
+	    return;
+	} else if (val instanceof CssNumber) {
+	    CssValue length = ((CssNumber) val).getLength();
+	    if (length != null) {
+		cssValue = length;
+		expression.next();
+		return;
+	    }
+	} else if (val instanceof CssLength) {
+	    float f = ((Float) val.get()).floatValue();
+	    if (f >= 0) {
+		cssValue = val;
+		expression.next();
+		return;
+	    } else {
+		throw new InvalidParamException("negative-value",
+						val.toString(), ac);
+	    }
+	}
+
+	throw new InvalidParamException("value",
+					val, getPropertyName(), ac);
+    }
+
+    public CssFontSizeCSS2(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	if (cssValue != null)
+	    return cssValue;
+	else
+	    return FONTSIZE[value];
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == FONTSIZE.length - 1;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (cssValue != null)
+	    return cssValue.toString();
+	else
+	    return FONTSIZE[value];
+    }
+
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "font-size";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssFontCSS2 cssFont = ((Css1Style) style).cssFontCSS2;
+	if (cssFont.fontSize != null)
+	    style.addRedefinitionWarning(ac, this);
+	cssFont.fontSize = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getFontSizeCSS2();
+	} else {
+	    return ((Css1Style) style).cssFontCSS2.fontSize;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	if (cssValue == null)
+	    return (property instanceof CssFontSizeCSS2 &&
+		    ((CssFontSizeCSS2) property).value == value);
+	else
+	    return (property instanceof CssFontSizeCSS2 &&
+		    ((CssFontSizeCSS2) property).cssValue.equals(cssValue));
+    }
+
+    private static int[] hash_values;
+
+    static {
+	hash_values = new int[FONTSIZE.length];
+	for (int i=0; i<FONTSIZE.length; i++)
+	    hash_values[i] = FONTSIZE[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssFontStretch.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,145 @@
+//
+// $Id: CssFontStretch.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssIdent;
+
+/**
+ *
+ * @see CssFont
+ * @version $Revision: 1.3 $
+ */
+public class CssFontStretch extends CssProperty implements CssFontConstant {
+
+    int value;
+
+    private static int[] hash_values;
+
+    /**
+     * Create a new CssFontStretch
+     */
+    public CssFontStretch() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new CssFontStretch
+     *
+     * @param expression the font stretch
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssFontStretch(ApplContext ac, CssExpression expression,
+	    boolean check)
+	throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	if (expression.getValue() instanceof CssIdent) {
+	    int hash = expression.getValue().hashCode();
+	    for (int i=0; i<hash_values.length; i++)
+		if (hash_values[i] == hash) {
+		    value = i;
+		    expression.next();
+		    return;
+		}
+	}
+
+	throw new InvalidParamException("value", expression.getValue(),
+					getPropertyName(), ac);
+    }
+
+    public CssFontStretch(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return FONTSTRETCH[value];
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == FONTSTRETCH.length - 1;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return FONTSTRETCH[value];
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "font-stretch";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssFontStretch != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssFontStretch = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getFontStretch();
+	} else {
+	    return ((Css1Style) style).cssFontStretch;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssFontStretch &&
+		((CssFontStretch) property).value == value);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == 0;
+    }
+
+    static {
+	hash_values = new int[FONTSTRETCH.length];
+	for (int i=0;i<FONTSTRETCH.length;i++)
+	    hash_values[i] = FONTSTRETCH[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssFontStretchCSS1.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,145 @@
+//
+// $Id: CssFontStretchCSS1.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssIdent;
+
+/**
+ *
+ * @see CssFont
+ * @version $Revision: 1.3 $
+ */
+public class CssFontStretchCSS1 extends CssProperty implements CssFontConstantCSS1 {
+
+    int value;
+
+    private static int[] hash_values;
+
+    /**
+     * Create a new CssFontStretch
+     */
+    public CssFontStretchCSS1() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new CssFontStretch
+     *
+     * @param expression the font stretch
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssFontStretchCSS1(ApplContext ac, CssExpression expression,
+	    boolean check)
+	throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	if (expression.getValue() instanceof CssIdent) {
+	    int hash = expression.getValue().hashCode();
+	    for (int i=0; i<hash_values.length; i++)
+		if (hash_values[i] == hash) {
+		    value = i;
+		    expression.next();
+		    return;
+		}
+	}
+
+	throw new InvalidParamException("value", expression.getValue(),
+					getPropertyName(), ac);
+    }
+
+    public CssFontStretchCSS1(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return FONTSTRETCH[value];
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == FONTSTRETCH.length - 1;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return FONTSTRETCH[value];
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "font-stretch";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssFontStretchCSS1 != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssFontStretchCSS1 = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getFontStretchCSS1();
+	} else {
+	    return ((Css1Style) style).cssFontStretchCSS1;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssFontStretchCSS1 &&
+		((CssFontStretchCSS1) property).value == value);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == 0;
+    }
+
+    static {
+	hash_values = new int[FONTSTRETCH.length];
+	for (int i=0;i<FONTSTRETCH.length;i++)
+	    hash_values[i] = FONTSTRETCH[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssFontStretchCSS2.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,145 @@
+//
+// $Id: CssFontStretchCSS2.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssIdent;
+
+/**
+ *
+ * @see CssFont
+ * @version $Revision: 1.3 $
+ */
+public class CssFontStretchCSS2 extends CssProperty implements CssFontConstantCSS2 {
+
+    int value;
+
+    private static int[] hash_values;
+
+    /**
+     * Create a new CssFontStretch
+     */
+    public CssFontStretchCSS2() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new CssFontStretch
+     *
+     * @param expression the font stretch
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssFontStretchCSS2(ApplContext ac, CssExpression expression,
+	    boolean check)
+	throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	if (expression.getValue() instanceof CssIdent) {
+	    int hash = expression.getValue().hashCode();
+	    for (int i=0; i<hash_values.length; i++)
+		if (hash_values[i] == hash) {
+		    value = i;
+		    expression.next();
+		    return;
+		}
+	}
+
+	throw new InvalidParamException("value", expression.getValue(),
+					getPropertyName(), ac);
+    }
+
+    public CssFontStretchCSS2(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return FONTSTRETCH[value];
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == FONTSTRETCH.length - 1;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return FONTSTRETCH[value];
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "font-stretch";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssFontStretchCSS2 != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssFontStretchCSS2 = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getFontStretchCSS2();
+	} else {
+	    return ((Css1Style) style).cssFontStretchCSS2;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssFontStretchCSS2 &&
+		((CssFontStretchCSS2) property).value == value);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == 0;
+    }
+
+    static {
+	hash_values = new int[FONTSTRETCH.length];
+	for (int i=0;i<FONTSTRETCH.length;i++)
+	    hash_values[i] = FONTSTRETCH[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssFontStyle.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,171 @@
+//
+// $Id: CssFontStyle.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssIdent;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'font-style'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> normal | italic | oblique<BR>
+ *   <EM>Initial:</EM> normal<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P> The 'font-style' property selects between normal (sometimes referred to
+ *   as "roman" or "upright"), italic and oblique faces within a font family.
+ *   <P> A value of 'normal' selects a font that is classified as 'normal' in
+ *   the UA's font database, while 'oblique' selects a font that is labeled
+ *   'oblique'.  A value of 'italic' selects a font that is labeled 'italic',
+ *   or, if that is not available, one labeled 'oblique'.
+ *   <P> The font that is labeled 'oblique' in the UA's font database may
+ *   actually have been generated by electronically slanting a normal font.
+ *   <P> Fonts with Oblique, Slanted or Incline in their names will typically be
+ *   labeled 'oblique' in the UA's font database. Fonts with <EM>Italic,
+ *   Cursive</EM> or <EM>Kursiv</EM> in their names will typically be labeled
+ *   'italic'.
+ *   <PRE>
+ *   H1, H2, H3 { font-style: italic }
+ *   H1 EM { font-style: normal }
+ * </PRE>
+ *   <P>
+ *   In the example above, emphasized text within 'H1' will appear in a normal
+ *   face.
+ *
+ * @version $Revision: 1.3 $
+ */
+public class CssFontStyle extends CssProperty implements CssFontConstant {
+
+    int value;
+
+    /**
+     * Create a new CssFontStyle
+     */
+    public CssFontStyle() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new CssFontStyle
+     *
+     * @param expression the font style
+     * @exception InvalidParamException values are incorrect
+     */
+    public CssFontStyle(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	if (expression.getValue() instanceof CssIdent) {
+	    int hash = ((CssIdent) expression.getValue()).hashCode();
+	    for (int i=0; i<hash_values.length; i++)
+		if (hash_values[i] == hash) {
+		    value = i;
+		    expression.next();
+		    return;
+		}
+	}
+
+	throw new InvalidParamException("value", expression.getValue(),
+					getPropertyName(), ac);
+    }
+
+    public CssFontStyle(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return FONTSTYLE[value];
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == FONTSTYLE.length - 1;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return FONTSTYLE[value];
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "font-style";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssFont cssFont = ((Css1Style) style).cssFont;
+	if (cssFont.fontStyle != null)
+	    style.addRedefinitionWarning(ac, this);
+	cssFont.fontStyle = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getFontStyle();
+	} else {
+	    return ((Css1Style) style).cssFont.fontStyle;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssFontStyle &&
+		((CssFontStyle) property).value == value);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == 0;
+    }
+
+    private static int[] hash_values;
+
+    static {
+	hash_values = new int[FONTSTYLE.length];
+	for (int i=0; i<FONTSTYLE.length; i++)
+	    hash_values[i] = FONTSTYLE[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssFontStyleCSS1.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,171 @@
+//
+// $Id: CssFontStyleCSS1.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssIdent;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'font-style'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> normal | italic | oblique<BR>
+ *   <EM>Initial:</EM> normal<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P> The 'font-style' property selects between normal (sometimes referred to
+ *   as "roman" or "upright"), italic and oblique faces within a font family.
+ *   <P> A value of 'normal' selects a font that is classified as 'normal' in
+ *   the UA's font database, while 'oblique' selects a font that is labeled
+ *   'oblique'.  A value of 'italic' selects a font that is labeled 'italic',
+ *   or, if that is not available, one labeled 'oblique'.
+ *   <P> The font that is labeled 'oblique' in the UA's font database may
+ *   actually have been generated by electronically slanting a normal font.
+ *   <P> Fonts with Oblique, Slanted or Incline in their names will typically be
+ *   labeled 'oblique' in the UA's font database. Fonts with <EM>Italic,
+ *   Cursive</EM> or <EM>Kursiv</EM> in their names will typically be labeled
+ *   'italic'.
+ *   <PRE>
+ *   H1, H2, H3 { font-style: italic }
+ *   H1 EM { font-style: normal }
+ * </PRE>
+ *   <P>
+ *   In the example above, emphasized text within 'H1' will appear in a normal
+ *   face.
+ *
+ * @version $Revision: 1.3 $
+ */
+public class CssFontStyleCSS1 extends CssProperty implements CssFontConstantCSS1 {
+
+    int value;
+
+    /**
+     * Create a new CssFontStyleCSS1
+     */
+    public CssFontStyleCSS1() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new CssFontStyleCSS1
+     *
+     * @param expression the font style
+     * @exception InvalidParamException values are incorrect
+     */
+    public CssFontStyleCSS1(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	if (expression.getValue() instanceof CssIdent) {
+	    int hash = ((CssIdent) expression.getValue()).hashCode();
+	    for (int i=0; i<hash_values.length; i++)
+		if (hash_values[i] == hash) {
+		    value = i;
+		    expression.next();
+		    return;
+		}
+	}
+
+	throw new InvalidParamException("value", expression.getValue(),
+					getPropertyName(), ac);
+    }
+
+    public CssFontStyleCSS1(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return FONTSTYLE[value];
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == FONTSTYLE.length - 1;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return FONTSTYLE[value];
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "font-style";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssFontCSS1 cssFont = ((Css1Style) style).cssFontCSS1;
+	if (cssFont.fontStyle != null)
+	    style.addRedefinitionWarning(ac, this);
+	cssFont.fontStyle = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getFontStyleCSS1();
+	} else {
+	    return ((Css1Style) style).cssFontCSS1.fontStyle;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssFontStyleCSS1 &&
+		((CssFontStyleCSS1) property).value == value);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == 0;
+    }
+
+    private static int[] hash_values;
+
+    static {
+	hash_values = new int[FONTSTYLE.length];
+	for (int i=0; i<FONTSTYLE.length; i++)
+	    hash_values[i] = FONTSTYLE[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssFontStyleCSS2.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,171 @@
+//
+// $Id: CssFontStyleCSS2.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssIdent;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'font-style'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> normal | italic | oblique<BR>
+ *   <EM>Initial:</EM> normal<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P> The 'font-style' property selects between normal (sometimes referred to
+ *   as "roman" or "upright"), italic and oblique faces within a font family.
+ *   <P> A value of 'normal' selects a font that is classified as 'normal' in
+ *   the UA's font database, while 'oblique' selects a font that is labeled
+ *   'oblique'.  A value of 'italic' selects a font that is labeled 'italic',
+ *   or, if that is not available, one labeled 'oblique'.
+ *   <P> The font that is labeled 'oblique' in the UA's font database may
+ *   actually have been generated by electronically slanting a normal font.
+ *   <P> Fonts with Oblique, Slanted or Incline in their names will typically be
+ *   labeled 'oblique' in the UA's font database. Fonts with <EM>Italic,
+ *   Cursive</EM> or <EM>Kursiv</EM> in their names will typically be labeled
+ *   'italic'.
+ *   <PRE>
+ *   H1, H2, H3 { font-style: italic }
+ *   H1 EM { font-style: normal }
+ * </PRE>
+ *   <P>
+ *   In the example above, emphasized text within 'H1' will appear in a normal
+ *   face.
+ *
+ * @version $Revision: 1.3 $
+ */
+public class CssFontStyleCSS2 extends CssProperty implements CssFontConstantCSS2 {
+
+    int value;
+
+    /**
+     * Create a new CssFontStyleCSS2
+     */
+    public CssFontStyleCSS2() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new CssFontStyleCSS2
+     *
+     * @param expression the font style
+     * @exception InvalidParamException values are incorrect
+     */
+    public CssFontStyleCSS2(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	if (expression.getValue() instanceof CssIdent) {
+	    int hash = ((CssIdent) expression.getValue()).hashCode();
+	    for (int i=0; i<hash_values.length; i++)
+		if (hash_values[i] == hash) {
+		    value = i;
+		    expression.next();
+		    return;
+		}
+	}
+
+	throw new InvalidParamException("value", expression.getValue(),
+					getPropertyName(), ac);
+    }
+
+    public CssFontStyleCSS2(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return FONTSTYLE[value];
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == FONTSTYLE.length - 1;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return FONTSTYLE[value];
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "font-style";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssFontCSS2 cssFont = ((Css1Style) style).cssFontCSS2;
+	if (cssFont.fontStyle != null)
+	    style.addRedefinitionWarning(ac, this);
+	cssFont.fontStyle = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getFontStyleCSS2();
+	} else {
+	    return ((Css1Style) style).cssFontCSS2.fontStyle;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssFontStyleCSS2 &&
+		((CssFontStyleCSS2) property).value == value);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == 0;
+    }
+
+    private static int[] hash_values;
+
+    static {
+	hash_values = new int[FONTSTYLE.length];
+	for (int i=0; i<FONTSTYLE.length; i++)
+	    hash_values[i] = FONTSTYLE[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssFontVariant.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,177 @@
+//
+// $Id: CssFontVariant.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssIdent;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'font-variant'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> normal | small-caps<BR>
+ *   <EM>Initial:</EM> normal<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P> Another type of variation within a font family is the small-caps. In a
+ *   small-caps font the lower case letters look similar to the uppercase ones,
+ *   but in a smaller size and with slightly different proportions. The
+ *   'font-variant' property selects that font.
+ *   <P> A value of 'normal' selects a font that is not a small-caps font,
+ *   'small-caps' selects a small-caps font. It is acceptable (but not required)
+ *   in CSS1 if the small-caps font is a created by taking a normal font and
+ *   replacing the lower case letters by scaled uppercase characters. As a last
+ *   resort, uppercase letters will be used as replacement for a small-caps
+ *   font.
+ *   <P> The following example results in an 'H3' element in small-caps, with
+ *   emphasized words in oblique small-caps:
+ *   <PRE>
+ *   H3 { font-variant: small-caps }
+ *   EM { font-style: oblique }
+ *   </PRE>
+ *   <P> There may be other variants in the font family as well, such as fonts
+ *   with old-style numerals, small-caps numerals, condensed or expanded
+ *   letters, etc.  CSS1 has no properties that select those.
+ *   <P> <EM>CSS1 core:</EM> insofar as this property causes text to be
+ *   transformed to uppercase, the same considerations as for 'text-transform'
+ *   apply
+ *
+ * @see CssFont
+ * @see TextTransform
+ * @version $Revision: 1.3 $
+ */
+public class CssFontVariant extends CssProperty implements CssFontConstant {
+
+    int value;
+
+    /**
+     * Create a new CssFontVariant
+     */
+    public CssFontVariant() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new CssFontVariant
+     *
+     * @param expression the font variant
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssFontVariant(ApplContext ac, CssExpression expression,
+	    boolean check)
+	    throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	if (expression.getValue() instanceof CssIdent) {
+	    int hash = expression.getValue().hashCode();
+	    for (int i=0; i<hash_values.length; i++)
+		if (hash_values[i] == hash) {
+		    value = i;
+		    expression.next();
+		    return;
+		}
+	}
+
+	throw new InvalidParamException("value", expression.getValue(),
+					getPropertyName(), ac);
+    }
+
+    public CssFontVariant(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return FONTVARIANT[value];
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == FONTVARIANT.length - 1;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return FONTVARIANT[value];
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "font-variant";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssFont cssFont = ((Css1Style) style).cssFont;
+	if (cssFont.fontVariant != null)
+	    style.addRedefinitionWarning(ac, this);
+	cssFont.fontVariant = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getFontVariant();
+	} else {
+	    return ((Css1Style) style).cssFont.fontVariant;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssFontVariant &&
+		((CssFontVariant) property).value == value);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == 0;
+    }
+
+    private static int[] hash_values;
+
+    static {
+	hash_values = new int[FONTVARIANT.length];
+	for (int i=0;i<FONTVARIANT.length;i++)
+	    hash_values[i] = FONTVARIANT[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssFontVariantCSS1.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,177 @@
+//
+// $Id: CssFontVariantCSS1.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssIdent;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'font-variant'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> normal | small-caps<BR>
+ *   <EM>Initial:</EM> normal<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P> Another type of variation within a font family is the small-caps. In a
+ *   small-caps font the lower case letters look similar to the uppercase ones,
+ *   but in a smaller size and with slightly different proportions. The
+ *   'font-variant' property selects that font.
+ *   <P> A value of 'normal' selects a font that is not a small-caps font,
+ *   'small-caps' selects a small-caps font. It is acceptable (but not required)
+ *   in CSS1 if the small-caps font is a created by taking a normal font and
+ *   replacing the lower case letters by scaled uppercase characters. As a last
+ *   resort, uppercase letters will be used as replacement for a small-caps
+ *   font.
+ *   <P> The following example results in an 'H3' element in small-caps, with
+ *   emphasized words in oblique small-caps:
+ *   <PRE>
+ *   H3 { font-variant: small-caps }
+ *   EM { font-style: oblique }
+ *   </PRE>
+ *   <P> There may be other variants in the font family as well, such as fonts
+ *   with old-style numerals, small-caps numerals, condensed or expanded
+ *   letters, etc.  CSS1 has no properties that select those.
+ *   <P> <EM>CSS1 core:</EM> insofar as this property causes text to be
+ *   transformed to uppercase, the same considerations as for 'text-transform'
+ *   apply
+ *
+ * @see CssFont
+ * @see TextTransform
+ * @version $Revision: 1.3 $
+ */
+public class CssFontVariantCSS1 extends CssProperty implements CssFontConstantCSS1 {
+
+    int value;
+
+    /**
+     * Create a new CssFontVariantCSS1
+     */
+    public CssFontVariantCSS1() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new CssFontVariantCSS1
+     *
+     * @param expression the font variant
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssFontVariantCSS1(ApplContext ac, CssExpression expression,
+	    boolean check)
+	    throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	if (expression.getValue() instanceof CssIdent) {
+	    int hash = expression.getValue().hashCode();
+	    for (int i=0; i<hash_values.length; i++)
+		if (hash_values[i] == hash) {
+		    value = i;
+		    expression.next();
+		    return;
+		}
+	}
+
+	throw new InvalidParamException("value", expression.getValue(),
+					getPropertyName(), ac);
+    }
+
+    public CssFontVariantCSS1(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return FONTVARIANT[value];
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == FONTVARIANT.length - 1;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return FONTVARIANT[value];
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "font-variant";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssFontCSS1 cssFont = ((Css1Style) style).cssFontCSS1;
+	if (cssFont.fontVariant != null)
+	    style.addRedefinitionWarning(ac, this);
+	cssFont.fontVariant = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getFontVariantCSS1();
+	} else {
+	    return ((Css1Style) style).cssFontCSS1.fontVariant;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssFontVariantCSS1 &&
+		((CssFontVariantCSS1) property).value == value);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == 0;
+    }
+
+    private static int[] hash_values;
+
+    static {
+	hash_values = new int[FONTVARIANT.length];
+	for (int i=0;i<FONTVARIANT.length;i++)
+	    hash_values[i] = FONTVARIANT[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssFontVariantCSS2.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,176 @@
+//
+// $Id: CssFontVariantCSS2.java,v 1.4 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssIdent;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'font-variant'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> normal | small-caps<BR>
+ *   <EM>Initial:</EM> normal<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P> Another type of variation within a font family is the small-caps. In a
+ *   small-caps font the lower case letters look similar to the uppercase ones,
+ *   but in a smaller size and with slightly different proportions. The
+ *   'font-variant' property selects that font.
+ *   <P> A value of 'normal' selects a font that is not a small-caps font,
+ *   'small-caps' selects a small-caps font. It is acceptable (but not required)
+ *   in CSS1 if the small-caps font is a created by taking a normal font and
+ *   replacing the lower case letters by scaled uppercase characters. As a last
+ *   resort, uppercase letters will be used as replacement for a small-caps
+ *   font.
+ *   <P> The following example results in an 'H3' element in small-caps, with
+ *   emphasized words in oblique small-caps:
+ *   <PRE>
+ *   H3 { font-variant: small-caps }
+ *   EM { font-style: oblique }
+ *   </PRE>
+ *   <P> There may be other variants in the font family as well, such as fonts
+ *   with old-style numerals, small-caps numerals, condensed or expanded
+ *   letters, etc.  CSS1 has no properties that select those.
+ *   <P> <EM>CSS1 core:</EM> insofar as this property causes text to be
+ *   transformed to uppercase, the same considerations as for 'text-transform'
+ *   apply
+ *
+ * @see CssFont
+ * @see TextTransform
+ * @version $Revision: 1.4 $
+ */
+public class CssFontVariantCSS2 extends CssProperty implements CssFontConstantCSS2 {
+
+    int value;
+
+    /**
+     * Create a new CssFontVariantCSS2
+     */
+    public CssFontVariantCSS2() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new CssFontVariantCSS2
+     *
+     * @param expression the font variant
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssFontVariantCSS2(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	if (expression.getValue() instanceof CssIdent) {
+	    int hash = expression.getValue().hashCode();
+	    for (int i=0; i<hash_values.length; i++)
+		if (hash_values[i] == hash) {
+		    value = i;
+		    expression.next();
+		    return;
+		}
+	}
+
+	throw new InvalidParamException("value", expression.getValue(),
+					getPropertyName(), ac);
+    }
+
+    public CssFontVariantCSS2(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return FONTVARIANT[value];
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == FONTVARIANT.length - 1;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return FONTVARIANT[value];
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "font-variant";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssFontCSS2 cssFont = ((Css1Style) style).cssFontCSS2;
+	if (cssFont.fontVariant != null)
+	    style.addRedefinitionWarning(ac, this);
+	cssFont.fontVariant = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getFontVariantCSS2();
+	} else {
+	    return ((Css1Style) style).cssFontCSS2.fontVariant;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssFontVariantCSS2 &&
+		((CssFontVariantCSS2) property).value == value);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == 0;
+    }
+
+    private static int[] hash_values;
+
+    static {
+	hash_values = new int[FONTVARIANT.length];
+	for (int i=0;i<FONTVARIANT.length;i++)
+	    hash_values[i] = FONTVARIANT[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssFontWeight.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,293 @@
+//
+// $Id: CssFontWeight.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'font-weight'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> normal | bold | bolder | lighter | 100 | 200 | 300 | 400
+ *   | 500 | 600 | 700 | 800 | 900<BR>
+ *   <EM>Initial:</EM> normal<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P> The 'font-weight' property selects the weight of the font. The values
+ *   '100' to '900' form an ordered sequence, where each number indicates a
+ *   weight that is at least as dark as its predecessor. The keyword 'normal' is
+ *   synonymous with '400', and 'bold' is synonymous with '700'. Keywords other
+ *   than 'normal' and 'bold' have been shown to be often confused with font
+ *   names and a numerical scale was therefore chosen for the 9-value list.
+ *   <PRE>
+ *   P { font-weight: normal }    400
+ *   H1 { font-weight: 700 }      bold
+ * </PRE>
+ *   <P>
+ *   The 'bolder' and 'lighter' values select font weights that are relative to
+ *   the weight inherited from the parent:
+ *   <PRE>
+ *   STRONG { font-weight: bolder }
+ * </PRE>
+ *   <P>
+ *   Child elements inherit the resultant weight, not the keyword value.
+ *   <P> Fonts (the font data) typically have one or more properties whose
+ *   values are names that are descriptive of the "weight" of a font. There is
+ *   no accepted, universal meaning to these weight names. Their primary role is
+ *   to distinguish faces of differing darkness within a single font
+ *   family. Usage across font families is quite variant; for example a font
+ *   that you might think of as being bold might be described as being
+ *   <EM>Regular, Roman, Book, Medium, Semi-</EM> or <EM>DemiBold, Bold,</EM> or
+ *   <EM>Black,</EM> depending on how black the "normal" face of the font is
+ *   within the design. Because there is no standard usage of names, the weight
+ *   property values in CSS1 are given on a numerical scale in which the value
+ *   '400' (or 'normal') corresponds to the "normal" text face for that
+ *   family. The weight name associated with that face will typically be
+ *   <EM>Book, Regular, Roman, Normal</EM> or sometimes <EM>Medium</EM>.
+ *   <P>
+ *   The association of other weights within a family to the numerical weight
+ *   values is intended only to preserve the ordering of darkness within that
+ *   family. However, the following heuristics tell how the assignment is done
+ *   in typical cases:
+ *   <UL>
+ *     <LI> If the font family already uses a numerical scale with nine values
+ *     (like e.g. <EM>OpenType</EM> does), the font weights should be mapped
+ *     directly.
+ *     <LI> If there is both a face labeled <EM>Medium</EM> and one labeled
+ *     <EM>Book, Regular, Roman</EM> or <EM>Normal,</EM> then the
+ *     <EM>Medium</EM> is normally assigned to the '500'.
+ *     <LI> The font labeled "Bold" will often correspond to the weight value
+ *     '700'.
+ *     <LI> If there are fewer then 9 weights in the family, the default
+ *     algorithm for filling the "holes" is as follows. If '500' is unassigned,
+ *     it will be assigned the same font as '400'. If any of the values '600',
+ *     '700', '800' or '900' remains unassigned, they are assigned to the same
+ *     face as the next darker assigned keyword, if any, or the next lighter one
+ *     otherwise. If any of '300', '200' or '100' remains unassigned, it is
+ *     assigned to the next lighter assigned keyword, if any, or the next darker
+ *     otherwise.
+ *   </UL>
+ *   <P> The following two examples illustrate the process. Assume four weights
+ *   in the "Example1" family, from lightest to darkest: <EM>Regular, Medium,
+ *   Bold, Heavy.</EM> And assume six weights in the "Example2" family:
+ *   <EM>Book, Medium, Bold, Heavy, Black, ExtraBlack.</EM> Note how in the
+ *   second example it has been decided <EM>not</EM> to assign "Example2
+ *   ExtraBlack" to anything.
+ *   <PRE>
+ *     Available faces       |  Assignments  |  Filling the holes
+ *     ----------------------+---------------+-------------------
+ *     "Example1 Regular"    |  400          |  100, 200, 300
+ *     "Example1 Medium"     |  500          |
+ *     "Example1 Bold"       |  700          |  600
+ *     "Example1 Heavy"      |  800          |  900
+ * </PRE>
+ *   <PRE>
+ *     Available faces       |  Assignments  |  Filling the holes
+ *     ----------------------+---------------+-------------------
+ *     "Example2 Book"       |  400          |  100, 200, 300
+ *     "Example2 Medium"     |  500          |
+ *     "Example2 Bold"       |  700          |  600
+ *     "Example2 Heavy"      |  800          |
+ *     "Example2 Black"      |  900          |
+ *     "Example2 ExtraBlack" |  (none)       |
+ * </PRE>
+ *   <P> Since the intent of the relative keywords 'bolder' and 'lighter' is to
+ *   darken or lighten the face <EM>within the family</EM> and because a family
+ *   may not have faces aligned with all the symbolic weight values, the
+ *   matching of 'bolder' is to the next darker face available on the client
+ *   within the family and the matching of 'lighter' is to the next lighter face
+ *   within the family.  To be precise, the meaning of the relative keywords
+ *   'bolder' and 'lighter' is as follows:
+ *   <UL>
+ *     <LI> 'bolder' selects the next weight that is assigned to a font that is
+ *     darker than the inherited one. If there is no such weight, it simply
+ *     results in the next darker numerical value (and the font remains
+ *     unchanged), unless the inherited value was '900' in which case the
+ *     resulting weight is also '900'.
+ *     <LI> 'lighter' is similar, but works in the opposite direction: it
+ *     selects the next lighter keyword with a different font from the inherited
+ *     one, unless there is no such font, in which case it selects the next
+ *     lighter numerical value (and keeps the font unchanged).
+ *   </UL>
+ *   <P> There is no guarantee that there will be a darker face for each of the
+ *   'font-weight' values; for example, some fonts may have only a normal and a
+ *   bold face, others may have eight different face weights. There is no
+ *   guarantee on how a UA will map font faces within a family to weight
+ *   values. The only guarantee is that a face of a given value will be no less
+ *   dark than the faces of lighter values.
+ *
+ * @version $Revision: 1.3 $
+ */
+public class CssFontWeight extends CssProperty implements CssFontConstant {
+
+
+    /**
+     * an index in a array
+     *
+     * @see CssFontConstant#FONTWEIGHT
+     */
+    protected int value;
+
+    // internal hack to compare strings
+    private static int[] hash_values;
+
+    /**
+     * Create a new FontWeight with the default value.
+     */
+    public CssFontWeight() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new CssFontWeight with an expression.
+     *
+     * @param expr the expression
+     * @exception InvalidParamException values are incorrect
+     */
+    public CssFontWeight(ApplContext ac, CssExpression expr, boolean check)
+    	throws InvalidParamException {
+
+	if(check && expr.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expr.getValue();
+
+	setByUser();
+
+	if (val instanceof CssIdent) {
+	    int hash = expr.getValue().hashCode();
+
+	    // try to find the hashCode in my internal hack array
+	    for (int i=0; i<hash_values.length; i++)
+		if (hash_values[i] == hash) {
+		    this.value = i;
+		    expr.next();
+		    return;
+		}
+	} else if (val instanceof CssNumber) {
+	    Object valf = val.get();
+	    if(valf instanceof Integer) {
+		int vali = ((Integer) valf).intValue();
+		if(isCorrectWeight(vali)) { // verify the entire part number
+		    this.value = vali;
+		    expr.next();
+		    return;
+		}
+	    }
+
+	}
+
+	throw new InvalidParamException("value", expr.getValue().toString(),
+					getPropertyName(), ac);
+    }
+
+    public CssFontWeight(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value.
+     */
+    public Object get() {
+	if (value >= 100)
+	    return new Integer(value);
+	else
+	    return FONTWEIGHT[value];
+    }
+
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == FONTWEIGHT.length - 1;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (value >= 100)
+	    return Integer.toString(value);
+	else
+	    return FONTWEIGHT[value];
+    }
+
+    /**
+     * Returns the name of this property.
+     */
+    public String getPropertyName() {
+	return "font-weight";
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssFont cssFont = ((Css1Style) style).cssFont;
+	if (cssFont.fontWeight != null)
+	    style.addRedefinitionWarning(ac, this);
+	cssFont.fontWeight = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getFontWeight();
+	} else {
+	    return ((Css1Style) style).cssFont.fontWeight;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssFontWeight &&
+		((CssFontWeight) property).value == value);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == 0;
+    }
+
+    private boolean isCorrectWeight(int val) {
+	val = val / 100;
+	return val > 0 && val < 10;
+    }
+
+    static {
+	hash_values = new int[FONTWEIGHT.length];
+	for (int i=0; i<FONTWEIGHT.length; i++)
+	    hash_values[i] = FONTWEIGHT[i].hashCode();
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssFontWeightCSS1.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,292 @@
+//
+// $Id: CssFontWeightCSS1.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'font-weight'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> normal | bold | bolder | lighter | 100 | 200 | 300 | 400
+ *   | 500 | 600 | 700 | 800 | 900<BR>
+ *   <EM>Initial:</EM> normal<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P> The 'font-weight' property selects the weight of the font. The values
+ *   '100' to '900' form an ordered sequence, where each number indicates a
+ *   weight that is at least as dark as its predecessor. The keyword 'normal' is
+ *   synonymous with '400', and 'bold' is synonymous with '700'. Keywords other
+ *   than 'normal' and 'bold' have been shown to be often confused with font
+ *   names and a numerical scale was therefore chosen for the 9-value list.
+ *   <PRE>
+ *   P { font-weight: normal }    400
+ *   H1 { font-weight: 700 }      bold
+ * </PRE>
+ *   <P>
+ *   The 'bolder' and 'lighter' values select font weights that are relative to
+ *   the weight inherited from the parent:
+ *   <PRE>
+ *   STRONG { font-weight: bolder }
+ * </PRE>
+ *   <P>
+ *   Child elements inherit the resultant weight, not the keyword value.
+ *   <P> Fonts (the font data) typically have one or more properties whose
+ *   values are names that are descriptive of the "weight" of a font. There is
+ *   no accepted, universal meaning to these weight names. Their primary role is
+ *   to distinguish faces of differing darkness within a single font
+ *   family. Usage across font families is quite variant; for example a font
+ *   that you might think of as being bold might be described as being
+ *   <EM>Regular, Roman, Book, Medium, Semi-</EM> or <EM>DemiBold, Bold,</EM> or
+ *   <EM>Black,</EM> depending on how black the "normal" face of the font is
+ *   within the design. Because there is no standard usage of names, the weight
+ *   property values in CSS1 are given on a numerical scale in which the value
+ *   '400' (or 'normal') corresponds to the "normal" text face for that
+ *   family. The weight name associated with that face will typically be
+ *   <EM>Book, Regular, Roman, Normal</EM> or sometimes <EM>Medium</EM>.
+ *   <P>
+ *   The association of other weights within a family to the numerical weight
+ *   values is intended only to preserve the ordering of darkness within that
+ *   family. However, the following heuristics tell how the assignment is done
+ *   in typical cases:
+ *   <UL>
+ *     <LI> If the font family already uses a numerical scale with nine values
+ *     (like e.g. <EM>OpenType</EM> does), the font weights should be mapped
+ *     directly.
+ *     <LI> If there is both a face labeled <EM>Medium</EM> and one labeled
+ *     <EM>Book, Regular, Roman</EM> or <EM>Normal,</EM> then the
+ *     <EM>Medium</EM> is normally assigned to the '500'.
+ *     <LI> The font labeled "Bold" will often correspond to the weight value
+ *     '700'.
+ *     <LI> If there are fewer then 9 weights in the family, the default
+ *     algorithm for filling the "holes" is as follows. If '500' is unassigned,
+ *     it will be assigned the same font as '400'. If any of the values '600',
+ *     '700', '800' or '900' remains unassigned, they are assigned to the same
+ *     face as the next darker assigned keyword, if any, or the next lighter one
+ *     otherwise. If any of '300', '200' or '100' remains unassigned, it is
+ *     assigned to the next lighter assigned keyword, if any, or the next darker
+ *     otherwise.
+ *   </UL>
+ *   <P> The following two examples illustrate the process. Assume four weights
+ *   in the "Example1" family, from lightest to darkest: <EM>Regular, Medium,
+ *   Bold, Heavy.</EM> And assume six weights in the "Example2" family:
+ *   <EM>Book, Medium, Bold, Heavy, Black, ExtraBlack.</EM> Note how in the
+ *   second example it has been decided <EM>not</EM> to assign "Example2
+ *   ExtraBlack" to anything.
+ *   <PRE>
+ *     Available faces       |  Assignments  |  Filling the holes
+ *     ----------------------+---------------+-------------------
+ *     "Example1 Regular"    |  400          |  100, 200, 300
+ *     "Example1 Medium"     |  500          |
+ *     "Example1 Bold"       |  700          |  600
+ *     "Example1 Heavy"      |  800          |  900
+ * </PRE>
+ *   <PRE>
+ *     Available faces       |  Assignments  |  Filling the holes
+ *     ----------------------+---------------+-------------------
+ *     "Example2 Book"       |  400          |  100, 200, 300
+ *     "Example2 Medium"     |  500          |
+ *     "Example2 Bold"       |  700          |  600
+ *     "Example2 Heavy"      |  800          |
+ *     "Example2 Black"      |  900          |
+ *     "Example2 ExtraBlack" |  (none)       |
+ * </PRE>
+ *   <P> Since the intent of the relative keywords 'bolder' and 'lighter' is to
+ *   darken or lighten the face <EM>within the family</EM> and because a family
+ *   may not have faces aligned with all the symbolic weight values, the
+ *   matching of 'bolder' is to the next darker face available on the client
+ *   within the family and the matching of 'lighter' is to the next lighter face
+ *   within the family.  To be precise, the meaning of the relative keywords
+ *   'bolder' and 'lighter' is as follows:
+ *   <UL>
+ *     <LI> 'bolder' selects the next weight that is assigned to a font that is
+ *     darker than the inherited one. If there is no such weight, it simply
+ *     results in the next darker numerical value (and the font remains
+ *     unchanged), unless the inherited value was '900' in which case the
+ *     resulting weight is also '900'.
+ *     <LI> 'lighter' is similar, but works in the opposite direction: it
+ *     selects the next lighter keyword with a different font from the inherited
+ *     one, unless there is no such font, in which case it selects the next
+ *     lighter numerical value (and keeps the font unchanged).
+ *   </UL>
+ *   <P> There is no guarantee that there will be a darker face for each of the
+ *   'font-weight' values; for example, some fonts may have only a normal and a
+ *   bold face, others may have eight different face weights. There is no
+ *   guarantee on how a UA will map font faces within a family to weight
+ *   values. The only guarantee is that a face of a given value will be no less
+ *   dark than the faces of lighter values.
+ *
+ * @version $Revision: 1.3 $
+ */
+public class CssFontWeightCSS1 extends CssProperty implements CssFontConstantCSS1 {
+
+
+    /**
+     * an index in a array
+     *
+     * @see CssFontConstant#FONTWEIGHT
+     */
+    protected int value;
+
+    // internal hack to compare strings
+    private static int[] hash_values;
+
+    /**
+     * Create a new FontWeightCSS1 with the default value.
+     */
+    public CssFontWeightCSS1() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new CssFontWeightCSS1 with an expression.
+     *
+     * @param expr the expression
+     * @exception InvalidParamException values are incorrect
+     */
+    public CssFontWeightCSS1(ApplContext ac, CssExpression expr, boolean check)
+    	throws InvalidParamException {
+
+	if(check && expr.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expr.getValue();
+
+	setByUser();
+
+	if (val instanceof CssIdent) {
+	    int hash = expr.getValue().hashCode();
+
+	    // try to find the hashCode in my internal hack array
+	    for (int i=0; i<hash_values.length; i++)
+		if (hash_values[i] == hash) {
+		    this.value = i;
+		    expr.next();
+		    return;
+		}
+	} else if (val instanceof CssNumber) {
+	    Object valf = val.get();
+	    if(valf instanceof Integer) {
+		int vali = ((Integer) valf).intValue();
+		if(isCorrectWeight(vali)) { // verify the entire part number
+		    this.value = vali;
+		    expr.next();
+		    return;
+		}
+	    }
+	}
+
+	throw new InvalidParamException("value", expr.getValue().toString(),
+					getPropertyName(), ac);
+    }
+
+    public CssFontWeightCSS1(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value.
+     */
+    public Object get() {
+	if (value >= 100)
+	    return new Integer(value);
+	else
+	    return FONTWEIGHT[value];
+    }
+
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == FONTWEIGHT.length - 1;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (value >= 100)
+	    return Integer.toString(value);
+	else
+	    return FONTWEIGHT[value];
+    }
+
+    /**
+     * Returns the name of this property.
+     */
+    public String getPropertyName() {
+	return "font-weight";
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssFontCSS1 cssFont = ((Css1Style) style).cssFontCSS1;
+	if (cssFont.fontWeight != null)
+	    style.addRedefinitionWarning(ac, this);
+	cssFont.fontWeight = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getFontWeightCSS1();
+	} else {
+	    return ((Css1Style) style).cssFontCSS1.fontWeight;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssFontWeightCSS1 &&
+		((CssFontWeightCSS1) property).value == value);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == 0;
+    }
+
+    private boolean isCorrectWeight(int val) {
+	val = val / 100;
+	return val > 0 && val < 10;
+    }
+
+    static {
+	hash_values = new int[FONTWEIGHT.length];
+	for (int i=0; i<FONTWEIGHT.length; i++)
+	    hash_values[i] = FONTWEIGHT[i].hashCode();
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssFontWeightCSS2.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,293 @@
+//
+// $Id: CssFontWeightCSS2.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'font-weight'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> normal | bold | bolder | lighter | 100 | 200 | 300 | 400
+ *   | 500 | 600 | 700 | 800 | 900<BR>
+ *   <EM>Initial:</EM> normal<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P> The 'font-weight' property selects the weight of the font. The values
+ *   '100' to '900' form an ordered sequence, where each number indicates a
+ *   weight that is at least as dark as its predecessor. The keyword 'normal' is
+ *   synonymous with '400', and 'bold' is synonymous with '700'. Keywords other
+ *   than 'normal' and 'bold' have been shown to be often confused with font
+ *   names and a numerical scale was therefore chosen for the 9-value list.
+ *   <PRE>
+ *   P { font-weight: normal }    400
+ *   H1 { font-weight: 700 }      bold
+ * </PRE>
+ *   <P>
+ *   The 'bolder' and 'lighter' values select font weights that are relative to
+ *   the weight inherited from the parent:
+ *   <PRE>
+ *   STRONG { font-weight: bolder }
+ * </PRE>
+ *   <P>
+ *   Child elements inherit the resultant weight, not the keyword value.
+ *   <P> Fonts (the font data) typically have one or more properties whose
+ *   values are names that are descriptive of the "weight" of a font. There is
+ *   no accepted, universal meaning to these weight names. Their primary role is
+ *   to distinguish faces of differing darkness within a single font
+ *   family. Usage across font families is quite variant; for example a font
+ *   that you might think of as being bold might be described as being
+ *   <EM>Regular, Roman, Book, Medium, Semi-</EM> or <EM>DemiBold, Bold,</EM> or
+ *   <EM>Black,</EM> depending on how black the "normal" face of the font is
+ *   within the design. Because there is no standard usage of names, the weight
+ *   property values in CSS1 are given on a numerical scale in which the value
+ *   '400' (or 'normal') corresponds to the "normal" text face for that
+ *   family. The weight name associated with that face will typically be
+ *   <EM>Book, Regular, Roman, Normal</EM> or sometimes <EM>Medium</EM>.
+ *   <P>
+ *   The association of other weights within a family to the numerical weight
+ *   values is intended only to preserve the ordering of darkness within that
+ *   family. However, the following heuristics tell how the assignment is done
+ *   in typical cases:
+ *   <UL>
+ *     <LI> If the font family already uses a numerical scale with nine values
+ *     (like e.g. <EM>OpenType</EM> does), the font weights should be mapped
+ *     directly.
+ *     <LI> If there is both a face labeled <EM>Medium</EM> and one labeled
+ *     <EM>Book, Regular, Roman</EM> or <EM>Normal,</EM> then the
+ *     <EM>Medium</EM> is normally assigned to the '500'.
+ *     <LI> The font labeled "Bold" will often correspond to the weight value
+ *     '700'.
+ *     <LI> If there are fewer then 9 weights in the family, the default
+ *     algorithm for filling the "holes" is as follows. If '500' is unassigned,
+ *     it will be assigned the same font as '400'. If any of the values '600',
+ *     '700', '800' or '900' remains unassigned, they are assigned to the same
+ *     face as the next darker assigned keyword, if any, or the next lighter one
+ *     otherwise. If any of '300', '200' or '100' remains unassigned, it is
+ *     assigned to the next lighter assigned keyword, if any, or the next darker
+ *     otherwise.
+ *   </UL>
+ *   <P> The following two examples illustrate the process. Assume four weights
+ *   in the "Example1" family, from lightest to darkest: <EM>Regular, Medium,
+ *   Bold, Heavy.</EM> And assume six weights in the "Example2" family:
+ *   <EM>Book, Medium, Bold, Heavy, Black, ExtraBlack.</EM> Note how in the
+ *   second example it has been decided <EM>not</EM> to assign "Example2
+ *   ExtraBlack" to anything.
+ *   <PRE>
+ *     Available faces       |  Assignments  |  Filling the holes
+ *     ----------------------+---------------+-------------------
+ *     "Example1 Regular"    |  400          |  100, 200, 300
+ *     "Example1 Medium"     |  500          |
+ *     "Example1 Bold"       |  700          |  600
+ *     "Example1 Heavy"      |  800          |  900
+ * </PRE>
+ *   <PRE>
+ *     Available faces       |  Assignments  |  Filling the holes
+ *     ----------------------+---------------+-------------------
+ *     "Example2 Book"       |  400          |  100, 200, 300
+ *     "Example2 Medium"     |  500          |
+ *     "Example2 Bold"       |  700          |  600
+ *     "Example2 Heavy"      |  800          |
+ *     "Example2 Black"      |  900          |
+ *     "Example2 ExtraBlack" |  (none)       |
+ * </PRE>
+ *   <P> Since the intent of the relative keywords 'bolder' and 'lighter' is to
+ *   darken or lighten the face <EM>within the family</EM> and because a family
+ *   may not have faces aligned with all the symbolic weight values, the
+ *   matching of 'bolder' is to the next darker face available on the client
+ *   within the family and the matching of 'lighter' is to the next lighter face
+ *   within the family.  To be precise, the meaning of the relative keywords
+ *   'bolder' and 'lighter' is as follows:
+ *   <UL>
+ *     <LI> 'bolder' selects the next weight that is assigned to a font that is
+ *     darker than the inherited one. If there is no such weight, it simply
+ *     results in the next darker numerical value (and the font remains
+ *     unchanged), unless the inherited value was '900' in which case the
+ *     resulting weight is also '900'.
+ *     <LI> 'lighter' is similar, but works in the opposite direction: it
+ *     selects the next lighter keyword with a different font from the inherited
+ *     one, unless there is no such font, in which case it selects the next
+ *     lighter numerical value (and keeps the font unchanged).
+ *   </UL>
+ *   <P> There is no guarantee that there will be a darker face for each of the
+ *   'font-weight' values; for example, some fonts may have only a normal and a
+ *   bold face, others may have eight different face weights. There is no
+ *   guarantee on how a UA will map font faces within a family to weight
+ *   values. The only guarantee is that a face of a given value will be no less
+ *   dark than the faces of lighter values.
+ *
+ * @version $Revision: 1.3 $
+ */
+public class CssFontWeightCSS2 extends CssProperty
+implements CssFontConstantCSS2 {
+
+
+    /**
+     * an index in a array
+     *
+     * @see CssFontConstant#FONTWEIGHT
+     */
+    protected int value;
+
+    // internal hack to compare strings
+    private static int[] hash_values;
+
+    /**
+     * Create a new FontWeightCSS2 with the default value.
+     */
+    public CssFontWeightCSS2() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new CssFontWeightCSS2 with an expression.
+     *
+     * @param expr the expression
+     * @exception InvalidParamException values are incorrect
+     */
+    public CssFontWeightCSS2(ApplContext ac, CssExpression expr, boolean check)
+    	throws InvalidParamException {
+
+	if(check && expr.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expr.getValue();
+
+	setByUser();
+
+	if (val instanceof CssIdent) {
+	    int hash = expr.getValue().hashCode();
+
+	    // try to find the hashCode in my internal hack array
+	    for (int i=0; i<hash_values.length; i++)
+		if (hash_values[i] == hash) {
+		    this.value = i;
+		    expr.next();
+		    return;
+		}
+	} else if (val instanceof CssNumber) {
+	    Object valf = val.get();
+	    if(valf instanceof Integer) {
+		int vali = ((Integer) valf).intValue();
+		if(isCorrectWeight(vali)) { // verify the entire part number
+		    this.value = vali;
+		    expr.next();
+		    return;
+		}
+	    }
+	}
+
+	throw new InvalidParamException("value", expr.getValue().toString(),
+					getPropertyName(), ac);
+    }
+
+    public CssFontWeightCSS2(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value.
+     */
+    public Object get() {
+	if (value >= 100)
+	    return new Integer(value);
+	else
+	    return FONTWEIGHT[value];
+    }
+
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == FONTWEIGHT.length - 1;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (value >= 100)
+	    return Integer.toString(value);
+	else
+	    return FONTWEIGHT[value];
+    }
+
+    /**
+     * Returns the name of this property.
+     */
+    public String getPropertyName() {
+	return "font-weight";
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssFontCSS2 cssFont = ((Css1Style) style).cssFontCSS2;
+	if (cssFont.fontWeight != null)
+	    style.addRedefinitionWarning(ac, this);
+	cssFont.fontWeight = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getFontWeightCSS2();
+	} else {
+	    return ((Css1Style) style).cssFontCSS2.fontWeight;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssFontWeightCSS2 &&
+		((CssFontWeightCSS2) property).value == value);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == 0;
+    }
+
+    private boolean isCorrectWeight(int val) {
+	val = val / 100;
+	return val > 0 && val < 10;
+    }
+
+    static {
+	hash_values = new int[FONTWEIGHT.length];
+	for (int i=0; i<FONTWEIGHT.length; i++)
+	    hash_values[i] = FONTWEIGHT[i].hashCode();
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssHeight.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,177 @@
+//
+// $Id: CssHeight.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *      &nbsp;&nbsp; 'height'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;length&gt; | auto <BR>
+ *   <EM>Initial:</EM> auto<BR>
+ *   <EM>Applies to:</EM> block-level and replaced elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   This property can be applied to text, but it is most useful with replaced
+ *   elements such as images. The height is to be enforced by scaling the image
+ *   if necessary. When scaling, the aspect ratio of the image is preserved if
+ *   the 'width' property is 'auto'.
+ *   <P>
+ *   Example:
+ *   <PRE>
+ *   IMG.icon { height: 100px }
+ *   </PRE>
+ *   <P>
+ *   If the 'width' and 'height' of a replaced element are both 'auto', these
+ *   properties will be set to the intrinsic dimensions of the element.
+ *   <P>
+ *   If applied to a textual element, the height can be enforced with e.g. a
+ *   scrollbar.
+ *   <P>
+ *   Negative values are not allowed.
+ * @version $Revision: 1.3 $
+ */
+public class CssHeight extends CssProperty {
+
+    CssValue value;
+
+    private static CssIdent auto = new CssIdent("auto");
+
+    /**
+     * Create a new CssHeight
+     */
+    public CssHeight() {
+	value = auto;
+    }
+
+    /**
+     * Create a new CssHeight
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssHeight(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+	if (val.equals(inherit)) {
+	    value = inherit;
+	} else if (val instanceof CssLength || val instanceof CssPercentage) {
+	    float f = ((Float) val.get()).floatValue();
+	    if (f < 0) {
+		throw new InvalidParamException("negative-value",
+						val.toString(), ac);
+	    }
+	    value = val;
+	} else if (val.equals(auto)) {
+	    value = auto;
+	} else if (val instanceof CssNumber) {
+	    value = ((CssNumber) val).getLength();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+
+	expression.next();
+    }
+
+    public CssHeight(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "height";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssHeight != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssHeight = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getHeight();
+	} else {
+	    return ((Css1Style) style).cssHeight;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssHeight &&
+		value.equals(((CssHeight) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == auto;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssHeightMob.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,176 @@
+//
+// $Id: CssHeightMob.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *      &nbsp;&nbsp; 'height'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;length&gt; | auto <BR>
+ *   <EM>Initial:</EM> auto<BR>
+ *   <EM>Applies to:</EM> block-level and replaced elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   This property can be applied to text, but it is most useful with replaced
+ *   elements such as images. The height is to be enforced by scaling the image
+ *   if necessary. When scaling, the aspect ratio of the image is preserved if
+ *   the 'width' property is 'auto'.
+ *   <P>
+ *   Example:
+ *   <PRE>
+ *   IMG.icon { height: 100px }
+ *   </PRE>
+ *   <P>
+ *   If the 'width' and 'height' of a replaced element are both 'auto', these
+ *   properties will be set to the intrinsic dimensions of the element.
+ *   <P>
+ *   If applied to a textual element, the height can be enforced with e.g. a
+ *   scrollbar.
+ *   <P>
+ *   Negative values are not allowed.
+ * @version $Revision: 1.3 $
+ */
+public class CssHeightMob extends CssProperty {
+
+    CssValue value;
+
+    private static CssIdent auto = new CssIdent("auto");
+
+    /**
+     * Create a new CssHeightMob
+     */
+    public CssHeightMob() {
+	value = auto;
+    }
+
+    /**
+     * Create a new CssHeightMob
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssHeightMob(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+	if (val.equals(inherit)) {
+	    value = inherit;
+	} else if (val instanceof CssLength) {
+	    float f = ((Float) val.get()).floatValue();
+	    if (f < 0) {
+		throw new InvalidParamException("negative-value",
+						val.toString(), ac);
+	    }
+	    value = val;
+	} else if (val.equals(auto)) {
+	    value = auto;
+	} else if (val instanceof CssNumber) {
+	    value = ((CssNumber) val).getLength();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+
+	expression.next();
+    }
+
+    public CssHeightMob(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "height";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssHeightMob != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssHeightMob = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getHeightMob();
+	} else {
+	    return ((Css1Style) style).cssHeightMob;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssHeightMob &&
+		value.equals(((CssHeightMob) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == auto;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssLeft.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,85 @@
+//
+// $Id: CssLeft.java,v 1.2 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+/**
+ */
+public class CssLeft extends CssBoxOffsetFace {
+
+  /**
+   * Create a new CssLeft
+   */
+  public CssLeft() {
+    super();
+  }
+
+  /**
+   * Create a new CssLeft
+   *
+   * @param expression The expression for this property.
+   * @exception InvalidParamException Values are incorrect
+   */
+  public CssLeft(ApplContext ac, CssExpression expression) throws InvalidParamException {
+    super(ac, expression);
+  }
+
+  public CssLeft(ApplContext ac, CssExpression expression, boolean check)
+  	throws InvalidParamException {
+      super(ac, expression, check);
+  }
+
+  /**
+   * Returns the name of this property
+   */
+  public String getPropertyName() {
+    return "left";
+  }
+
+  /**
+   * Add this property to the CssStyle.
+   *
+   * @param style The CssStyle
+   */
+  public void addToStyle(ApplContext ac, CssStyle style) {
+    Css1Style style0 = (Css1Style) style;
+    if (style0.cssLeft != null)
+      style0.addRedefinitionWarning(ac, this);
+    style0.cssLeft = this;
+  }
+
+  /**
+   * Get this property in the style.
+   *
+   * @param style The style where the property is
+   * @param resolve if true, resolve the style to find this property
+   */
+  public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+    if (resolve) {
+      return ((Css1Style) style).getLeft();
+    } else {
+      return ((Css1Style) style).getLeft();
+    }
+  }
+
+  /**
+   * Compares two properties for equality.
+   *
+   * @param value The other property.
+   */
+  public boolean equals(CssProperty property) {
+    return (property instanceof CssLeft &&
+	    value.equals(((CssLeft) property).value));
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssLetterSpacing.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,170 @@
+//
+// $Id: CssLetterSpacing.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'letter-spacing'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> normal | &lt;length&gt; <BR>
+ *   <EM>Initial:</EM> normal<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P> The length unit indicates an addition to the default space between
+ *   characters.  Values can be negative, but there may be
+ *   implementation-specific limits.  The UA is free to select the exact spacing
+ *   algorithm. The letter spacing may also be influenced by justification
+ *   (which is a value of the 'align' property).
+ *   <PRE>
+ *   BLOCKQUOTE { letter-spacing: 0.1em }
+ * </PRE>
+ *   <P>
+ *   Here, the letter-spacing between each character in 'BLOCKQUOTE' elements
+ *   would be increased by '0.1em'.
+ *   <P>
+ *   With a value of 'normal', the UAs may change the space between letters to
+ *   justify text. This will not happen if 'letter-spacing' is explicitly set
+ *   to a &lt;length&gt; value:
+ *   <PRE>
+ *   BLOCKQUOTE { letter-spacing: 0 }
+ *   BLOCKQUOTE { letter-spacing: 0cm }
+ * </PRE>
+ *   <P>
+ *   When the resultant space between two letters is not the same as the default
+ *   space, UAs should not use ligatures.
+ *
+ * @version $Revision: 1.3 $
+ */
+public class CssLetterSpacing extends CssProperty {
+
+    CssValue length;
+    static CssIdent normal = new CssIdent("normal");
+
+    /**
+     * Create a new CssLetterSpacing
+     */
+    public CssLetterSpacing() {
+	length = normal;
+    }
+
+    /**
+     * Create a new CssLetterSpacing
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssLetterSpacing(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+
+	CssValue val = expression.getValue();
+	if (val instanceof CssLength) {
+	    length = (CssLength) val;
+	    expression.next();
+	} else if (val instanceof CssNumber) {
+	    length = ((CssNumber) val).getLength();
+	    expression.next();
+	} else if (val.equals(inherit)) {
+	    length = inherit;
+	    expression.next();
+	} else if (val.equals(normal)) {
+	    length = normal;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value",
+					    expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssLetterSpacing(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return length;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "letter-spacing";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return length == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return length.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssLetterSpacing != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssLetterSpacing = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getLetterSpacing();
+	} else {
+	    return ((Css1Style) style).cssLetterSpacing;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssLetterSpacing &&
+		length.equals(((CssLetterSpacing) property).length));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssLineHeight.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,200 @@
+//
+// $Id: CssLineHeight.java,v 1.4 2006-03-05 18:27:27 ot 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'line-height'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> normal | &lt;number&gt; | &lt;length&gt; |
+ *   &lt;percentage&gt;<BR>
+ *   <EM>Initial:</EM> normal<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> relative to the font size of the element itself<BR>
+ *   <P>
+ *   The property sets the distance between two adjacent lines' baselines.
+ *   <P> When a numerical value is specified, the line height is given by the
+ *   font size of the current element multiplied with the numerical value. This
+ *   differs from a percentage value in the way it inherits: when a numerical
+ *   value is specified, child elements will inherit the factor itself, not the
+ *   resultant value (as is the case with <A
+ *   HREF="#percentage-units">percentage</A> and other units).
+ *   <P>
+ *   Negative values are not allowed.
+ *   <P>
+ *   The three rules in the example below have the same resultant line height:
+ *   <PRE>
+ *   DIV { line-height: 1.2; font-size: 10pt }     /* number * /
+ *   DIV { line-height: 1.2em; font-size: 10pt }   /* length * /
+ *   DIV { line-height: 120%; font-size: 10pt }    /* percentage * /
+ * </PRE>
+ *
+ * @version $Revision: 1.4 $
+ */
+public class CssLineHeight extends CssProperty {
+
+
+    private CssValue value;
+    private static CssIdent normal = new CssIdent("normal");
+    private static CssIdent number = new CssIdent("number");
+    private static CssIdent none = new CssIdent("none");
+    private static CssIdent initial = new CssIdent("initial");
+
+    /**
+     * Create a new CssLineHeight
+     */
+    public CssLineHeight() {
+	value = normal;
+    }
+
+    /**
+     * Creates a new CssLineHeight
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssLineHeight(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	if (val instanceof CssNumber || val instanceof CssLength ||
+	        val instanceof CssPercentage) {
+	    float v = ((Number) val.get()).floatValue();
+	    if (v >= 0) {
+		value = val;
+		expression.next();
+		return;
+	    } else {
+		throw new InvalidParamException("negative-value",
+						Float.toString(v), ac);
+	    }
+	} else if (inherit.equals(val)) {
+	    value = inherit;
+	    expression.next();
+	    return;
+	} else if (normal.equals(val)) {
+	    value = normal;
+	    expression.next();
+	    return;
+	} else if (number.equals(val)) {
+		value = number;
+		expression.next();
+		return;
+	} else if (none.equals(val)) {
+		value = none;
+		expression.next();
+		return;
+	} else if (initial.equals(val)) {
+		value = initial;
+		expression.next();
+		return;
+	}
+
+	throw new InvalidParamException("value", expression.getValue(),
+					getPropertyName(), ac);
+    }
+
+    public CssLineHeight(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	if (value == null)
+	    return normal;
+	return value;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "line-height";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssFont cssFont = ((Css1Style) style).cssFont;
+	if (cssFont.lineHeight != null)
+	    style.addRedefinitionWarning(ac, this);
+	cssFont.lineHeight = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getLineHeight();
+	} else {
+	    return ((Css1Style) style).cssFont.lineHeight;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssLineHeight &&
+		((CssLineHeight) property).value == value);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == normal;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssLineHeightCSS1.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,183 @@
+//
+// $Id: CssLineHeightCSS1.java,v 1.4 2006-03-05 18:27:27 ot 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'line-height'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> normal | &lt;number&gt; | &lt;length&gt; |
+ *   &lt;percentage&gt;<BR>
+ *   <EM>Initial:</EM> normal<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> relative to the font size of the element itself<BR>
+ *   <P>
+ *   The property sets the distance between two adjacent lines' baselines.
+ *   <P> When a numerical value is specified, the line height is given by the
+ *   font size of the current element multiplied with the numerical value. This
+ *   differs from a percentage value in the way it inherits: when a numerical
+ *   value is specified, child elements will inherit the factor itself, not the
+ *   resultant value (as is the case with <A
+ *   HREF="#percentage-units">percentage</A> and other units).
+ *   <P>
+ *   Negative values are not allowed.
+ *   <P>
+ *   The three rules in the example below have the same resultant line height:
+ *   <PRE>
+ *   DIV { line-height: 1.2; font-size: 10pt }     /* number * /
+ *   DIV { line-height: 1.2em; font-size: 10pt }   /* length * /
+ *   DIV { line-height: 120%; font-size: 10pt }    /* percentage * /
+ * </PRE>
+ *
+ * @version $Revision: 1.4 $
+ */
+public class CssLineHeightCSS1 extends CssProperty {
+
+    /**
+     * Create a new CssLineHeightCSS1
+     */
+    public CssLineHeightCSS1() {
+	value = normal;
+    }
+
+    /**
+     * Creates a new CssLineHeightCSS1
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssLineHeightCSS1(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	if (val instanceof CssNumber || val instanceof CssLength ||
+	        val instanceof CssPercentage) {
+	    float v = ((Number) val.get()).floatValue();
+	    if (v >= 0) {
+		value = val;
+		expression.next();
+		return;
+	    } else {
+		throw new InvalidParamException("negative-value",
+						Float.toString(v), ac);
+	    }
+	} else if (inherit.equals(val)) {
+	    value = inherit;
+	    expression.next();
+	    return;
+	} else if (normal.equals(val)) {
+	    value = normal;
+	    expression.next();
+	    return;
+	}
+
+	throw new InvalidParamException("value", expression.getValue(),
+					getPropertyName(), ac);
+    }
+
+    public CssLineHeightCSS1(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	if (value == null)
+	    return normal;
+	return value;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "line-height";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssFontCSS1 cssFont = ((Css1Style) style).cssFontCSS1;
+	if (cssFont.lineHeight != null)
+	    style.addRedefinitionWarning(ac, this);
+	cssFont.lineHeight = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getLineHeightCSS1();
+	} else {
+	    return ((Css1Style) style).cssFontCSS1.lineHeight;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssLineHeightCSS1 &&
+		((CssLineHeightCSS1) property).value == value);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == normal;
+    }
+
+    private CssValue value;
+    private static CssIdent normal = new CssIdent("normal");
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssLineHeightCSS2.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,183 @@
+//
+// $Id: CssLineHeightCSS2.java,v 1.4 2006-03-05 18:27:27 ot 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'line-height'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> normal | &lt;number&gt; | &lt;length&gt; |
+ *   &lt;percentage&gt;<BR>
+ *   <EM>Initial:</EM> normal<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> relative to the font size of the element itself<BR>
+ *   <P>
+ *   The property sets the distance between two adjacent lines' baselines.
+ *   <P> When a numerical value is specified, the line height is given by the
+ *   font size of the current element multiplied with the numerical value. This
+ *   differs from a percentage value in the way it inherits: when a numerical
+ *   value is specified, child elements will inherit the factor itself, not the
+ *   resultant value (as is the case with <A
+ *   HREF="#percentage-units">percentage</A> and other units).
+ *   <P>
+ *   Negative values are not allowed.
+ *   <P>
+ *   The three rules in the example below have the same resultant line height:
+ *   <PRE>
+ *   DIV { line-height: 1.2; font-size: 10pt }     /* number * /
+ *   DIV { line-height: 1.2em; font-size: 10pt }   /* length * /
+ *   DIV { line-height: 120%; font-size: 10pt }    /* percentage * /
+ * </PRE>
+ *
+ * @version $Revision: 1.4 $
+ */
+public class CssLineHeightCSS2 extends CssProperty {
+
+    /**
+     * Create a new CssLineHeightCSS2
+     */
+    public CssLineHeightCSS2() {
+	value = normal;
+    }
+
+    /**
+     * Creates a new CssLineHeightCSS2
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssLineHeightCSS2(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	if (val instanceof CssNumber || val instanceof CssLength ||
+	        val instanceof CssPercentage) {
+	    float v = ((Number) val.get()).floatValue();
+	    if (v >= 0) {
+		value = val;
+		expression.next();
+		return;
+	    } else {
+		throw new InvalidParamException("negative-value",
+						Float.toString(v), ac);
+	    }
+	} else if (inherit.equals(val)) {
+	    value = inherit;
+	    expression.next();
+	    return;
+	} else if (normal.equals(val)) {
+	    value = normal;
+	    expression.next();
+	    return;
+	}
+
+	throw new InvalidParamException("value", expression.getValue(),
+					getPropertyName(), ac);
+    }
+
+    public CssLineHeightCSS2(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	if (value == null)
+	    return normal;
+	return value;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "line-height";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssFontCSS2 cssFont = ((Css1Style) style).cssFontCSS2;
+	if (cssFont.lineHeight != null)
+	    style.addRedefinitionWarning(ac, this);
+	cssFont.lineHeight = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getLineHeightCSS2();
+	} else {
+	    return ((Css1Style) style).cssFontCSS2.lineHeight;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssLineHeightCSS2 &&
+		((CssLineHeightCSS2) property).value == value);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == normal;
+    }
+
+    private CssValue value;
+    private static CssIdent normal = new CssIdent("normal");
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssListStyle.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,359 @@
+//
+// $Id: CssListStyle.java,v 1.4 2007-02-27 22:36:23 jean-gui 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *      &nbsp;&nbsp; 'list-style'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;keyword&gt; || &lt;position&gt; || &lt;url&gt;<BR>
+ *   <EM>Initial:</EM> not defined for shorthand properties<BR>
+ *   <EM>Applies to:</EM> elements with 'display' value 'list-item'<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   The 'list-style' property is a shorthand notation for setting the three
+ *   properties 'list-style-type', 'list-style-image' and 'list-style-position'
+ *   at the same place in the style sheet.
+ *   <PRE>
+ *   UL { list-style: upper-roman inside }
+ *   UL UL { list-style: circle outside }
+ *   LI.square { list-style: square }
+ * </PRE>
+ *   <P>
+ *   Setting 'list-style' directly on 'LI' elements can have unexpected results.
+ *   Consider:
+ *   <PRE>
+ *   &lt;STYLE TYPE="text/css"&gt;
+ *     OL.alpha LI  { list-style: lower-alpha }
+ *     UL LI        { list-style: disc }
+ *   &lt;/STYLE&gt;
+ *   &lt;BODY&gt;
+ *     &lt;OL CLASS=alpha&gt;
+ *       &lt;LI&gt;level 1
+ *       &lt;UL&gt;
+ *          &lt;LI&gt;level 2
+ *       &lt;/UL&gt;
+ *     &lt;/OL&gt;
+ *   &lt;/BODY&gt;
+ * </PRE>
+ *   <P> Since the specificity (as defined in the <A
+ *   HREF="#cascading-order">cascading order</A>) is higher for the first rule
+ *   in the style sheet in the example above, it will override the second rule
+ *   on all 'LI' elements and only 'lower-alpha' list styles will be used. It is
+ *   therefore recommended to set 'list-style' only on the list type elements:
+ *   <PRE>
+ *   OL.alpha  { list-style: lower-alpha }
+ *   UL        { list-style: disc }
+ * </PRE>
+ *   <P> In the above example, inheritance will transfer the 'list-style' values
+ *   from 'OL' and 'UL' elements to 'LI' elements.
+ *   <P>
+ *   A URL value can be combined with any other value:
+ *   <PRE>
+ *   UL { list-style: url(http://png.com/ellipse.png) disc }
+ * </PRE>
+ *   <P> In the example above, the 'disc' will be used when the image is
+ *   unavailable.
+ *
+ * @version $Revision: 1.4 $
+ */
+public class CssListStyle extends CssProperty implements CssOperator {
+
+    CssListStyleType listStyleType;
+    CssListStyleImage listStyleImage;
+    CssListStylePosition listStylePosition;
+
+    boolean inheritedValue;
+
+    /**
+     * Create a new CssListStyle
+     */
+    public CssListStyle() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new CssListStyle
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssListStyle(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 3) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	char op = SPACE;
+	boolean find = true;
+
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    if(expression.getCount() > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    inheritedValue = true;
+	    expression.next();
+	    return;
+	}
+
+	while (find) {
+	    find = false;
+	    val = expression.getValue();
+	    op = expression.getOperator();
+
+	    if(val != null && val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+
+	    if ((listStyleType == null)
+		&& (val != null)) {
+		try {
+		    listStyleType = new CssListStyleType(ac, expression);
+		    find = true;
+		} catch (InvalidParamException e) {
+		}
+	    }
+	    if (!find
+		&& (listStyleImage == null)
+		&& (val != null)) {
+		try {
+		    listStyleImage = new CssListStyleImage(ac, expression);
+		    find = true;
+		} catch (InvalidParamException e) {
+		}
+	    }
+	    if (!find
+		&& (val != null)
+		&& (listStylePosition == null)) {
+		listStylePosition = new CssListStylePosition(ac, expression);
+		find = true;
+	    }
+	    if(val != null && !find) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    if (op != SPACE) {
+		throw new InvalidParamException("operator",
+						((new Character(op)).toString()),
+						ac);
+	    }
+	}
+	/*
+	if (listStyleType == null) {
+	    listStyleType = new CssListStyleType();
+	}
+
+	if (listStyleImage == null) {
+	    listStyleImage = new CssListStyleImage();
+	}
+
+	if (listStylePosition == null) {
+	    listStylePosition = new CssListStylePosition();
+	}*/
+    }
+
+    public CssListStyle(ApplContext ac, CssExpression expression)
+    	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return listStyleType;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "list-style";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return inheritedValue;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (inheritedValue) {
+	    return inherit.toString();
+	} else {
+	    String ret = "";
+	    if(listStyleType != null) {
+		ret = listStyleType.toString();
+	    }
+	    if (listStyleImage != null &&!listStyleImage.isDefault()) {
+		ret += " " + listStyleImage;
+	    }
+	    if (listStylePosition != null && !listStylePosition.isDefault()) {
+		ret += " " + listStylePosition;
+	    }
+	    return ret.trim();
+	}
+    }
+
+
+
+    /**
+     * Set this property to be important.
+     * Overrides this method for a macro
+     */
+    public void setImportant() {
+	if (!inheritedValue) {
+	    if(listStyleType != null)
+		listStyleType.important = true;
+	    if(listStyleImage != null)
+		listStyleImage.important = true;
+	    if(listStylePosition != null)
+		listStylePosition.important = true;
+	}
+    }
+
+    /**
+     * Returns true if this property is important.
+     * Overrides this method for a macro
+     */
+    public boolean getImportant() {
+	return ((listStyleType == null || listStyleType.important) &&
+		(listStyleImage == null || listStyleImage.important) &&
+		(listStylePosition == null || listStylePosition.important));
+    }
+
+    /**
+     * Print this property.
+     *
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	if (inheritedValue) {
+	    printer.print(this);
+	} else if ((listStyleType != null && listStyleImage != null &&
+		    listStylePosition != null) &&
+		   (getImportant() ||
+		    (!listStyleType.important &&
+		     !listStyleImage.important &&
+		     !listStylePosition.important))) {
+	    printer.print(this);
+	} else {
+	    if (listStyleType != null) {
+		listStyleType.print(printer);
+	    }
+	    if (listStyleImage != null) {
+		listStyleImage.print(printer);
+	    }
+	    if (listStylePosition != null) {
+		listStylePosition.print(printer);
+	    }
+	}
+
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors selector) {
+	super.setSelectors(selector);
+	if (listStyleType != null) {
+	    listStyleType.setSelectors(selector);
+	}
+	if (listStyleImage != null) {
+	    listStyleImage.setSelectors(selector);
+	}
+	if (listStylePosition != null) {
+	    listStylePosition.setSelectors(selector);
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (!inheritedValue) {
+	    if(listStyleType != null)
+		listStyleType.addToStyle(ac, style);
+	    if(listStyleImage != null)
+		listStyleImage.addToStyle(ac, style);
+	    if(listStylePosition != null)
+		listStylePosition.addToStyle(ac, style);
+	} else {
+	    ((Css1Style) style).cssListStyle.inheritedValue = true;
+	}
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getListStyle();
+	} else {
+	    return ((Css1Style) style).cssListStyle;
+	}
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	super.setInfo(line, source);
+	if (!inheritedValue) {
+	    if(listStyleType != null)
+		listStyleType.setInfo(line, source);
+	    if(listStyleImage != null)
+		listStyleImage.setInfo(line, source);
+	    if(listStylePosition != null)
+		listStylePosition.setInfo(line, source);
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @FIXME
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssListStyleCSS1.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,355 @@
+//
+// $Id: CssListStyleCSS1.java,v 1.4 2007-02-27 22:36:23 jean-gui 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *      &nbsp;&nbsp; 'list-style'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;keyword&gt; || &lt;position&gt; || &lt;url&gt;<BR>
+ *   <EM>Initial:</EM> not defined for shorthand properties<BR>
+ *   <EM>Applies to:</EM> elements with 'display' value 'list-item'<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   The 'list-style' property is a shorthand notation for setting the three
+ *   properties 'list-style-type', 'list-style-image' and 'list-style-position'
+ *   at the same place in the style sheet.
+ *   <PRE>
+ *   UL { list-style: upper-roman inside }
+ *   UL UL { list-style: circle outside }
+ *   LI.square { list-style: square }
+ * </PRE>
+ *   <P>
+ *   Setting 'list-style' directly on 'LI' elements can have unexpected results.
+ *   Consider:
+ *   <PRE>
+ *   &lt;STYLE TYPE="text/css"&gt;
+ *     OL.alpha LI  { list-style: lower-alpha }
+ *     UL LI        { list-style: disc }
+ *   &lt;/STYLE&gt;
+ *   &lt;BODY&gt;
+ *     &lt;OL CLASS=alpha&gt;
+ *       &lt;LI&gt;level 1
+ *       &lt;UL&gt;
+ *          &lt;LI&gt;level 2
+ *       &lt;/UL&gt;
+ *     &lt;/OL&gt;
+ *   &lt;/BODY&gt;
+ * </PRE>
+ *   <P> Since the specificity (as defined in the <A
+ *   HREF="#cascading-order">cascading order</A>) is higher for the first rule
+ *   in the style sheet in the example above, it will override the second rule
+ *   on all 'LI' elements and only 'lower-alpha' list styles will be used. It is
+ *   therefore recommended to set 'list-style' only on the list type elements:
+ *   <PRE>
+ *   OL.alpha  { list-style: lower-alpha }
+ *   UL        { list-style: disc }
+ * </PRE>
+ *   <P> In the above example, inheritance will transfer the 'list-style' values
+ *   from 'OL' and 'UL' elements to 'LI' elements.
+ *   <P>
+ *   A URL value can be combined with any other value:
+ *   <PRE>
+ *   UL { list-style: url(http://png.com/ellipse.png) disc }
+ * </PRE>
+ *   <P> In the example above, the 'disc' will be used when the image is
+ *   unavailable.
+ *
+ * @version $Revision: 1.4 $
+ */
+public class CssListStyleCSS1 extends CssProperty implements CssOperator {
+
+    CssListStyleTypeCSS1 listStyleType;
+    CssListStyleImageCSS1 listStyleImage;
+    CssListStylePositionCSS1 listStylePosition;
+
+    boolean inheritedValue;
+
+    /**
+     * Create a new CssListStyleCSS1
+     */
+    public CssListStyleCSS1() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new CssListStyleCSS1
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssListStyleCSS1(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 3) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	char op = SPACE;
+	boolean find = true;
+
+	setByUser();
+/*
+	if (val.equals(inherit)) {
+	    if(expression.getCount() > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    inheritedValue = true;
+	    expression.next();
+	    return;
+	}
+*/
+	while (find) {
+	    find = false;
+	    val = expression.getValue();
+	    op = expression.getOperator();
+
+	    if ((listStyleType == null)
+		&& (val != null)) {
+		try {
+		    listStyleType = new CssListStyleTypeCSS1(ac, expression);
+		    find = true;
+		} catch (InvalidParamException e) {
+		}
+	    }
+	    if (!find
+		&& (listStyleImage == null)
+		&& (val != null)) {
+		try {
+		    listStyleImage = new CssListStyleImageCSS1(ac, expression);
+		    find = true;
+		} catch (InvalidParamException e) {
+		}
+	    }
+	    if (!find
+		&& (val != null)
+		&& (listStylePosition == null)) {
+		listStylePosition = new CssListStylePositionCSS1(ac, expression);
+		find = true;
+	    }
+	    if(val != null && !find) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    if (op != SPACE) {
+		throw new InvalidParamException("operator",
+						((new Character(op)).toString()),
+						ac);
+	    }
+	}
+	/*
+	if (listStyleType == null) {
+	    listStyleType = new CssListStyleTypeCSS1();
+	}
+
+	if (listStyleImage == null) {
+	    listStyleImage = new CssListStyleImageCSS1();
+	}
+
+	if (listStylePosition == null) {
+	    listStylePosition = new CssListStylePositionCSS1();
+	}*/
+    }
+
+    public CssListStyleCSS1(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return listStyleType;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "list-style";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return inheritedValue;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (inheritedValue) {
+	    return inherit.toString();
+	} else {
+	    String ret = "";
+	    if(listStyleType != null) {
+		ret = listStyleType.toString();
+	    }
+	    if (listStyleImage != null &&!listStyleImage.isDefault()) {
+		ret += " " + listStyleImage;
+	    }
+	    if (listStylePosition != null && !listStylePosition.isDefault()) {
+		ret += " " + listStylePosition;
+	    }
+	    return ret.trim();
+	}
+    }
+
+
+
+    /**
+     * Set this property to be important.
+     * Overrides this method for a macro
+     */
+    public void setImportant() {
+	if (!inheritedValue) {
+	    if(listStyleType != null)
+		listStyleType.important = true;
+	    if(listStyleImage != null)
+		listStyleImage.important = true;
+	    if(listStylePosition != null)
+		listStylePosition.important = true;
+	}
+    }
+
+    /**
+     * Returns true if this property is important.
+     * Overrides this method for a macro
+     */
+    public boolean getImportant() {
+	return ((listStyleType == null || listStyleType.important) &&
+		(listStyleImage == null || listStyleImage.important) &&
+		(listStylePosition == null || listStylePosition.important));
+    }
+
+    /**
+     * Print this property.
+     *
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	if (inheritedValue) {
+	    printer.print(this);
+	} else if ((listStyleType != null && listStyleImage != null &&
+		    listStylePosition != null) &&
+		   (getImportant() ||
+		    (!listStyleType.important &&
+		     !listStyleImage.important &&
+		     !listStylePosition.important))) {
+	    printer.print(this);
+	} else {
+	    if (listStyleType != null) {
+		listStyleType.print(printer);
+	    }
+	    if (listStyleImage != null) {
+		listStyleImage.print(printer);
+	    }
+	    if (listStylePosition != null) {
+		listStylePosition.print(printer);
+	    }
+	}
+
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors selector) {
+	super.setSelectors(selector);
+	if (listStyleType != null) {
+	    listStyleType.setSelectors(selector);
+	}
+	if (listStyleImage != null) {
+	    listStyleImage.setSelectors(selector);
+	}
+	if (listStylePosition != null) {
+	    listStylePosition.setSelectors(selector);
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (!inheritedValue) {
+	    if(listStyleType != null)
+		listStyleType.addToStyle(ac, style);
+	    if(listStyleImage != null)
+		listStyleImage.addToStyle(ac, style);
+	    if(listStylePosition != null)
+		listStylePosition.addToStyle(ac, style);
+	} else {
+	    ((Css1Style) style).cssListStyleCSS1.inheritedValue = true;
+	}
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getListStyleCSS1();
+	} else {
+	    return ((Css1Style) style).cssListStyleCSS1;
+	}
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	super.setInfo(line, source);
+	if (!inheritedValue) {
+	    if(listStyleType != null)
+		listStyleType.setInfo(line, source);
+	    if(listStyleImage != null)
+		listStyleImage.setInfo(line, source);
+	    if(listStylePosition != null)
+		listStylePosition.setInfo(line, source);
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @FIXME
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssListStyleCSS2.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,413 @@
+//
+// $Id: CssListStyleCSS2.java,v 1.4 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *      &nbsp;&nbsp; 'list-style'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;keyword&gt; || &lt;position&gt; || &lt;url&gt;<BR>
+ *   <EM>Initial:</EM> not defined for shorthand properties<BR>
+ *   <EM>Applies to:</EM> elements with 'display' value 'list-item'<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   The 'list-style' property is a shorthand notation for setting the three
+ *   properties 'list-style-type', 'list-style-image' and 'list-style-position'
+ *   at the same place in the style sheet.
+ *   <PRE>
+ *   UL { list-style: upper-roman inside }
+ *   UL UL { list-style: circle outside }
+ *   LI.square { list-style: square }
+ * </PRE>
+ *   <P>
+ *   Setting 'list-style' directly on 'LI' elements can have unexpected results.
+ *   Consider:
+ *   <PRE>
+ *   &lt;STYLE TYPE="text/css"&gt;
+ *     OL.alpha LI  { list-style: lower-alpha }
+ *     UL LI        { list-style: disc }
+ *   &lt;/STYLE&gt;
+ *   &lt;BODY&gt;
+ *     &lt;OL CLASS=alpha&gt;
+ *       &lt;LI&gt;level 1
+ *       &lt;UL&gt;
+ *          &lt;LI&gt;level 2
+ *       &lt;/UL&gt;
+ *     &lt;/OL&gt;
+ *   &lt;/BODY&gt;
+ * </PRE>
+ *   <P> Since the specificity (as defined in the <A
+ *   HREF="#cascading-order">cascading order</A>) is higher for the first rule
+ *   in the style sheet in the example above, it will override the second rule
+ *   on all 'LI' elements and only 'lower-alpha' list styles will be used. It is
+ *   therefore recommended to set 'list-style' only on the list type elements:
+ *   <PRE>
+ *   OL.alpha  { list-style: lower-alpha }
+ *   UL        { list-style: disc }
+ * </PRE>
+ *   <P> In the above example, inheritance will transfer the 'list-style' values
+ *   from 'OL' and 'UL' elements to 'LI' elements.
+ *   <P>
+ *   A URL value can be combined with any other value:
+ *   <PRE>
+ *   UL { list-style: url(http://png.com/ellipse.png) disc }
+ * </PRE>
+ *   <P> In the example above, the 'disc' will be used when the image is
+ *   unavailable.
+ *
+ * @version $Revision: 1.4 $
+ */
+public class CssListStyleCSS2 extends CssProperty implements CssOperator {
+
+    CssListStyleTypeCSS2 listStyleType;
+    CssListStyleImageCSS2 listStyleImage;
+    CssListStylePositionCSS2 listStylePosition;
+
+    boolean inheritedValue;
+
+    /**
+     * Create a new CssListStyleCSS2
+     */
+    public CssListStyleCSS2() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new CssListStyleCSS2
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssListStyleCSS2(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	int exprLength = expression.getCount();
+
+	if(check && exprLength > 3) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	char op = SPACE;
+	boolean find = true;
+
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    if(exprLength > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    inheritedValue = true;
+	    expression.next();
+	    return;
+	}
+
+	while (find) {
+	    find = false;
+	    val = expression.getValue();
+	    op = expression.getOperator();
+
+	    if(val != null && val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+
+	    if ((listStyleType == null)	&& (val != null)) {
+		try {
+		    listStyleType = new CssListStyleTypeCSS2(ac, expression);
+		    find = true;
+		} catch (InvalidParamException e) {
+		}
+	    }
+	    if (!find && (listStyleImage == null) && (val != null)) {
+		try {
+		    listStyleImage = new CssListStyleImageCSS2(ac, expression);
+		    find = true;
+		} catch (InvalidParamException e) {
+		}
+	    }
+	    if (!find && (val != null) && (listStylePosition == null)) {
+		listStylePosition = new CssListStylePositionCSS2(ac, expression);
+		find = true;
+	    }
+	    if(val != null && !find) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    if (op != SPACE) {
+		throw new InvalidParamException("operator",
+						((new Character(op)).toString()),
+						ac);
+	    }
+	}
+	/*
+	if (listStyleType == null) {
+	    listStyleType = new CssListStyleTypeCSS2();
+	}
+
+	if (listStyleImage == null) {
+	    listStyleImage = new CssListStyleImageCSS2();
+	}
+
+	if (listStylePosition == null) {
+	    listStylePosition = new CssListStylePositionCSS2();
+	}
+	*/
+    }
+
+    public CssListStyleCSS2(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * @return Returns the inheritedValue.
+     */
+    public boolean isInheritedValue() {
+        return inheritedValue;
+    }
+
+    /**
+     * @param inheritedValue The inheritedValue to set.
+     */
+    public void setInheritedValue(boolean inheritedValue) {
+        this.inheritedValue = inheritedValue;
+    }
+
+    /**
+     * @return Returns the listStyleImage.
+     */
+    public CssListStyleImageCSS2 getListStyleImage() {
+        return listStyleImage;
+    }
+
+    /**
+     * @param listStyleImage The listStyleImage to set.
+     */
+    public void setListStyleImage(CssListStyleImageCSS2 listStyleImage) {
+        this.listStyleImage = listStyleImage;
+    }
+
+    /**
+     * @return Returns the listStylePosition.
+     */
+    public CssListStylePositionCSS2 getListStylePosition() {
+        return listStylePosition;
+    }
+
+    /**
+     * @param listStylePosition The listStylePosition to set.
+     */
+    public void setListStylePosition(CssListStylePositionCSS2 listStylePosition) {
+        this.listStylePosition = listStylePosition;
+    }
+
+    /**
+     * @return Returns the listStyleType.
+     */
+    public CssListStyleTypeCSS2 getListStyleType() {
+        return listStyleType;
+    }
+
+    /**
+     * @param listStyleType The listStyleType to set.
+     */
+    public void setListStyleType(CssListStyleTypeCSS2 listStyleType) {
+        this.listStyleType = listStyleType;
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return listStyleType;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "list-style";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return inheritedValue;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (inheritedValue) {
+	    return inherit.toString();
+	} else {
+	    String ret = "";
+	    if(listStyleType != null) {
+		ret = listStyleType.toString();
+	    }
+	    if (listStyleImage != null &&!listStyleImage.isDefault()) {
+		ret += " " + listStyleImage;
+	    }
+	    if (listStylePosition != null && !listStylePosition.isDefault()) {
+		ret += " " + listStylePosition;
+	    }
+	    return ret.trim();
+	}
+    }
+
+
+
+    /**
+     * Set this property to be important.
+     * Overrides this method for a macro
+     */
+    public void setImportant() {
+	if (!inheritedValue) {
+	    if(listStyleType != null)
+		listStyleType.important = true;
+	    if(listStyleImage != null)
+		listStyleImage.important = true;
+	    if(listStylePosition != null)
+		listStylePosition.important = true;
+	}
+    }
+
+    /**
+     * Returns true if this property is important.
+     * Overrides this method for a macro
+     */
+    public boolean getImportant() {
+	return ((listStyleType == null || listStyleType.important) &&
+		(listStyleImage == null || listStyleImage.important) &&
+		(listStylePosition == null || listStylePosition.important));
+    }
+
+    /**
+     * Print this property.
+     *
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	if (inheritedValue) {
+	    printer.print(this);
+	} else if ((listStyleType != null && listStyleImage != null &&
+		    listStylePosition != null) &&
+		   (getImportant() ||
+		    (!listStyleType.important &&
+		     !listStyleImage.important &&
+		     !listStylePosition.important))) {
+	    printer.print(this);
+	} else {
+	    if (listStyleType != null) {
+		listStyleType.print(printer);
+	    }
+	    if (listStyleImage != null) {
+		listStyleImage.print(printer);
+	    }
+	    if (listStylePosition != null) {
+		listStylePosition.print(printer);
+	    }
+	}
+
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors selector) {
+	super.setSelectors(selector);
+	if (listStyleType != null) {
+	    listStyleType.setSelectors(selector);
+	}
+	if (listStyleImage != null) {
+	    listStyleImage.setSelectors(selector);
+	}
+	if (listStylePosition != null) {
+	    listStylePosition.setSelectors(selector);
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (!inheritedValue) {
+	    if(listStyleType != null)
+		listStyleType.addToStyle(ac, style);
+	    if(listStyleImage != null)
+		listStyleImage.addToStyle(ac, style);
+	    if(listStylePosition != null)
+		listStylePosition.addToStyle(ac, style);
+	} else {
+	    ((Css1Style) style).cssListStyleCSS2.inheritedValue = true;
+	}
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getListStyleCSS2();
+	} else {
+	    return ((Css1Style) style).cssListStyleCSS2;
+	}
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	super.setInfo(line, source);
+	if (!inheritedValue) {
+	    if(listStyleType != null)
+		listStyleType.setInfo(line, source);
+	    if(listStyleImage != null)
+		listStyleImage.setInfo(line, source);
+	    if(listStylePosition != null)
+		listStylePosition.setInfo(line, source);
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @FIXME
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssListStyleConstants.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,73 @@
+//
+// $Id: CssListStyleConstants.java,v 1.4 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+/**
+ * @version $Revision: 1.4 $
+ */
+public interface CssListStyleConstants {
+
+    public static String[] LISTSTYLETYPE = {
+	"box", "check", "circle", "diamond", "disc", "hyphen", "square",
+	"armenian", "cjk-ideographic", "ethiopic-numeric", "georgian", "hebrew",
+	"japanese-formal", "japanese-informal", "lower-armenian", "lower-roman",
+	"simp-chinese-formal", "simp-chinese-informal", "syriac", "tamil",
+	"trad-chinese-formal", "trad-chinese-informal", "upper-armenian",
+	"upper-roman", "arabic-indic", "binary", "bengali", "cambodian",
+	"decimal", "decimal-leading-zero", "devanagari", "gujarati", "gurmukhi",
+	"kannada", "khmer", "lao", "lower-hexadecimal", "malayalam",
+	"mongolian", "myanmar", "octal", "oriya", "persian", "telugu",
+	"tibetan", "thai", "upper-hexadecimal", "urdu",	"afar", "amharic",
+	"amharic-abegede", "cjk-earthly-branch", "cjk-heavenly-stem", "ethiopic",
+	"ethiopic-abegede", "ethiopic-abegede-am-et", "ethiopic-abegede-gez",
+	"ethiopic-abegede-ti-er", "ethiopic-abegede-ti-et",
+	"ethiopic-halehame-aa-er", "ethiopic-halehame-aa-et",
+	"ethiopic-halehame-am-et", "ethiopic-halehame-gez",
+	"ethiopic-halehame-om-et", "ethiopic-halehame-sid-et",
+	"ethiopic-halehame-so-et", "ethiopic-halehame-ti-er",
+	"ethiopic-halehame-ti-et", "ethiopic-halehame-tig", "hangul",
+	"hangul-consonant", "hiragana", "hiragana-iroha", "katakana",
+	"katakana-iroha", "lower-alpha", "lower-greek", "lower-norwegian",
+	"lower-latin", "oromo", "sidama", "somali", "tigre", "tigrinya-er",
+	"tigrinya-er-abegede", "tigrinya-et", "tigrinya-et-abegede",
+	"upper-alpha", "upper-greek", "upper-norwegian", "upper-latin",
+	"asterisks", "footnotes", "circled-decimal", "circled-lower-latin",
+	"circled-upper-latin", "dotted-decimal", "double-circled-decimal",
+	"filled-circled-decimal", "parenthesised-decimal",
+	"parenthesised-lower-latin", "normal", "none", "inherit"
+    };
+
+    public static String[] LISTSTYLETYPECSS1 = {
+	"disc", "circle", "square", "decimal",
+	"lower-roman", "upper-roman",
+	"lower-alpha", "upper-alpha",
+	"none"
+    };
+
+    public static String[] LISTSTYLETYPECSS2 = {
+	"disc", "circle", "square", "decimal", "decimal-leading-zero",
+	"lower-roman", "upper-roman", "lower-greek", "lower-alpha",
+	"lower-latin", "upper-alpha", "upper-latin", "hebrew", "armenian",
+	"georgian", "cjk-ideographic", "hiragana", "katakana", "hiragana-iroha",
+	"katakana-iroha", "none", "inherit"
+    };
+
+    public static String[] LISTSTYLETYPETV = {
+	"disc", "circle", "square", "decimal",
+	"lower-roman", "upper-roman",
+	"lower-alpha", "upper-alpha",
+	"none", "lower-latin", "upper-latin", "inherit"
+	};
+
+    /* inherit is not accepted by CSS1, but is filtered out automatically
+     by the parser, now LISTSTYLETYPECSS1 can be used by the mobile profile
+     which does accept the same values as the CSS1 property + inherit */
+
+    //for CSS1 inherit is already corriged by the parser itself
+  public static String[] LISTSTYLEPOSITION = {
+      "outside", "inside", "inherit" };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssListStyleImage.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,158 @@
+//
+// $Id: CssListStyleImage.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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.CssURL;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *      &nbsp;&nbsp; 'list-style-image'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;url&gt; | none<BR>
+ *   <EM>Initial:</EM> none<BR>
+ *   <EM>Applies to:</EM> elements with 'display' value 'list-item'<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   This property sets the image that will be used as the list-item marker. When
+ *   the image is available it will replace the marker set with the 'list-style-type'
+ *   marker.
+ *   <PRE>
+ *   UL { list-style-image: url(http://png.com/ellipse.png) }
+ * </PRE>
+ * @version $Revision: 1.3 $
+ */
+public class CssListStyleImage extends CssProperty {
+
+    CssValue value;
+
+    private static CssIdent none = new CssIdent("none");
+
+    /**
+     * Create a new CssListStyleImage
+     */
+    public CssListStyleImage() {
+	value = none;
+    }
+
+    /**
+     * Create a new CssListStyleImage
+     *
+     * @param value The value for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssListStyleImage(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	if (val instanceof CssURL) {
+	    value = val;
+	    expression.next();
+ 	} else if (val.equals(none)) {
+	    value = none;
+	    expression.next();
+ 	} else if (val.equals(inherit)) {
+	    value = inherit;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", val, getPropertyName(), ac);
+	}
+    }
+
+    public CssListStyleImage(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "list-style-image";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssListStyle cssListStyle = ((Css1Style) style).cssListStyle;
+	if (cssListStyle.listStyleImage != null)
+	    style.addRedefinitionWarning(ac, this);
+	cssListStyle.listStyleImage = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getListStyleImage();
+	} else {
+	    return ((Css1Style) style).cssListStyle.listStyleImage;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssListStyleImage &&
+		value.equals(((CssListStyleImage) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == none;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssListStyleImageCSS1.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,158 @@
+//
+// $Id: CssListStyleImageCSS1.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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.CssURL;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *      &nbsp;&nbsp; 'list-style-image'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;url&gt; | none<BR>
+ *   <EM>Initial:</EM> none<BR>
+ *   <EM>Applies to:</EM> elements with 'display' value 'list-item'<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   This property sets the image that will be used as the list-item marker. When
+ *   the image is available it will replace the marker set with the 'list-style-type'
+ *   marker.
+ *   <PRE>
+ *   UL { list-style-image: url(http://png.com/ellipse.png) }
+ * </PRE>
+ * @version $Revision: 1.3 $
+ */
+public class CssListStyleImageCSS1 extends CssProperty {
+
+    CssValue value;
+
+    private static CssIdent none = new CssIdent("none");
+
+    /**
+     * Create a new CssListStyleImageCSS1
+     */
+    public CssListStyleImageCSS1() {
+	value = none;
+    }
+
+    /**
+     * Create a new CssListStyleImageCSS1
+     *
+     * @param value The value for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssListStyleImageCSS1(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	if (val instanceof CssURL) {
+	    value = val;
+	    expression.next();
+ 	} else if (val.equals(none)) {
+	    value = none;
+	    expression.next();
+ 	} else if (val.equals(inherit)) {
+	    value = inherit;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", val, getPropertyName(), ac);
+	}
+    }
+
+    public CssListStyleImageCSS1(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "list-style-image";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssListStyleCSS1 cssListStyle = ((Css1Style) style).cssListStyleCSS1;
+	if (cssListStyle.listStyleImage != null)
+	    style.addRedefinitionWarning(ac, this);
+	cssListStyle.listStyleImage = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getListStyleImageCSS1();
+	} else {
+	    return ((Css1Style) style).cssListStyleCSS1.listStyleImage;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssListStyleImageCSS1 &&
+		value.equals(((CssListStyleImageCSS1) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == none;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssListStyleImageCSS2.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,158 @@
+//
+// $Id: CssListStyleImageCSS2.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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.CssURL;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *      &nbsp;&nbsp; 'list-style-image'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;url&gt; | none<BR>
+ *   <EM>Initial:</EM> none<BR>
+ *   <EM>Applies to:</EM> elements with 'display' value 'list-item'<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   This property sets the image that will be used as the list-item marker. When
+ *   the image is available it will replace the marker set with the 'list-style-type'
+ *   marker.
+ *   <PRE>
+ *   UL { list-style-image: url(http://png.com/ellipse.png) }
+ * </PRE>
+ * @version $Revision: 1.3 $
+ */
+public class CssListStyleImageCSS2 extends CssProperty {
+
+    CssValue value;
+
+    private static CssIdent none = new CssIdent("none");
+
+    /**
+     * Create a new CssListStyleImageCSS2
+     */
+    public CssListStyleImageCSS2() {
+	value = none;
+    }
+
+    /**
+     * Create a new CssListStyleImageCSS2
+     *
+     * @param value The value for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssListStyleImageCSS2(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	if (val instanceof CssURL) {
+	    value = val;
+	    expression.next();
+ 	} else if (val.equals(none)) {
+	    value = none;
+	    expression.next();
+ 	} else if (val.equals(inherit)) {
+	    value = inherit;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", val, getPropertyName(), ac);
+	}
+    }
+
+    public CssListStyleImageCSS2(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "list-style-image";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssListStyleCSS2 cssListStyle = ((Css1Style) style).cssListStyleCSS2;
+	if (cssListStyle.listStyleImage != null)
+	    style.addRedefinitionWarning(ac, this);
+	cssListStyle.listStyleImage = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getListStyleImageCSS2();
+	} else {
+	    return ((Css1Style) style).cssListStyleCSS2.listStyleImage;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssListStyleImageCSS2 &&
+		value.equals(((CssListStyleImageCSS2) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == none;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssListStylePosition.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,158 @@
+//
+// $Id: CssListStylePosition.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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;
+
+/**
+ *   <H4>
+ *      &nbsp;&nbsp; 'list-style-position'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> inside | outside<BR>
+ *   <EM>Initial:</EM> outside<BR>
+ *   <EM>Applies to:</EM> elements with 'display' value 'list-item'<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   The value of 'list-style-position' determines how the list-item marker is
+ *   drawn with regard to the content. For a formatting example see
+ * @version $Revision: 1.3 $
+ */
+public class CssListStylePosition extends CssProperty
+    implements CssListStyleConstants {
+
+    int value;
+
+    /**
+     * Create a new CssListStylePosition
+     */
+    public CssListStylePosition() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new CssListStylePosition
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssListStylePosition(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	if ( val instanceof CssIdent) {
+	    int hash = val.hashCode();
+	    for (int i = 0; i < LISTSTYLEPOSITION.length; i++)
+		if (hash_values[i] == hash) {
+		    value = i;
+		    expression.next();
+		    return;
+		}
+	} else {
+	    throw new InvalidParamException("value", val, getPropertyName(), ac);
+	}
+    }
+    public CssListStylePosition(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return LISTSTYLEPOSITION[value];
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "list-style-position";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == (LISTSTYLEPOSITION.length - 1);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return LISTSTYLEPOSITION[value];
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssListStyle cssListStyle = ((Css1Style) style).cssListStyle;
+	if (cssListStyle.listStylePosition != null)
+	    style.addRedefinitionWarning(ac, this);
+	cssListStyle.listStylePosition = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getListStylePosition();
+	} else {
+	    return ((Css1Style) style).cssListStyle.listStylePosition;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssListStylePosition &&
+		((CssListStylePosition) property).value == value);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == 0;
+    }
+
+    private static int[] hash_values;
+
+    static {
+	hash_values = new int[LISTSTYLEPOSITION.length];
+	for (int i = 0; i < LISTSTYLEPOSITION.length; i++)
+	    hash_values[i] = LISTSTYLEPOSITION[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssListStylePositionCSS1.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,158 @@
+//
+// $Id: CssListStylePositionCSS1.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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;
+
+/**
+ *   <H4>
+ *      &nbsp;&nbsp; 'list-style-position'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> inside | outside<BR>
+ *   <EM>Initial:</EM> outside<BR>
+ *   <EM>Applies to:</EM> elements with 'display' value 'list-item'<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   The value of 'list-style-position' determines how the list-item marker is
+ *   drawn with regard to the content. For a formatting example see
+ * @version $Revision: 1.3 $
+ */
+public class CssListStylePositionCSS1 extends CssProperty
+    implements CssListStyleConstants {
+
+    int value;
+
+    /**
+     * Create a new CssListStylePositionCSS1
+     */
+    public CssListStylePositionCSS1() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new CssListStylePositionCSS1
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssListStylePositionCSS1(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	if ( val instanceof CssIdent) {
+	    int hash = val.hashCode();
+	    for (int i = 0; i < LISTSTYLEPOSITION.length; i++)
+		if (hash_values[i] == hash) {
+		    value = i;
+		    expression.next();
+		    return;
+		}
+	} else {
+	    throw new InvalidParamException("value", val, getPropertyName(), ac);
+	}
+    }
+
+    public CssListStylePositionCSS1(ApplContext ac, CssExpression expression)
+    	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return LISTSTYLEPOSITION[value];
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "list-style-position";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == (LISTSTYLEPOSITION.length - 1);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return LISTSTYLEPOSITION[value];
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssListStyleCSS1 cssListStyle = ((Css1Style) style).cssListStyleCSS1;
+	if (cssListStyle.listStylePosition != null)
+	    style.addRedefinitionWarning(ac, this);
+	cssListStyle.listStylePosition = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getListStylePositionCSS1();
+	} else {
+	    return ((Css1Style) style).cssListStyleCSS1.listStylePosition;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssListStylePositionCSS1 &&
+		((CssListStylePositionCSS1) property).value == value);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == 0;
+    }
+
+    private static int[] hash_values;
+
+    static {
+	hash_values = new int[LISTSTYLEPOSITION.length];
+	for (int i = 0; i < LISTSTYLEPOSITION.length; i++)
+	    hash_values[i] = LISTSTYLEPOSITION[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssListStylePositionCSS2.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,158 @@
+//
+// $Id: CssListStylePositionCSS2.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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;
+
+/**
+ *   <H4>
+ *      &nbsp;&nbsp; 'list-style-position'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> inside | outside<BR>
+ *   <EM>Initial:</EM> outside<BR>
+ *   <EM>Applies to:</EM> elements with 'display' value 'list-item'<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   The value of 'list-style-position' determines how the list-item marker is
+ *   drawn with regard to the content. For a formatting example see
+ * @version $Revision: 1.3 $
+ */
+public class CssListStylePositionCSS2 extends CssProperty
+    implements CssListStyleConstants {
+
+    int value;
+
+    /**
+     * Create a new CssListStylePositionCSS2
+     */
+    public CssListStylePositionCSS2() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new CssListStylePositionCSS2
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssListStylePositionCSS2(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	if ( val instanceof CssIdent) {
+	    int hash = val.hashCode();
+	    for (int i = 0; i < LISTSTYLEPOSITION.length; i++) {
+		if (hash_values[i] == hash) {
+		    value = i;
+		    expression.next();
+		    return;
+		}
+	    }
+	}
+	throw new InvalidParamException("value", val, getPropertyName(), ac);
+    }
+
+    public CssListStylePositionCSS2(ApplContext ac, CssExpression expression)
+    	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return LISTSTYLEPOSITION[value];
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "list-style-position";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == (LISTSTYLEPOSITION.length - 1);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return LISTSTYLEPOSITION[value];
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssListStyleCSS2 cssListStyle = ((Css1Style) style).cssListStyleCSS2;
+	if (cssListStyle.listStylePosition != null)
+	    style.addRedefinitionWarning(ac, this);
+	cssListStyle.listStylePosition = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getListStylePositionCSS2();
+	} else {
+	    return ((Css1Style) style).cssListStyleCSS2.listStylePosition;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssListStylePositionCSS2 &&
+		((CssListStylePositionCSS2) property).value == value);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == 0;
+    }
+
+    private static int[] hash_values;
+
+    static {
+	hash_values = new int[LISTSTYLEPOSITION.length];
+	for (int i = 0; i < LISTSTYLEPOSITION.length; i++)
+	    hash_values[i] = LISTSTYLEPOSITION[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssListStyleTV.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,355 @@
+//
+// $Id: CssListStyleTV.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *      &nbsp;&nbsp; 'list-style'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;keyword&gt; || &lt;position&gt; || &lt;url&gt;<BR>
+ *   <EM>Initial:</EM> not defined for shorthand properties<BR>
+ *   <EM>Applies to:</EM> elements with 'display' value 'list-item'<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   The 'list-style' property is a shorthand notation for setting the three
+ *   properties 'list-style-type', 'list-style-image' and 'list-style-position'
+ *   at the same place in the style sheet.
+ *   <PRE>
+ *   UL { list-style: upper-roman inside }
+ *   UL UL { list-style: circle outside }
+ *   LI.square { list-style: square }
+ * </PRE>
+ *   <P>
+ *   Setting 'list-style' directly on 'LI' elements can have unexpected results.
+ *   Consider:
+ *   <PRE>
+ *   &lt;STYLE TYPE="text/css"&gt;
+ *     OL.alpha LI  { list-style: lower-alpha }
+ *     UL LI        { list-style: disc }
+ *   &lt;/STYLE&gt;
+ *   &lt;BODY&gt;
+ *     &lt;OL CLASS=alpha&gt;
+ *       &lt;LI&gt;level 1
+ *       &lt;UL&gt;
+ *          &lt;LI&gt;level 2
+ *       &lt;/UL&gt;
+ *     &lt;/OL&gt;
+ *   &lt;/BODY&gt;
+ * </PRE>
+ *   <P> Since the specificity (as defined in the <A
+ *   HREF="#cascading-order">cascading order</A>) is higher for the first rule
+ *   in the style sheet in the example above, it will override the second rule
+ *   on all 'LI' elements and only 'lower-alpha' list styles will be used. It is
+ *   therefore recommended to set 'list-style' only on the list type elements:
+ *   <PRE>
+ *   OL.alpha  { list-style: lower-alpha }
+ *   UL        { list-style: disc }
+ * </PRE>
+ *   <P> In the above example, inheritance will transfer the 'list-style' values
+ *   from 'OL' and 'UL' elements to 'LI' elements.
+ *   <P>
+ *   A URL value can be combined with any other value:
+ *   <PRE>
+ *   UL { list-style: url(http://png.com/ellipse.png) disc }
+ * </PRE>
+ *   <P> In the example above, the 'disc' will be used when the image is
+ *   unavailable.
+ *
+ * @version $Revision: 1.3 $
+ */
+public class CssListStyleTV extends CssProperty implements CssOperator {
+
+    CssListStyleTypeTV listStyleType;
+    CssListStyleImageCSS2 listStyleImage;
+    CssListStylePositionCSS2 listStylePosition;
+
+    boolean inheritedValue;
+
+    /**
+     * Create a new CssListStyleTV
+     */
+    public CssListStyleTV() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new CssListStyleTV
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssListStyleTV(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 3) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	char op = SPACE;
+	boolean find = true;
+
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    if(expression.getCount() > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    inheritedValue = true;
+	    expression.next();
+	    return;
+	}
+
+	while (find) {
+	    find = false;
+	    val = expression.getValue();
+	    op = expression.getOperator();
+
+	    if(val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+
+	    if ((listStyleType == null)
+		&& (val != null)) {
+		try {
+		    listStyleType = new CssListStyleTypeTV(ac, expression);
+		    find = true;
+		} catch (InvalidParamException e) {
+		}
+	    }
+	    if (!find
+		&& (listStyleImage == null)
+		&& (val != null)) {
+		try {
+		    listStyleImage = new CssListStyleImageCSS2(ac, expression);
+		    find = true;
+		} catch (InvalidParamException e) {
+		}
+	    }
+	    if (!find && (val != null) && (listStylePosition == null)) {
+		listStylePosition = new CssListStylePositionCSS2(ac, expression);
+		find = true;
+	    }
+	    if (op != SPACE) {
+		throw new InvalidParamException("operator",
+						((new Character(op)).toString()),
+						ac);
+	    }
+	}
+	/*
+	if (listStyleType == null) {
+	    listStyleType = new CssListStyleTypeTV();
+	}
+
+	if (listStyleImage == null) {
+	    listStyleImage = new CssListStyleImageCSS2();
+	}
+
+	if (listStylePosition == null) {
+	    listStylePosition = new CssListStylePositionCSS2();
+	}
+	*/
+    }
+
+    CssListStyleTV(ApplContext ac, CssExpression expression)
+    	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return listStyleType;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "list-style";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return inheritedValue;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (inheritedValue) {
+	    return inherit.toString();
+	} else {
+	    String ret = "";
+	    if(listStyleType != null) {
+		ret = listStyleType.toString();
+	    }
+	    if (listStyleImage != null &&!listStyleImage.isDefault()) {
+		ret += " " + listStyleImage;
+	    }
+	    if (listStyleImage != null && !listStylePosition.isDefault()) {
+		ret += " " + listStylePosition;
+	    }
+	    return ret.trim();
+	}
+    }
+
+
+
+    /**
+     * Set this property to be important.
+     * Overrides this method for a macro
+     */
+    public void setImportant() {
+	if (!inheritedValue) {
+	    if(listStyleType != null)
+		listStyleType.important = true;
+	    if(listStyleImage != null)
+		listStyleImage.important = true;
+	    if(listStylePosition != null)
+		listStylePosition.important = true;
+	}
+    }
+
+    /**
+     * Returns true if this property is important.
+     * Overrides this method for a macro
+     */
+    public boolean getImportant() {
+	return ((listStyleType == null || listStyleType.important) &&
+		(listStyleImage == null || listStyleImage.important) &&
+		(listStylePosition == null || listStylePosition.important));
+    }
+
+    /**
+     * Print this property.
+     *
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	if (inheritedValue) {
+	    printer.print(this);
+	} else if ((listStyleType != null && listStyleImage != null &&
+		    listStylePosition != null) &&
+		   (getImportant() ||
+		    (!listStyleType.important &&
+		     !listStyleImage.important &&
+		     !listStylePosition.important))) {
+	    printer.print(this);
+	} else {
+	    if (listStyleType != null) {
+		listStyleType.print(printer);
+	    }
+	    if (listStyleImage != null) {
+		listStyleImage.print(printer);
+	    }
+	    if (listStylePosition != null) {
+		listStylePosition.print(printer);
+	    }
+	}
+
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors selector) {
+	super.setSelectors(selector);
+	if (listStyleType != null) {
+	    listStyleType.setSelectors(selector);
+	}
+	if (listStyleImage != null) {
+	    listStyleImage.setSelectors(selector);
+	}
+	if (listStylePosition != null) {
+	    listStylePosition.setSelectors(selector);
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (!inheritedValue) {
+	    if(listStyleType != null)
+		listStyleType.addToStyle(ac, style);
+	    if(listStyleImage != null)
+		listStyleImage.addToStyle(ac, style);
+	    if(listStylePosition != null)
+		listStylePosition.addToStyle(ac, style);
+	} else {
+	    ((Css1Style) style).cssListStyleTV.inheritedValue = true;
+	}
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getListStyleTV();
+	} else {
+	    return ((Css1Style) style).cssListStyleTV;
+	}
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	super.setInfo(line, source);
+	if (!inheritedValue) {
+	    if(listStyleType != null)
+		listStyleType.setInfo(line, source);
+	    if(listStyleImage != null)
+		listStyleImage.setInfo(line, source);
+	    if(listStylePosition != null)
+		listStylePosition.setInfo(line, source);
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @FIXME
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssListStyleType.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,174 @@
+//
+// $Id: CssListStyleType.java,v 1.3 2005-09-14 15:14:31 ylafon Exp $
+// From Philippe Le Hegaret (Philippe.Le_Hegaret@sophia.inria.fr)
+// Updated September 14th 2000 Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT MIT and INRIA, 1997.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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;
+
+/**
+ *   <H4>
+ *      &nbsp;&nbsp; 'list-style-type'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> disc | circle | square | decimal | lower-roman |
+ *   upper-roman | lower-alpha | upper-alpha | none
+ *   check | diamond | menu-check | radio | radio-on | radio-off | radio-ind |
+ *   enabled-radio-on | enabled-radio-off | enabled-radio-ind |
+ *   disabled-radio-on | disabled-radio-off | disabled-radio-ind |
+ *   active-radio-off | active-radio-on | active-radio-ind |
+ *   hover-radio-off | hover-radio-on | hover-radio-ind |
+ *   checkbox | checkbox-on | checkbox-off | checkbox-ind |
+ *   enabled-checkbox-on | enabled-checkbox-off | enabled-checkbox-ind |
+ *   disabled-checkbox-on | disabled-checkbox-off | disabled-checkbox-ind |
+ *   active-checkbox-on | active-checkbox-off | active-checkbox-ind |
+ *   hover-checkbox-on | hover-checkbox-off | hover-checkbox-ind
+ <BR>
+ *   <EM>Initial:</EM> disc<BR>
+ *   <EM>Applies to:</EM> elements with 'display' value 'list-item'<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P> This property is used to determine the appearance of the list-item
+ *   marker if 'list-style-image' is 'none' or if the image pointed to by the
+ *   URL cannot be displayed.
+ *   <PRE>
+ *   OL { list-style-type: decimal }       /* 1 2 3 4 5 etc. * /
+					    *   OL { list-style-type: lower-alpha }   /* a b c d e etc. * /
+										       *   OL { list-style-type: lower-roman }   /* i ii iii iv v etc. * /
+																  *   </PRE>
+																  * @version $Revision: 1.3 $ */
+public class CssListStyleType extends CssProperty
+    implements CssListStyleConstants {
+
+    int value;
+
+    private static int[] hash_values;
+
+    /**
+     * Create a new CssListStyleType
+     */
+    public CssListStyleType() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new CssListStyleType
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssListStyleType(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	if ( val instanceof CssIdent) {
+	    int hash = val.hashCode();
+	    for (int i = 0; i < LISTSTYLETYPE.length; i++)
+		if (hash_values[i] == hash) {
+		    value = i;
+		    expression.next();
+		    return;
+		}
+	}
+
+	throw new InvalidParamException("value", val, getPropertyName(), ac);
+    }
+
+    public CssListStyleType(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return LISTSTYLETYPE[value];
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "list-style-type";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == (LISTSTYLETYPE.length - 1);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return LISTSTYLETYPE[value];
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssListStyle cssListStyle = ((Css1Style) style).cssListStyle;
+	if (cssListStyle.listStyleType != null)
+	    style.addRedefinitionWarning(ac, this);
+	cssListStyle.listStyleType = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getListStyleType();
+	} else {
+	    return ((Css1Style) style).cssListStyle.listStyleType;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssListStyleType &&
+		((CssListStyleType) property).value == value);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == 0;
+    }
+
+    static {
+	hash_values = new int[LISTSTYLETYPE.length];
+	for (int i = 0; i < LISTSTYLETYPE.length; i++)
+	    hash_values[i] = LISTSTYLETYPE[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssListStyleTypeCSS1.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,162 @@
+//
+// $Id: CssListStyleTypeCSS1.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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;
+
+/**
+ *   <H4>
+ *      &nbsp;&nbsp; 'list-style-type'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> disc | circle | square | decimal | lower-roman | upper-roman
+ *   | lower-alpha | upper-alpha | none<BR>
+ *   <EM>Initial:</EM> disc<BR>
+ *   <EM>Applies to:</EM> elements with 'display' value 'list-item'<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P> This property is used to determine the appearance of the list-item
+ *   marker if 'list-style-image' is 'none' or if the image pointed to by the
+ *   URL cannot be displayed.
+ *   <PRE>
+ *   OL { list-style-type: decimal }       /* 1 2 3 4 5 etc. * /
+					    *   OL { list-style-type: lower-alpha }   /* a b c d e etc. * /
+										       *   OL { list-style-type: lower-roman }   /* i ii iii iv v etc. * /
+																  *   </PRE>
+																  * @version $Revision: 1.3 $ */
+public class CssListStyleTypeCSS1 extends CssProperty
+    implements CssListStyleConstants {
+
+    int value;
+
+    private static int[] hash_values;
+
+    /**
+     * Create a new CssListStyleTypeCSS1
+     */
+    public CssListStyleTypeCSS1() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new CssListStyleTypeCSS1
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssListStyleTypeCSS1(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	if ( val instanceof CssIdent) {
+	    int hash = val.hashCode();
+	    for (int i = 0; i < LISTSTYLETYPECSS1.length; i++)
+		if (hash_values[i] == hash) {
+		    value = i;
+		    expression.next();
+		    return;
+		}
+	}
+
+	throw new InvalidParamException("value", val, getPropertyName(), ac);
+    }
+
+    public CssListStyleTypeCSS1(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return LISTSTYLETYPECSS1[value];
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "list-style-type";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == (LISTSTYLETYPECSS1.length - 1);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return LISTSTYLETYPECSS1[value];
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssListStyleCSS1 cssListStyle = ((Css1Style) style).cssListStyleCSS1;
+	if (cssListStyle.listStyleType != null)
+	    style.addRedefinitionWarning(ac, this);
+	cssListStyle.listStyleType = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getListStyleTypeCSS1();
+	} else {
+	    return ((Css1Style) style).cssListStyleCSS1.listStyleType;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssListStyleTypeCSS1 &&
+		((CssListStyleTypeCSS1) property).value == value);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == 0;
+    }
+
+    static {
+	hash_values = new int[LISTSTYLETYPECSS1.length];
+	for (int i = 0; i < LISTSTYLETYPECSS1.length; i++)
+	    hash_values[i] = LISTSTYLETYPECSS1[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssListStyleTypeCSS2.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,176 @@
+//
+// $Id: CssListStyleTypeCSS2.java,v 1.4 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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;
+
+/**
+ *   <H4>
+ *      &nbsp;&nbsp; 'list-style-type'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> disc | circle | square | decimal | lower-roman | upper-roman
+ *   | lower-alpha | upper-alpha | none<BR>
+ *   <EM>Initial:</EM> disc<BR>
+ *   <EM>Applies to:</EM> elements with 'display' value 'list-item'<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P> This property is used to determine the appearance of the list-item
+ *   marker if 'list-style-image' is 'none' or if the image pointed to by the
+ *   URL cannot be displayed.
+ *   <PRE>
+ *   OL { list-style-type: decimal }       /* 1 2 3 4 5 etc. * /
+					    *   OL { list-style-type: lower-alpha }   /* a b c d e etc. * /
+										       *   OL { list-style-type: lower-roman }   /* i ii iii iv v etc. * /
+																  *   </PRE>
+																  * @version $Revision: 1.4 $ */
+public class CssListStyleTypeCSS2 extends CssProperty
+    implements CssListStyleConstants {
+
+    int value;
+
+    private static int[] hash_values;
+
+    /**
+     * Create a new CssListStyleTypeCSS2
+     */
+    public CssListStyleTypeCSS2() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new CssListStyleTypeCSS2
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssListStyleTypeCSS2(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	if ( val instanceof CssIdent) {
+	    int hash = val.hashCode();
+	    for (int i = 0; i < LISTSTYLETYPECSS2.length; i++)
+		if (hash_values[i] == hash) {
+		    value = i;
+		    expression.next();
+		    return;
+		}
+	}
+
+	throw new InvalidParamException("value", val, getPropertyName(), ac);
+    }
+
+    public CssListStyleTypeCSS2(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * @return Returns the value.
+     */
+    public int getValue() {
+        return value;
+    }
+
+    /**
+     * @param value The value to set.
+     */
+    public void setValue(int value) {
+        this.value = value;
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return LISTSTYLETYPECSS2[value];
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "list-style-type";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == (LISTSTYLETYPECSS2.length - 1);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return LISTSTYLETYPECSS2[value];
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssListStyleCSS2 cssListStyle = ((Css1Style) style).cssListStyleCSS2;
+	if (cssListStyle.listStyleType != null)
+	    style.addRedefinitionWarning(ac, this);
+	cssListStyle.listStyleType = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getListStyleTypeCSS2();
+	} else {
+	    return ((Css1Style) style).cssListStyleCSS2.listStyleType;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssListStyleTypeCSS2 &&
+		((CssListStyleTypeCSS2) property).value == value);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == 0;
+    }
+
+    static {
+	hash_values = new int[LISTSTYLETYPECSS2.length];
+	for (int i = 0; i < LISTSTYLETYPECSS2.length; i++)
+	    hash_values[i] = LISTSTYLETYPECSS2[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssListStyleTypeTV.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,161 @@
+//
+// $Id: CssListStyleTypeTV.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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;
+
+/**
+ *   <H4>
+ *      &nbsp;&nbsp; 'list-style-type'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> disc | circle | square | decimal | lower-roman | upper-roman
+ *   | lower-alpha | upper-alpha | none<BR>
+ *   <EM>Initial:</EM> disc<BR>
+ *   <EM>Applies to:</EM> elements with 'display' value 'list-item'<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P> This property is used to determine the appearance of the list-item
+ *   marker if 'list-style-image' is 'none' or if the image pointed to by the
+ *   URL cannot be displayed.
+ *   <PRE>
+ *   OL { list-style-type: decimal }       /* 1 2 3 4 5 etc. * /
+					    *   OL { list-style-type: lower-alpha }   /* a b c d e etc. * /
+										       *   OL { list-style-type: lower-roman }   /* i ii iii iv v etc. * /
+																  *   </PRE>
+																  * @version $Revision: 1.3 $ */
+public class CssListStyleTypeTV extends CssProperty
+    implements CssListStyleConstants {
+
+    int value;
+
+    private static int[] hash_values;
+
+    /**
+     * Create a new CssListStyleTypeTV
+     */
+    public CssListStyleTypeTV() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new CssListStyleTypeTV
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssListStyleTypeTV(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	if ( val instanceof CssIdent) {
+	    int hash = val.hashCode();
+	    for (int i = 0; i < LISTSTYLETYPETV.length; i++)
+		if (hash_values[i] == hash) {
+		    value = i;
+		    expression.next();
+		    return;
+		}
+	}
+	throw new InvalidParamException("value", val, getPropertyName(), ac);
+    }
+
+    public CssListStyleTypeTV(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return LISTSTYLETYPETV[value];
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "list-style-type";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == (LISTSTYLETYPETV.length - 1);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return LISTSTYLETYPETV[value];
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	CssListStyleTV cssListStyle = ((Css1Style) style).cssListStyleTV;
+	if (cssListStyle.listStyleType != null)
+	    style.addRedefinitionWarning(ac, this);
+	cssListStyle.listStyleType = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getListStyleTypeTV();
+	} else {
+	    return ((Css1Style) style).cssListStyleTV.listStyleType;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssListStyleTypeTV &&
+		((CssListStyleTypeTV) property).value == value);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == 0;
+    }
+
+    static {
+	hash_values = new int[LISTSTYLETYPETV.length];
+	for (int i = 0; i < LISTSTYLETYPETV.length; i++)
+	    hash_values[i] = LISTSTYLETYPETV[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssMargin.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,397 @@
+//
+// $Id: CssMargin.java,v 1.4 2006-04-19 11:28:05 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssOperator;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'margin'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> [ &lt;length&gt; | &lt;percentage&gt; | auto ]{1,4} <BR>
+ *   <EM>Initial:</EM> not defined for shorthand properties<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> refer to parent element's width<BR>
+ *   <P>
+ *   The 'margin' property is a shorthand property for setting 'margin-top',
+ *   'margin-right' 'margin-bottom' and 'margin-left' at the same place in the
+ *   style sheet.
+ *   <P>
+ *   If four length values are specified they apply to top, right, bottom and
+ *   left respectively. If there is only one value, it applies to all sides, if
+ *   there are two or three, the missing values are taken from the opposite side.
+ *   <PRE>
+ *   BODY { margin: 2em } / * all margins set to 2em * /
+ *   BODY { margin: 1em 2em } / * top &amp; bottom = 1em, right &amp; left = 2em * /
+ *   BODY { margin: 1em 2em 3em } / * top=1em, right=2em, bottom=3em, left=2em * /
+ * </PRE>
+ *   <P>
+ *   The last rule of the example above is equivalent to the example below:
+ *   <PRE>
+ *   BODY {
+ *     margin-top: 1em;
+ *     margin-right: 2em;
+ *     margin-bottom: 3em;
+ *     margin-left: 2em;        / * copied from opposite side (right) * /
+ *   }
+ * </PRE>
+ *   <P>
+ *   Negative margin values are allowed, but there may be implementation-specific
+ *   limits.
+ * @version $Revision: 1.4 $
+ */
+public class CssMargin extends CssProperty implements CssOperator {
+
+    CssMarginTop top;
+    CssMarginBottom bottom;
+    CssMarginRight right;
+    CssMarginLeft left;
+
+    boolean inheritedValue;
+
+    /**
+     * Create a new CssMargin
+     */
+    public CssMargin() {
+    }
+
+    /**
+     * Create a new CssMargin
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssMargin(ApplContext ac, CssExpression expression, boolean check)
+	throws InvalidParamException {
+
+	//CssValue val = expression.getValue();
+	setByUser();
+
+	/*if (val.equals(inherit)) {
+	    inheritedValue = true;
+	    top = new CssMarginTop();
+	    top.value = inherit;
+	    bottom = new CssMarginBottom();
+	    bottom.value = inherit;
+	    right = new CssMarginRight();
+	    right.value = inherit;
+	    left = new CssMarginLeft();
+	    left.value = inherit;
+	}*/
+	switch (expression.getCount()) {
+	case 1:
+	    top = new CssMarginTop(ac, expression);
+	    /*bottom = new CssMarginBottom(top);
+	    right = new CssMarginRight(top);
+	    left = new CssMarginLeft(top);*/
+	    break;
+	case 2:
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(expression.getOperator())).toString()),
+			ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    top = new CssMarginTop(ac, expression);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    right = new CssMarginRight(ac, expression);
+	    /*bottom = new CssMarginBottom(top);
+	    left = new CssMarginLeft(right);*/
+	    break;
+	case 3:
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(expression.getOperator())).toString()),
+			ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    top = new CssMarginTop(ac, expression);
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(expression.getOperator())).toString()),
+			ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    right = new CssMarginRight(ac, expression);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    bottom = new CssMarginBottom(ac, expression);
+	    //left = new CssMarginLeft(right);
+	    break;
+	case 4:
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(expression.getOperator())).toString()),
+			ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    top = new CssMarginTop(ac, expression);
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(expression.getOperator())).toString()),
+			ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    right = new CssMarginRight(ac, expression);
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(expression.getOperator())).toString()),
+			ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    bottom = new CssMarginBottom(ac, expression);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    left = new CssMarginLeft(ac, expression);
+	    break;
+	default:
+	    if(check)
+		throw new InvalidParamException("unrecognize", ac);
+	}
+    }
+
+    public CssMargin(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return top;
+    }
+
+    /**
+     * Returns the top property
+     */
+    public CssMarginTop getTop() {
+	return top;
+    }
+
+    /**
+     * Returns the right property
+     */
+    public CssMarginRight getRight() {
+	return right;
+    }
+
+    /**
+     * Returns the bottom property
+     */
+    public CssMarginBottom getBottom() {
+	return bottom;
+    }
+
+    /**
+     * Returns the left property
+     */
+    public CssMarginLeft getLeft() {
+	return left;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "margin";
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (inheritedValue) {
+	    return inherit.toString();
+	}
+        String result = "";
+        // top should never be null
+        if(top != null) result += top;
+        if(right != null) result += " " + right;
+        if(bottom != null) result += " " + bottom;
+        if(left != null) result += " " + left;
+        return result;
+	/*if (right.value.equals(left.value)) {
+	    if (top.value.equals(bottom.value)) {
+		if (top.value.equals(right.value)) {
+		    return top.toString();
+		} else {
+		    return top + " " + right;
+		}
+	    } else {
+		return top + " " + right + " " + bottom;
+	    }
+	} else {
+	    return top + " " + right + " " + bottom + " " + left;
+	}*/
+    }
+
+    /**
+     * Set this property to be important.
+     * Overrides this method for a macro
+     */
+    public void setImportant() {
+	if(top != null) {
+	    top.important = true;
+	}
+	if(right != null) {
+	    right.important = true;
+	}
+	if(bottom != null) {
+	    bottom.important = true;
+	}
+	if(left != null) {
+	    left.important = true;
+	}
+    }
+
+    /**
+     * Returns true if this property is important.
+     * Overrides this method for a macro
+     */
+    public boolean getImportant() {
+	return ((top == null || top.important) &&
+		(right == null || right.important) &&
+		(bottom == null || bottom.important) &&
+		(left == null || left.important));
+    }
+
+    /**
+     * Print this property.
+     *
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	if (inheritedValue) {
+	    printer.print(this);
+	} else if ((top != null && right != null &&
+		    bottom != null && left != null) &&
+		    (getImportant() ||
+		    (!top.important &&
+		     !right.important &&
+		     !bottom.important &&
+		     !left.important))) {
+	    printer.print(this);
+	} else {
+	    if (top != null)
+		top.print(printer);
+	    if (right != null)
+		right.print(printer);
+	    if (bottom != null)
+		bottom.print(printer);
+	    if (left != null)
+		left.print(printer);
+	}
+
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors selector) {
+	super.setSelectors(selector);
+	if (top != null) {
+	    top.setSelectors(selector);
+	}
+	if (right != null) {
+	    right.setSelectors(selector);
+	}
+	if (bottom != null) {
+	    bottom.setSelectors(selector);
+	}
+	if (left != null) {
+	    left.setSelectors(selector);
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	((Css1Style) style).cssMargin.inheritedValue = inheritedValue;
+	if(top != null) {
+	    top.addToStyle(ac, style);
+	}
+	if(right != null) {
+	    right.addToStyle(ac, style);
+	}
+	if(bottom != null) {
+	    bottom.addToStyle(ac, style);
+	}
+	if(left != null) {
+	    left.addToStyle(ac, style);
+	}
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getMargin();
+	} else {
+	    return ((Css1Style) style).cssMargin;
+	}
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	super.setInfo(line, source);
+	// it assumes that values exists, that may not be the case
+	// always. What would be the cause of that, an invalid clause?
+	// in this case a proper exception should be sent
+	// So... a FIXME
+	if(top != null) top.setInfo(line, source);
+	if(right != null) right.setInfo(line, source);
+	if(bottom != null) bottom.setInfo(line, source);
+	if(left != null) left.setInfo(line, source);
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssMarginBottom.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,111 @@
+//
+// $Id: CssMarginBottom.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'margin-bottom'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;length&gt; | &lt;percentage&gt; | auto<BR>
+ *   <EM>Initial:</EM> 0<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> refer to parent element's width<BR>
+ *   <P>
+ *   This property sets the bottom margin of an element:
+ *   <PRE>
+ *   H1 { margin-bottom: 3px }
+ * </PRE>
+ *   <P>
+ *   A negative value is allowed, but there may be implementation-specific limits.
+ * @version $Revision: 1.3 $
+ */
+public class CssMarginBottom extends CssMarginSide {
+
+  /**
+   * Create a new CssMarginBottom
+   */
+  public CssMarginBottom() {
+    super();
+  }
+
+  /**
+   * Create a new CssMarginBottom with an another CssMarginSide
+   *
+   * @param another The another side.
+   */
+  public CssMarginBottom(CssMarginSide another) {
+    super(another);
+  }
+
+  /**
+   * Create a new CssMarginBottom
+   *
+   * @param expression The expression for this porperty.
+   * @exception InvalidParamException Values are incorrect
+   */
+  public CssMarginBottom(ApplContext ac, CssExpression expression)
+    throws InvalidParamException {
+      super(ac, expression);
+  }
+
+  public CssMarginBottom(ApplContext ac, CssExpression expression, boolean check)
+	throws InvalidParamException {
+      super(ac, expression, check);
+  }
+
+  /**
+   * Returns the name of this property
+   */
+  public String getPropertyName() {
+    return "margin-bottom";
+  }
+
+  /**
+   * Add this property to the CssStyle.
+   *
+   * @param style The CssStyle
+   */
+  public void addToStyle(ApplContext ac, CssStyle style) {
+    Css1Style style0 = (Css1Style) style;
+    if (style0.cssMargin.bottom != null) {
+      style0.addRedefinitionWarning(ac, this);
+    }
+    style0.cssMargin.bottom = this;
+  }
+
+  /**
+   * Get this property in the style.
+   *
+   * @param style The style where the property is
+   * @param resolve if true, resolve the style to find this property
+   */
+  public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+    if (resolve) {
+      return ((Css1Style) style).getMarginBottom();
+    } else {
+      return ((Css1Style) style).cssMargin.getBottom();
+    }
+  }
+
+  /**
+   * Compares two properties for equality.
+   *
+   * @param value The other property.
+   */
+  public boolean equals(CssProperty property) {
+    return (property instanceof CssMarginBottom &&
+	    value.equals(((CssMarginBottom) property).value));
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssMarginLeft.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,110 @@
+//
+// $Id: CssMarginLeft.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'margin-left'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;length&gt; | &lt;percentage&gt; | auto<BR>
+ *   <EM>Initial:</EM> 0<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> refer to parent element's width<BR>
+ *   <P>
+ *   This property sets the left margin of an element:
+ *   <PRE>
+ *   H1 { margin-left: 2em }
+ * </PRE>
+ *   <P>
+ *   A negative value is allowed, but there may be implementation-specific limits.
+ * @version $Revision: 1.3 $
+ */
+public class CssMarginLeft extends CssMarginSide {
+
+  /**
+   * Create a new CssMarginLeft
+   */
+  public CssMarginLeft() {
+    super();
+  }
+
+  /**
+   * Create a new CssMarginLeft with an another CssMarginSide
+   *
+   * @param another The another side.
+   */
+  public CssMarginLeft(CssMarginSide another) {
+    super(another);
+  }
+
+  /**
+   * Create a new CssMarginLeft
+   *
+   * @param expression The expression foir this property.
+   * @exception InvalidParamException Values are incorrect
+   */
+  public CssMarginLeft(ApplContext ac, CssExpression expression)
+  	throws InvalidParamException {
+      super(ac, expression);
+  }
+
+  public CssMarginLeft(ApplContext ac, CssExpression expression, boolean check)
+	throws InvalidParamException {
+      super(ac, expression, check);
+  }
+
+  /**
+   * Returns the name of this property
+   */
+  public String getPropertyName() {
+    return "margin-left";
+  }
+
+  /**
+   * Add this property to the CssStyle.
+   *
+   * @param style The CssStyle
+   */
+  public void addToStyle(ApplContext ac, CssStyle style) {
+    Css1Style style0 = (Css1Style) style;
+    if (style0.cssMargin.left != null)
+      style0.addRedefinitionWarning(ac, this);
+    style0.cssMargin.left = this;
+  }
+
+  /**
+   * Get this property in the style.
+   *
+   * @param style The style where the property is
+   * @param resolve if true, resolve the style to find this property
+   */
+  public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+    if (resolve) {
+      return ((Css1Style) style).getMarginLeft();
+    } else {
+      return ((Css1Style) style).cssMargin.getLeft();
+    }
+  }
+
+  /**
+   * Compares two properties for equality.
+   *
+   * @param value The other property.
+   */
+  public boolean equals(CssProperty property) {
+    return (property instanceof CssMarginLeft &&
+	    value.equals(((CssMarginLeft) property).value));
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssMarginRight.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,109 @@
+//
+// $Id: CssMarginRight.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'margin-right'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;length&gt; | &lt;percentage&gt; | auto<BR>
+ *   <EM>Initial:</EM> 0<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> refer to parent element's width<BR>
+ *   <P>
+ *   This property sets the right margin of an element:
+ *   <PRE>
+ *   H1 { margin-right: 12.3% }
+ * </PRE>
+ *   <P> A negative value is allowed, but there may be implementation-specific
+ *   limits.
+ *
+ * @version $Revision: 1.3 $ */
+public class CssMarginRight extends CssMarginSide {
+
+  /**
+   * Create a new CssMarginRight
+   */
+  public CssMarginRight() {
+    super();
+  }
+
+  /**
+   * Create a new CssMarginRight with an another CssMarginSide
+   * @param another The another side.
+   */
+  public CssMarginRight(CssMarginSide another) {
+    super(another);
+  }
+
+  /**
+   * Create a new CssMarginRight
+   *
+   * @param expression The expression for this property.
+   * @exception InvalidParamException Values are incorrect
+   */
+  public CssMarginRight(ApplContext ac, CssExpression expression)
+  	throws InvalidParamException {
+      super(ac, expression);
+  }
+
+  public CssMarginRight(ApplContext ac, CssExpression expression, boolean check)
+	throws InvalidParamException {
+      super(ac, expression, check);
+  }
+
+  /**
+   * Returns the name of this property
+   */
+  public String getPropertyName() {
+    return "margin-right";
+  }
+
+  /**
+   * Add this property to the CssStyle.
+   *
+   * @param style The CssStyle
+   */
+  public void addToStyle(ApplContext ac, CssStyle style) {
+    Css1Style style0 = (Css1Style) style;
+    if (style0.cssMargin.right != null)
+      style0.addRedefinitionWarning(ac, this);
+    style0.cssMargin.right = this;
+  }
+
+  /**
+   * Get this property in the style.
+   *
+   * @param style The style where the property is
+   * @param resolve if true, resolve the style to find this property
+   */
+  public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+    if (resolve) {
+      return ((Css1Style) style).getMarginRight();
+    } else {
+      return ((Css1Style) style).cssMargin.getRight();
+    }
+  }
+
+  /**
+   * Compares two properties for equality.
+   *
+   * @param value The other property.
+   */
+  public boolean equals(CssProperty property) {
+    return (property instanceof CssMarginRight &&
+	    value.equals(((CssMarginRight) property).value));
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssMarginSide.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,130 @@
+//
+// $Id: CssMarginSide.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+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.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public abstract class CssMarginSide extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new CssMarginSide
+     */
+    public CssMarginSide() {
+	value = new CssLength();
+    }
+
+    /**
+     * Create a new CssMarginSide with an another CssMarginSide
+     *
+     * @param another The another side.
+     */
+    public CssMarginSide(CssMarginSide another) {
+	value = another.value;
+    }
+
+    /**
+     * Create a new CssMarginSide
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssMarginSide(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	    expression.next();
+	} else if (val instanceof CssLength || val instanceof CssPercentage) {
+	    value = val;
+	    expression.next();
+	} else if (val instanceof CssNumber) {
+	    value = ((CssNumber) val).getLength();
+	    expression.next();
+	} else if (val.equals(auto)) {
+	    value = auto;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", val.toString(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssMarginSide(ApplContext ac, CssExpression expression)
+    	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the internal CssValue value.
+     */
+    public CssValue getValue() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Compares two sides for equality.
+     *
+     * @param side The other side.
+     */
+    public boolean equals(CssMarginSide side) {
+	return value.equals(side.value);
+    }
+
+    /**
+     * Is this property contains a default value.
+     */
+    public boolean isDefault() {
+	if (value != auto)
+	    return ((Float) value.get()).floatValue() == 0;
+	else
+	    return false;
+    }
+
+    private static CssIdent auto = new CssIdent("auto");
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssMarginTop.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,109 @@
+//
+// $Id: CssMarginTop.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'margin-top'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;length&gt; | &lt;percentage&gt; | auto<BR>
+ *   <EM>Initial:</EM> 0<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> refer to parent element's width<BR>
+ *   <P>
+ *   This property sets the top margin of an element:
+ *   <PRE>
+ *   H1 { margin-top: 2em }
+ * </PRE>
+ *   <P>
+ *   A negative value is allowed, but there may be implementation-specific limits.
+ * @version $Revision: 1.3 $
+ */
+public class CssMarginTop extends CssMarginSide {
+
+  /**
+   * Create a new CssMarginTop
+   */
+  public CssMarginTop() {
+    super();
+  }
+
+  /**
+   * Create a new CssMarginTop with an another CssMarginSide
+   *
+   * @param another The another side
+   */
+  public CssMarginTop(CssMarginSide another) {
+    super(another);
+  }
+
+  /**
+   * Create a new CssMarginTop
+   *
+   * @param expression The expression for this property.
+   * @exception InvalidParamException Values are incorrect
+   */
+  public CssMarginTop(ApplContext ac, CssExpression expression)
+  	throws InvalidParamException {
+    super(ac, expression);
+  }
+
+  public CssMarginTop(ApplContext ac, CssExpression expression, boolean check)
+  	throws InvalidParamException {
+      super(ac, expression, check);
+    }
+
+  /**
+   * Returns the name of this property
+   */
+  public String getPropertyName() {
+    return "margin-top";
+  }
+
+  /**
+   * Add this property to the CssStyle.
+   *
+   * @param style The CssStyle
+   */
+  public void addToStyle(ApplContext ac, CssStyle style) {
+    Css1Style style0 = (Css1Style) style;
+    if (style0.cssMargin.top != null)
+      style0.addRedefinitionWarning(ac, this);
+    style0.cssMargin.top = this;
+  }
+
+  /**
+   * Get this property in the style.
+   *
+   * @param style The style where the property is
+   * @param resolve if true, resolve the style to find this property
+   */
+  public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+    if (resolve) {
+      return ((Css1Style) style).getMarginTop();
+    } else {
+      return ((Css1Style) style).cssMargin.getTop();
+    }
+  }
+
+  /**
+   * Compares two properties for equality.
+   *
+   * @param value The other property.
+   */
+  public boolean equals(CssProperty property) {
+    return (property instanceof CssMarginTop && value.equals(((CssMarginTop) property).value));
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssMarkerOffset.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,145 @@
+//
+// $Id: CssMarkerOffset.java,v 1.2 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class CssMarkerOffset extends CssProperty {
+
+    CssValue value;
+
+    private static CssIdent auto = new CssIdent("auto");
+
+    /**
+     * Create a new CssMarkerOffset
+     */
+    public CssMarkerOffset() {
+	value = auto;
+    }
+
+    /**
+     * Create a new CssMarkerOffset
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssMarkerOffset(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+	if (val.equals(inherit)) {
+	    value = inherit;
+	} else if (val instanceof CssLength) {
+	    value = val;
+	} else if (val.equals(auto)) {
+	    value = auto;
+	} else if (val instanceof CssNumber) {
+	    value = ((CssNumber) val).getLength();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+
+	expression.next();
+    }
+
+    public CssMarkerOffset(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "marker-offset";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssMarkerOffset != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssMarkerOffset = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getMarkerOffset();
+	} else {
+	    return ((Css1Style) style).cssMarkerOffset;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssMarkerOffset &&
+		value.equals(((CssMarkerOffset) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == auto;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssMarkerOffsetATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,148 @@
+//
+// $Id: CssMarkerOffsetATSC.java,v 1.2 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class CssMarkerOffsetATSC extends CssProperty {
+
+    CssValue value;
+
+    private static CssIdent auto = new CssIdent("auto");
+
+    /**
+     * Create a new CssMarkerOffsetATSC
+     */
+    public CssMarkerOffsetATSC() {
+	value = auto;
+    }
+
+    /**
+     * Create a new CssMarkerOffsetATSC
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssMarkerOffsetATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	ac.getFrame().addWarning("atsc", val.toString());
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	} else if (val instanceof CssLength) {
+	    value = val;
+	} else if (val.equals(auto)) {
+	    value = auto;
+	} else if (val instanceof CssNumber) {
+	    value = ((CssNumber) val).getLength();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+
+	expression.next();
+    }
+
+    public CssMarkerOffsetATSC(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "marker-offset";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssMarkerOffsetATSC != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssMarkerOffsetATSC = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getMarkerOffsetATSC();
+	} else {
+	    return ((Css1Style) style).cssMarkerOffsetATSC;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssMarkerOffsetATSC &&
+		value.equals(((CssMarkerOffsetATSC) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == auto;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssMaxHeight.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,153 @@
+//
+// $Id: CssMaxHeight.java,v 1.2 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class CssMaxHeight extends CssProperty {
+
+    CssValue value;
+
+    private static CssIdent none = new CssIdent("none");
+
+    /**
+     * Create a new CssMaxHeight
+     */
+    public CssMaxHeight() {
+	value = none;
+    }
+
+    /**
+     * Create a new CssMaxHeight.
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssMaxHeight(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	} else if (val instanceof CssLength || val instanceof CssPercentage) {
+	    float f = ((Float) val.get()).floatValue();
+	    if (f < 0) {
+		throw new InvalidParamException("negative-value",
+						val.toString(), ac);
+	    }
+	    value = val;
+	} else if (val.equals(none)) {
+	    value = none;
+	} else if (val instanceof CssNumber) {
+	    value = ((CssNumber) val).getLength();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+
+	expression.next();
+    }
+
+    public CssMaxHeight(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property.
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property.
+     */
+    public String getPropertyName() {
+	return "max-height";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssMaxHeight != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssMaxHeight = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getMaxHeight();
+	} else {
+	    return ((Css1Style) style).cssMaxHeight;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssMaxHeight
+		&& value.equals(((CssMaxHeight) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == none;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssMaxHeightATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,155 @@
+//
+// $Id: CssMaxHeightATSC.java,v 1.2 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class CssMaxHeightATSC extends CssProperty {
+
+    CssValue value;
+
+    private static CssIdent none = new CssIdent("none");
+
+    /**
+     * Create a new CssMaxHeightATSC
+     */
+    public CssMaxHeightATSC() {
+	value = none;
+    }
+
+    /**
+     * Create a new CssMaxHeightATSC
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssMaxHeightATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	ac.getFrame().addWarning("atsc", val.toString());
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	} else if (val instanceof CssLength || val instanceof CssPercentage) {
+	    float f = ((Float) val.get()).floatValue();
+	    if (f < 0) {
+		throw new InvalidParamException("negative-value",
+						val.toString(), ac);
+	    }
+	    value = val;
+	} else if (val.equals(none)) {
+	    value = none;
+	} else if (val instanceof CssNumber) {
+	    value = ((CssNumber) val).getLength();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+
+	expression.next();
+    }
+
+    public CssMaxHeightATSC(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property.
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property.
+     */
+    public String getPropertyName() {
+	return "max-height";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssMaxHeightATSC != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssMaxHeightATSC = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getMaxHeightATSC();
+	} else {
+	    return ((Css1Style) style).cssMaxHeightATSC;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssMaxHeightATSC
+		&& value.equals(((CssMaxHeightATSC) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == none;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssMaxWidth.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,153 @@
+//
+// $Id: CssMaxWidth.java,v 1.2 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class CssMaxWidth extends CssProperty {
+
+    CssValue value;
+
+    private static CssIdent none = new CssIdent("none");
+
+    /**
+     * Create a new CssMaxWidth
+     */
+    public CssMaxWidth() {
+	value = none;
+    }
+
+    /**
+     * Create a new CssMaxWidth.
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssMaxWidth(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	} else if (val instanceof CssLength || val instanceof CssPercentage) {
+	    float f = ((Float) val.get()).floatValue();
+	    if (f < 0) {
+		throw new InvalidParamException("negative-value",
+						val.toString(), ac);
+	    }
+	    value = val;
+	} else if (val.equals(none)) {
+	    value = none;
+	} else if (val instanceof CssNumber) {
+	    value = ((CssNumber) val).getLength();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+
+	expression.next();
+    }
+
+    public CssMaxWidth(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property.
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property.
+     */
+    public String getPropertyName() {
+	return "max-width";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssMaxWidth != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssMaxWidth = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getMaxWidth();
+	} else {
+	    return ((Css1Style) style).cssMaxWidth;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssMaxWidth
+		&& value.equals(((CssMaxWidth) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == none;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssMaxWidthATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,155 @@
+//
+// $Id: CssMaxWidthATSC.java,v 1.2 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class CssMaxWidthATSC extends CssProperty {
+
+    CssValue value;
+
+    private static CssIdent none = new CssIdent("none");
+
+    /**
+     * Create a new CssMaxWidthATSC
+     */
+    public CssMaxWidthATSC() {
+	value = none;
+    }
+
+    /**
+     * Create a new CssMaxWidthATSC
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssMaxWidthATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	ac.getFrame().addWarning("atsc", val.toString());
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	} else if (val instanceof CssLength || val instanceof CssPercentage) {
+	    float f = ((Float) val.get()).floatValue();
+	    if (f < 0) {
+		throw new InvalidParamException("negative-value",
+						val.toString(), ac);
+	    }
+	    value = val;
+	} else if (val.equals(none)) {
+	    value = none;
+	} else if (val instanceof CssNumber) {
+	    value = ((CssNumber) val).getLength();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+
+	expression.next();
+    }
+
+    public CssMaxWidthATSC(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property.
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property.
+     */
+    public String getPropertyName() {
+	return "max-width";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssMaxWidthATSC != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssMaxWidthATSC = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getMaxWidthATSC();
+	} else {
+	    return ((Css1Style) style).cssMaxWidthATSC;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssMaxWidthATSC
+		&& value.equals(((CssMaxWidthATSC) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == none;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssMinHeight.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,139 @@
+//
+// $Id: CssMinHeight.java,v 1.2 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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 CssMinHeight extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new CssMinHeight
+     */
+    public CssMinHeight() {
+    }
+
+    /**
+     * Create a new CssMinHeight.
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssMinHeight(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	} else if (val instanceof CssLength || val instanceof CssPercentage) {
+	    float f = ((Float) val.get()).floatValue();
+	    if (f < 0) {
+		throw new InvalidParamException("negative-value",
+						val.toString(), ac);
+	    }
+	    value = val;
+	} else if (val instanceof CssNumber) {
+	    value = ((CssNumber) val).getLength();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+
+	expression.next();
+    }
+
+    public CssMinHeight(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property.
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property.
+     */
+    public String getPropertyName() {
+	return "min-height";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssMinHeight != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssMinHeight = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getMinHeight();
+	} else {
+	    return ((Css1Style) style).cssMinHeight;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssMinHeight
+		&& value.equals(((CssMinHeight) property).value));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssMinHeightATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,141 @@
+//
+// $Id: CssMinHeightATSC.java,v 1.2 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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 CssMinHeightATSC extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new CssMinHeightATSC
+     */
+    public CssMinHeightATSC() {
+    }
+
+    /**
+     * Create a new CssMinHeightATSC
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssMinHeightATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	ac.getFrame().addWarning("atsc", val.toString());
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	} else if (val instanceof CssLength || val instanceof CssPercentage) {
+	    float f = ((Float) val.get()).floatValue();
+	    if (f < 0) {
+		throw new InvalidParamException("negative-value",
+						val.toString(), ac);
+	    }
+	    value = val;
+	} else if (val instanceof CssNumber) {
+	    value = ((CssNumber) val).getLength();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+
+	expression.next();
+    }
+
+    public CssMinHeightATSC(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property.
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property.
+     */
+    public String getPropertyName() {
+	return "min-height";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssMinHeightATSC != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssMinHeightATSC = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getMinHeightATSC();
+	} else {
+	    return ((Css1Style) style).cssMinHeightATSC;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssMinHeightATSC
+		&& value.equals(((CssMinHeightATSC) property).value));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssMinWidth.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,139 @@
+//
+// $Id: CssMinWidth.java,v 1.2 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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 CssMinWidth extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new CssMinWidth
+     */
+    public CssMinWidth() {
+    }
+
+    /**
+     * Create a new CssMinWidth.
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssMinWidth(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	} else if (val instanceof CssLength || val instanceof CssPercentage) {
+	    float f = ((Float) val.get()).floatValue();
+	    if (f < 0) {
+		throw new InvalidParamException("negative-value",
+						val.toString(), ac);
+	    }
+	    value = val;
+	} else if (val instanceof CssNumber) {
+	    value = ((CssNumber) val).getLength();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+
+	expression.next();
+    }
+
+    public CssMinWidth(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property.
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property.
+     */
+    public String getPropertyName() {
+	return "min-width";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssMinWidth != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssMinWidth = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getMinWidth();
+	} else {
+	    return ((Css1Style) style).cssMinWidth;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssMinWidth
+		&& value.equals(((CssMinWidth) property).value));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssMinWidthATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,141 @@
+//
+// $Id: CssMinWidthATSC.java,v 1.2 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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 CssMinWidthATSC extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new CssMinWidthATSC
+     */
+    public CssMinWidthATSC() {
+    }
+
+    /**
+     * Create a new CssMinWidthATSC
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssMinWidthATSC(ApplContext ac, CssExpression expression,
+	boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	ac.getFrame().addWarning("atsc", val.toString());
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	} else if (val instanceof CssLength || val instanceof CssPercentage) {
+	    float f = ((Float) val.get()).floatValue();
+	    if (f < 0) {
+		throw new InvalidParamException("negative-value",
+						val.toString(), ac);
+	    }
+	    value = val;
+	} else if (val instanceof CssNumber) {
+	    value = ((CssNumber) val).getLength();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+
+	expression.next();
+    }
+
+    public CssMinWidthATSC(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property.
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property.
+     */
+    public String getPropertyName() {
+	return "min-width";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssMinWidthATSC != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssMinWidthATSC = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getMinWidthATSC();
+	} else {
+	    return ((Css1Style) style).cssMinWidthATSC;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssMinWidthATSC
+		&& value.equals(((CssMinWidthATSC) property).value));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssOverflow.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,154 @@
+//
+// $Id: CssOverflow.java,v 1.2 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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 CssOverflow extends CssProperty {
+
+    CssValue value;
+
+    private static CssIdent visible = new CssIdent("visible");
+    private static CssIdent hidden = new CssIdent("hidden");
+    private static CssIdent scroll = new CssIdent("scroll");
+    private static CssIdent auto = new CssIdent("auto");
+
+    /**
+     * Create a new CssOverflow
+     */
+    public CssOverflow() {
+	value = visible;
+    }
+
+    /**
+     * Create a new CssOverflow
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssOverflow(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+	if (val.equals(inherit)) {
+	    value = inherit;
+	    expression.next();
+	} else if (val.equals(visible)) {
+	    value = visible;
+	    expression.next();
+	} else if (val.equals(hidden)) {
+	    value = hidden;
+	    expression.next();
+	} else if (val.equals(visible)) {
+	    value = visible;
+	    expression.next();
+	} else if (val.equals(scroll)) {
+	    value = scroll;
+	    expression.next();
+	} else if (val.equals(auto)) {
+	    value = auto;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssOverflow(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "overflow";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssOverflow != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssOverflow = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getOverflow();
+	} else {
+	    return ((Css1Style) style).cssOverflow;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssOverflow &&
+		value.equals(((CssOverflow) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == visible;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssPadding.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,378 @@
+//
+// $Id: CssPadding.java,v 1.3 2006-04-19 11:28:05 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssOperator;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'padding'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> [ &lt;length&gt; | &lt;percentage&gt; ]{1,4} <BR>
+ *   <EM>Initial:</EM> 0<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> refer to parent element's width<BR>
+ *   <P>
+ *   The 'padding' property is a shorthand property for setting 'padding-top',
+ *   'padding-right' 'padding-bottom' and 'padding-left' at the same place in
+ *   the style sheet.
+ *   <P>
+ *   If four values are specified they apply to top, right, bottom and left
+ *   respectively. If there is only one value, it applies to all sides, if there
+ *   are two or three, the missing values are taken from the opposite side.
+ *   <P>
+ *   The surface of the padding area is set with the 'background' property:
+ *   <PRE>
+ *   H1 {
+ *     background: white;
+ *     padding: 1em 2em;
+ *   }
+ * </PRE>
+ *   <P>
+ *   The example above sets a '1em' padding vertically ('padding-top' and
+ *   'padding-bottom') and a '2em' padding horizontally ('padding-right' and
+ *   'padding-left'). The 'em' unit is relative to the element's font size: '1em'
+ *   is equal to the size of the font in use.
+ *   <P>
+ *   Padding values cannot be negative.
+ * @version $Revision: 1.3 $
+ */
+public class CssPadding extends CssProperty implements CssOperator {
+
+    CssPaddingTop    top    = null;
+    CssPaddingBottom bottom = null;
+    CssPaddingRight  right  = null;
+    CssPaddingLeft   left   = null;
+
+    boolean inheritedValue;
+
+    /**
+     * Create a new CssPadding
+     */
+    public CssPadding() {
+    }
+
+    /**
+     * Create a new CssPadding
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssPadding(ApplContext ac, CssExpression expression, boolean check)
+	throws InvalidParamException {
+	//CssValue val = expression.getValue();
+	setByUser();
+
+	/*if (val.equals(inherit)) {
+	    inheritedValue = true;
+	    top = new CssPaddingTop();
+	    top.value = inherit;
+	    bottom = new CssPaddingBottom();
+	    bottom.value = inherit;
+	    right = new CssPaddingRight();
+	    right.value = inherit;
+	    left = new CssPaddingLeft();
+	    left.value = inherit;
+	}*/
+
+	int count = expression.getCount();
+
+	switch (count) {
+	case 1:
+	    top = new CssPaddingTop(ac, expression);
+	    /*bottom = new CssPaddingBottom(top);
+	    right = new CssPaddingRight(top);
+	    left = new CssPaddingLeft(top);*/
+	    break;
+	case 2:
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(expression.getOperator())).toString()),
+			ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    top = new CssPaddingTop(ac, expression);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    right = new CssPaddingRight(ac, expression);
+	    /*bottom = new CssPaddingBottom(top);
+	    left = new CssPaddingLeft(right);*/
+	    break;
+	case 3:
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(expression.getOperator())).toString()),
+			ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    top = new CssPaddingTop(ac, expression);
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(expression.getOperator())).toString()),
+			ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    right = new CssPaddingRight(ac, expression);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    bottom = new CssPaddingBottom(ac, expression);
+	    //left = new CssPaddingLeft(right);
+	    break;
+	case 4:
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(expression.getOperator())).toString()),
+			ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    top = new CssPaddingTop(ac, expression);
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(expression.getOperator())).toString()),
+			ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    right = new CssPaddingRight(ac, expression);
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(expression.getOperator())).toString()),
+			ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    bottom = new CssPaddingBottom(ac, expression);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    left = new CssPaddingLeft(ac, expression);
+	    break;
+	default:
+	    if(check) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	}
+    }
+
+    public CssPadding(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return top;
+    }
+
+    /**
+     * Returns the top property
+     */
+    public CssPaddingTop getTop() {
+	return top;
+    }
+
+    /**
+     * Returns the right property
+     */
+    public CssPaddingRight getRight() {
+	return right;
+    }
+
+    /**
+     * Returns the bottom property
+     */
+    public CssPaddingBottom getBottom() {
+	return bottom;
+    }
+
+    /**
+     * Returns the left property
+     */
+    public CssPaddingLeft getLeft() {
+	return left;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "padding";
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (inheritedValue) {
+	    return inherit.toString();
+	}
+        String result = "";
+        // top should never be null
+        if(top != null) result += top;
+        if(right != null) result += " " + right;
+        if(bottom != null) result += " " + bottom;
+        if(left != null) result += " " + left;
+        return result;
+	/*if (right.value.equals(left.value)) {
+	    if (top.value.equals(bottom.value)) {
+		if (top.value.equals(right.value)) {
+		    return top.toString();
+		} else {
+		    return top + " " + right;
+		}
+	    } else {
+		return top + " " + right + " " + bottom;
+	    }
+	} else {
+	    return top + " " + right + " " + bottom + " " + left;
+	}*/
+    }
+
+    /**
+     * Set this property to be important.
+     * Overrides this method for a macro
+     */
+    public void setImportant() {
+	if(top != null) top.important = true;
+	if(right != null) right.important = true;
+	if(bottom != null) bottom.important = true;
+	if(left != null) left.important = true;
+    }
+
+    /**
+     * Returns true if this property is important.
+     * Overrides this method for a macro
+     */
+    public boolean getImportant() {
+	return ((top == null || top.important) &&
+		(right == null || right.important) &&
+		(bottom == null || bottom.important) &&
+		(left == null || left.important));
+    }
+
+    /**
+     * Print this property.
+     *
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	if (inheritedValue) {
+	    printer.print(this);
+	} else if ((top != null && right != null &&
+		    bottom != null && left != null) &&
+		   (getImportant() ||
+		    (!top.important &&
+		     !right.important &&
+		     !bottom.important &&
+		     !left.important))) {
+	    printer.print(this);
+	} else {
+	    if (top != null)
+		top.print(printer);
+	    if (right != null)
+		right.print(printer);
+	    if (bottom != null)
+		bottom.print(printer);
+	    if (left != null)
+		left.print(printer);
+	}
+
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors selector) {
+	super.setSelectors(selector);
+	if (top != null) {
+	    top.setSelectors(selector);
+	}
+	if (right != null) {
+	    right.setSelectors(selector);
+	}
+	if (bottom != null) {
+	    bottom.setSelectors(selector);
+	}
+	if (left != null) {
+	    left.setSelectors(selector);
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	((Css1Style) style).cssPadding.inheritedValue = inheritedValue;
+	if(top != null) top.addToStyle(ac, style);
+	if(right != null) right.addToStyle(ac, style);
+	if(bottom != null) bottom.addToStyle(ac, style);
+	if(left != null) left.addToStyle(ac, style);
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getPadding();
+	} else {
+	    return ((Css1Style) style).cssPadding;
+	}
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	super.setInfo(line, source);
+	if(top != null) top.setInfo(line, source);
+	if(right != null) right.setInfo(line, source);
+	if(bottom != null) bottom.setInfo(line, source);
+	if(left != null) left.setInfo(line, source);
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @FIXME
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssPaddingBottom.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,110 @@
+//
+// $Id: CssPaddingBottom.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'padding-bottom'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;length&gt; | &lt;percentage&gt;<BR>
+ *   <EM>Initial:</EM> 0<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> refer to parent element's width<BR>
+ *   <P>
+ *   This property sets the bottom padding of an element.
+ *   <PRE>
+ *   BLOCKQUOTE { padding-bottom: 2em }
+ * </PRE>
+ *   <P>
+ *   Padding values cannot be negative.
+ * @version $Revision: 1.3 $
+ */
+public class CssPaddingBottom extends CssPaddingSide {
+
+  /**
+   * Create a new CssPaddingBottom
+   */
+  public CssPaddingBottom() {
+    super();
+  }
+
+  /**
+   * Create a new CssPaddingBottom with an another CssPaddingSide
+   *
+   * @param another The another side.
+   */
+  public CssPaddingBottom(CssPaddingSide another) {
+    super(another);
+  }
+
+  /**
+   * Create a new CssPaddingBottom
+   *
+   * @param expression The expression for this property.
+   * @exception InvalidParamException Values are incorrect
+   */
+  public CssPaddingBottom(ApplContext ac, CssExpression expression,
+	  boolean check) throws InvalidParamException {
+    super(ac, expression, check);
+  }
+
+  public CssPaddingBottom(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+  }
+
+  /**
+   * Returns the name of this property
+   */
+  public String getPropertyName() {
+    return "padding-bottom";
+  }
+
+  /**
+   * Add this property to the CssStyle.
+   *
+   * @param style The CssStyle
+   */
+  public void addToStyle(ApplContext ac, CssStyle style) {
+    Css1Style style0 = (Css1Style) style;
+
+    if (style0.cssPadding.bottom != null)
+      style0.addRedefinitionWarning(ac, this);
+    style0.cssPadding.bottom = this;
+  }
+
+  /**
+   * Get this property in the style.
+   *
+   * @param style The style where the property is
+   * @param resolve if true, resolve the style to find this property
+   */
+  public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+    if (resolve) {
+      return ((Css1Style) style).getPaddingBottom();
+    } else {
+      return ((Css1Style) style).cssPadding.getBottom();
+    }
+  }
+
+  /**
+   * Compares two properties for equality.
+   *
+   * @param value The other property.
+   */
+  public boolean equals(CssProperty property) {
+    return (property instanceof CssPaddingBottom && value.equals(((CssPaddingBottom) property).value));
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssPaddingLeft.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,109 @@
+//
+// $Id: CssPaddingLeft.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+/**
+ *   <H4>
+ *     <A NAME="padding-left">5.5.9 &nbsp;&nbsp; 'padding-left'</A>
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;length&gt; | &lt;percentage&gt;<BR>
+ *   <EM>Initial:</EM> 0<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> refer to parent element's width<BR>
+ *   <P>
+ *   This property sets the left padding of an element.
+ *   <PRE>
+ *   BLOCKQUOTE { padding-left: 20% }
+ * </PRE>
+ *   <P>
+ *   Padding values cannot be negative.
+ * @version $Revision: 1.3 $
+ */
+public class CssPaddingLeft extends CssPaddingSide {
+
+  /**
+   * Create a new CssPaddingLeft
+   */
+  public CssPaddingLeft() {
+    super();
+  }
+
+  /**
+   * Create a new CssPaddingLeft with an another CssPaddingSide
+   * @param another The another side.
+   */
+  public CssPaddingLeft(CssPaddingSide another) {
+    super(another);
+  }
+
+  /**
+   * Create a new CssPaddingLeft
+   *
+   * @param expression The expression for this property.
+   * @exception InvalidParamException Values are incorrect
+   */
+  public CssPaddingLeft(ApplContext ac, CssExpression expression, boolean check)
+  	throws InvalidParamException {
+    super(ac, expression, check);
+  }
+
+  public CssPaddingLeft(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+  }
+
+  /**
+   * Returns the name of this property
+   */
+  public String getPropertyName() {
+    return "padding-left";
+  }
+
+  /**
+   * Add this property to the CssStyle.
+   *
+   * @param style The CssStyle
+   */
+  public void addToStyle(ApplContext ac, CssStyle style) {
+    Css1Style style0 = (Css1Style) style;
+    if (style0.cssPadding.left != null)
+      style0.addRedefinitionWarning(ac, this);
+    style0.cssPadding.left = this;
+  }
+
+  /**
+   * Get this property in the style.
+   *
+   * @param style The style where the property is
+   * @param resolve if true, resolve the style to find this property
+   */
+  public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+    if (resolve) {
+      return ((Css1Style) style).getPaddingLeft();
+    } else {
+      return ((Css1Style) style).cssPadding.getLeft();
+    }
+  }
+
+  /**
+   * Compares two properties for equality.
+   *
+   * @param value The other property.
+   */
+  public boolean equals(CssProperty property) {
+    return (property instanceof CssPaddingLeft &&
+	    value.equals(((CssPaddingLeft) property).value));
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssPaddingRight.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,111 @@
+//
+// $Id: CssPaddingRight.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'padding-right'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;length&gt; | &lt;percentage&gt;<BR>
+ *   <EM>Initial:</EM> 0<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> refer to parent element's width<BR>
+ *   <P>
+ *   This property sets the right padding of an element.
+ *   <PRE>
+ *   BLOCKQUOTE { padding-right: 10px }
+ * </PRE>
+ *   <P>
+ *   Padding values cannot be negative.
+ *
+ * @version $Revision: 1.3 $
+ */
+public class CssPaddingRight extends CssPaddingSide {
+
+  /**
+   * Create a new CssPaddingRight
+   */
+  public CssPaddingRight() {
+    super();
+  }
+
+  /**
+   * Create a new CssPaddingRight with an another CssPaddingSide
+   *
+   * @param another The another side
+   */
+  public CssPaddingRight(CssPaddingSide another) {
+    super(another);
+  }
+
+  /**
+   * Create a new CssPaddingRight
+   *
+   * @param expression The expression for this property.
+   * @exception InvalidParamException Values are incorrect
+   */
+  public CssPaddingRight(ApplContext ac, CssExpression expression, boolean check)
+    throws InvalidParamException {
+    super(ac, expression, check);
+  }
+
+  public CssPaddingRight(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+  }
+
+  /**
+   * Returns the name of this property
+   */
+  public String getPropertyName() {
+    return "padding-right";
+  }
+
+  /**
+   * Add this property to the CssStyle.
+   *
+   * @param style The CssStyle
+   */
+  public void addToStyle(ApplContext ac, CssStyle style) {
+    Css1Style style0 = (Css1Style) style;
+    if (style0.cssPadding.right != null)
+      style0.addRedefinitionWarning(ac, this);
+    style0.cssPadding.right = this;
+  }
+
+  /**
+   * Get this property in the style.
+   *
+   * @param style The style where the property is
+   * @param resolve if true, resolve the style to find this property
+   */
+  public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+    if (resolve) {
+      return ((Css1Style) style).getPaddingRight();
+    } else {
+      return ((Css1Style) style).cssPadding.getRight();
+    }
+  }
+
+  /**
+   * Compares two properties for equality.
+   *
+   * @param value The other property.
+   */
+  public boolean equals(CssProperty property) {
+    return (property instanceof CssPaddingRight &&
+	    value.equals(((CssPaddingRight) property).value));
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssPaddingSide.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,118 @@
+//
+// $Id: CssPaddingSide.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+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;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public abstract class CssPaddingSide extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new CssPaddingSide.
+     */
+    public CssPaddingSide() {
+	value = new CssLength();
+    }
+
+    /**
+     * Create a new CssPaddingSide with an another CssPaddingSide
+     *
+     * @param another An another side.
+     */
+    public CssPaddingSide(CssPaddingSide another) {
+	value = another.value;
+    }
+
+    /**
+     * Create a new CssPaddingSide
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssPaddingSide(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	    expression.next();
+	} else if (val instanceof CssLength || val instanceof CssPercentage) {
+	    value = val;
+	    float v = ((Float) val.get()).floatValue();
+	    if (v < 0)
+		throw new InvalidParamException("negative-value",
+						Float.toString(v), ac);
+	    expression.next();
+	} else if (val instanceof CssNumber) {
+	    value = ((CssNumber) val).getLength();
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", val.toString(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssPaddingSide(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the internal value
+     */
+    public CssValue getValue() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return ((Float) value.get()).floatValue() == 0;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssPaddingTop.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,109 @@
+//
+// $Id: CssPaddingTop.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'padding-top'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;length&gt; | &lt;percentage&gt;<BR>
+ *   <EM>Initial:</EM> 0<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> refer to parent element's width<BR>
+ *   <P>
+ *   This property sets the top padding of an element.
+ *   <PRE>
+ *   BLOCKQUOTE { padding-top: 0.3em }
+ * </PRE>
+ *   <P>
+ *   Padding values cannot be negative.
+ * @version $Revision: 1.3 $
+ */
+public class CssPaddingTop extends CssPaddingSide {
+
+  /**
+   * Create a new CssPaddingTop
+   */
+  public CssPaddingTop() {
+    super();
+  }
+
+  /**
+   * Create a new CssPaddingTop with an another CssPaddingSide.
+   *
+   * @param another The another side.
+   */
+  public CssPaddingTop(CssPaddingSide another) {
+    super(another);
+  }
+
+  /**
+   * Create a new CssPaddingTop
+   *
+   * @param expression The expression for this property.
+   * @exception InvalidParamException Values are incorrect
+   */
+  public CssPaddingTop(ApplContext ac, CssExpression expression, boolean check)
+  	throws InvalidParamException {
+    super(ac, expression, check);
+  }
+
+  public CssPaddingTop(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+  }
+
+  /**
+   * Returns the name of this property
+   */
+  public String getPropertyName() {
+    return "padding-top";
+  }
+
+  /**
+   * Add this property to the CssStyle.
+   *
+   * @param style The CssStyle
+   */
+  public void addToStyle(ApplContext ac, CssStyle style) {
+    Css1Style style0 = (Css1Style) style;
+    if (style0.cssPadding.top != null)
+      style0.addRedefinitionWarning(ac, this);
+    style0.cssPadding.top = this;
+  }
+
+  /**
+   * Get this property in the style.
+   *
+   * @param style The style where the property is
+   * @param resolve if true, resolve the style to find this property
+   */
+  public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+    if (resolve) {
+      return ((Css1Style) style).getPaddingTop();
+    } else {
+      return ((Css1Style) style).cssPadding.getTop();
+    }
+  }
+
+  /**
+   * Compares two properties for equality.
+   *
+   * @param value The other property.
+   */
+  public boolean equals(CssProperty property) {
+    return (property instanceof CssPaddingTop && value.equals(((CssPaddingTop) property).value));
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssPosition.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,150 @@
+//
+// $Id: CssPosition.java,v 1.2 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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 CssPosition extends CssProperty {
+
+    int value;
+
+    private static String[] POSITION = {
+	"static", "relative", "absolute", "fixed", "inherit" };
+
+    private static int[] hash_values;
+
+    /**
+     * Create a new CssPosition
+     */
+    public CssPosition() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new CssPosition
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorect
+     */
+    public CssPosition(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	if ( val instanceof CssIdent) {
+	    int hash = val.hashCode();
+	    for (int i = 0; i < POSITION.length; i++)
+		if (hash_values[i] == hash) {
+		    value = i;
+		    expression.next();
+		    return;
+		}
+	}
+
+	throw new InvalidParamException("value", expression.getValue(),
+					getPropertyName(), ac);
+    }
+
+    public CssPosition(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return POSITION[value];
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "position";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == POSITION.length - 1;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return POSITION[value];
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssPosition != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssPosition = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getPosition();
+	} else {
+	    return ((Css1Style) style).cssPosition;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssPosition &&
+		value == ((CssPosition) property).value);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == 0;
+    }
+
+    static {
+	hash_values = new int[POSITION.length];
+	for (int i = 0; i < POSITION.length; i++)
+	    hash_values[i] = POSITION[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssPositionTV.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,150 @@
+//
+// $Id: CssPositionTV.java,v 1.2 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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 CssPositionTV extends CssProperty {
+
+    int value;
+
+    private static String[] POSITION = {
+	"static", "relative", "absolute", "inherit" };
+
+    private static int[] hash_values;
+
+    /**
+     * Create a new CssPositionTV
+     */
+    public CssPositionTV() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new CssPositionTV
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorect
+     */
+    public CssPositionTV(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	if ( val instanceof CssIdent) {
+	    int hash = val.hashCode();
+	    for (int i = 0; i < POSITION.length; i++)
+		if (hash_values[i] == hash) {
+		    value = i;
+		    expression.next();
+		    return;
+		}
+	}
+
+	throw new InvalidParamException("value", expression.getValue(),
+					getPropertyName(), ac);
+    }
+
+    public CssPositionTV(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return POSITION[value];
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "position";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == POSITION.length - 1;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return POSITION[value];
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssPositionTV != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssPositionTV = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getPositionTV();
+	} else {
+	    return ((Css1Style) style).cssPositionTV;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssPositionTV &&
+		value == ((CssPositionTV) property).value);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == 0;
+    }
+
+    static {
+	hash_values = new int[POSITION.length];
+	for (int i = 0; i < POSITION.length; i++)
+	    hash_values[i] = POSITION[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssProperties.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,42 @@
+//
+// $Id: CssProperties.java,v 1.3 2009-02-24 21:45:14 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 org.w3c.css.properties.css1;
+
+import java.net.URL;
+
+import org.w3c.css.util.Utf8Properties;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public class CssProperties {
+    public static Utf8Properties properties;
+
+    public static String getString(CssProperty property, String prop) {
+	StringBuilder st = new StringBuilder(property.getPropertyName());
+	st.append('.').append(prop);
+	return properties.getProperty(st.toString());
+    }
+
+    public static boolean getInheritance(CssProperty property) {
+	return "true".equals(getString(property, "inherited"));
+    }
+
+    static {
+	properties = new Utf8Properties();
+	try {
+	    URL url = CssProperties.class.getResource("CSS1Default.properties");
+	    java.io.InputStream f = url.openStream();
+	    properties.load(f);
+	    f.close();
+	} catch (Exception e) {
+	    System.err.println("org.w3c.css.properties.CssProperties: "+
+			       "couldn't load properties ");
+	    System.err.println("  " + e.toString());
+	}
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssProperty.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,350 @@
+//
+// $Id: CssProperty.java,v 1.6 2009-03-06 11:15:12 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.css.StyleSheetOrigin;
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.Messages;
+import org.w3c.css.values.CssIdent;
+
+/**
+ * <DL>
+ * <DT>
+ * <STRONG>property</STRONG>
+ * <DD>
+ * a stylistic parameter that can be influenced through CSS. This specification
+ * defines a list of properties and their corresponding values.
+ * </DL>
+ *
+ * If you want to add some properties to the parser, you should subclass this
+ * class.
+ *
+ * @version $Revision: 1.6 $
+ */
+public abstract class CssProperty
+        implements Cloneable, StyleSheetOrigin {
+
+    /**
+     * True if this property is important. false otherwise.
+     */
+    protected boolean important;
+
+    /**
+     * The origin of this property.
+     * the author's style sheets override the reader's style sheet which
+     * override the UA's default values. An imported style sheet has the same
+     * origin as the style sheet from which it is imported.
+     *
+     * @see StyleSheetOrigin#BROWSER
+     * @see StyleSheetOrigin#READER
+     * @see StyleSheetOrigin#AUTHOR
+     */
+    protected int origin;
+
+    /**
+     * A uniq number for this property.
+     * Used by the cascading order algorithm to sort by order specified.
+     * If two rules have the same weight, the latter specified wins.
+     */
+    protected long order;
+
+    /**
+     * the position of the first character of this value.
+     */
+    protected int line;
+
+    /**
+     * the origin file.
+     */
+    protected String sourceFile;
+
+    /**
+     * the context.
+     */
+    protected CssSelectors context;
+
+    // internal counter
+    private static long increment;
+
+    /** for validator only, true if the property comes from a file */
+    boolean byUser = false;
+
+    /**
+     * This keyword is used a lot of time in CSS2
+     */
+    public static final CssIdent inherit;
+    
+    /**
+     * Used in all CSS versions
+     */
+    public static final CssIdent transparent;
+
+    /**
+    * Value introduced in CSS3
+    */
+    public static final CssIdent initial;
+
+    static {
+	inherit     = new CssIdent("inherit");
+	transparent = new CssIdent("transparent");
+	initial     = new CssIdent("initial");
+    }
+    /**
+     * Create a new CssProperty.
+     */
+    public CssProperty() {
+	order = increment++;
+    }
+
+    /**
+     * Returns true if the property is inherited.
+     */
+    public boolean inherited() {
+	return CssProperties.getInheritance(this);
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value is equals to inherit
+     */
+    public boolean isSoftlyInherited() {
+	return false;
+    }
+
+    /**
+     * Returns the value of this property.
+     * It is not very usable, implements your own function.
+     */
+    public abstract Object get();
+
+    /**
+     * Returns the name of this property IN LOWER CASE.
+     */
+    public abstract String getPropertyName();
+
+    /**
+     * Returns the name of this property IN LOWER CASE. escaped
+     */
+    public  String getPropertyNameEscaped() {
+	return Messages.escapeString(getPropertyName());
+    }
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public abstract boolean equals(CssProperty property);
+
+    /**
+     * Print this property.
+     *
+     * @param printer The printer.
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	if (byUser || inherited() || important) {
+	    // if (Inherited() || important) {
+	    printer.print(this);
+	}
+    }
+
+    /**
+     * Returns a string representation of values.
+     * <BR>
+     * So if you want have something like this :
+     * <SAMP> property-name : property-value1 properpty-value2 ...</SAMP>
+     * <BR>
+     * You should write something like this :
+     *  <code>property.getPropertyName() + " : " + property.toString()</code>
+     */
+    public abstract String toString();
+
+    public String getEscaped() {
+	return Messages.escapeString(toString());
+    }
+
+    /**
+     * Set this property to be important.
+     * Overrides this method for a macro
+     */
+    public void setImportant() {
+	important = true;
+    }
+
+    /**
+     * Returns true if this property is important.
+     * Overrides this method for a macro
+     */
+    public boolean getImportant() {
+	return important;
+    }
+
+    /**
+     * Calculate an hashCode for this property.
+     */
+    public final int hashCode() {
+	return getPropertyName().hashCode();
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	this.line = line;
+	this.sourceFile = source;
+    }
+
+    /**
+     * Fix the origin of this property
+     * Overrides this method for a macro
+     *
+     * @see #BROWSER
+     * @see #READER
+     * @see #AUTHOR
+     */
+    public void setOrigin(int origin) {
+	this.origin = origin;
+    }
+
+    /**
+     * Returns the attribute origin
+     *
+     * @return the value of the attribute
+     */
+    public int getOrigin() {
+        return origin;
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     *
+     * @see #print(CssPrinterStyle)
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors context) {
+	this.context = context;
+    }
+
+    /**
+     * Returns the context.
+     *
+     * @see org.w3c.css.css.CssCascadingOrder
+     */
+    public CssSelectors getSelectors() {
+	return context;
+    }
+
+    /**
+     * Duplicate this property.
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     */
+    public CssProperty duplicate() {
+	try {
+	    return (CssProperty) clone();
+	} catch (CloneNotSupportedException e) {
+	    return null;
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public abstract void addToStyle(ApplContext ac, CssStyle style);
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public abstract CssProperty getPropertyInStyle(CssStyle style,
+						   boolean resolve);
+
+    /**
+     * Returns the source file.
+     */
+    public final String getSourceFile() {
+	return sourceFile;
+    }
+
+    /**
+     * Returns the line number in the source file.
+     */
+    public final int getLine() {
+	return line;
+    }
+
+    /**
+     * Calculate the explicit weight and the origin.
+     * Declarations marked '!important' carry more weight than unmarked
+     * (normal) declarations.
+     *
+     * @see org.w3c.css.css.CssCascadingOrder
+     */
+    public final int getExplicitWeight() {
+	// browser < reader < author < browser !important < reader !important
+	//                                                < author !important
+	// here, I use a little trick :
+	//  1 < 2 < 3 < 4 ( 1 + 3 ) < 5 ( 2 + 3 ) < 6 ( 3 + 3 )
+	return origin + ((important)?AUTHOR:0);
+    }
+
+    /**
+     * Calculate the order specified.
+     *
+     * @see org.w3c.css.css.CssCascadingOrder
+     * @see #order
+     */
+    public final long getOrderSpecified() {
+	return order;
+    }
+
+    /**
+     * Mark this property comes from the user
+     *
+     * @param byUser the new value for the attribute
+     */
+    public void setByUser() {
+        byUser = true;
+    }
+
+    /**
+     * Returns the attribute byUser
+     *
+     * @return the value of the attribute
+     */
+    public boolean isByUser() {
+        return byUser;
+    }
+
+}
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssQuotes.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,218 @@
+//
+// $Id: CssQuotes.java,v 1.2 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import java.util.Vector;
+
+import org.w3c.css.parser.CssStyle;
+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.CssOperator;
+import org.w3c.css.values.CssString;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class CssQuotes extends CssProperty {
+
+    Vector values = new Vector();
+
+    private static CssIdent none = new CssIdent("none");
+
+
+    /**
+     * Create a new CssQuotes
+     */
+    public CssQuotes() {
+    }
+
+    /**
+     * Create a new CssQuotes
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssQuotes(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+
+	CssValue val = expression.getValue();
+	int counter = 0;
+	char op = expression.getOperator();
+
+	int valuesNb = expression.getCount();
+
+	setByUser();
+	if (val.equals(inherit)) {
+	    if(valuesNb > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    values.addElement(inherit);
+	    expression.next();
+	    return;
+	} else if (val.equals(none)) {
+	    if(valuesNb > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    values.addElement(none);
+	    expression.next();
+	    return;
+	}
+
+	while(counter < valuesNb) {
+
+	    // there must be a pair number of values
+	    if(val.equals(inherit) || val.equals(none) || valuesNb % 2 == 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+
+	    // the operator must be a space
+	    if(op != CssOperator.SPACE) {
+		throw new InvalidParamException("operator",
+			new Character(op), ac);
+	    }
+
+	    // as String
+	    if(val instanceof CssString) {
+		values.addElement(val);
+	    }
+	    else {
+		throw new InvalidParamException("value",
+			expression.getValue(),
+			getPropertyName(), ac);
+	    }
+	    expression.next();
+	    counter++;
+
+	    val = expression.getValue();
+	    op = expression.getOperator();
+	}
+	/*
+	while ((op == CssOperator.SPACE)
+	       && (counter + 1 < expression.getCount())) {
+	    System.out.println(val);
+	    if(val.equals(inherit) || val.equals(none)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+
+	    if (val instanceof CssString) {
+		values.addElement(val);
+		expression.next();
+		counter++;
+		val = expression.getValue();
+		op = expression.getOperator();
+		if ((op == CssOperator.SPACE)
+		    && (val instanceof CssString)) {
+		    // nothing
+		} else {
+		    throw new InvalidParamException("value",
+						    expression.getValue(),
+						    getPropertyName(), ac);
+		}
+	    } else {
+		throw new InvalidParamException("value",
+						expression.getValue(),
+						getPropertyName(), ac);
+	    }
+	    values.addElement(val);
+	    expression.next();
+	    counter++;
+	    val = expression.getValue();
+	    op = expression.getOperator();
+	}
+	*/
+    }
+
+    public CssQuotes(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return values;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "quotes";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return values.elementAt(0) == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	int i = 0;
+	String ret = "";
+	while (i < values.size()) {
+	    ret += " " + values.elementAt(i);
+	    i++;
+	}
+	return ret.substring(1);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssQuotes != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.cssQuotes = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getQuotes();
+	} else {
+	    return ((Css1Style) style).cssQuotes;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @@TODO
+	return false;
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssQuotesATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,185 @@
+//
+// $Id: CssQuotesATSC.java,v 1.2 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import java.util.Vector;
+
+import org.w3c.css.parser.CssStyle;
+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.CssOperator;
+import org.w3c.css.values.CssString;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class CssQuotesATSC extends CssProperty {
+
+    Vector values = new Vector();
+
+    private static CssIdent none = new CssIdent("none");
+
+
+    /**
+     * Create a new CssQuotesATSC
+     */
+    public CssQuotesATSC() {
+    }
+
+    /**
+     * Create a new CssQuotesATSC
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssQuotesATSC(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+
+	CssValue val = expression.getValue();
+	int counter = 0;
+	char op = expression.getOperator();
+
+	ac.getFrame().addWarning("atsc", val.toString());
+
+	setByUser();
+	if (val.equals(inherit)) {
+	    if(expression.getCount() > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    values.addElement(inherit);
+	    expression.next();
+	    return;
+	} else if (val.equals(none)) {
+	    if(expression.getCount() > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    values.addElement(none);
+	    expression.next();
+	    return;
+	}
+
+
+	while ((op == CssOperator.SPACE)
+	       && (counter + 1 < expression.getCount())) {
+	    if (val instanceof CssString) {
+		values.addElement(val);
+		expression.next();
+		counter++;
+		val = expression.getValue();
+		op = expression.getOperator();
+		if ((op == CssOperator.SPACE)
+		    && (val instanceof CssString)) {
+		    // nothing
+		} else {
+		    throw new InvalidParamException("value",
+						    expression.getValue(),
+						    getPropertyName(), ac);
+		}
+	    } else {
+		throw new InvalidParamException("value",
+						expression.getValue(),
+						getPropertyName(), ac);
+	    }
+	    values.addElement(val);
+	    expression.next();
+	    counter++;
+	    val = expression.getValue();
+	    op = expression.getOperator();
+	}
+
+    }
+
+    public CssQuotesATSC(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return values;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "quotes";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return values.elementAt(0) == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	int i = 0;
+	String ret = "";
+	while (i < values.size()) {
+	    ret += " " + values.elementAt(i);
+	    i++;
+	}
+	return ret.substring(1);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssQuotesATSC != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.cssQuotesATSC = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getQuotesATSC();
+	} else {
+	    return ((Css1Style) style).cssQuotesATSC;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @@TODO
+	return false;
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssRight.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,86 @@
+//
+// $Id: CssRight.java,v 1.2 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+/**
+ */
+public class CssRight extends CssBoxOffsetFace {
+
+  /**
+   * Create a new CssRight
+   */
+  public CssRight() {
+    super();
+  }
+
+  /**
+   * Create a new CssRight
+   *
+   * @param expression The expression for this property.
+   * @exception InvalidParamException Values are incorrect
+   */
+  public CssRight(ApplContext ac, CssExpression expression, boolean check)
+  	throws InvalidParamException {
+    super(ac, expression, check);
+  }
+
+  public CssRight(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+  /**
+   * Returns the name of this property
+   */
+  public String getPropertyName() {
+    return "right";
+  }
+
+  /**
+   * Add this property to the CssStyle.
+   *
+   * @param style The CssStyle
+   */
+  public void addToStyle(ApplContext ac, CssStyle style) {
+    Css1Style style0 = (Css1Style) style;
+    if (style0.cssRight != null)
+      style0.addRedefinitionWarning(ac, this);
+    style0.cssRight = this;
+  }
+
+  /**
+   * Get this property in the style.
+   *
+   * @param style The style where the property is
+   * @param resolve if true, resolve the style to find this property
+   */
+  public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+    if (resolve) {
+      return ((Css1Style) style).getRight();
+    } else {
+      return ((Css1Style) style).getRight();
+    }
+  }
+
+  /**
+   * Compares two properties for equality.
+   *
+   * @param value The other property.
+   */
+  public boolean equals(CssProperty property) {
+    return (property instanceof CssRight &&
+	    value.equals(((CssRight) property).value));
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssTextAlign.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,218 @@
+//
+// $Id: CssTextAlign.java,v 1.4 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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.CssString;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     <A NAME="text-align">5.4.6 &nbsp;&nbsp; 'text-align'</A>
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> left | right | center | justify<BR>
+ *   <EM>Initial:</EM> UA specific<BR>
+ *   <EM>Applies to:</EM> block-level elements<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   This property describes how text is aligned within the element. The actual
+ *   justification algorithm used is UA and human language dependent.
+ *   <P>
+ *   Example:
+ *   <PRE>
+ *   DIV.center { text-align: center }
+ * </PRE>
+ *   <P>
+ *   Since 'text-align' inherits, all block-level elements inside the 'DIV' element
+ *   with 'CLASS=center' will be centered. Note that alignments are relative to
+ *   the width of the element, not the canvas. If 'justify' is not supported,
+ *   the UA will supply a replacement. Typically, this will be 'left' for western
+ *   languages.
+ * @version $Revision: 1.4 $
+ */
+public class CssTextAlign extends CssProperty
+        implements CssTextPropertiesConstants {
+
+    int value;
+    CssValue valueString;
+
+    private static int[] hash_values;
+
+    static CssIdent start = new CssIdent("start");
+    static CssIdent end = new CssIdent("end");
+
+    /**
+     * Create a new CssTextAlign
+     */
+    public CssTextAlign() {
+	// depends on user agent and writing direction
+    }
+
+    /**
+     * Create a new CssTextAlign
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssTextAlign(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	int hash = val.hashCode();
+
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    valueString = inherit;
+	    expression.next();
+	    return;
+	} else if (val instanceof CssString) {
+	    valueString = val;
+	    expression.next();
+	    return;
+	} else if (val instanceof CssIdent) {
+	    for (int i = 0; i < TEXTALIGN.length; i++) {
+		if (hash_values[i] == hash) {
+		    value = i;
+		    expression.next();
+		    if (val.equals(start) || val.equals(end)) {
+			ac.getFrame().addWarning("xsl", val.toString());
+		    }
+		    return;
+		}
+	    }
+	}
+
+	throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+    }
+
+    public CssTextAlign(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * @return Returns the value.
+     */
+    public int getValue() {
+        return value;
+    }
+
+    /**
+     * @param value The value to set.
+     */
+    public void setValue(int value) {
+        this.value = value;
+    }
+
+    /**
+     * @return Returns the valueString.
+     */
+    public CssValue getValueString() {
+        return valueString;
+    }
+
+    /**
+     * @param valueString The valueString to set.
+     */
+    public void setValueString(CssValue valueString) {
+        this.valueString = valueString;
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	if (valueString != null) {
+	    return valueString;
+	} else {
+	    return TEXTALIGN[value];
+	}
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "text-align";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return valueString == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (valueString != null) {
+	    return valueString.toString();
+	} else {
+	    return TEXTALIGN[value];
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssTextAlign != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssTextAlign = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getTextAlign();
+	} else {
+	    return ((Css1Style) style).cssTextAlign;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	if (valueString != null) {
+	    return (property instanceof CssTextAlign
+  	    && valueString.equals(((CssTextAlign) property).valueString));
+	} else {
+	    return (property instanceof CssTextAlign
+		    && value == ((CssTextAlign) property).value);
+	}
+    }
+
+    static {
+	hash_values = new int[TEXTALIGN.length];
+	for (int i=0; i<TEXTALIGN.length; i++)
+	    hash_values[i] = TEXTALIGN[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssTextAlignMob.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,179 @@
+//
+// $Id: CssTextAlignMob.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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;
+
+/**
+ *   <H4>
+ *     <A NAME="text-align">5.4.6 &nbsp;&nbsp; 'text-align'</A>
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> left | right | center | justify<BR>
+ *   <EM>Initial:</EM> UA specific<BR>
+ *   <EM>Applies to:</EM> block-level elements<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   This property describes how text is aligned within the element. The actual
+ *   justification algorithm used is UA and human language dependent.
+ *   <P>
+ *   Example:
+ *   <PRE>
+ *   DIV.center { text-align: center }
+ * </PRE>
+ *   <P>
+ *   Since 'text-align' inherits, all block-level elements inside the 'DIV' element
+ *   with 'CLASS=center' will be centered. Note that alignments are relative to
+ *   the width of the element, not the canvas. If 'justify' is not supported,
+ *   the UA will supply a replacement. Typically, this will be 'left' for western
+ *   languages.
+ * @version $Revision: 1.3 $
+ */
+public class CssTextAlignMob extends CssProperty
+        implements CssTextPropertiesConstants {
+
+    int value;
+    CssValue valueString;
+
+    private static int[] hash_values;
+
+    /**
+     * Create a new CssTextAlignMob
+     */
+    public CssTextAlignMob() {
+	// depends on user agent and writing direction
+    }
+
+    /**
+     * Create a new CssTextAlignMob
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssTextAlignMob(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	int hash = val.hashCode();
+
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    valueString = inherit;
+	    expression.next();
+	    return;
+	} else if (val instanceof CssIdent) {
+	    for (int i = 0; i < TEXTALIGN.length; i++) {
+		if (hash_values[i] == hash) {
+		    value = i;
+		    expression.next();
+		    return;
+		}
+	    }
+	}
+
+	throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+    }
+
+    public CssTextAlignMob(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	if (valueString != null) {
+	    return valueString;
+	} else {
+	    return TEXTALIGN[value];
+	}
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "text-align";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return valueString == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (valueString != null) {
+	    return valueString.toString();
+	} else {
+	    return TEXTALIGN[value];
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssTextAlignMob != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssTextAlignMob = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getTextAlignMob();
+	} else {
+	    return ((Css1Style) style).cssTextAlignMob;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	if (valueString != null) {
+	    return (property instanceof CssTextAlignMob
+  	    && valueString.equals(((CssTextAlignMob) property).valueString));
+	} else {
+	    return (property instanceof CssTextAlignMob
+		    && value == ((CssTextAlignMob) property).value);
+	}
+    }
+
+    static {
+	hash_values = new int[TEXTALIGN.length];
+	for (int i=0; i<TEXTALIGN.length; i++)
+	    hash_values[i] = TEXTALIGN[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssTextAlignTV.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,182 @@
+//
+// $Id: CssTextAlignTV.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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;
+
+/**
+ *   <H4>
+ *     <A NAME="text-align">5.4.6 &nbsp;&nbsp; 'text-align'</A>
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> left | right | center | justify<BR>
+ *   <EM>Initial:</EM> UA specific<BR>
+ *   <EM>Applies to:</EM> block-level elements<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   This property describes how text is aligned within the element. The actual
+ *   justification algorithm used is UA and human language dependent.
+ *   <P>
+ *   Example:
+ *   <PRE>
+ *   DIV.center { text-align: center }
+ * </PRE>
+ *   <P>
+ *   Since 'text-align' inherits, all block-level elements inside the 'DIV' element
+ *   with 'CLASS=center' will be centered. Note that alignments are relative to
+ *   the width of the element, not the canvas. If 'justify' is not supported,
+ *   the UA will supply a replacement. Typically, this will be 'left' for western
+ *   languages.
+ * @version $Revision: 1.3 $
+ */
+public class CssTextAlignTV extends CssProperty
+        implements CssTextPropertiesConstants {
+
+    int value;
+    CssValue valueString;
+
+    private static int[] hash_values;
+
+    static CssIdent start = new CssIdent("start");
+    static CssIdent end = new CssIdent("end");
+
+    /**
+     * Create a new CssTextAlignTV
+     */
+    public CssTextAlignTV() {
+	// depends on user agent and writing direction
+    }
+
+    /**
+     * Create a new CssTextAlignTV
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssTextAlignTV(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	int hash = val.hashCode();
+
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    valueString = inherit;
+	    expression.next();
+	    return;
+	} else if (val instanceof CssIdent) {
+	    for (int i = 0; i < TEXTALIGNTV.length; i++) {
+		if (hash_values[i] == hash) {
+		    value = i;
+		    expression.next();
+		    return;
+		}
+	    }
+	}
+
+	throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+    }
+
+    public CssTextAlignTV(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	if (valueString != null) {
+	    return valueString;
+	} else {
+	    return TEXTALIGNTV[value];
+	}
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "text-align";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return valueString == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (valueString != null) {
+	    return valueString.toString();
+	} else {
+	    return TEXTALIGNTV[value];
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssTextAlignTV != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssTextAlignTV = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getTextAlignTV();
+	} else {
+	    return ((Css1Style) style).cssTextAlignTV;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	if (valueString != null) {
+	    return (property instanceof CssTextAlignTV
+  	    && valueString.equals(((CssTextAlignTV) property).valueString));
+	} else {
+	    return (property instanceof CssTextAlignTV
+		    && value == ((CssTextAlignTV) property).value);
+	}
+    }
+
+    static {
+	hash_values = new int[TEXTALIGNTV.length];
+	for (int i=0; i<TEXTALIGNTV.length; i++)
+	    hash_values[i] = TEXTALIGNTV[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssTextDecoration.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,238 @@
+//
+// $Id: CssTextDecoration.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'text-decoration'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> none | [ underline || overline || line-through || blink ]<BR>
+ *   <EM>Initial:</EM> none<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no, but see clarification below<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   This property describes decorations that are added to the text of an element.
+ *   If the element has no text (e.g. the 'IMG' element in HTML) or is an empty
+ *   element (e.g. '&lt;EM&gt;&lt;/EM&gt;'), this property has no effect. A value
+ *   of 'blink' causes the text to blink.
+ *   <P>
+ *   The color(s) required for the text decoration should be derived from the
+ *   'color' property value.
+ *   <P>
+ *   This property is not inherited, but elements should match their parent. E.g.,
+ *   if an element is underlined, the line should span the child elements. The
+ *   color of the underlining will remain the same even if descendant elements
+ *   have different 'color' values.
+ *   <PRE>
+ *   A:link, A:visited, A:active { text-decoration: underline }
+ * </PRE>
+ *   <P>
+ *   The example above would underline the text of all links (i.e., all 'A' elements
+ *   with a 'HREF' attribute).
+ *   <P>
+ *   UAs must recognize the keyword 'blink', but are not required to support the
+ *   blink effect.
+ *
+ * @version $Revision: 1.3 $
+ */
+public class CssTextDecoration extends CssProperty
+        implements CssTextPropertiesConstants {
+
+    CssValue value;
+
+    private boolean[] values = new boolean[TEXTDECORATION.length];
+
+    private static int[] hash_values;
+
+    private static CssIdent none = new CssIdent("none");
+
+    private static final int INVALID = -1;
+
+    /**
+     * Create a new CssTextDecoration
+     */
+    public CssTextDecoration() {
+    }
+
+    /**
+     * Create a new CssTextDecoration
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssTextDecoration(ApplContext ac, CssExpression expression, boolean check)
+	    throws InvalidParamException {
+
+	CssValue val = expression.getValue();
+	boolean find = true;
+	//int computed = 0;
+	int index = INVALID;
+
+	setByUser();
+
+	if (val.equals(none)) {
+	    if(expression.getCount() > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    value = none;
+	    expression.next();
+	    return;
+	} else if (val.equals(inherit)) {
+	    if(expression.getCount() > 1) {
+		 throw new InvalidParamException("unrecognize", ac);
+	    }
+	    value = inherit;
+	    expression.next();
+	    return;
+	}
+	val = null;
+
+	if(check && expression.getCount() > 4) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	while (find) {
+	    find = false;
+	    val = expression.getValue();
+
+	    if(val != null && val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+
+	    if (val instanceof CssIdent) {
+		index = getIndex((CssIdent) val, ac);
+		if (values[index] == true) {
+		    throw new InvalidParamException("same-value",
+						    TEXTDECORATION[index], ac);
+		} else {
+		    values[index] = true;
+		    find = true;
+		    expression.next();
+		}
+	    } else if (val != null) {
+		throw new InvalidParamException("value", val.toString(),
+						getPropertyName(), ac);
+	    }
+	}
+    }
+
+    public CssTextDecoration(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	if (value != null) {
+	    return value;
+	}
+	for (int i = 0; i < TEXTDECORATION.length; i++) {
+	    if (values[i] == true) {
+		return TEXTDECORATION[i];
+	    }
+	}
+	return null;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "text-decoration";
+    }
+
+    private int getIndex(CssIdent val, ApplContext ac) throws InvalidParamException {
+	int hash = val.hashCode();
+	for (int i = 0; i < TEXTDECORATION.length; i++) {
+	    if (hash_values[i] == hash) {
+		return i;
+	    }
+	}
+	throw new InvalidParamException("value", val.toString(),
+					getPropertyName(), ac);
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (value != null) {
+	    return value.toString();
+	} else {
+	    String ret = "";
+	    for (int i = 0; i < TEXTDECORATION.length; i++) {
+		if (values[i] == true) {
+		    ret += " " + TEXTDECORATION[i];
+		}
+	    }
+	    return ret.substring(1);
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssTextDecoration != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.cssTextDecoration = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getTextDecoration();
+	} else {
+	    return ((Css1Style) style).cssTextDecoration;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @@ FIXME
+	return false;
+    }
+
+    static {
+	hash_values = new int[TEXTDECORATION.length];
+	for (int i=0; i<TEXTDECORATION.length; i++) {
+	    hash_values[i] = TEXTDECORATION[i].hashCode();
+	}
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssTextDecorationMob.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,238 @@
+//
+// $Id: CssTextDecorationMob.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'text-decoration'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> none | [ underline || overline || line-through || blink ]<BR>
+ *   <EM>Initial:</EM> none<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no, but see clarification below<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   This property describes decorations that are added to the text of an element.
+ *   If the element has no text (e.g. the 'IMG' element in HTML) or is an empty
+ *   element (e.g. '&lt;EM&gt;&lt;/EM&gt;'), this property has no effect. A value
+ *   of 'blink' causes the text to blink.
+ *   <P>
+ *   The color(s) required for the text decoration should be derived from the
+ *   'color' property value.
+ *   <P>
+ *   This property is not inherited, but elements should match their parent. E.g.,
+ *   if an element is underlined, the line should span the child elements. The
+ *   color of the underlining will remain the same even if descendant elements
+ *   have different 'color' values.
+ *   <PRE>
+ *   A:link, A:visited, A:active { text-decoration: underline }
+ * </PRE>
+ *   <P>
+ *   The example above would underline the text of all links (i.e., all 'A' elements
+ *   with a 'HREF' attribute).
+ *   <P>
+ *   UAs must recognize the keyword 'blink', but are not required to support the
+ *   blink effect.
+ *
+ * @version $Revision: 1.3 $
+ */
+public class CssTextDecorationMob  extends CssProperty
+        implements CssTextPropertiesConstants {
+
+    CssValue value;
+
+    private boolean[] values = new boolean[TEXTDECORATIONMOB.length];
+
+    private static int[] hash_values;
+
+    private static CssIdent none = new CssIdent("none");
+
+    private static final int INVALID = -1;
+
+    /**
+     * Create a new CssTextDecorationMob
+     */
+    public CssTextDecorationMob() {
+    }
+
+    /**
+     * Create a new CssTextDecorationMob
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssTextDecorationMob(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	CssValue val = expression.getValue();
+	boolean find = true;
+	//int computed = 0;
+	int index = INVALID;
+
+	setByUser();
+
+	if (val.equals(none)) {
+	    if(expression.getCount() > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    value = none;
+	    expression.next();
+	    return;
+	} else if (val.equals(inherit)) {
+	    if(expression.getCount() > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    value = inherit;
+	    expression.next();
+	    return;
+	}
+	val = null;
+
+	if(check && expression.getCount() > 4) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	while (find) {
+	    find = false;
+	    val = expression.getValue();
+
+	    if(val != null && val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+
+	    if (val instanceof CssIdent) {
+		index = getIndex((CssIdent) val, ac);
+		if (values[index] == true) {
+		    throw new InvalidParamException("same-value",
+						    TEXTDECORATIONMOB[index], ac);
+		} else {
+		    values[index] = true;
+		    find = true;
+		    expression.next();
+		}
+	    } else if (val != null) {
+		throw new InvalidParamException("value", val.toString(),
+						getPropertyName(), ac);
+	    }
+	}
+    }
+
+    public CssTextDecorationMob(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	if (value != null) {
+	    return value;
+	}
+	for (int i = 0; i < TEXTDECORATIONMOB.length; i++) {
+	    if (values[i] == true) {
+		return TEXTDECORATIONMOB[i];
+	    }
+	}
+	return null;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "text-decoration";
+    }
+
+    private int getIndex(CssIdent val, ApplContext ac) throws InvalidParamException {
+	int hash = val.hashCode();
+	for (int i = 0; i < TEXTDECORATIONMOB.length; i++) {
+	    if (hash_values[i] == hash) {
+		return i;
+	    }
+	}
+	throw new InvalidParamException("value", val.toString(),
+					getPropertyName(), ac);
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (value != null) {
+	    return value.toString();
+	} else {
+	    String ret = "";
+	    for (int i = 0; i < TEXTDECORATIONMOB.length; i++) {
+		if (values[i] == true) {
+		    ret += " " + TEXTDECORATIONMOB[i];
+		}
+	    }
+	    return ret.substring(1);
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssTextDecorationMob != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.cssTextDecorationMob = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getTextDecorationMob();
+	} else {
+	    return ((Css1Style) style).cssTextDecorationMob;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @@ FIXME
+	return false;
+    }
+
+    static {
+	hash_values = new int[TEXTDECORATIONMOB.length];
+	for (int i=0; i<TEXTDECORATIONMOB.length; i++) {
+	    hash_values[i] = TEXTDECORATIONMOB[i].hashCode();
+	}
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssTextDecorationTV.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,238 @@
+//
+// $Id: CssTextDecorationTV.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'text-decoration'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> none | [ underline || overline || line-through || blink ]<BR>
+ *   <EM>Initial:</EM> none<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no, but see clarification below<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   This property describes decorations that are added to the text of an element.
+ *   If the element has no text (e.g. the 'IMG' element in HTML) or is an empty
+ *   element (e.g. '&lt;EM&gt;&lt;/EM&gt;'), this property has no effect. A value
+ *   of 'blink' causes the text to blink.
+ *   <P>
+ *   The color(s) required for the text decoration should be derived from the
+ *   'color' property value.
+ *   <P>
+ *   This property is not inherited, but elements should match their parent. E.g.,
+ *   if an element is underlined, the line should span the child elements. The
+ *   color of the underlining will remain the same even if descendant elements
+ *   have different 'color' values.
+ *   <PRE>
+ *   A:link, A:visited, A:active { text-decoration: underline }
+ * </PRE>
+ *   <P>
+ *   The example above would underline the text of all links (i.e., all 'A' elements
+ *   with a 'HREF' attribute).
+ *   <P>
+ *   UAs must recognize the keyword 'blink', but are not required to support the
+ *   blink effect.
+ *
+ * @version $Revision: 1.3 $
+ */
+public class CssTextDecorationTV extends CssProperty
+        implements CssTextPropertiesConstants {
+
+    CssValue value;
+
+    private boolean[] values = new boolean[TEXTDECORATIONTV.length];
+
+    private static int[] hash_values;
+
+    private static CssIdent none = new CssIdent("none");
+
+    private static final int INVALID = -1;
+
+    /**
+     * Create a new CssTextDecorationTV
+     */
+    public CssTextDecorationTV() {
+    }
+
+    /**
+     * Create a new CssTextDecorationTV
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssTextDecorationTV(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	CssValue val = expression.getValue();
+	boolean find = true;
+	//int computed = 0;
+	int index = INVALID;
+
+	setByUser();
+
+	if (val.equals(none)) {
+	    if(expression.getCount() > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    value = none;
+	    expression.next();
+	    return;
+	} else if (val.equals(inherit)) {
+	    if(expression.getCount() > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    value = inherit;
+	    expression.next();
+	    return;
+	}
+	val = null;
+
+	if(check && expression.getCount() > 4) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	while (find) {
+	    find = false;
+	    val = expression.getValue();
+
+	    if(val != null && val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+
+	    if (val instanceof CssIdent) {
+		index = getIndex((CssIdent) val, ac);
+		if (values[index] == true) {
+		    throw new InvalidParamException("same-value",
+						    TEXTDECORATIONTV[index], ac);
+		} else {
+		    values[index] = true;
+		    find = true;
+		    expression.next();
+		}
+	    } else if (val != null) {
+		throw new InvalidParamException("value", val.toString(),
+						getPropertyName(), ac);
+	    }
+	}
+    }
+
+    public CssTextDecorationTV(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	if (value != null) {
+	    return value;
+	}
+	for (int i = 0; i < TEXTDECORATIONTV.length; i++) {
+	    if (values[i] == true) {
+		return TEXTDECORATIONTV[i];
+	    }
+	}
+	return null;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "text-decoration";
+    }
+
+    private int getIndex(CssIdent val, ApplContext ac) throws InvalidParamException {
+	int hash = val.hashCode();
+	for (int i = 0; i < TEXTDECORATIONTV.length; i++) {
+	    if (hash_values[i] == hash) {
+		return i;
+	    }
+	}
+	throw new InvalidParamException("value", val.toString(),
+					getPropertyName(), ac);
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (value != null) {
+	    return value.toString();
+	} else {
+	    String ret = "";
+	    for (int i = 0; i < TEXTDECORATIONTV.length; i++) {
+		if (values[i] == true) {
+		    ret += " " + TEXTDECORATIONTV[i];
+		}
+	    }
+	    return ret.substring(1);
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssTextDecorationTV != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.cssTextDecorationTV = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getTextDecorationTV();
+	} else {
+	    return ((Css1Style) style).cssTextDecorationTV;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @@ FIXME
+	return false;
+    }
+
+    static {
+	hash_values = new int[TEXTDECORATIONTV.length];
+	for (int i=0; i<TEXTDECORATIONTV.length; i++) {
+	    hash_values[i] = TEXTDECORATIONTV[i].hashCode();
+	}
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssTextIndent.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,150 @@
+//
+// $Id: CssTextIndent.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'text-indent'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;length&gt; | &lt;percentage&gt;<BR>
+ *   <EM>Initial:</EM> 0<BR>
+ *   <EM>Applies to:</EM> block-level elements<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> refer to parent element's width<BR>
+ *   <P>
+ *   The property specifies the indentation that appears before the first formatted
+ *   line. The value of 'text-indent' may be negative, but there may be
+ *   implementation-specific limits. An indentation is not inserted in the middle
+ *   of an element that was broken by another (such as 'BR' in HTML).
+ *   <P>
+ *   Example:
+ *   <PRE>
+ *   P { text-indent: 3em }
+ * </PRE>
+ * @version $Revision: 1.3 $
+ */
+public class CssTextIndent extends CssProperty  {
+
+    CssValue value = new CssLength();
+
+    /**
+     * Create a new CssTextIndent
+     */
+    public CssTextIndent() {
+    }
+
+    /**
+     * Create a new CssTextIndent
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssTextIndent(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	} else if (val instanceof CssLength || val instanceof CssPercentage) {
+	    value = val;
+	} else if (val instanceof CssNumber) {
+	    value = ((CssNumber) val).getLength();
+	} else {
+	    throw new InvalidParamException("value", val.toString(),
+					    getPropertyName(), ac);
+	}
+
+	expression.next();
+    }
+
+    public CssTextIndent(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "text-indent";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssTextIndent != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssTextIndent = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getTextIndent();
+	} else {
+	    return ((Css1Style) style).cssTextIndent;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssTextIndent &&
+		value.equals(((CssTextIndent) property).value));
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssTextIndentMob.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,149 @@
+//
+// $Id: CssTextIndentMob.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'text-indent'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;length&gt; | &lt;percentage&gt;<BR>
+ *   <EM>Initial:</EM> 0<BR>
+ *   <EM>Applies to:</EM> block-level elements<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> refer to parent element's width<BR>
+ *   <P>
+ *   The property specifies the indentation that appears before the first formatted
+ *   line. The value of 'text-indent' may be negative, but there may be
+ *   implementation-specific limits. An indentation is not inserted in the middle
+ *   of an element that was broken by another (such as 'BR' in HTML).
+ *   <P>
+ *   Example:
+ *   <PRE>
+ *   P { text-indent: 3em }
+ * </PRE>
+ * @version $Revision: 1.3 $
+ */
+public class CssTextIndentMob extends CssProperty  {
+
+    CssValue value = new CssLength();
+
+    /**
+     * Create a new CssTextIndent
+     */
+    public CssTextIndentMob() {
+    }
+
+    /**
+     * Create a new CssTextIndentMob
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssTextIndentMob(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	} else if (val instanceof CssLength ) {
+	    value = val;
+	} else if (val instanceof CssNumber) {
+	    value = ((CssNumber) val).getLength();
+	} else {
+	    throw new InvalidParamException("value", val.toString(),
+					    getPropertyName(), ac);
+	}
+
+	expression.next();
+    }
+
+    public CssTextIndentMob(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "text-indent";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssTextIndentMob != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssTextIndentMob = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getTextIndentMob();
+	} else {
+	    return ((Css1Style) style).cssTextIndentMob;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssTextIndentMob &&
+		value.equals(((CssTextIndentMob) property).value));
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssTextPropertiesConstants.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,41 @@
+//
+// $Id: CssTextPropertiesConstants.java,v 1.2 2005-09-08 12:23:34 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 org.w3c.css.properties.css1;
+
+/**
+ * @version $Revision: 1.2 $
+ */
+public interface CssTextPropertiesConstants {
+  public static String[] TEXTDECORATION = {
+    "underline", "overline", "line-through", "blink", "inherit" };
+
+  public static String[] TEXTDECORATIONTV = {
+	"none", "underline", "overline", "line-through", "inherit" };
+
+  public static String[] TEXTDECORATIONMOB = {
+    "underline", "inherit" };
+
+  public static String[] VERTICALALIGN = {
+    "auto", "use-script", "baseline", "sub", "super", "top", "text-top",
+    "central", "middle", "bottom", "text-bottom", "inherit", "initial" };
+
+  public static String[] VERTICALALIGNMOB = {
+    "baseline", "sub", "super", "inherit" };
+
+  public static String[] VERTICALALIGNTV = {
+    "baseline", "sub", "super", "top", "middle", "bottom", "inherit" };
+
+  public static String[] TEXTTRANSFORM = {
+    "none", "capitalize", "uppercase", "lowercase", "inherit" };
+
+  public static String[] TEXTALIGN = {
+    "left", "right", "center", "justify", "inherit", "start", "end" };
+
+  public static String[] TEXTALIGNTV = {
+	"left", "right", "center", "justify", "inherit" };
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssTextShadow.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,175 @@
+//
+// $Id: CssTextShadow.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import java.util.Vector;
+
+import org.w3c.css.parser.CssStyle;
+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.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public class CssTextShadow extends CssProperty
+        implements CssTextPropertiesConstants {
+
+    CssValue value;
+
+    Vector faces = new Vector();
+
+    private static CssIdent none = new CssIdent("none");
+
+    /**
+     * Create a new CssTextShadow
+     */
+    public CssTextShadow() {
+	value = none;
+    }
+
+    /**
+     * Create a new CssTextShadow
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssTextShadow(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Create a new CssTextShadow
+     *
+     * @param expression The expression for this property
+     * @param check if true, checks the number of parameters
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssTextShadow(ApplContext ac, CssExpression expression, boolean check)
+	    throws InvalidParamException {
+
+	int count = expression.getCount();
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	if (val.equals(none)) {
+	    if(count > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    value = none;
+	    expression.next();
+	    return;
+	} else if (val.equals(inherit)) {
+	    if(count > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    value = inherit;
+	    expression.next();
+	    return;
+	} else {
+	    TextShadowFace face;
+	    char op = CssOperator.COMMA;
+	    while (op == CssOperator.COMMA) {
+		face = new TextShadowFace(ac, expression);
+		value = null;
+		op = face.op;
+		faces.addElement(face);
+	    }
+	    if(check && !expression.end()) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	}
+	val = null;
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	if (value != null) {
+	    return value;
+	}
+	return faces.elementAt(0);
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "text-shadow";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (value != null) {
+	    return value.toString();
+	} else {
+	    int i = 0;
+	    int l = faces.size();
+	    String ret = "";
+	    while (i != l) {
+		ret += new Character(CssOperator.COMMA)
+		    + " " + faces.elementAt(i++);
+	    }
+	    return ret.substring(2);
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssTextShadow != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.cssTextShadow = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getTextShadow();
+	} else {
+	    return ((Css1Style) style).cssTextShadow;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @@ FIXME
+	return false;
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssTextShadowATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,171 @@
+//
+// $Id: CssTextShadowATSC.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import java.util.Vector;
+
+import org.w3c.css.parser.CssStyle;
+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.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public class CssTextShadowATSC extends CssProperty
+        implements CssTextPropertiesConstants {
+
+    CssValue value;
+
+    Vector faces = new Vector();
+
+    private static CssIdent none = new CssIdent("none");
+
+    /**
+     * Create a new CssTextShadowATSC
+     */
+    public CssTextShadowATSC() {
+	value = none;
+    }
+
+    /**
+     * Create a new CssTextShadowATSC
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssTextShadowATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	int count = expression.getCount();
+
+	ac.getFrame().addWarning("atsc", val.toString());
+
+	if (val.equals(none)) {
+	    if(count > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    value = none;
+	    expression.next();
+	    return;
+	} else if (val.equals(inherit)) {
+	    if(count > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    value = inherit;
+	    expression.next();
+	    return;
+	} else {
+	    TextShadowFace face;
+	    char op = CssOperator.COMMA;
+	    while (op == CssOperator.COMMA) {
+		face = new TextShadowFace(ac, expression);
+		value = null;
+		op = face.op;
+		faces.addElement(face);
+	    }
+	    if(check && !expression.end()) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	}
+	val = null;
+
+    }
+
+    public CssTextShadowATSC(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	if (value != null) {
+	    return value;
+	}
+	return faces.elementAt(0);
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "text-shadow";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (value != null) {
+	    return value.toString();
+	} else {
+	    int i = 0;
+	    int l = faces.size();
+	    String ret = "";
+	    while (i != l) {
+		ret += new Character(CssOperator.COMMA)
+		    + " " + faces.elementAt(i++);
+	    }
+	    return ret.substring(2);
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssTextShadowATSC != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.cssTextShadowATSC = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getTextShadowATSC();
+	} else {
+	    return ((Css1Style) style).cssTextShadowATSC;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @@ FIXME
+	return false;
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssTextTransform.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,177 @@
+//
+// $Id: CssTextTransform.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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;
+
+/**
+ *   <H4>
+ *     <A NAME="text-transform">5.4.5 &nbsp;&nbsp; 'text-transform'</A>
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> capitalize | uppercase | lowercase | none<BR>
+ *   <EM>Initial:</EM> none<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <DL>
+ *     <DT>
+ *       'capitalize'
+ *     <DD>
+ *       uppercases the first character of each word
+ *     <DT>
+ *       'uppercase'
+ *     <DD>
+ *       uppercases all letters of the element
+ *     <DT>
+ *       'lowercase'
+ *     <DD>
+ *       lowercases all letters of the element
+ *     <DT>
+ *       'none'
+ *     <DD>
+ *       neutralizes inherited value.
+ *   </DL>
+ *   <P>
+ *   The actual transformation in each case is human language dependent. See
+ *   <A href="#ref4">[4]</A> for ways to find the language of an element.
+ *   <PRE>
+ *   H1 { text-transform: uppercase }
+ * </PRE>
+ *   <P>
+ *   The example above would put 'H1' elements in uppercase text.
+ *
+ * <P>
+ * <A NAME="ref4">[4]</A> F Yergeau, G Nicol, G Adams, M D&uuml;rst:
+ * "<A HREF="ftp://ietf.org/internet-drafts/draft-ietf-html-i18n-05.txt">Internationalization
+ * of the Hypertext Markup Language</A>"
+ * (ftp://ietf.org/internet-drafts/draft-ietf-html-i18n-05.txt).
+ *
+ * @version $Revision: 1.3 $
+ */
+public class CssTextTransform extends CssProperty
+        implements CssTextPropertiesConstants {
+
+    /**
+     * Create a new CssTextTransform
+     */
+    public CssTextTransform() {
+    }
+
+    /**
+     * Create a new CssTextTransform
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The value is incorrect
+     */
+    public CssTextTransform(ApplContext ac, CssExpression expression, boolean check)
+	throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	int hash = val.hashCode();
+
+	if (val instanceof CssIdent) {
+	    for (int i = 0; i < TEXTTRANSFORM.length; i++) {
+		if (hash_values[i] == hash) {
+		    value = i;
+		    expression.next();
+		    return;
+		}
+	    }
+	}
+	throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+    }
+
+    public CssTextTransform(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return TEXTTRANSFORM[value];
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "text-transform";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == (TEXTTRANSFORM.length - 1);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return TEXTTRANSFORM[value];
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssTextTransform != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssTextTransform = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getTextTransform();
+	} else {
+	    return ((Css1Style) style).cssTextTransform;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssTextTransform &&
+		value == ((CssTextTransform) property).value);
+    }
+
+    private int value;
+
+    private static int[] hash_values;
+
+    static {
+	hash_values = new int[TEXTTRANSFORM.length];
+	for (int i=0; i<TEXTTRANSFORM.length; i++)
+	    hash_values[i] = TEXTTRANSFORM[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssTop.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,86 @@
+//
+// $Id: CssTop.java,v 1.2 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+/**
+ */
+public class CssTop extends CssBoxOffsetFace {
+
+  /**
+   * Create a new CssTop
+   */
+  public CssTop() {
+    super();
+  }
+
+  /**
+   * Create a new CssTop
+   *
+   * @param expression The expression for this property.
+   * @exception InvalidParamException Values are incorrect
+   */
+  public CssTop(ApplContext ac, CssExpression expression,boolean check)
+  	throws InvalidParamException {
+    super(ac, expression, check);
+  }
+
+  public CssTop(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+  }
+
+  /**
+   * Returns the name of this property
+   */
+  public String getPropertyName() {
+    return "top";
+  }
+
+  /**
+   * Add this property to the CssStyle.
+   *
+   * @param style The CssStyle
+   */
+  public void addToStyle(ApplContext ac, CssStyle style) {
+    Css1Style style0 = (Css1Style) style;
+    if (style0.cssTop != null)
+      style0.addRedefinitionWarning(ac, this);
+    style0.cssTop = this;
+  }
+
+  /**
+   * Get this property in the style.
+   *
+   * @param style The style where the property is
+   * @param resolve if true, resolve the style to find this property
+   */
+  public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+    if (resolve) {
+      return ((Css1Style) style).getTop();
+    } else {
+      return ((Css1Style) style).getTop();
+    }
+  }
+
+  /**
+   * Compares two properties for equality.
+   *
+   * @param value The other property.
+   */
+  public boolean equals(CssProperty property) {
+    return (property instanceof CssTop &&
+	    value.equals(((CssTop) property).value));
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssUnicodeBidi.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,150 @@
+//
+// $Id: CssUnicodeBidi.java,v 1.2 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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 CssUnicodeBidi extends CssProperty {
+
+    CssValue value;
+
+    private static CssIdent normal = new CssIdent("normal");
+
+    private static CssIdent embed = new CssIdent("embed");
+
+    private static CssIdent bidi_override = new CssIdent("bidi-override");
+
+    /**
+     * Create a new CssUnicodeBidi
+     */
+    public CssUnicodeBidi() {
+	value = normal;
+    }
+
+    /**
+     * Create a new CssUnicodeBidi
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssUnicodeBidi(ApplContext ac, CssExpression expression, boolean check)
+	    throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+	if (val.equals(inherit)) {
+	    value = inherit;
+	    expression.next();
+	} else if (val.equals(normal)) {
+	    value = normal;
+	    expression.next();
+	} else if (val.equals(embed)) {
+	    value = embed;
+	    expression.next();
+	} else if (val.equals(bidi_override)) {
+	    value = bidi_override;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+
+    }
+
+    public CssUnicodeBidi(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "unicode-bidi";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssUnicodeBidi != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssUnicodeBidi = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getUnicodeBidi();
+	} else {
+	    return ((Css1Style) style).cssUnicodeBidi;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssUnicodeBidi &&
+		value.equals(((CssUnicodeBidi) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == normal;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssUnicodeBidiATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,164 @@
+//
+// $Id: CssUnicodeBidiATSC.java,v 1.2 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class CssUnicodeBidiATSC extends CssProperty {
+
+    CssValue value;
+
+    private static CssIdent normal = new CssIdent("normal");
+
+    private static CssIdent embed = new CssIdent("embed");
+
+    private static CssIdent bidi_override = new CssIdent("bidi-override");
+
+    /**
+     * Create a new CssUnicodeBidiATSC
+     */
+    public CssUnicodeBidiATSC() {
+	value = normal;
+    }
+
+    /**
+     * Create a new CssUnicodeBidiATSC
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssUnicodeBidiATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	ac.getFrame().addWarning("atsc", val.toString());
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	    expression.next();
+	} else if (val.equals(normal)) {
+	    value = normal;
+	    expression.next();
+	} else if (val.equals(embed)) {
+	    value = embed;
+	    expression.next();
+	} else if (val.equals(bidi_override)) {
+	    value = bidi_override;
+	    expression.next();
+	} else if (val instanceof CssNumber) {
+	    if (((CssNumber) val).isInteger()) {
+		value = val;
+		expression.next();
+		return;
+	    } else {
+		throw new InvalidParamException("integer",
+						val.toString(),
+						getPropertyName(), ac);
+	    }
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+
+    }
+
+    public CssUnicodeBidiATSC(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+}
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "unicode-bidi";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssUnicodeBidiATSC != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssUnicodeBidiATSC = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getUnicodeBidiATSC();
+	} else {
+	    return ((Css1Style) style).cssUnicodeBidiATSC;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssUnicodeBidiATSC &&
+		value.equals(((CssUnicodeBidiATSC) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == normal;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssVerticalAlign.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,223 @@
+//
+// $Id: CssVerticalAlign.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'vertical-align'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> baseline | sub | super | top | text-top | middle | bottom
+ *   | text-bottom | &lt;percentage&gt; <BR>
+ *   <EM>Initial:</EM> baseline<BR>
+ *   <EM>Applies to:</EM> inline elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> refer to the 'line-height' of the element
+ *   itself<BR>
+ *   <P>
+ *   The property affects the vertical positioning of the element. One set of
+ *   keywords is relative to the parent element:
+ *   <DL>
+ *     <DT>
+ *       'baseline'
+ *     <DD>
+ *       align the baseline of the element (or the bottom, if the element doesn't
+ *       have a baseline) with the baseline of the parent
+ *     <DT>
+ *       'middle'
+ *     <DD>
+ *       align the vertical midpoint of the element (typically an image) with the
+ *       baseline plus half the x-height of the parent
+ *     <DT>
+ *       'sub'
+ *     <DD>
+ *       subscript the element
+ *     <DT>
+ *       'super'
+ *     <DD>
+ *       superscript the element
+ *     <DT>
+ *       'text-top'
+ *     <DD>
+ *       align the top of the element with the top of the parent element's font
+ *     <DT>
+ *       'text-bottom'
+ *     <DD>
+ *       align the bottom of the element with the bottom of the parent element's font
+ *   </DL>
+ *   <P>
+ *   Another set of properties are relative to the formatted line that the element
+ *   is a part of:
+ *   <DL>
+ *     <DT>
+ *       'top'
+ *     <DD>
+ *       align the top of the element with the tallest element on the line
+ *     <DT>
+ *       'bottom'
+ *     <DD>
+ *       align the bottom of the element with the lowest element on the line
+ *   </DL>
+ *   <P>
+ *   Using the 'top' and 'bottom' alignment, unsolvable situations can occur where
+ *   element dependencies form a loop.
+ *   <P>
+ *   Percentage values refer to the value of the 'line-height' property of the
+ *   element itself. They raise the baseline of the element (or the bottom, if
+ *   it has no baseline) the specified amount above the baseline of the parent.
+ *   Negative values are possible. E.g., a value of '-100%' will lower the element
+ *   so that the baseline of the element ends up where the baseline of the next
+ *   line should have been. This allows precise control over the vertical position
+ *   of elements (such as images that are used in place of letters) that don't
+ *   have a baseline.
+ *   <P>
+ *   It is expected that a future version of CSS will allow &lt;length&amp;t;
+ *   as a value on this property.
+ *
+ * @version $Revision: 1.3 $
+ */
+public class CssVerticalAlign extends CssProperty
+    implements CssTextPropertiesConstants {
+
+    Object value;
+
+    private static int[] hash_values;
+
+    /**
+     * Create a new CssVerticalAlign
+     */
+    public CssVerticalAlign() {
+	value = VERTICALALIGN[0];
+    }
+
+    /**
+     * Create a new CssVerticalAlign
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssVerticalAlign(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	int hash = val.hashCode();
+
+	setByUser();
+
+	if (val instanceof CssIdent) {
+	    for (int i = 0; i < VERTICALALIGN.length; i++)
+		if (hash_values[i] == hash) {
+		    value = VERTICALALIGN[i];
+		    expression.next();
+		    return;
+		}
+	    throw new InvalidParamException("value",
+					    val.toString(), getPropertyName(), ac);
+	} else if (val instanceof CssPercentage) {
+	    value = val;
+	    expression.next();
+	} else if (val instanceof CssLength) {
+	    value = val;
+	    expression.next();
+	} else if (val instanceof CssNumber) {
+	    value = ((CssNumber) val).getLength();
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value",
+					    val.toString(), getPropertyName(), ac);
+	}
+    }
+
+    public CssVerticalAlign(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "vertical-align";
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssVerticalAlign != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssVerticalAlign = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getVerticalAlign();
+	} else {
+	    return ((Css1Style) style).cssVerticalAlign;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssVerticalAlign && value.equals(((CssVerticalAlign) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value.equals(VERTICALALIGN[0]);
+    }
+
+    static {
+	hash_values = new int[VERTICALALIGN.length];
+	for (int i=0; i<VERTICALALIGN.length; i++)
+	    hash_values[i] = VERTICALALIGN[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssVerticalAlignCSS1.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,215 @@
+//
+// $Id: CssVerticalAlignCSS1.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'vertical-align'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> baseline | sub | super | top | text-top | middle | bottom
+ *   | text-bottom | &lt;percentage&gt; <BR>
+ *   <EM>Initial:</EM> baseline<BR>
+ *   <EM>Applies to:</EM> inline elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> refer to the 'line-height' of the element
+ *   itself<BR>
+ *   <P>
+ *   The property affects the vertical positioning of the element. One set of
+ *   keywords is relative to the parent element:
+ *   <DL>
+ *     <DT>
+ *       'baseline'
+ *     <DD>
+ *       align the baseline of the element (or the bottom, if the element doesn't
+ *       have a baseline) with the baseline of the parent
+ *     <DT>
+ *       'middle'
+ *     <DD>
+ *       align the vertical midpoint of the element (typically an image) with the
+ *       baseline plus half the x-height of the parent
+ *     <DT>
+ *       'sub'
+ *     <DD>
+ *       subscript the element
+ *     <DT>
+ *       'super'
+ *     <DD>
+ *       superscript the element
+ *     <DT>
+ *       'text-top'
+ *     <DD>
+ *       align the top of the element with the top of the parent element's font
+ *     <DT>
+ *       'text-bottom'
+ *     <DD>
+ *       align the bottom of the element with the bottom of the parent element's font
+ *   </DL>
+ *   <P>
+ *   Another set of properties are relative to the formatted line that the element
+ *   is a part of:
+ *   <DL>
+ *     <DT>
+ *       'top'
+ *     <DD>
+ *       align the top of the element with the tallest element on the line
+ *     <DT>
+ *       'bottom'
+ *     <DD>
+ *       align the bottom of the element with the lowest element on the line
+ *   </DL>
+ *   <P>
+ *   Using the 'top' and 'bottom' alignment, unsolvable situations can occur where
+ *   element dependencies form a loop.
+ *   <P>
+ *   Percentage values refer to the value of the 'line-height' property of the
+ *   element itself. They raise the baseline of the element (or the bottom, if
+ *   it has no baseline) the specified amount above the baseline of the parent.
+ *   Negative values are possible. E.g., a value of '-100%' will lower the element
+ *   so that the baseline of the element ends up where the baseline of the next
+ *   line should have been. This allows precise control over the vertical position
+ *   of elements (such as images that are used in place of letters) that don't
+ *   have a baseline.
+ *   <P>
+ *   It is expected that a future version of CSS will allow &lt;length&amp;t;
+ *   as a value on this property.
+ *
+ * @version $Revision: 1.3 $
+ */
+public class CssVerticalAlignCSS1 extends CssProperty
+    implements CssTextPropertiesConstants {
+
+    Object value;
+
+    private static int[] hash_values;
+
+    /**
+     * Create a new CssVerticalAlignCSS1
+     */
+    public CssVerticalAlignCSS1() {
+	value = VERTICALALIGN[0];
+    }
+
+    /**
+     * Create a new CssVerticalAlignCSS1
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssVerticalAlignCSS1(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	int hash = val.hashCode();
+
+	setByUser();
+
+	if (val instanceof CssIdent) {
+	    for (int i = 0; i < VERTICALALIGN.length; i++)
+		if (hash_values[i] == hash) {
+		    value = VERTICALALIGN[i];
+		    expression.next();
+		    return;
+		}
+	    throw new InvalidParamException("value",
+					    val.toString(), getPropertyName(), ac);
+	} else if (val instanceof CssPercentage) {
+	    value = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value",
+					    val.toString(), getPropertyName(), ac);
+	}
+    }
+
+    public CssVerticalAlignCSS1(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "vertical-align";
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssVerticalAlignCSS1 != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssVerticalAlignCSS1 = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getVerticalAlignCSS1();
+	} else {
+	    return ((Css1Style) style).cssVerticalAlignCSS1;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssVerticalAlignCSS1 && value.equals(((CssVerticalAlignCSS1) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value.equals(VERTICALALIGN[0]);
+    }
+
+    static {
+	hash_values = new int[VERTICALALIGN.length];
+	for (int i=0; i<VERTICALALIGN.length; i++)
+	    hash_values[i] = VERTICALALIGN[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssVerticalAlignMob.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,223 @@
+//
+// $Id: CssVerticalAlignMob.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'vertical-align'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> baseline | sub | super | top | text-top | middle | bottom
+ *   | text-bottom | &lt;percentage&gt; <BR>
+ *   <EM>Initial:</EM> baseline<BR>
+ *   <EM>Applies to:</EM> inline elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> refer to the 'line-height' of the element
+ *   itself<BR>
+ *   <P>
+ *   The property affects the vertical positioning of the element. One set of
+ *   keywords is relative to the parent element:
+ *   <DL>
+ *     <DT>
+ *       'baseline'
+ *     <DD>
+ *       align the baseline of the element (or the bottom, if the element doesn't
+ *       have a baseline) with the baseline of the parent
+ *     <DT>
+ *       'middle'
+ *     <DD>
+ *       align the vertical midpoint of the element (typically an image) with the
+ *       baseline plus half the x-height of the parent
+ *     <DT>
+ *       'sub'
+ *     <DD>
+ *       subscript the element
+ *     <DT>
+ *       'super'
+ *     <DD>
+ *       superscript the element
+ *     <DT>
+ *       'text-top'
+ *     <DD>
+ *       align the top of the element with the top of the parent element's font
+ *     <DT>
+ *       'text-bottom'
+ *     <DD>
+ *       align the bottom of the element with the bottom of the parent element's font
+ *   </DL>
+ *   <P>
+ *   Another set of properties are relative to the formatted line that the element
+ *   is a part of:
+ *   <DL>
+ *     <DT>
+ *       'top'
+ *     <DD>
+ *       align the top of the element with the tallest element on the line
+ *     <DT>
+ *       'bottom'
+ *     <DD>
+ *       align the bottom of the element with the lowest element on the line
+ *   </DL>
+ *   <P>
+ *   Using the 'top' and 'bottom' alignment, unsolvable situations can occur where
+ *   element dependencies form a loop.
+ *   <P>
+ *   Percentage values refer to the value of the 'line-height' property of the
+ *   element itself. They raise the baseline of the element (or the bottom, if
+ *   it has no baseline) the specified amount above the baseline of the parent.
+ *   Negative values are possible. E.g., a value of '-100%' will lower the element
+ *   so that the baseline of the element ends up where the baseline of the next
+ *   line should have been. This allows precise control over the vertical position
+ *   of elements (such as images that are used in place of letters) that don't
+ *   have a baseline.
+ *   <P>
+ *   It is expected that a future version of CSS will allow &lt;length&amp;t;
+ *   as a value on this property.
+ *
+ * @version $Revision: 1.3 $
+ */
+public class CssVerticalAlignMob extends CssProperty
+    implements CssTextPropertiesConstants {
+
+    Object value;
+
+    private static int[] hash_values;
+
+    /**
+     * Create a new CssVerticalAlignMob
+     */
+    public CssVerticalAlignMob() {
+	value = VERTICALALIGNMOB[0];
+    }
+
+    /**
+     * Create a new CssVerticalAlign
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssVerticalAlignMob(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	int hash = val.hashCode();
+
+	setByUser();
+
+	if (val instanceof CssIdent) {
+	    for (int i = 0; i < VERTICALALIGNMOB.length; i++)
+		if (hash_values[i] == hash) {
+		    value = VERTICALALIGNMOB[i];
+		    expression.next();
+		    return;
+		}
+	    throw new InvalidParamException("value",
+					    val.toString(), getPropertyName(), ac);
+	} else if (val instanceof CssPercentage) {
+	    value = val;
+	    expression.next();
+	} else if (val instanceof CssLength) {
+	    value = val;
+	    expression.next();
+	} else if (val instanceof CssNumber) {
+	    value = ((CssNumber) val).getLength();
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value",
+					    val.toString(), getPropertyName(), ac);
+	}
+    }
+
+    public CssVerticalAlignMob(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "vertical-align";
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssVerticalAlignMob != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssVerticalAlignMob = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getVerticalAlignMob();
+	} else {
+	    return ((Css1Style) style).cssVerticalAlignMob;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssVerticalAlignMob && value.equals(((CssVerticalAlignMob) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value.equals(VERTICALALIGNMOB[0]);
+    }
+
+    static {
+	hash_values = new int[VERTICALALIGNMOB.length];
+	for (int i=0; i<VERTICALALIGNMOB.length; i++)
+	    hash_values[i] = VERTICALALIGNMOB[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssVerticalAlignTV.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,215 @@
+//
+// $Id: CssVerticalAlignTV.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'vertical-align'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> baseline | sub | super | top | text-top | middle | bottom
+ *   | text-bottom | &lt;percentage&gt; <BR>
+ *   <EM>Initial:</EM> baseline<BR>
+ *   <EM>Applies to:</EM> inline elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> refer to the 'line-height' of the element
+ *   itself<BR>
+ *   <P>
+ *   The property affects the vertical positioning of the element. One set of
+ *   keywords is relative to the parent element:
+ *   <DL>
+ *     <DT>
+ *       'baseline'
+ *     <DD>
+ *       align the baseline of the element (or the bottom, if the element doesn't
+ *       have a baseline) with the baseline of the parent
+ *     <DT>
+ *       'middle'
+ *     <DD>
+ *       align the vertical midpoint of the element (typically an image) with the
+ *       baseline plus half the x-height of the parent
+ *     <DT>
+ *       'sub'
+ *     <DD>
+ *       subscript the element
+ *     <DT>
+ *       'super'
+ *     <DD>
+ *       superscript the element
+ *     <DT>
+ *       'text-top'
+ *     <DD>
+ *       align the top of the element with the top of the parent element's font
+ *     <DT>
+ *       'text-bottom'
+ *     <DD>
+ *       align the bottom of the element with the bottom of the parent element's font
+ *   </DL>
+ *   <P>
+ *   Another set of properties are relative to the formatted line that the element
+ *   is a part of:
+ *   <DL>
+ *     <DT>
+ *       'top'
+ *     <DD>
+ *       align the top of the element with the tallest element on the line
+ *     <DT>
+ *       'bottom'
+ *     <DD>
+ *       align the bottom of the element with the lowest element on the line
+ *   </DL>
+ *   <P>
+ *   Using the 'top' and 'bottom' alignment, unsolvable situations can occur where
+ *   element dependencies form a loop.
+ *   <P>
+ *   Percentage values refer to the value of the 'line-height' property of the
+ *   element itself. They raise the baseline of the element (or the bottom, if
+ *   it has no baseline) the specified amount above the baseline of the parent.
+ *   Negative values are possible. E.g., a value of '-100%' will lower the element
+ *   so that the baseline of the element ends up where the baseline of the next
+ *   line should have been. This allows precise control over the vertical position
+ *   of elements (such as images that are used in place of letters) that don't
+ *   have a baseline.
+ *   <P>
+ *   It is expected that a future version of CSS will allow &lt;length&amp;t;
+ *   as a value on this property.
+ *
+ * @version $Revision: 1.3 $
+ */
+public class CssVerticalAlignTV extends CssProperty
+    implements CssTextPropertiesConstants {
+
+    Object value;
+
+    private static int[] hash_values;
+
+    /**
+     * Create a new CssVerticalAlignTV
+     */
+    public CssVerticalAlignTV() {
+	value = VERTICALALIGNTV[0];
+    }
+
+    /**
+     * Create a new CssVerticalAlignTV
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssVerticalAlignTV(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	int hash = val.hashCode();
+
+	setByUser();
+
+	if (val instanceof CssIdent) {
+	    for (int i = 0; i < VERTICALALIGNTV.length; i++)
+		if (hash_values[i] == hash) {
+		    value = VERTICALALIGNTV[i];
+		    expression.next();
+		    return;
+		}
+	    throw new InvalidParamException("value",
+					    val.toString(), getPropertyName(), ac);
+	} else if (val instanceof CssPercentage) {
+	    value = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value",
+					    val.toString(), getPropertyName(), ac);
+	}
+    }
+
+    public CssVerticalAlignTV(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "vertical-align";
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssVerticalAlignTV != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssVerticalAlignTV = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getVerticalAlignTV();
+	} else {
+	    return ((Css1Style) style).cssVerticalAlignTV;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssVerticalAlignTV && value.equals(((CssVerticalAlignTV) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value.equals(VERTICALALIGNTV[0]);
+    }
+
+    static {
+	hash_values = new int[VERTICALALIGNTV.length];
+	for (int i=0; i<VERTICALALIGNTV.length; i++)
+	    hash_values[i] = VERTICALALIGNTV[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssVisibility.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,152 @@
+//
+// $Id: CssVisibility.java,v 1.2 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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 CssVisibility extends CssProperty {
+
+    CssValue value;
+
+    private static CssIdent visible = new CssIdent("visible");
+    private static CssIdent hidden = new CssIdent("hidden");
+    private static CssIdent collapse = new CssIdent("collapse");
+    private static CssIdent auto = new CssIdent("auto");
+
+    /**
+     * Create a new CssVisibility
+     */
+    public CssVisibility() {
+	value = visible;
+    }
+
+    /**
+     * Create a new CssVisibility
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssVisibility(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+	if (val.equals(inherit)) {
+	    value = inherit;
+	    expression.next();
+	} else if (val.equals(visible)) {
+	    value = visible;
+	    expression.next();
+	} else if (val.equals(hidden)) {
+	    value = hidden;
+	    expression.next();
+	} else if (val.equals(collapse)) {
+	    value = collapse;
+	    expression.next();
+	} else if (val.equals(auto)) {
+	    value = auto;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+
+    }
+
+    public CssVisibility(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "visibility";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssVisibility != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssVisibility = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getVisibility();
+	} else {
+	    return ((Css1Style) style).cssVisibility;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssVisibility &&
+		value.equals(((CssVisibility) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == visible;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssWhiteSpace.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,178 @@
+//
+// $Id: CssWhiteSpace.java,v 1.4 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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;
+
+/**
+ *   <H4>
+ *      &nbsp;&nbsp; 'white-space'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> normal | pre | nowrap<BR>
+ *   <EM>Initial:</EM> normal<BR>
+ *   <EM>Applies to:</EM> block-level elements<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *
+ *   <P> This property declares how whitespace inside the element is handled:
+ *   the 'normal' way (where whitespace is collapsed), as 'pre' (which behaves
+ *   like the 'PRE' element in HTML) or as 'nowrap' (where wrapping is done only
+ *   through BR elements):
+ *
+ *   <PRE>
+ *   PRE { white-space: pre }
+ *   P   { white-space: normal }
+ * </PRE>
+ *
+ *   <P> The initial value of 'white-space' is 'normal', but a UA will typically
+ *   have default values for all HTML elements according to the suggested
+ *   rendering of elements in the HTML specification.
+ *
+ * @version $Revision: 1.4 $
+ */
+public class CssWhiteSpace extends CssProperty {
+
+    int value;
+
+    private static String[] WHITESPACE = {
+	"normal", "pre", "nowrap", "inherit" };
+    private static int[] hash_values;
+
+    /**
+     * Create a new CssWhiteSpace
+     */
+    public CssWhiteSpace() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new CssWhiteSpace
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException values are incorrect
+     */
+    public CssWhiteSpace(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	if ( val instanceof CssIdent) {
+	    int hash = val.hashCode();
+	    for (int i = 0; i < WHITESPACE.length; i++)
+		if (hash_values[i] == hash) {
+		    value = i;
+		    expression.next();
+		    return;
+		}
+	}
+
+	throw new InvalidParamException("value", expression.getValue(),
+					getPropertyName(), ac);
+    }
+
+    public CssWhiteSpace(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * @return Returns the value.
+     */
+    public int getValue() {
+        return value;
+    }
+
+    /**
+     * @param value The value to set.
+     */
+    public void setValue(int value) {
+        this.value = value;
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return WHITESPACE[value];
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "white-space";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == (WHITESPACE.length - 1);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return WHITESPACE[value];
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssWhiteSpace != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssWhiteSpace = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getWhiteSpace();
+	} else {
+	    return ((Css1Style) style).cssWhiteSpace;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssWhiteSpace &&
+		value == ((CssWhiteSpace) property).value);
+    }
+
+    static {
+	hash_values = new int[WHITESPACE.length];
+	for (int i = 0; i < WHITESPACE.length; i++)
+	    hash_values[i] = WHITESPACE[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssWidth.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,175 @@
+//
+// $Id: CssWidth.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *      &nbsp;&nbsp; 'width'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;length&gt; | &lt;percentage&gt; | auto <BR>
+ *   <EM>Initial:</EM> auto<BR>
+ *   <EM>Applies to:</EM> block-level and replaced elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> refer to parent element's width<BR>
+ *   <P>
+ *   This property can be applied to text elements, but it is most useful with
+ *   replaced elements such as images. The width is to be enforced by scaling
+ *   the image if necessary. When scaling, the aspect ratio of the image is preserved
+ *   if the 'height' property is 'auto'.
+ *   <P>
+ *   Example:
+ *   <PRE>
+ *   IMG.icon { width: 100px }
+ * </PRE>
+ *   <P>
+ *   If the 'width' and 'height' of a replaced element are both 'auto', these
+ *   properties will be set to the intrinsic dimensions of the element.
+ *   <P>
+ *   Negative values are not allowed.
+ * @version $Revision: 1.3 $
+ */
+public class CssWidth extends CssProperty {
+
+    CssValue value;
+
+    private static CssIdent auto = new CssIdent("auto");
+
+    /**
+     * Create a new CssWidth
+     */
+    public CssWidth() {
+	value = auto;
+    }
+
+    /**
+     * Create a new CssWidth.
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssWidth(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	} else if (val instanceof CssLength || val instanceof CssPercentage) {
+	    float f = ((Float) val.get()).floatValue();
+	    if (f < 0) {
+		throw new InvalidParamException("negative-value",
+						val.toString(), ac);
+	    }
+	    value = val;
+	} else if (val.equals(auto)) {
+	    value = auto;
+	} else if (val instanceof CssNumber) {
+	    value = ((CssNumber) val).getLength();
+	} else {
+	    throw new InvalidParamException("value", val,
+					    getPropertyName(), ac);
+	}
+
+	expression.next();
+    }
+
+    public CssWidth(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property.
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property.
+     */
+    public String getPropertyName() {
+	return "width";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssWidth != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssWidth = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getWidth();
+	} else {
+	    return ((Css1Style) style).cssWidth;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssWidth && value.equals(((CssWidth) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == auto;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssWidthMob.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,174 @@
+//
+// $Id: CssWidthMob.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *      &nbsp;&nbsp; 'width'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;length&gt; | &lt;percentage&gt; | auto <BR>
+ *   <EM>Initial:</EM> auto<BR>
+ *   <EM>Applies to:</EM> block-level and replaced elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> refer to parent element's width<BR>
+ *   <P>
+ *   This property can be applied to text elements, but it is most useful with
+ *   replaced elements such as images. The width is to be enforced by scaling
+ *   the image if necessary. When scaling, the aspect ratio of the image is preserved
+ *   if the 'height' property is 'auto'.
+ *   <P>
+ *   Example:
+ *   <PRE>
+ *   IMG.icon { width: 100px }
+ * </PRE>
+ *   <P>
+ *   If the 'width' and 'height' of a replaced element are both 'auto', these
+ *   properties will be set to the intrinsic dimensions of the element.
+ *   <P>
+ *   Negative values are not allowed.
+ * @version $Revision: 1.3 $
+ */
+public class CssWidthMob extends CssProperty {
+
+    CssValue value;
+
+    private static CssIdent auto = new CssIdent("auto");
+
+    /**
+     * Create a new CssWidthMob
+     */
+    public CssWidthMob() {
+	value = auto;
+    }
+
+    /**
+     * Create a new CssWidthMob
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssWidthMob(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	} else if (val instanceof CssLength) {
+	    float f = ((Float) val.get()).floatValue();
+	    if (f < 0) {
+		throw new InvalidParamException("negative-value",
+						val.toString(), ac);
+	    }
+	    value = val;
+	} else if (val.equals(auto)) {
+	    value = auto;
+	} else if (val instanceof CssNumber) {
+	    value = ((CssNumber) val).getLength();
+	} else {
+	    throw new InvalidParamException("value", val,
+					    getPropertyName(), ac);
+	}
+
+	expression.next();
+    }
+
+    public CssWidthMob(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property.
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property.
+     */
+    public String getPropertyName() {
+	return "width";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssWidthMob != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssWidthMob = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getWidthMob();
+	} else {
+	    return ((Css1Style) style).cssWidthMob;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssWidthMob && value.equals(((CssWidthMob) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == auto;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssWordSpacing.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,158 @@
+//
+// $Id: CssWordSpacing.java,v 1.3 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'word-spacing'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> normal | &lt;length&gt; <BR>
+ *   <EM>Initial:</EM> normal<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P> The length unit indicates an addition to the default space between
+ *   words.  Values can be negative, but there may be implementation-specific
+ *   limits.  The UA is free to select the exact spacing algorithm. The word
+ *   spacing may also be influenced by justification (which is a value of the
+ *   'align' property).
+ *   <PRE>
+ *   H1 { word-spacing: 0.4em }
+ * </PRE>
+ *   <P>
+ *   Here, the word-spacing between each word in 'H1' elements would be increased
+ *   by '1em'.
+ *
+ * @version $Revision: 1.3 $
+ */
+public class CssWordSpacing extends CssProperty {
+
+    private CssValue length;
+    private static CssIdent normal = new CssIdent("normal");
+
+    /**
+     * Create a new CssWordSpacing.
+     */
+    public CssWordSpacing() {
+	length = normal;
+    }
+
+    /**
+     * Create a new CssWordSpacing with an expression
+     *
+     * @param expression The expression
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssWordSpacing(ApplContext ac, CssExpression expression,
+	boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	if (val instanceof CssLength) {
+	    length = (CssLength) val;
+	    expression.next();
+	} else if (val instanceof CssNumber) {
+	    length = ((CssNumber) val).getLength();
+	    expression.next();
+	} else if (val.equals(inherit)) {
+	    length = inherit;
+	    expression.next();
+	} else if (val.equals(normal)) {
+	    length = normal;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssWordSpacing(ApplContext ac, CssExpression expression)
+    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return length;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "word-spacing";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return length == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return length.toString();
+    }
+
+    /**
+     * Adds this property to a style.
+     *
+     * @param style The style.
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssWordSpacing != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssWordSpacing = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getWordSpacing();
+	} else {
+	    return ((Css1Style) style).cssWordSpacing;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssWordSpacing &&
+		length.equals(((CssWordSpacing) property).length));
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/CssZIndex.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,158 @@
+//
+// $Id: CssZIndex.java,v 1.2 2005-09-14 15:14:31 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 org.w3c.css.properties.css1;
+
+import org.w3c.css.parser.CssStyle;
+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.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class CssZIndex extends CssProperty {
+
+    CssValue value;
+
+    private static CssIdent auto = new CssIdent("auto");
+
+    /**
+     * Create a new CssZIndex
+     */
+    public CssZIndex() {
+	value = auto;
+    }
+
+    /**
+     * Create a new CssZIndex
+     *
+     * @param expression The expression for this property
+     * @param check true will test the number of parameters
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssZIndex(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+	if (val.equals(inherit)) {
+	    value = inherit;
+	    expression.next();
+	} else if (val.equals(auto)) {
+	    value = auto;
+	    expression.next();
+	} else if (val instanceof CssNumber) {
+	    if (((CssNumber) val).isInteger()) {
+		value = val;
+		expression.next();
+		return;
+	    } else {
+		throw new InvalidParamException("integer",
+						val.toString(),
+						getPropertyName(), ac);
+	    }
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+
+    }
+
+    /**
+     * Create a new CssZIndex
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssZIndex(ApplContext ac, CssExpression expression)
+    	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "z-index";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css1Style style0 = (Css1Style) style;
+	if (style0.cssZIndex != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssZIndex = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css1Style) style).getZIndex();
+	} else {
+	    return ((Css1Style) style).cssZIndex;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssZIndex &&
+		value.equals(((CssZIndex) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == auto;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/Makefile	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,512 @@
+SRCS = CssBackground.java CssFontSize.java\
+CssBackgroundAttachment.java CssFontStyle.java\
+CssBackgroundColor.java CssFontVariant.java\
+CssBackgroundConstants.java CssFontWeight.java\
+CssBackgroundImage.java CssHeight.java\
+CssBackgroundPosition.java CssLetterSpacing.java\
+CssBackgroundRepeat.java CssLineHeight.java\
+CssBorder.java CssListStyle.java\
+CssBorderBottom.java CssListStyleConstants.java\
+CssBorderBottomColor.java CssListStyleImage.java\
+CssBorderBottomStyle.java CssListStylePosition.java\
+CssBorderBottomWidth.java CssListStyleType.java\
+CssBorderColor.java CssMargin.java\
+CssMarginBottom.java\
+CssBorderFaceColor.java CssMarginLeft.java\
+CssBorderFaceStyle.java CssMarginRight.java\
+CssBorderFaceWidth.java CssMarginSide.java\
+CssBorderLeft.java CssMarginTop.java\
+CssBorderLeftColor.java CssPadding.java\
+CssBorderLeftStyle.java CssPaddingBottom.java\
+CssBorderLeftWidth.java CssPaddingLeft.java\
+CssBorderRight.java CssPaddingRight.java\
+CssBorderRightColor.java CssPaddingSide.java\
+CssBorderRightStyle.java CssPaddingTop.java\
+CssBorderRightWidth.java\
+CssBorderStyle.java CssProperties.java\
+CssBorderStyleFace.java CssProperty.java\
+CssBorderTop.java\
+CssBorderTopColor.java Css1Style.java\
+CssBorderTopStyle.java CssTextAlign.java\
+CssBorderTopWidth.java CssTextDecoration.java\
+CssBorderWidth.java CssTextIndent.java\
+CssClear.java CssTextPropertiesConstants.java\
+CssColor.java CssTextTransform.java\
+CssDisplay.java CssVerticalAlign.java\
+CssFloat.java CssWhiteSpace.java\
+CssFont.java CssWidth.java\
+CssFontConstant.java CssWordSpacing.java\
+CssFontFamily.java
+
+OBJS = $(SRCS:.java=.class)
+
+PACKAGE = org.w3c.css.properties
+JAVAC = javac
+JAVADOC = javadoc
+JAVADOCFLAGS = -version -d docs -protected
+JAVACFLAGS =
+MAKEDEPEND = jmakedepend
+
+.SUFFIXES: .class .java
+.java.class:; $(JAVAC) $(JAVACFLAGS) $<
+
+all: $(OBJS)
+
+javadoc:; $(JAVADOC) $(JAVADOCFLAGS) $(PACKAGE)
+
+clean:; -rm -f $(OBJS) *~ core
+
+depend:; $(MAKEDEPEND) $(SRCS)
+
+# DO NOT DELETE THIS LINE -- make depend depends on it.
+CssFloat.class:: CssFloat.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBorderLeftStyle.class:: CssBorderLeftStyle.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssTextPropertiesConstants.class:: CssTextPropertiesConstants.java
+CssBorderRightStyle.class:: CssBorderRightStyle.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssMarginSide.class:: CssMarginSide.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssLength.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssPercentage.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssNumber.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBorderFaceColor.class:: CssBorderFaceColor.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssFontStyle.class:: CssFontStyle.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssListStyleImage.class:: CssListStyleImage.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssURL.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssFontFamily.class:: CssFontFamily.java\
+	/usr/local/java11/bin/../lib/classes.zip\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/Util.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssOperator.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssString.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssVerticalAlign.class:: CssVerticalAlign.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssNumber.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssPercentage.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssColor.class:: CssColor.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBorderFaceStyle.class:: CssBorderFaceStyle.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBorderLeftWidth.class:: CssBorderLeftWidth.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssHeight.class:: CssHeight.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssLength.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssNumber.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssWordSpacing.class:: CssWordSpacing.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssLength.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssNumber.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssFontSize.class:: CssFontSize.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssPercentage.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssNumber.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssLength.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBorderBottom.class:: CssBorderBottom.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssSelectors.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssOperator.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBorderLeft.class:: CssBorderLeft.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssSelectors.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssOperator.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssPaddingBottom.class:: CssPaddingBottom.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBackgroundConstants.class:: CssBackgroundConstants.java
+CssMargin.class:: CssMargin.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssSelectors.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssOperator.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssListStyleType.class:: CssListStyleType.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBorderBottomColor.class:: CssBorderBottomColor.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBorderFaceWidth.class:: CssBorderFaceWidth.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssLength.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssNumber.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssListStyle.class:: CssListStyle.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssSelectors.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssOperator.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssProperty.class:: CssProperty.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssSelectors.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.css/StyleSheetOrigin.class
+CssTextDecoration.class:: CssTextDecoration.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBorderBottomStyle.class:: CssBorderBottomStyle.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssTextTransform.class:: CssTextTransform.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssFontWeight.class:: CssFontWeight.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssNumber.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssDisplay.class:: CssDisplay.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBorderTop.class:: CssBorderTop.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssSelectors.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssOperator.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBorderStyle.class:: CssBorderStyle.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssSelectors.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssOperator.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBorderRight.class:: CssBorderRight.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssSelectors.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssOperator.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssMarginTop.class:: CssMarginTop.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBackground.class:: CssBackground.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssSelectors.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssOperator.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssLetterSpacing.class:: CssLetterSpacing.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssLength.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssNumber.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBackgroundImage.class:: CssBackgroundImage.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssURL.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssFontConstant.class:: CssFontConstant.java
+CssWhiteSpace.class:: CssWhiteSpace.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssMarginBottom.class:: CssMarginBottom.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssPadding.class:: CssPadding.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssSelectors.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssOperator.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBorderStyleFace.class:: CssBorderStyleFace.java
+CssBorderBottomWidth.class:: CssBorderBottomWidth.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBackgroundAttachment.class:: CssBackgroundAttachment.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBorderWidth.class:: CssBorderWidth.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssSelectors.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssOperator.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssProperties.class:: CssProperties.java\
+	/usr/local/java11/bin/../lib/classes.zip
+CssTextIndent.class:: CssTextIndent.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssPercentage.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssLength.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssNumber.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBackgroundColor.class:: CssBackgroundColor.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssColor.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssClear.class:: CssClear.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssMarginRight.class:: CssMarginRight.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssPaddingLeft.class:: CssPaddingLeft.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssTextAlign.class:: CssTextAlign.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssListStylePosition.class:: CssListStylePosition.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBorderTopWidth.class:: CssBorderTopWidth.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBorderTopColor.class:: CssBorderTopColor.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssPaddingRight.class:: CssPaddingRight.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssPaddingSide.class:: CssPaddingSide.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssLength.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssPercentage.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssNumber.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBorder.class:: CssBorder.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssSelectors.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssFont.class:: CssFont.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssSelectors.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssOperator.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBackgroundPosition.class:: CssBackgroundPosition.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssPercentage.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssLength.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssNumber.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssOperator.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssFontVariant.class:: CssFontVariant.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBorderColor.class:: CssBorderColor.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssSelectors.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssOperator.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssListStyleConstants.class:: CssListStyleConstants.java
+CssBorderRightWidth.class:: CssBorderRightWidth.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBorderRightColor.class:: CssBorderRightColor.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+Css1Style.class:: Css1Style.java\
+	/usr/local/java11/bin/../lib/classes.zip\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssSelectors.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssPercentage.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssLength.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.css/StyleSheet.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/Warning.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/Warnings.class
+CssBorderLeftColor.class:: CssBorderLeftColor.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssPaddingTop.class:: CssPaddingTop.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBorderTopStyle.class:: CssBorderTopStyle.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssWidth.class:: CssWidth.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssNumber.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssLength.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssPercentage.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssMarginLeft.class:: CssMarginLeft.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssLineHeight.class:: CssLineHeight.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssNumber.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssLength.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssPercentage.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
+CssBackgroundRepeat.class:: CssBackgroundRepeat.java\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.parser/CssStyle.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssExpression.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssValue.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.values/CssIdent.class\
+	/u/koala/0/koala/plehegar/old/org.w3c.css.util/InvalidParamException.class
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css1/TextShadowFace.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,134 @@
+/*
+ * Copyright (c) 2001 World Wide Web Consortium,
+ * (Massachusetts Institute of Technology, Institut National de
+ * Recherche en Informatique et en Automatique, Keio University). All
+ * Rights Reserved. This program is distributed under the W3C's Software
+ * Intellectual Property License. This program is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+ * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ * See W3C License http://www.w3.org/Consortium/Legal/ for more details.
+ *
+ * $Id: TextShadowFace.java,v 1.2 2005-09-14 15:14:31 ylafon Exp $
+ */
+package org.w3c.css.properties.css1;
+
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssColor;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssIdent;
+import org.w3c.css.values.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+public class TextShadowFace implements CssOperator {
+
+    CssColor color;
+    CssLength[] lengths;
+
+    CssValue val;
+    char op;
+
+    TextShadowFace(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+
+	if(check && expression.getCount() > 4) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	val = expression.getValue();
+	op = expression.getOperator();
+
+	if (val instanceof CssColor) {
+	    color = (CssColor) val;
+	    expression.next();
+	    if (op == SPACE) {
+		getLengths(ac, expression);
+	    }
+	} else if (val instanceof CssIdent) {
+	    color = new CssColor(ac, (String) val.get());
+	    expression.next();
+	    if (op == SPACE) {
+		getLengths(ac, expression);
+	    }
+	} else if (val instanceof CssLength || val instanceof CssNumber) {
+	    getLengths(ac, expression);
+	    val = expression.getValue();
+	    if (val instanceof CssColor) {
+		color = (CssColor) val;
+		op = expression.getOperator();
+		expression.next();
+	    } else if (val instanceof CssIdent) {
+		color = new CssColor(ac, (String) val.get());
+		op = expression.getOperator();
+		expression.next();
+	    }
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    "text-shadow", ac);
+	}
+    }
+
+    TextShadowFace(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    void getLengths(ApplContext ac, CssExpression expression) throws InvalidParamException {
+	CssLength le = getLength(expression.getValue());
+	op = expression.getOperator();
+
+ 	if (le != null) {
+	    lengths = new CssLength[3];
+	    lengths[0] = le;
+	    expression.next();
+	    le = getLength(expression.getValue());
+	    if ((op == SPACE) && (le != null)) {
+		lengths[1] = le;
+		op = expression.getOperator();
+		expression.next();
+		le = getLength(expression.getValue());
+		if ((op == SPACE) && (le != null)) {
+		    lengths[2] = le;
+		    op = expression.getOperator();
+		    expression.next();
+		}
+	    } else {
+		throw new InvalidParamException("two-lengths",
+						expression.getValue(),
+						"text-shadow", ac);
+	    }
+	}
+    }
+
+
+    CssLength getLength(CssValue val) throws InvalidParamException {
+	if (val instanceof CssLength) {
+	    return (CssLength) val;
+	} else if (val instanceof CssNumber) {
+	    return ((CssNumber) val).getLength();
+	} else {
+	    return null;
+	}
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	String ret = "";
+        if (color != null) {
+	    ret += " " + color;
+	}
+	if (lengths != null) {
+	    ret += " " + lengths[0] + " " + lengths[1];
+	    if (lengths[2] != null) {
+		ret += " " + lengths[2];
+	    }
+	}
+	return ret.substring(1);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/CSS2Default.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,1 @@
+# empty :-)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/Css2Properties.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,40 @@
+//
+// $Id: Css2Properties.java,v 1.2 2005-09-14 15:14:58 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 org.w3c.css.properties.css2;
+
+import java.net.URL;
+
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.Utf8Properties;
+
+/**
+ * @version $Revision: 1.2 $
+ */
+public class Css2Properties {
+    public static Utf8Properties properties;
+
+    public static String getString(CssProperty property, String prop) {
+	return properties.getProperty(property.getPropertyName() + "." + prop);
+    }
+
+    public static boolean getInheritance(CssProperty property) {
+	return getString(property, "inherited").equals("true");
+    }
+
+    static {
+	properties = new Utf8Properties();
+	try {
+	    URL url = Css2Properties.class
+	    .getResource("CSS2Default.properties");
+	    properties.load(url.openStream());
+	} catch (Exception e) {
+	    System.err
+	    .println("org.w3c.css.properties2.Css2Properties: couldn't load properties ");
+	    System.err.println("  " + e.toString());
+	}
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/Css2Property.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,24 @@
+//
+// $Id: Css2Property.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 org.w3c.css.properties.css2;
+
+import org.w3c.css.properties.aural.ACssProperty;
+
+/**
+ * @version $Revision: 1.2 $
+ */
+public abstract class Css2Property extends ACssProperty {
+
+  /**
+   * Returns true if the property is inherited
+   */
+  public boolean Inherited() {
+    return Css2Properties.getInheritance(this);
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/Css2Style.java	Thu Jan 07 14:06:06 2010 -0800
@@ -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 org.w3c.css.properties.css2;
+
+import org.w3c.css.properties.aural.ACssStyle;
+import org.w3c.css.parser.CssPrinterStyle;
+
+/**
+ * @version $Revision: 1.2 $
+ */
+public class Css2Style extends ACssStyle {
+
+  public void print(CssPrinterStyle printer) {
+    super.print(printer);
+  }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/Makefile	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,33 @@
+SRCS = Css2Properties.java Css2Property.java Css2Style.java
+
+OBJS = $(SRCS:.java=.class)
+
+PACKAGE = org.w3c.css.properties2
+JAVAC = /usr/local/java11/bin/javac
+JAVADOC = javadoc
+JAVADOCFLAGS = -version -d docs -protected
+JAVACFLAGS = 
+MAKEDEPEND = jmakedepend
+
+.SUFFIXES: .class .java
+.java.class:; $(JAVAC) $(JAVACFLAGS) $<
+
+all: $(OBJS)
+
+javadoc:; $(JAVADOC) $(JAVADOCFLAGS) $(PACKAGE)
+
+clean:; -rm -f $(OBJS) *~ core
+
+depend:; $(MAKEDEPEND) $(SRCS)
+
+# DO NOT DELETE THIS LINE -- make depend depends on it.
+Css2Style.class:: Css2Style.java\
+	/usr/local/java11/lib/classes.zip\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.util/Warnings.class\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.aural/ACssStyle.class
+Css2Properties.class:: Css2Properties.java\
+	/usr/local/java11/lib/classes.zip\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.properties/CssProperty.class
+Css2Property.class:: Css2Property.java\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.aural/ACssProperty.class
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/font/Ascent.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,123 @@
+//
+// $Id: Ascent.java,v 1.2 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.font;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class Ascent extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new Ascent
+     */
+    public Ascent() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new Ascent
+     *
+     * @param expression the unicode em
+     * @exception InvalidParamException values are incorrect
+     */
+    public Ascent(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+	CssValue val = expression.getValue();
+	setByUser();
+
+	if (val instanceof CssNumber) {
+	    value = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public Ascent(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "ascent";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.ascent != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.ascent = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getAscent();
+	} else {
+	    return ((Css2Style) style).ascent;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @@TODO
+	return false;
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/font/Baseline.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,123 @@
+//
+// $Id: Baseline.java,v 1.2 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.font;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class Baseline extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new Baseline
+     */
+    public Baseline() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new Baseline
+     *
+     * @param expression the unicode em
+     * @exception InvalidParamException values are incorrect
+     */
+    public Baseline(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+	CssValue val = expression.getValue();
+	setByUser();
+
+	if (val instanceof CssNumber) {
+	    value = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public Baseline(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "baseline";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.baseline != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.baseline = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getBaseline();
+	} else {
+	    return ((Css2Style) style).baseline;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @@TODO
+	return false;
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/font/Bbox.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,174 @@
+//
+// $Id: Bbox.java,v 1.2 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.font;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class Bbox extends CssProperty {
+
+    CssValue[] value = new CssValue[4];
+
+    /**
+     * Create a new Bbox
+     */
+    public Bbox() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new Bbox
+     *
+     * @param expression the unicode em
+     * @exception InvalidParamException values are incorrect
+     */
+    public Bbox(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+	CssValue val;
+	char op;
+	int i = 0;
+	setByUser();
+
+	val = expression.getValue();
+	op = expression.getOperator();
+	if (val instanceof CssNumber) {
+	    value[i++] = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+	if (op != CssOperator.COMMA || expression.end()) {
+	    throw new InvalidParamException("few-value",
+					    getPropertyName(), ac);
+	}
+
+	val = expression.getValue();
+	op = expression.getOperator();
+	if (val instanceof CssNumber) {
+	    value[i++] = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+	if (op != CssOperator.COMMA || expression.end()) {
+	    throw new InvalidParamException("few-value",
+					    getPropertyName(), ac);
+	}
+
+	val = expression.getValue();
+	op = expression.getOperator();
+	if (val instanceof CssNumber) {
+	    value[i++] = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+	if (op != CssOperator.COMMA || expression.end()) {
+	    throw new InvalidParamException("few-value",
+					    getPropertyName(), ac);
+	}
+
+	val = expression.getValue();
+	op = expression.getOperator();
+	if (val instanceof CssNumber) {
+	    value[i++] = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public Bbox(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value[0];
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	String ret = "";
+	for (int i = 0; i < 4; i++) {
+	    ret += ", " + value[i];
+	}
+	return ret.substring(2);
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "bbox";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.bbox != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.bbox = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getBbox();
+	} else {
+	    return ((Css2Style) style).bbox;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @@TODO
+	return false;
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/font/CapHeight.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,123 @@
+//
+// $Id: CapHeight.java,v 1.2 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.font;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class CapHeight extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new CapHeight
+     */
+    public CapHeight() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new CapHeight
+     *
+     * @param expression the unicode em
+     * @exception InvalidParamException values are incorrect
+     */
+    public CapHeight(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+	CssValue val = expression.getValue();
+	setByUser();
+
+	if (val instanceof CssNumber) {
+	    value = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CapHeight(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "cap-height";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.capHeight != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.capHeight = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getCapHeight();
+	} else {
+	    return ((Css2Style) style).capHeight;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @@TODO
+	return false;
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/font/Centerline.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,123 @@
+//
+// $Id: Centerline.java,v 1.2 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.font;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class Centerline extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new Centerline
+     */
+    public Centerline() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new Centerline
+     *
+     * @param expression the unicode em
+     * @exception InvalidParamException values are incorrect
+     */
+    public Centerline(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+	CssValue val = expression.getValue();
+	setByUser();
+
+	if (val instanceof CssNumber) {
+	    value = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public Centerline(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "centerline";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.centerline != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.centerline = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getCenterline();
+	} else {
+	    return ((Css2Style) style).centerline;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @@TODO
+	return false;
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/font/Css2Style.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,293 @@
+//
+// $Id: Css2Style.java,v 1.2 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.font;
+
+import org.w3c.css.parser.CssPrinterStyle;
+
+/**
+ * @version $Revision: 1.2 $
+ */
+public class Css2Style extends org.w3c.css.properties.paged.Css2Style {
+
+    FontFamily fontFamily;
+    FontStyle fontStyle;
+    FontVariant fontVariant;
+    FontWeight fontWeight;
+    FontStretch fontStretch;
+    FontSize    fontSize;
+    UnicodeRange    unicodeRange;
+    UnitsPerEm unitsPerEm;
+    Src src;
+    Panose1 panose1;
+    Bbox bbox;
+    Widths widths;
+    Stemv stemv;
+    Stemh stemh;
+    Slope slope;
+    CapHeight capHeight;
+    XHeight xHeight;
+    Ascent ascent;
+    Descent descent;
+    Baseline baseline;
+    Centerline centerline;
+    Mathline mathline;
+    Topline topline;
+    DefinitionSrc definitionSrc;
+
+    /**
+     * Get the font-family property
+     */
+    public final FontFamily getFaceFontFamily() {
+        return fontFamily;
+    }
+
+    /**
+     * Get the font-style property
+     */
+    public final FontStyle getFaceFontStyle() {
+        return fontStyle;
+    }
+
+    /**
+     * Get the font-variant property
+     */
+    public final FontVariant getFaceFontVariant() {
+        return fontVariant;
+    }
+
+    /**
+     * Get the font-weight property
+     */
+    public final FontWeight getFaceFontWeight() {
+        return fontWeight;
+    }
+
+    /**
+     * Get the font-stretch property
+     */
+    public final FontStretch getFaceFontStretch() {
+        return fontStretch;
+    }
+
+    /**
+     * Get the font-size property
+     */
+    public final FontSize getFaceFontSize() {
+        return fontSize;
+    }
+
+    /**
+     * Get the unicode-range property
+     */
+    public final UnicodeRange getFaceUnicodeRange() {
+        return unicodeRange;
+    }
+
+
+    /**
+     * Get the units-per-em property
+     */
+    public final UnitsPerEm getUnitsPerEm() {
+        return unitsPerEm;
+    }
+
+    /**
+     * Get the stemv property
+     */
+    public final Stemv getStemv() {
+        return stemv;
+    }
+
+    /**
+     * Get the src property
+     */
+    public final Src getSrc() {
+        return src;
+    }
+
+    /**
+     * Get the panose1 property
+     */
+    public final Panose1 getPanose1() {
+        return panose1;
+    }
+
+    /**
+     * Get the widths property
+     */
+    public final Widths getWidths() {
+        return widths;
+    }
+
+    /**
+     * Get the bbox property
+     */
+    public final Bbox getBbox() {
+        return bbox;
+    }
+
+    /**
+     * Get the stemh property
+     */
+    public final Stemh getStemh() {
+        return stemh;
+    }
+
+    /**
+     * Get the slope property
+     */
+    public final Slope getSlope() {
+        return slope;
+    }
+
+    /**
+     * Get the ascent property
+     */
+    public final Ascent getAscent() {
+        return ascent;
+    }
+
+    /**
+     * Get the descent property
+     */
+    public final Descent getDescent() {
+        return descent;
+    }
+
+    /**
+     * Get the cap-height property
+     */
+    public final CapHeight getCapHeight() {
+        return capHeight;
+    }
+
+    /**
+     * Get the x-height property
+     */
+    public final XHeight getXHeight() {
+        return xHeight;
+    }
+
+    /**
+     * Get the baseline property
+     */
+    public final Baseline getBaseline() {
+        return baseline;
+    }
+
+    /**
+     * Get the centerline property
+     */
+    public final Centerline getCenterline() {
+        return centerline;
+    }
+
+    /**
+     * Get the mathline property
+     */
+    public final Mathline getMathline() {
+        return mathline;
+    }
+
+    /**
+     * Get the topline property
+     */
+    public final Topline getTopline() {
+        return topline;
+    }
+
+    /**
+     * Get the definition-src property
+     */
+    public final DefinitionSrc getDefinitionSrc() {
+        return definitionSrc;
+    }
+
+
+    /**
+     * Print this style.
+     *
+     * @param printer The printer interface.
+     */
+    public void print(CssPrinterStyle printer) {
+	super.print(printer);
+	if (fontFamily != null) {
+	    fontFamily.print(printer);
+	}
+	if (fontStyle != null) {
+	    fontStyle.print(printer);
+	}
+	if (fontVariant != null) {
+	    fontVariant.print(printer);
+	}
+	if (fontWeight != null) {
+	    fontWeight.print(printer);
+	}
+	if (fontStretch != null) {
+	    fontStretch.print(printer);
+	}
+	if (fontSize != null) {
+	    fontSize.print(printer);
+	}
+	if (unitsPerEm != null) {
+	    unitsPerEm.print(printer);
+	}
+	if (src != null) {
+	    src.print(printer);
+	}
+	if (panose1 != null) {
+	    panose1.print(printer);
+	}
+	if (widths != null) {
+	    widths.print(printer);
+	}
+	if (bbox != null) {
+	    bbox.print(printer);
+	}
+	if (stemv != null) {
+	    stemv.print(printer);
+	}
+	if (stemv != null) {
+	    stemv.print(printer);
+	}
+	if (stemh != null) {
+	    stemh.print(printer);
+	}
+	if (slope != null) {
+	    slope.print(printer);
+	}
+	if (ascent != null) {
+	    ascent.print(printer);
+	}
+	if (descent != null) {
+	    descent.print(printer);
+	}
+	if (capHeight != null) {
+	    capHeight.print(printer);
+	}
+	if (xHeight != null) {
+	    xHeight.print(printer);
+	}
+	if (baseline != null) {
+	    baseline.print(printer);
+	}
+	if (centerline != null) {
+	    centerline.print(printer);
+	}
+	if (mathline != null) {
+	    mathline.print(printer);
+	}
+	if (topline != null) {
+	    topline.print(printer);
+	}
+	if (definitionSrc != null) {
+	    definitionSrc.print(printer);
+	}
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/font/DefinitionSrc.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,123 @@
+//
+// $Id: DefinitionSrc.java,v 1.2 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.font;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssURL;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class DefinitionSrc extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new DefinitionSrc
+     */
+    public DefinitionSrc() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new DefinitionSrc
+     *
+     * @param expression the unicode em
+     * @exception InvalidParamException values are incorrect
+     */
+    public DefinitionSrc(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = expression.getValue();
+	setByUser();
+
+	if (val instanceof CssURL) {
+	    value = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public DefinitionSrc(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "definition-src";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.definitionSrc != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.definitionSrc = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getDefinitionSrc();
+	} else {
+	    return ((Css2Style) style).definitionSrc;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @@TODO
+	return false;
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/font/Descent.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,123 @@
+//
+// $Id: Descent.java,v 1.2 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.font;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class Descent extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new Descent
+     */
+    public Descent() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new Descent
+     *
+     * @param expression the unicode em
+     * @exception InvalidParamException values are incorrect
+     */
+    public Descent(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+	CssValue val = expression.getValue();
+	setByUser();
+
+	if (val instanceof CssNumber) {
+	    value = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public Descent(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "descent";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.descent != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.descent = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getDescent();
+	} else {
+	    return ((Css2Style) style).descent;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @@TODO
+	return false;
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/font/FontConstant.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,38 @@
+//
+// $Id: FontConstant.java,v 1.3 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.font;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public interface FontConstant {
+
+  /**
+   * Array of font-style values
+   */
+  static String[] FONTSTYLE = { "normal", "italic", "oblique" };
+
+  /**
+   * Array of font-variant values
+   */
+  static String[] FONTVARIANT = { "normal", "small-caps" };
+
+  /**
+   * Array of font-weight values
+   */
+    static String[] FONTWEIGHT = { "normal", "bold" };
+
+  /**
+   * Array of font-stretch values
+   */
+  static String[] FONTSTRETCH = { "normal", "wider", "narrower",
+				  "ultra-condensed", "extra-condensed",
+				  "condensed", "semi-condensed",
+				  "semi-expanded", "expanded", "extra-expanded",
+				  "ultra-expanded", "inherit" };
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/font/FontFamily.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,215 @@
+//
+// $Id: FontFamily.java,v 1.2 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.font;
+
+import java.util.Enumeration;
+import java.util.Vector;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.util.Util;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssIdent;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssString;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class FontFamily extends FontProperty implements CssOperator {
+
+    Vector family_name = new Vector();
+
+    /**
+     * Create a new FontFamily
+     */
+    public FontFamily() {
+    }
+
+    /**
+     * Create a new FontFamily
+     *
+     * @param expression the font name
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public FontFamily(ApplContext ac, CssExpression expression, boolean check)
+	    throws InvalidParamException {
+	boolean family = true;
+	CssValue val = expression.getValue();
+	char op;
+
+	setByUser();
+	//@@ and if name is already in the vector ?
+
+
+	while (family) {
+	    val = expression.getValue();
+	    op = expression.getOperator();
+
+	    if ((op != COMMA) && (op != SPACE)) {
+		throw new InvalidParamException("operator",
+						((new Character(op)).toString()),
+						ac);
+	    }
+
+	    if (val instanceof CssString) {
+		if (op == COMMA) { // "helvetica", "roman"
+		    String name = (String) val.get();
+		    family_name.addElement(trimToOneSpace(name));
+		    expression.next();
+		} else { // "helvetica" CssValue
+		    String name = (String) val.get();
+		    family_name.addElement(trimToOneSpace(name));
+		    family = false;
+		    expression.next();
+		}
+	    } else if (val instanceof CssIdent) {
+		if (op == COMMA) {
+		    family_name.addElement(val.toString());
+		    expression.next();
+		} else {
+		    CssValue next = expression.getNextValue();
+
+		    if (next instanceof CssIdent) {
+			CssIdent New = new CssIdent(val.get() + " "
+						    + next.get());
+			expression.remove();
+			op = expression.getOperator();
+			expression.remove();
+			expression.insert(New);
+			expression.setCurrentOperator(op);
+		    } else {
+			family_name.addElement(val.toString());
+			expression.next();
+			family = false;
+		    }
+		}
+	    } else
+		throw new InvalidParamException("value", expression.getValue(),
+						getPropertyName(), ac);
+	}
+
+    }
+
+    public FontFamily(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns all fonts name
+     */
+    public Enumeration elements() {
+	return family_name.elements();
+    }
+
+    /**
+     * Returns the size
+     */
+    public int size() {
+	return family_name.size();
+    }
+
+    /**
+     * Returns the font (null if no font)
+     */
+    public Object get() {
+	if (family_name.size() == 0) {
+	    return null;
+	}
+	return family_name.firstElement();
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	String r = "";
+	for (Enumeration e = elements(); e.hasMoreElements();)
+	    r += ", " + convertString(e.nextElement().toString());
+	if (r.length() < 3) {
+	    return null;
+	}
+	return r.substring(2);
+    }
+
+    String convertString (String value) {
+	if (value.indexOf('"') != -1) {
+	    return '\'' + value + '\'';
+	} else if (value.indexOf('\'') != -1) {
+	    return '"' + value + '"';
+	} else {
+	    return value;
+	}
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "font-family";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+
+	if (style0.fontFamily != null) {
+	    style.addRedefinitionWarning(ac, this);
+	}
+	style0.fontFamily = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getFaceFontFamily();
+	} else {
+	    return ((Css2Style) style).fontFamily;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return false; //@@ FIXME
+    }
+
+    private static String trimToOneSpace(String name) {
+	int count = name.length();
+	char[] dst = new char[count];
+	char[] src = new char[count];
+	int index = -1;
+
+	name.getChars(0, count, src, 0);
+	for(int i=0; i < count; i++)
+	    if ( i == 0 || ! Util.isWhiteSpace(src[i]) ||
+		 ( Util.isWhiteSpace(src[i]) &&
+		   !Util.isWhiteSpace(dst[index]) ) )
+		dst[++index] = src[i];
+
+	return new String(dst, 0, index+1);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/font/FontProperty.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,26 @@
+//
+// $Id: FontProperty.java,v 1.1 2005-08-23 16:33:50 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 org.w3c.css.properties.css2.font;
+
+import org.w3c.css.properties.css1.CssProperty;
+
+/**
+ * @version $Revision: 1.1 $
+ */
+public abstract class FontProperty extends CssProperty {
+
+  /**
+   * Returns true if the property is inherited
+   */
+  public boolean Inherited() {
+    return false;
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/font/FontSize.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,152 @@
+//
+// $Id: FontSize.java,v 1.2 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.font;
+
+import java.util.Vector;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class FontSize extends CssProperty implements FontConstant {
+
+    Vector values = new Vector();
+
+    private static CssIdent all = new CssIdent("all");
+
+    /**
+     * Create a new FontSize
+     */
+    public FontSize() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new FontSize
+     *
+     * @param expression the font size
+     * @exception InvalidParamException values are incorrect
+     */
+    public FontSize(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+	char op = expression.getOperator();
+	CssValue val = expression.getValue();
+	setByUser();
+
+	if (val.equals(all)) {
+	    values.addElement(all);
+	    expression.next();
+	    return;
+	}
+
+	do {
+	    if (val instanceof CssLength) {
+		// nothing
+	    } else if (val instanceof CssNumber) {
+		values.addElement(((CssNumber) val).getLength());
+	    } else {
+		throw new InvalidParamException("value", expression.getValue(),
+						getPropertyName(), ac);
+	    }
+	    values.addElement(val);
+	    op = expression.getOperator();
+	    expression.next();
+	} while (op == CssOperator.COMMA);
+
+    }
+
+    public FontSize(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return values.elementAt(0);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	String ret ="";
+	int i = 0;
+
+	while (i < values.size()) {
+	    ret += ", " + values.elementAt(i);
+	    i++;
+	}
+
+	return ret.substring(2);
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "font-size";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.fontSize != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.fontSize = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getFaceFontSize();
+	} else {
+	    return ((Css2Style) style).fontSize;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @@TODO
+	return false;
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/font/FontStretch.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,166 @@
+//
+// $Id: FontStretch.java,v 1.2 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.font;
+
+import java.util.Vector;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class FontStretch extends CssProperty implements FontConstant {
+
+    Vector values = new Vector();
+
+    private static CssIdent all = new CssIdent("all");
+
+    /**
+     * Create a new FontStretch
+     */
+    public FontStretch() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new FontStretch
+     *
+     * @param expression the font stretch
+     * @exception InvalidParamException values are incorrect
+     */
+    public FontStretch(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+	char op = expression.getOperator();
+	CssValue val = expression.getValue();
+	setByUser();
+
+	if (val.equals(all)) {
+	    values.addElement(all);
+	    expression.next();
+	    return;
+	}
+
+	do {
+	    if (expression.getValue() instanceof CssIdent) {
+		int hash = ((CssIdent) expression.getValue()).hashCode();
+		int i = 0;
+		for (; i<hash_values.length; i++) {
+		    if (hash_values[i] == hash) {
+			values.addElement(FONTSTRETCH[i]);
+			break;
+		    }
+		}
+		if (i == FONTSTRETCH.length) {
+		    throw new InvalidParamException("value",
+						    expression.getValue(),
+						    getPropertyName(), ac);
+		}
+	    } else {
+		throw new InvalidParamException("value", expression.getValue(),
+						getPropertyName(), ac);
+	    }
+	    op = expression.getOperator();
+	    expression.next();
+	} while (op == CssOperator.COMMA);
+
+    }
+
+    public FontStretch(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return values.elementAt(0);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	String ret ="";
+	int i = 0;
+
+	while (i < values.size()) {
+	    ret += ", " + values.elementAt(i);
+	    i++;
+	}
+
+	return ret.substring(2);
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "font-stretch";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.fontStretch != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.fontStretch = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getFaceFontStretch();
+	} else {
+	    return ((Css2Style) style).fontStretch;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @@TODO
+	return false;
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+    private static int[] hash_values;
+
+    static {
+	hash_values = new int[FONTSTRETCH.length];
+	for (int i=0; i<FONTSTRETCH.length; i++)
+	    hash_values[i] = FONTSTRETCH[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/font/FontStyle.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,166 @@
+//
+// $Id: FontStyle.java,v 1.2 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.font;
+
+import java.util.Vector;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class FontStyle extends CssProperty implements FontConstant {
+
+    Vector values = new Vector();
+
+    private static CssIdent all = new CssIdent("all");
+
+    /**
+     * Create a new FontStyle
+     */
+    public FontStyle() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new FontStyle
+     *
+     * @param expression the font style
+     * @exception InvalidParamException values are incorrect
+     */
+    public FontStyle(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+	char op = expression.getOperator();
+	CssValue val = expression.getValue();
+	setByUser();
+
+	if (val.equals(all)) {
+	    values.addElement(all);
+	    expression.next();
+	    return;
+	}
+
+	do {
+	    if (expression.getValue() instanceof CssIdent) {
+		int hash = ((CssIdent) expression.getValue()).hashCode();
+		int i = 0;
+		for (; i<hash_values.length; i++) {
+		    if (hash_values[i] == hash) {
+			values.addElement(FONTSTYLE[i]);
+			break;
+		    }
+		}
+		if (i == FONTSTYLE.length) {
+		    throw new InvalidParamException("value",
+						    expression.getValue(),
+						    getPropertyName(), ac);
+		}
+	    } else {
+		throw new InvalidParamException("value", expression.getValue(),
+						getPropertyName(), ac);
+	    }
+	    op = expression.getOperator();
+	    expression.next();
+	} while (op == CssOperator.COMMA);
+
+    }
+
+    public FontStyle(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return values.elementAt(0);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	String ret ="";
+	int i = 0;
+
+	while (i < values.size()) {
+	    ret += ", " + values.elementAt(i);
+	    i++;
+	}
+
+	return ret.substring(2);
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "font-style";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.fontStyle != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.fontStyle = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getFaceFontStyle();
+	} else {
+	    return ((Css2Style) style).fontStyle;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @@TODO
+	return false;
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+    private static int[] hash_values;
+
+    static {
+	hash_values = new int[FONTSTYLE.length];
+	for (int i=0; i<FONTSTYLE.length; i++)
+	    hash_values[i] = FONTSTYLE[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/font/FontVariant.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,160 @@
+//
+// $Id: FontVariant.java,v 1.2 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.font;
+
+import java.util.Vector;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class FontVariant extends CssProperty implements FontConstant {
+
+    Vector values = new Vector();
+
+    private static CssIdent all = new CssIdent("all");
+
+    /**
+     * Create a new FontVariant
+     */
+    public FontVariant() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new FontVariant
+     *
+     * @param expression the font variant
+     * @exception InvalidParamException values are incorrect
+     */
+    public FontVariant(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+	char op = expression.getOperator();
+	CssValue val = expression.getValue();
+	setByUser();
+
+	do {
+	    if (expression.getValue() instanceof CssIdent) {
+		int hash = ((CssIdent) expression.getValue()).hashCode();
+		int i = 0;
+		for (; i<hash_values.length; i++) {
+		    if (hash_values[i] == hash) {
+			values.addElement(FONTVARIANT[i]);
+			break;
+		    }
+		}
+		if (i == FONTVARIANT.length) {
+		    throw new InvalidParamException("value",
+						    expression.getValue(),
+						    getPropertyName(), ac);
+		}
+	    } else {
+		throw new InvalidParamException("value", expression.getValue(),
+						getPropertyName(), ac);
+	    }
+	    op = expression.getOperator();
+	    expression.next();
+	} while (op == CssOperator.COMMA);
+
+    }
+
+    public FontVariant(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return values.elementAt(0);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	String ret ="";
+	int i = 0;
+
+	while (i < values.size()) {
+	    ret += ", " + values.elementAt(i);
+	    i++;
+	}
+
+	return ret.substring(2);
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "font-variant";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.fontVariant != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.fontVariant = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getFaceFontVariant();
+	} else {
+	    return ((Css2Style) style).fontVariant;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @@TODO
+	return false;
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+    private static int[] hash_values;
+
+    static {
+	hash_values = new int[FONTVARIANT.length];
+	for (int i=0; i<FONTVARIANT.length; i++)
+	    hash_values[i] = FONTVARIANT[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/font/FontWeight.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,186 @@
+//
+// $Id: FontWeight.java,v 1.2 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.font;
+
+import java.util.Vector;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssNumber;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class FontWeight extends CssProperty implements FontConstant {
+
+    Vector values = new Vector();
+
+    private static CssIdent all = new CssIdent("all");
+
+    /**
+     * Create a new FontWeight
+     */
+    public FontWeight() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new FontWeight
+     *
+     * @param expression the font weight
+     * @exception InvalidParamException values are incorrect
+     */
+    public FontWeight(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+	char op = expression.getOperator();
+	CssValue val = expression.getValue();
+	setByUser();
+
+	if (val.equals(all)) {
+	    values.addElement(all);
+	    expression.next();
+	    return;
+	}
+
+	do {
+	    if (expression.getValue() instanceof CssIdent) {
+		int hash = ((CssIdent) expression.getValue()).hashCode();
+		int i = 0;
+		for (; i<hash_values.length; i++) {
+		    if (hash_values[i] == hash) {
+			values.addElement(FONTWEIGHT[i]);
+			break;
+		    }
+		}
+		if (i == FONTWEIGHT.length) {
+		    throw new InvalidParamException("value",
+						    expression.getValue(),
+						    getPropertyName(), ac);
+		}
+	    } else if (val instanceof CssNumber) {
+		Object valf = val.get();
+		if(valf instanceof Integer) {
+		    int vali = ((Integer) valf).intValue();
+		    if(isCorrectWeight(vali)) { // verify the entire part number
+			values.addElement(val);
+		    }
+		}
+		else {
+		    throw new InvalidParamException("value",
+			    expression.getValue(),
+			    getPropertyName(), ac);
+		}
+	    }
+	    else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+	    op = expression.getOperator();
+	    expression.next();
+	} while (op == CssOperator.COMMA);
+
+    }
+
+    public FontWeight(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return values.elementAt(0);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	String ret ="";
+	int i = 0;
+
+	while (i < values.size()) {
+	    ret += ", " + values.elementAt(i);
+	    i++;
+	}
+
+	return ret.substring(2);
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "font-weight";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.fontWeight != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.fontWeight = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getFaceFontWeight();
+	} else {
+	    return ((Css2Style) style).fontWeight;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @@TODO
+	return false;
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+    private boolean isCorrectWeight(int val) {
+	val = val / 100;
+	return val > 0 && val < 10;
+    }
+
+    private static int[] hash_values;
+
+    static {
+	hash_values = new int[FONTWEIGHT.length];
+	for (int i=0; i<FONTWEIGHT.length; i++)
+	    hash_values[i] = FONTWEIGHT[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/font/Makefile	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,33 @@
+SRCS = Css2Properties.java Css2Property.java Css2Style.java
+
+OBJS = $(SRCS:.java=.class)
+
+PACKAGE = org.w3c.css.properties2
+JAVAC = /usr/local/java11/bin/javac
+JAVADOC = javadoc
+JAVADOCFLAGS = -version -d docs -protected
+JAVACFLAGS = 
+MAKEDEPEND = jmakedepend
+
+.SUFFIXES: .class .java
+.java.class:; $(JAVAC) $(JAVACFLAGS) $<
+
+all: $(OBJS)
+
+javadoc:; $(JAVADOC) $(JAVADOCFLAGS) $(PACKAGE)
+
+clean:; -rm -f $(OBJS) *~ core
+
+depend:; $(MAKEDEPEND) $(SRCS)
+
+# DO NOT DELETE THIS LINE -- make depend depends on it.
+Css2Style.class:: Css2Style.java\
+	/usr/local/java11/lib/classes.zip\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.util/Warnings.class\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.aural/ACssStyle.class
+Css2Properties.class:: Css2Properties.java\
+	/usr/local/java11/lib/classes.zip\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.properties/CssProperty.class
+Css2Property.class:: Css2Property.java\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.aural/ACssProperty.class
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/font/Mathline.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,123 @@
+//
+// $Id: Mathline.java,v 1.2 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.font;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class Mathline extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new Mathline
+     */
+    public Mathline() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new Mathline
+     *
+     * @param expression the unicode em
+     * @exception InvalidParamException values are incorrect
+     */
+    public Mathline(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+	CssValue val = expression.getValue();
+	setByUser();
+
+	if (val instanceof CssNumber) {
+	    value = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public Mathline(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "mathline";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.mathline != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.mathline = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getMathline();
+	} else {
+	    return ((Css2Style) style).mathline;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @@TODO
+	return false;
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/font/Panose1.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,141 @@
+//
+// $Id: Panose1.java,v 1.2 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.font;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class Panose1 extends CssProperty {
+
+    CssValue[] value = new CssValue[10];
+
+    /**
+     * Create a new Panose1
+     */
+    public Panose1() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new Panose1
+     *
+     * @param expression the unicode em
+     * @exception InvalidParamException values are incorrect
+     */
+    public Panose1(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+	CssValue val;
+	char op;
+	int i = 0;
+	setByUser();
+
+	do {
+	    val = expression.getValue();
+	    op = expression.getOperator();
+	    if (val instanceof CssNumber) {
+		value[i++] = val;
+		expression.next();
+	    } else {
+		throw new InvalidParamException("value", expression.getValue(),
+						getPropertyName(), ac);
+	    }
+	} while (!expression.end()
+		 && (op == CssOperator.SPACE)
+		 && (i < 10));
+
+	if (i != 10) {
+	    throw new InvalidParamException("few-value",
+					    getPropertyName(), ac);
+	}
+    }
+
+    public Panose1(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value[0];
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	String ret = "";
+	for (int i = 0; i < 10; i++) {
+	    ret += " " + value[i];
+	}
+	return ret.substring(1);
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "panose-1";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.panose1 != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.panose1 = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getPanose1();
+	} else {
+	    return ((Css2Style) style).panose1;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @@TODO
+	return false;
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/font/Slope.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,123 @@
+//
+// $Id: Slope.java,v 1.2 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.font;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class Slope extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new Slope
+     */
+    public Slope() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new Slope
+     *
+     * @param expression the unicode em
+     * @exception InvalidParamException values are incorrect
+     */
+    public Slope(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+	CssValue val = expression.getValue();
+	setByUser();
+
+	if (val instanceof CssNumber) {
+	    value = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public Slope(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "slope";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.slope != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.slope = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getSlope();
+	} else {
+	    return ((Css2Style) style).slope;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @@TODO
+	return false;
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/font/Src.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,225 @@
+//
+// $Id: Src.java,v 1.2 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.font;
+import java.util.Vector;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssFunction;
+import org.w3c.css.values.CssIdent;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssString;
+import org.w3c.css.values.CssURL;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.2 $
+ */
+public class Src extends CssProperty
+        implements CssOperator {
+
+    Vector values = new Vector();
+
+    /**
+     * Create a new CssSrc
+     */
+    public Src() {
+    }
+
+    /**
+     * Create a new CssSrc
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public Src(ApplContext ac, CssExpression expression, boolean check)
+	    throws InvalidParamException {
+	CssValue val;
+	char op;
+
+	setByUser();
+	do {
+	    val = expression.getValue();
+	    op = expression.getOperator();
+	    if (val instanceof CssURL) {
+		values.addElement(val);
+		expression.next();
+		if (!expression.end() && (op == SPACE)
+		    && (expression.getValue() instanceof CssFunction)) {
+		    val = expression.getValue();
+		    // @@ HACK
+		    values.addElement(" ");
+		    values.addElement(recognizeFormat(ac, (CssFunction) val));
+		    op = expression.getOperator();
+		    expression.next();
+		}
+	    } else if (val instanceof CssFunction) {
+		values.addElement(recognizeFontFaceName(ac, (CssFunction) val));
+		expression.next();
+	    } else {
+		throw new InvalidParamException("value",
+						val.toString(),
+						getPropertyName(), ac);
+	    }
+	    // @@HACK
+	    values.addElement(", ");
+	} while (op == COMMA);
+    }
+
+    public Src(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return null;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "src";
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	String ret = "";
+	int i = 0;
+	while (i != (values.size() - 1)) {
+	    ret += values.elementAt(i++);
+	}
+	return ret;
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.src != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.src = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getSrc();
+	} else {
+	    return ((Css2Style) style).src;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return false;
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+    private CssFunction recognizeFormat(ApplContext ac, CssFunction val)
+	    throws InvalidParamException {
+	if (val.getName().equals("format")) {
+	    CssExpression params = val.getParameters();
+	    char op;
+	    params.starts();
+	    do {
+		op = params.getOperator();
+		if (params.getValue() instanceof CssString) {
+		    // nothing
+		} else {
+		    throw new InvalidParamException("format",
+						    val,
+						    getPropertyName(), ac);
+		}
+		params.next();
+	    } while (op == COMMA);
+	    if (!params.end()) {
+		throw new InvalidParamException("format",
+						val,
+						getPropertyName(), ac);
+	    }
+	    params.starts();
+	    return val;
+	} else {
+	    throw new InvalidParamException("format",
+					    val,
+					    getPropertyName(), ac);
+	}
+    }
+
+    private CssFunction recognizeFontFaceName(ApplContext ac, CssFunction func)
+	    throws InvalidParamException {
+	if (func.getName().equals("local")) {
+	    CssExpression params = func.getParameters();
+	    char op;
+	    params.starts();
+
+	    if (params.getValue() instanceof CssString) {
+		if (params.getCount() == 1) {
+		    return func;
+		} else {
+		    throw new InvalidParamException("local",
+						    func,
+						    getPropertyName(), ac);
+		}
+	    }
+
+	    do {
+		op = params.getOperator();
+		if (params.getValue() instanceof CssIdent) {
+		    // nothing
+		} else {
+		    throw new InvalidParamException("local",
+						    func,
+						    getPropertyName(), ac);
+		}
+		params.next();
+	    } while (op == COMMA);
+	    if (!params.end()) {
+		throw new InvalidParamException("local",
+						func,
+						getPropertyName(), ac);
+	    }
+	    params.starts();
+	    return func;
+	} else {
+	    throw new InvalidParamException("local",
+					    func,
+					    getPropertyName(), ac);
+	}
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/font/Stemh.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,123 @@
+//
+// $Id: Stemh.java,v 1.2 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.font;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class Stemh extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new Stemh
+     */
+    public Stemh() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new Stemh
+     *
+     * @param expression the unicode em
+     * @exception InvalidParamException values are incorrect
+     */
+    public Stemh(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+	CssValue val = expression.getValue();
+	setByUser();
+
+	if (val instanceof CssNumber) {
+	    value = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public Stemh(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "stemh";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.stemh != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.stemh = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getStemh();
+	} else {
+	    return ((Css2Style) style).stemh;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @@TODO
+	return false;
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/font/Stemv.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,123 @@
+//
+// $Id: Stemv.java,v 1.2 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.font;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class Stemv extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new Stemv
+     */
+    public Stemv() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new Stemv
+     *
+     * @param expression the unicode em
+     * @exception InvalidParamException values are incorrect
+     */
+    public Stemv(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+	CssValue val = expression.getValue();
+	setByUser();
+
+	if (val instanceof CssNumber) {
+	    value = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public Stemv(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "stemv";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.stemv != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.stemv = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getStemv();
+	} else {
+	    return ((Css2Style) style).stemv;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @@TODO
+	return false;
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/font/Topline.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,123 @@
+//
+// $Id: Topline.java,v 1.2 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.font;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class Topline extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new Topline
+     */
+    public Topline() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new Topline
+     *
+     * @param expression the unicode em
+     * @exception InvalidParamException values are incorrect
+     */
+    public Topline(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+	CssValue val = expression.getValue();
+	setByUser();
+
+	if (val instanceof CssNumber) {
+	    value = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public Topline(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "topline";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.topline != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.topline = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getTopline();
+	} else {
+	    return ((Css2Style) style).topline;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @@TODO
+	return false;
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/font/UnicodeRange.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,140 @@
+//
+// $Id: UnicodeRange.java,v 1.2 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.font;
+
+import java.util.Vector;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssUnicodeRange;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class UnicodeRange extends CssProperty {
+
+    Vector values = new Vector();
+
+    /**
+     * Create a new UnicodeRange
+     */
+    public UnicodeRange() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new UnicodeRange
+     *
+     * @param expression the unicode range
+     * @exception InvalidParamException values are incorrect
+     */
+    public UnicodeRange(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	char op = expression.getOperator();
+	CssValue val = expression.getValue();
+	setByUser();
+
+	do {
+	    if (val instanceof CssUnicodeRange) {
+		// nothing
+	    } else {
+		throw new InvalidParamException("value", expression.getValue(),
+						getPropertyName(), ac);
+	    }
+	    values.addElement(val);
+	    op = expression.getOperator();
+	    expression.next();
+	} while (op == CssOperator.COMMA);
+
+    }
+
+    public UnicodeRange(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return values.elementAt(0);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	String ret ="";
+	int i = 0;
+
+	while (i < values.size()) {
+	    ret += ", " + values.elementAt(i);
+	    i++;
+	}
+
+	return ret.substring(2);
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "unicode-range";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.unicodeRange != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.unicodeRange = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getFaceUnicodeRange();
+	} else {
+	    return ((Css2Style) style).unicodeRange;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @@TODO
+	return false;
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/font/UnitsPerEm.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,123 @@
+//
+// $Id: UnitsPerEm.java,v 1.2 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.font;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class UnitsPerEm extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new UnitsPerEm
+     */
+    public UnitsPerEm() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new UnitsPerEm
+     *
+     * @param expression the unicode em
+     * @exception InvalidParamException values are incorrect
+     */
+    public UnitsPerEm(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+	CssValue val = expression.getValue();
+	setByUser();
+
+	if (val instanceof CssNumber) {
+	    value = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public UnitsPerEm(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "units-per-em";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.unitsPerEm != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.unitsPerEm = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getUnitsPerEm();
+	} else {
+	    return ((Css2Style) style).unitsPerEm;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @@TODO
+	return false;
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/font/Widths.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,160 @@
+//
+// $Id: Widths.java,v 1.2 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.font;
+
+import java.util.Vector;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssUnicodeRange;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class Widths extends CssProperty implements CssOperator {
+
+    Vector values = new Vector();
+
+    /**
+     * Create a new Widths
+     */
+    public Widths() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new Widths
+     *
+     * @param expression the unicode em
+     * @exception InvalidParamException values are incorrect
+     */
+    public Widths(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+	CssValue val;
+	char op;
+	int i = 0;
+	setByUser();
+
+	do {
+	    val = expression.getValue();
+	    op = expression.getOperator();
+	    if (val instanceof CssUnicodeRange) {
+		values.addElement(val);
+		if (op != SPACE) {
+		    throw new InvalidParamException("operator",
+						    new Character(op),
+						    getPropertyName(), ac);
+		}
+		if (expression.end()) {
+		    throw new InvalidParamException("few-value",
+						    getPropertyName(), ac);
+		}
+		expression.next();
+	    }
+	    do {
+		op = expression.getOperator();
+		val = expression.getValue();
+		if (val instanceof CssNumber) {
+		    values.addElement(" ");
+		    values.addElement(val);
+		} else {
+		    throw new InvalidParamException("value",
+						    val,
+						    getPropertyName(), ac);
+		}
+		expression.next();
+	    } while ((op == SPACE) && !expression.end());
+	    values.addElement(", ");
+	} while (op == CssOperator.COMMA);
+
+    }
+
+    public Widths(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return values.elementAt(0);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	String ret = "";
+	int i = 0;
+	while (i < (values.size() - 2)) {
+	    ret += values.elementAt(i);
+	    i++;
+	}
+	return ret;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "widths";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.widths != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.widths = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getWidths();
+	} else {
+	    return ((Css2Style) style).widths;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @@TODO
+	return false;
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/font/XHeight.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,123 @@
+//
+// $Id: XHeight.java,v 1.2 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.font;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class XHeight extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new XHeight
+     */
+    public XHeight() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new XHeight
+     *
+     * @param expression the unicode em
+     * @exception InvalidParamException values are incorrect
+     */
+    public XHeight(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+	CssValue val = expression.getValue();
+	setByUser();
+
+	if (val instanceof CssNumber) {
+	    value = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public XHeight(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "x-height";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.xHeight != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.xHeight = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getXHeight();
+	} else {
+	    return ((Css2Style) style).xHeight;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @@TODO
+	return false;
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/table/BorderCollapse.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,145 @@
+//
+// $Id: BorderCollapse.java,v 1.2 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.table;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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 BorderCollapse extends TableProperty {
+
+    CssValue value;
+
+    private static CssIdent collapse = new CssIdent("collapse");
+    private static CssIdent separate = new CssIdent("separate");
+
+    /**
+     * Create a new BorderCollapse
+     */
+    public BorderCollapse() {
+	value = collapse;
+    }
+
+    /**
+     * Creates a new CssBorderCollapse
+     *
+     * @param expression the expression of the size
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public BorderCollapse(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	} else if (val.equals(collapse)) {
+	    value = collapse;
+	} else if (val.equals(separate)) {
+	    value = separate;
+	} else {
+	    throw new InvalidParamException("value",
+					    val.toString(),
+					    getPropertyName(), ac);
+	}
+
+	expression.next();
+    }
+
+    public BorderCollapse(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-collapse";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.borderCollapse != null) {
+	    style.addRedefinitionWarning(ac, this);
+	}
+	style0.borderCollapse = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getBorderCollapse();
+	} else {
+	    return ((Css2Style) style).borderCollapse;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	if (value == null) {
+	    return (property instanceof BorderCollapse &&
+		    ((BorderCollapse) property).value == value);
+	} else {
+	    return (property instanceof BorderCollapse &&
+		    ((BorderCollapse) property).value.equals(value));
+	}
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/table/BorderCollapseATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,147 @@
+//
+// $Id: BorderCollapseATSC.java,v 1.2 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.table;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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 BorderCollapseATSC extends TableProperty {
+
+    CssValue value;
+
+    private static CssIdent collapse = new CssIdent("collapse");
+    private static CssIdent separate = new CssIdent("separate");
+
+    /**
+     * Create a new BorderCollapseATSC
+     */
+    public BorderCollapseATSC() {
+	value = collapse;
+    }
+
+    /**
+     * Creates a new CssBorderCollapseATSC
+     *
+     * @param expression the expression of the size
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public BorderCollapseATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	setByUser();
+
+	ac.getFrame().addWarning("atsc", val.toString());
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	} else if (val.equals(collapse)) {
+	    value = collapse;
+	} else if (val.equals(separate)) {
+	    value = separate;
+	} else {
+	    throw new InvalidParamException("value",
+					    val.toString(),
+					    getPropertyName(), ac);
+	}
+
+	expression.next();
+    }
+
+    public BorderCollapseATSC(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-collapse";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.borderCollapseATSC != null) {
+	    style.addRedefinitionWarning(ac, this);
+	}
+	style0.borderCollapseATSC = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getBorderCollapseATSC();
+	} else {
+	    return ((Css2Style) style).borderCollapseATSC;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	if (value == null) {
+	    return (property instanceof BorderCollapseATSC &&
+		    ((BorderCollapseATSC) property).value == value);
+	} else {
+	    return (property instanceof BorderCollapseATSC &&
+		    ((BorderCollapseATSC) property).value.equals(value));
+	}
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/table/BorderSpacing.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,175 @@
+//
+// $Id: BorderSpacing.java,v 1.2 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.table;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssOperator;
+import org.w3c.css.values.CssValue;
+
+
+/**
+ */
+public class BorderSpacing extends TableProperty implements CssOperator {
+
+    CssValue value;
+
+    CssLength second;
+
+    /**
+     * Create a new BorderSpacing
+     */
+    public BorderSpacing() {
+    }
+
+    /**
+     * Creates a new CssBorderSpacing
+     *
+     * @param expression the expression of the size
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public BorderSpacing(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 2) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	CssLength le = getLength(val);
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    if(expression.getCount() > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    value = inherit;
+	} else if (le != null) {
+	    value = le;
+	    if (expression.getOperator() == SPACE) {
+		expression.next();
+		val = expression.getValue();
+		if(val != null && val.equals(inherit)) {
+		    throw new InvalidParamException("unrecognize", ac);
+		}
+		le = getLength(expression.getValue());
+		if (le != null) {
+		    second = le;
+		} else {
+		    return;
+		}
+	    }
+
+	} else {
+	    throw new InvalidParamException("value",
+					    val.toString(),
+					    getPropertyName(), ac);
+	}
+
+	expression.next();
+    }
+
+    public BorderSpacing(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (second != null) {
+	    return value + " " + second;
+	} else {
+	    return value.toString();
+	}
+    }
+
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-spacing";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.borderSpacing != null) {
+	    style.addRedefinitionWarning(ac, this);
+	}
+	style0.borderSpacing = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getBorderSpacing();
+	} else {
+	    return ((Css2Style) style).borderSpacing;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	if (value == null) {
+	    return (property instanceof BorderSpacing &&
+		    ((BorderSpacing) property).value == value);
+	} else {
+	    return (property instanceof BorderSpacing &&
+		    ((BorderSpacing) property).value.equals(value));
+	}
+    }
+
+    CssLength getLength(CssValue val) throws InvalidParamException {
+	if (val instanceof CssLength) {
+	    return (CssLength) val;
+	} else if (val instanceof CssNumber) {
+	    return ((CssNumber) val).getLength();
+	} else {
+	    return null;
+	}
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/table/BorderSpacingATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,176 @@
+//
+// $Id: BorderSpacingATSC.java,v 1.2 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.table;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssOperator;
+import org.w3c.css.values.CssValue;
+
+
+/**
+ */
+public class BorderSpacingATSC extends TableProperty implements CssOperator {
+
+    CssValue value;
+
+    CssLength second;
+
+    /**
+     * Create a new BorderSpacingATSC
+     */
+    public BorderSpacingATSC() {
+    }
+
+    /**
+     * Creates a new CssBorderSpacingATSC
+     *
+     * @param expression the expression of the size
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public BorderSpacingATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 2) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	CssLength le = getLength(val);
+	setByUser();
+
+	ac.getFrame().addWarning("atsc", val.toString());
+
+	if (val.equals(inherit)) {
+	    if(expression.getCount() > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    value = inherit;
+	} else if (le != null) {
+	    value = le;
+	    if (expression.getOperator() == SPACE) {
+		expression.next();
+		if(expression.getValue().equals(inherit)) {
+		    throw new InvalidParamException("unrecognize", ac);
+		}
+		le = getLength(expression.getValue());
+		if (le != null) {
+		    second = le;
+		} else {
+		    return;
+		}
+	    }
+
+	} else {
+	    throw new InvalidParamException("value",
+					    val.toString(),
+					    getPropertyName(), ac);
+	}
+
+	expression.next();
+    }
+
+    public BorderSpacingATSC(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (second != null) {
+	    return value + " " + second;
+	} else {
+	    return value.toString();
+	}
+    }
+
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-spacing";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.borderSpacingATSC != null) {
+	    style.addRedefinitionWarning(ac, this);
+	}
+	style0.borderSpacingATSC = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getBorderSpacingATSC();
+	} else {
+	    return ((Css2Style) style).borderSpacingATSC;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	if (value == null) {
+	    return (property instanceof BorderSpacingATSC &&
+		    ((BorderSpacingATSC) property).value == value);
+	} else {
+	    return (property instanceof BorderSpacingATSC &&
+		    ((BorderSpacingATSC) property).value.equals(value));
+	}
+    }
+
+    CssLength getLength(CssValue val) throws InvalidParamException {
+	if (val instanceof CssLength) {
+	    return (CssLength) val;
+	} else if (val instanceof CssNumber) {
+	    return ((CssNumber) val).getLength();
+	} else {
+	    return null;
+	}
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/table/CaptionSide.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,165 @@
+//
+// $Id: CaptionSide.java,v 1.3 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.table;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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 CaptionSide extends TableProperty {
+
+    CssValue value;
+
+    protected static CssIdent top = new CssIdent("top");
+    protected static CssIdent bottom = new CssIdent("bottom");
+    protected static CssIdent right = new CssIdent("right");
+    protected static CssIdent left = new CssIdent("left");
+
+    /**
+     * Create a new CaptionSide
+     */
+    public CaptionSide() {
+	value = top;
+    }
+
+    /**
+     * Creates a new CssCaptionSide
+     *
+     * @param expression the expression of the size
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CaptionSide(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	} else if (val.equals(top)) {
+	    value = top;
+	} else if (val.equals(bottom)) {
+	    value = bottom;
+	} else if (val.equals(left)) {
+	    value = left;
+	} else if (val.equals(right)) {
+	    value = right;
+	} else {
+	    throw new InvalidParamException("value",
+					    val.toString(),
+					    getPropertyName(), ac);
+	}
+
+	expression.next();
+    }
+
+    public CaptionSide(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * @return Returns the value.
+     */
+    public CssValue getValue() {
+        return value;
+    }
+
+    /**
+     * @param value The value to set.
+     */
+    public void setValue(CssValue value) {
+        this.value = value;
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "caption-side";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.captionSide != null) {
+	    style.addRedefinitionWarning(ac, this);
+	}
+	style0.captionSide = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getCaptionSide();
+	} else {
+	    return ((Css2Style) style).captionSide;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	if (value == null) {
+	    return (property instanceof CaptionSide &&
+		    ((CaptionSide) property).value == value);
+	} else {
+	    return (property instanceof CaptionSide &&
+		    ((CaptionSide) property).value.equals(value));
+	}
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/table/ColumnSpan.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,146 @@
+//
+// $Id: ColumnSpan.java,v 1.2 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.table;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+
+/**
+ */
+public class ColumnSpan extends TableProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new ColumnSpan
+     */
+    public ColumnSpan() {
+	value = new CssNumber(null, 1);
+    }
+
+    /**
+     * Creates a new CssColumnSpan
+     *
+     * @param expression the expression of the size
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public ColumnSpan(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	    expression.next();
+	    return;
+	} else if (val instanceof CssNumber) {
+	    if (((CssNumber) val).isInteger()) {
+		value = val;
+		expression.next();
+		return;
+	    } else {
+		throw new InvalidParamException("integer",
+						val.toString(),
+						getPropertyName(), ac);
+	    }
+	}
+
+	throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+    }
+
+    public ColumnSpan(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "column-span";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.columnSpan != null) {
+	    style.addRedefinitionWarning(ac, this);
+	}
+	style0.columnSpan = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getColumnSpan();
+	} else {
+	    return ((Css2Style) style).columnSpan;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	if (value == null) {
+	    return (property instanceof ColumnSpan &&
+		    ((ColumnSpan) property).value == value);
+	} else {
+	    return (property instanceof ColumnSpan &&
+		    ((ColumnSpan) property).value.equals(value));
+	}
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/table/ColumnSpanATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,148 @@
+//
+// $Id: ColumnSpanATSC.java,v 1.2 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.table;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+
+/**
+ */
+public class ColumnSpanATSC extends TableProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new ColumnSpanATSC
+     */
+    public ColumnSpanATSC() {
+	value = new CssNumber(null, 1);
+    }
+
+    /**
+     * Creates a new CssColumnSpanATSC
+     *
+     * @param expression the expression of the size
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public ColumnSpanATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	setByUser();
+
+	ac.getFrame().addWarning("atsc", val.toString());
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	    expression.next();
+	    return;
+	} else if (val instanceof CssNumber) {
+	    if (((CssNumber) val).isInteger()) {
+		value = val;
+		expression.next();
+		return;
+	    } else {
+		throw new InvalidParamException("integer",
+						val.toString(),
+						getPropertyName(), ac);
+	    }
+	}
+
+	throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+    }
+
+    public ColumnSpanATSC(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "column-span";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.columnSpanATSC != null) {
+	    style.addRedefinitionWarning(ac, this);
+	}
+	style0.columnSpanATSC = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getColumnSpanATSC();
+	} else {
+	    return ((Css2Style) style).columnSpanATSC;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	if (value == null) {
+	    return (property instanceof ColumnSpanATSC &&
+		    ((ColumnSpanATSC) property).value == value);
+	} else {
+	    return (property instanceof ColumnSpanATSC &&
+		    ((ColumnSpanATSC) property).value.equals(value));
+	}
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/table/Css2Style.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,235 @@
+//
+// $Id: Css2Style.java,v 1.1 2005-08-23 16:33:50 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 org.w3c.css.properties.css2.table;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.properties.aural.ACssStyle;
+
+/**
+ * @version $Revision: 1.1 $
+ */
+public class Css2Style extends ACssStyle {
+
+    RowSpan rowSpan;
+    RowSpanATSC rowSpanATSC;
+    ColumnSpan columnSpan;
+    ColumnSpanATSC columnSpanATSC;
+    CaptionSide captionSide;
+    TableLayout tableLayout;
+    TableLayoutATSC tableLayoutATSC;
+    BorderCollapse borderCollapse;
+    BorderCollapseATSC borderCollapseATSC;
+    BorderSpacing borderSpacing;
+    BorderSpacingATSC borderSpacingATSC;
+    EmptyCells emptyCells;
+    EmptyCellsATSC emptyCellsATSC;
+    SpeakHeader speakHeader;
+    SpeakHeaderATSC speakHeaderATSC;
+
+    /**
+     * Get the row-span property
+     */
+    public final RowSpan getRowSpan() {
+	if (rowSpan == null) {
+	    rowSpan = (RowSpan)
+		style.CascadingOrder(new RowSpan(), style, selector);
+	}
+	return rowSpan;
+    }
+
+    public final RowSpanATSC getRowSpanATSC() {
+	if (rowSpanATSC == null) {
+	    rowSpanATSC = (RowSpanATSC)
+		style.CascadingOrder(new RowSpanATSC(), style, selector);
+	}
+	return rowSpanATSC;
+    }
+
+    /**
+     * Get the column-span property
+     */
+
+    public final ColumnSpan getColumnSpan() {
+	if (columnSpan == null) {
+	    columnSpan = (ColumnSpan)
+		style.CascadingOrder(new ColumnSpan(), style, selector);
+	}
+	return columnSpan;
+    }
+
+    public final ColumnSpanATSC getColumnSpanATSC() {
+	if (columnSpanATSC == null) {
+	    columnSpanATSC = (ColumnSpanATSC)
+		style.CascadingOrder(new ColumnSpanATSC(), style, selector);
+	}
+	return columnSpanATSC;
+    }
+
+    /**
+     * Get the table-layout property
+     */
+    public final TableLayout getTableLayout() {
+	if (tableLayout == null) {
+	    tableLayout = (TableLayout)
+		style.CascadingOrder(new TableLayout(), style, selector);
+	}
+	return tableLayout;
+    }
+
+    public final TableLayoutATSC getTableLayoutATSC() {
+	if (tableLayoutATSC == null) {
+	    tableLayoutATSC = (TableLayoutATSC)
+		style.CascadingOrder(new TableLayoutATSC(), style, selector);
+	}
+	return tableLayoutATSC;
+    }
+
+    /**
+     * Get the caption-side property
+     */
+    public final CaptionSide getCaptionSide() {
+	if (captionSide == null) {
+	    captionSide = (CaptionSide)
+		style.CascadingOrder(new CaptionSide(), style, selector);
+	}
+	return captionSide;
+    }
+
+    /**
+     * Get the border-collapse property
+     */
+    public final BorderCollapse getBorderCollapse() {
+	if (borderCollapse == null) {
+	    borderCollapse = (BorderCollapse)
+		style.CascadingOrder(new BorderCollapse(), style, selector);
+	}
+	return borderCollapse;
+    }
+
+    public final BorderCollapseATSC getBorderCollapseATSC() {
+	if (borderCollapseATSC == null) {
+	    borderCollapseATSC = (BorderCollapseATSC)
+		style.CascadingOrder(new BorderCollapseATSC(), style, selector);
+	}
+	return borderCollapseATSC;
+    }
+
+    /**
+     * Get the border-spacing property
+     */
+    public final BorderSpacing getBorderSpacing() {
+	if (borderSpacing == null) {
+	    borderSpacing = (BorderSpacing)
+		style.CascadingOrder(new BorderSpacing(), style, selector);
+	}
+	return borderSpacing;
+    }
+
+    public final BorderSpacingATSC getBorderSpacingATSC() {
+	if (borderSpacingATSC == null) {
+	    borderSpacingATSC = (BorderSpacingATSC)
+		style.CascadingOrder(new BorderSpacingATSC(), style, selector);
+	}
+	return borderSpacingATSC;
+    }
+
+    /**
+     * Get the emtpy-cells property
+     */
+    public final EmptyCells getEmptyCells() {
+	if (emptyCells == null) {
+	    emptyCells = (EmptyCells)
+		style.CascadingOrder(new EmptyCells(), style, selector);
+	}
+	return emptyCells;
+    }
+
+    public final EmptyCellsATSC getEmptyCellsATSC() {
+	if (emptyCellsATSC == null) {
+	    emptyCellsATSC = (EmptyCellsATSC)
+		style.CascadingOrder(new EmptyCellsATSC(), style, selector);
+	}
+	return emptyCellsATSC;
+    }
+
+    /**
+     * Get the emtpy-header property
+     */
+    public final SpeakHeader getSpeakHeader() {
+	if (speakHeader == null) {
+	    speakHeader = (SpeakHeader)
+		style.CascadingOrder(new SpeakHeader(), style, selector);
+	}
+	return speakHeader;
+    }
+
+    public final SpeakHeaderATSC getSpeakHeaderATSC() {
+	if (speakHeaderATSC == null) {
+	    speakHeaderATSC = (SpeakHeaderATSC)
+		style.CascadingOrder(new SpeakHeaderATSC(), style, selector);
+	}
+	return speakHeaderATSC;
+    }
+
+
+    /**
+     * Print this style.
+     *
+     * @param printer The printer interface.
+     */
+    public void print(CssPrinterStyle printer) {
+	super.print(printer);
+
+	if (rowSpan != null) {
+	    rowSpan.print(printer);
+	}
+	if (rowSpanATSC != null) {
+	    rowSpanATSC.print(printer);
+	}
+	if (columnSpan != null) {
+	    columnSpan.print(printer);
+	}
+	if (columnSpanATSC != null) {
+	    columnSpanATSC.print(printer);
+	}
+	if (tableLayout != null) {
+	    tableLayout.print(printer);
+	}
+	if (tableLayoutATSC != null) {
+	    tableLayoutATSC.print(printer);
+	}
+	if (captionSide != null) {
+	    captionSide.print(printer);
+	}
+	if (borderCollapse != null) {
+	    borderCollapse.print(printer);
+	}
+	if (borderCollapseATSC != null) {
+	    borderCollapseATSC.print(printer);
+	}
+	if (borderSpacing != null) {
+	    borderSpacing.print(printer);
+	}
+	if (borderSpacingATSC != null) {
+	    borderSpacingATSC.print(printer);
+	}
+	if (emptyCells != null) {
+	    emptyCells.print(printer);
+	}
+	if (emptyCellsATSC != null) {
+	    emptyCellsATSC.print(printer);
+	}
+	if (speakHeader != null) {
+	    speakHeader.print(printer);
+	}
+	if (speakHeaderATSC != null) {
+	    speakHeaderATSC.print(printer);
+	}
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/table/EmptyCells.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,145 @@
+//
+// $Id: EmptyCells.java,v 1.2 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.table;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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 EmptyCells extends TableProperty {
+
+    CssValue value;
+
+    private static CssIdent show = new CssIdent("show");
+    private static CssIdent hide = new CssIdent("hide");
+
+    /**
+     * Create a new EmptyCells
+     */
+    public EmptyCells() {
+	value = show;
+    }
+
+    /**
+     * Creates a new CssEmptyCells
+     *
+     * @param expression the expression of the size
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public EmptyCells(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	} else if (val.equals(show)) {
+	    value = show;
+	} else if (val.equals(hide)) {
+	    value = hide;
+	} else {
+	    throw new InvalidParamException("value",
+					    val.toString(),
+					    getPropertyName(), ac);
+	}
+
+	expression.next();
+    }
+
+    public EmptyCells(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "empty-cells";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.emptyCells != null) {
+	    style.addRedefinitionWarning(ac, this);
+	}
+	style0.emptyCells = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getEmptyCells();
+	} else {
+	    return ((Css2Style) style).emptyCells;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	if (value == null) {
+	    return (property instanceof EmptyCells &&
+		    ((EmptyCells) property).value == value);
+	} else {
+	    return (property instanceof EmptyCells &&
+		    ((EmptyCells) property).value.equals(value));
+	}
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/table/EmptyCellsATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,147 @@
+//
+// $Id: EmptyCellsATSC.java,v 1.2 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.table;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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 EmptyCellsATSC extends TableProperty {
+
+    CssValue value;
+
+    private static CssIdent show = new CssIdent("show");
+    private static CssIdent hide = new CssIdent("hide");
+
+    /**
+     * Create a new EmptyCellsATSC
+     */
+    public EmptyCellsATSC() {
+	value = show;
+    }
+
+    /**
+     * Creates a new CssEmptyCellsATSC
+     *
+     * @param expression the expression of the size
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public EmptyCellsATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	setByUser();
+
+	ac.getFrame().addWarning("atsc", val.toString());
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	} else if (val.equals(show)) {
+	    value = show;
+	} else if (val.equals(hide)) {
+	    value = hide;
+	} else {
+	    throw new InvalidParamException("value",
+					    val.toString(),
+					    getPropertyName(), ac);
+	}
+
+	expression.next();
+    }
+
+    public EmptyCellsATSC(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "empty-cells";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.emptyCellsATSC != null) {
+	    style.addRedefinitionWarning(ac, this);
+	}
+	style0.emptyCellsATSC = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getEmptyCellsATSC();
+	} else {
+	    return ((Css2Style) style).emptyCellsATSC;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	if (value == null) {
+	    return (property instanceof EmptyCellsATSC &&
+		    ((EmptyCellsATSC) property).value == value);
+	} else {
+	    return (property instanceof EmptyCellsATSC &&
+		    ((EmptyCellsATSC) property).value.equals(value));
+	}
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/table/Makefile	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,33 @@
+SRCS = Css2Properties.java Css2Property.java Css2Style.java
+
+OBJS = $(SRCS:.java=.class)
+
+PACKAGE = org.w3c.css.properties2
+JAVAC = /usr/local/java11/bin/javac
+JAVADOC = javadoc
+JAVADOCFLAGS = -version -d docs -protected
+JAVACFLAGS = 
+MAKEDEPEND = jmakedepend
+
+.SUFFIXES: .class .java
+.java.class:; $(JAVAC) $(JAVACFLAGS) $<
+
+all: $(OBJS)
+
+javadoc:; $(JAVADOC) $(JAVADOCFLAGS) $(PACKAGE)
+
+clean:; -rm -f $(OBJS) *~ core
+
+depend:; $(MAKEDEPEND) $(SRCS)
+
+# DO NOT DELETE THIS LINE -- make depend depends on it.
+Css2Style.class:: Css2Style.java\
+	/usr/local/java11/lib/classes.zip\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.util/Warnings.class\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.aural/ACssStyle.class
+Css2Properties.class:: Css2Properties.java\
+	/usr/local/java11/lib/classes.zip\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.properties/CssProperty.class
+Css2Property.class:: Css2Property.java\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.aural/ACssProperty.class
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/table/RowSpan.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,146 @@
+//
+// $Id: RowSpan.java,v 1.2 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.table;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+
+/**
+ */
+public class RowSpan extends TableProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new RowSpan
+     */
+    public RowSpan() {
+	value = new CssNumber(null, 1);
+    }
+
+    /**
+     * Creates a new CssRowSpan
+     *
+     * @param expression the expression of the size
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public RowSpan(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	    expression.next();
+	    return;
+	} else if (val instanceof CssNumber) {
+	    if (((CssNumber) val).isInteger()) {
+		value = val;
+		expression.next();
+		return;
+	    } else {
+		throw new InvalidParamException("integer",
+						val.toString(),
+						getPropertyName(), ac);
+	    }
+	}
+
+	throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+    }
+
+    public RowSpan(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "row-span";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.rowSpan != null) {
+	    style.addRedefinitionWarning(ac, this);
+	}
+	style0.rowSpan = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getRowSpan();
+	} else {
+	    return ((Css2Style) style).rowSpan;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	if (value == null) {
+	    return (property instanceof RowSpan &&
+		    ((RowSpan) property).value == value);
+	} else {
+	    return (property instanceof RowSpan &&
+		    ((RowSpan) property).value.equals(value));
+	}
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/table/RowSpanATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,148 @@
+//
+// $Id: RowSpanATSC.java,v 1.2 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.table;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+
+/**
+ */
+public class RowSpanATSC extends TableProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new RowSpanATSC
+     */
+    public RowSpanATSC() {
+	value = new CssNumber(null, 1);
+    }
+
+    /**
+     * Creates a new CssRowSpanATSC
+     *
+     * @param expression the expression of the size
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public RowSpanATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	setByUser();
+
+	ac.getFrame().addWarning("atsc", val.toString());
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	    expression.next();
+	    return;
+	} else if (val instanceof CssNumber) {
+	    if (((CssNumber) val).isInteger()) {
+		value = val;
+		expression.next();
+		return;
+	    } else {
+		throw new InvalidParamException("integer",
+						val.toString(),
+						getPropertyName(), ac);
+	    }
+	}
+
+	throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+    }
+
+    public RowSpanATSC(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "row-span";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.rowSpanATSC != null) {
+	    style.addRedefinitionWarning(ac, this);
+	}
+	style0.rowSpanATSC = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getRowSpanATSC();
+	} else {
+	    return ((Css2Style) style).rowSpanATSC;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	if (value == null) {
+	    return (property instanceof RowSpanATSC &&
+		    ((RowSpanATSC) property).value == value);
+	} else {
+	    return (property instanceof RowSpanATSC &&
+		    ((RowSpanATSC) property).value.equals(value));
+	}
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/table/SpeakHeader.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,145 @@
+//
+// $Id: SpeakHeader.java,v 1.2 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.table;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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 SpeakHeader extends TableProperty {
+
+    CssValue value;
+
+    private static CssIdent once = new CssIdent("once");
+    private static CssIdent always = new CssIdent("always");
+
+    /**
+     * Create a new SpeakHeader
+     */
+    public SpeakHeader() {
+	value = once;
+    }
+
+    /**
+     * Creates a new CssSpeakHeader
+     *
+     * @param expression the expression of the size
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public SpeakHeader(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	} else if (val.equals(once)) {
+	    value = once;
+	} else if (val.equals(always)) {
+	    value = always;
+	} else {
+	    throw new InvalidParamException("value",
+					    val.toString(),
+					    getPropertyName(), ac);
+	}
+
+	expression.next();
+    }
+
+    public SpeakHeader(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "speak-header";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.speakHeader != null) {
+	    style.addRedefinitionWarning(ac, this);
+	}
+	style0.speakHeader = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getSpeakHeader();
+	} else {
+	    return ((Css2Style) style).speakHeader;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	if (value == null) {
+	    return (property instanceof SpeakHeader &&
+		    ((SpeakHeader) property).value == value);
+	} else {
+	    return (property instanceof SpeakHeader &&
+		    ((SpeakHeader) property).value.equals(value));
+	}
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/table/SpeakHeaderATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,147 @@
+//
+// $Id: SpeakHeaderATSC.java,v 1.2 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.table;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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 SpeakHeaderATSC extends TableProperty {
+
+    CssValue value;
+
+    private static CssIdent once = new CssIdent("once");
+    private static CssIdent always = new CssIdent("always");
+
+    /**
+     * Create a new SpeakHeaderATSC
+     */
+    public SpeakHeaderATSC() {
+	value = once;
+    }
+
+    /**
+     * Creates a new CssSpeakHeaderATSC
+     *
+     * @param expression the expression of the size
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public SpeakHeaderATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	setByUser();
+
+	ac.getFrame().addWarning("atsc", val.toString());
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	} else if (val.equals(once)) {
+	    value = once;
+	} else if (val.equals(always)) {
+	    value = always;
+	} else {
+	    throw new InvalidParamException("value",
+					    val.toString(),
+					    getPropertyName(), ac);
+	}
+
+	expression.next();
+    }
+
+    public SpeakHeaderATSC(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "speak-header";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.speakHeaderATSC != null) {
+	    style.addRedefinitionWarning(ac, this);
+	}
+	style0.speakHeaderATSC = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getSpeakHeaderATSC();
+	} else {
+	    return ((Css2Style) style).speakHeaderATSC;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	if (value == null) {
+	    return (property instanceof SpeakHeaderATSC &&
+		    ((SpeakHeaderATSC) property).value == value);
+	} else {
+	    return (property instanceof SpeakHeaderATSC &&
+		    ((SpeakHeaderATSC) property).value.equals(value));
+	}
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/table/TableDefault.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,8 @@
+row-span.inherited:        false
+column-span.inherited:     false
+table-layout.inherited:    false
+border-collapse.inherited: false
+border-spacing.inherited:  true
+empty-cells.inherited:     true
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/table/TableLayout.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,145 @@
+//
+// $Id: TableLayout.java,v 1.2 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.table;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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 TableLayout extends TableProperty {
+
+    CssValue value;
+
+    private static CssIdent auto = new CssIdent("auto");
+    private static CssIdent fixed = new CssIdent("fixed");
+
+    /**
+     * Create a new TableLayout
+     */
+    public TableLayout() {
+	value = auto;
+    }
+
+    /**
+     * Creates a new CssTableLayout
+     *
+     * @param expression the expression of the size
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public TableLayout(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	} else if (val.equals(auto)) {
+	    value = auto;
+	} else if (val.equals(fixed)) {
+	    value = fixed;
+	} else {
+	    throw new InvalidParamException("value",
+					    val.toString(),
+					    getPropertyName(), ac);
+	}
+
+	expression.next();
+    }
+
+    public TableLayout(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "table-layout";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.tableLayout != null) {
+	    style.addRedefinitionWarning(ac, this);
+	}
+	style0.tableLayout = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getTableLayout();
+	} else {
+	    return ((Css2Style) style).tableLayout;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	if (value == null) {
+	    return (property instanceof TableLayout &&
+		    ((TableLayout) property).value == value);
+	} else {
+	    return (property instanceof TableLayout &&
+		    ((TableLayout) property).value.equals(value));
+	}
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/table/TableLayoutATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,147 @@
+//
+// $Id: TableLayoutATSC.java,v 1.2 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.table;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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 TableLayoutATSC extends TableProperty {
+
+    CssValue value;
+
+    private static CssIdent auto = new CssIdent("auto");
+    private static CssIdent fixed = new CssIdent("fixed");
+
+    /**
+     * Create a new TableLayoutATSC
+     */
+    public TableLayoutATSC() {
+	value = auto;
+    }
+
+    /**
+     * Creates a new CssTableLayoutATSC
+     *
+     * @param expression the expression of the size
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public TableLayoutATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	setByUser();
+
+	ac.getFrame().addWarning("atsc", val.toString());
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	} else if (val.equals(auto)) {
+	    value = auto;
+	} else if (val.equals(fixed)) {
+	    value = fixed;
+	} else {
+	    throw new InvalidParamException("value",
+					    val.toString(),
+					    getPropertyName(), ac);
+	}
+
+	expression.next();
+    }
+
+    public TableLayoutATSC(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "table-layout";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.tableLayoutATSC != null) {
+	    style.addRedefinitionWarning(ac, this);
+	}
+	style0.tableLayoutATSC = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getTableLayoutATSC();
+	} else {
+	    return ((Css2Style) style).tableLayoutATSC;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	if (value == null) {
+	    return (property instanceof TableLayoutATSC &&
+		    ((TableLayoutATSC) property).value == value);
+	} else {
+	    return (property instanceof TableLayoutATSC &&
+		    ((TableLayoutATSC) property).value.equals(value));
+	}
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/table/TableProperties.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,40 @@
+//
+// $Id: TableProperties.java,v 1.2 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.table;
+
+import java.net.URL;
+
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.Utf8Properties;
+
+/**
+ * @version $Revision: 1.2 $
+ */
+public class TableProperties {
+    public static Utf8Properties properties;
+
+    public static String getString(CssProperty property, String prop) {
+      return properties.getProperty(property.getPropertyName() + "." + prop);
+    }
+
+    public static boolean getInheritance(CssProperty property) {
+	return getString(property, "inherited").equals("true");
+    }
+
+    static {
+	properties = new Utf8Properties();
+	try {
+	    URL url = TableProperties.class
+	    .getResource("TableDefault.properties");
+	    properties.load(url.openStream());
+	} catch (Exception e) {
+	    System.err
+	    .println("org.w3c.css.properties.css2.table.TableProperties: couldn't load properties ");
+	    System.err.println("  " + e.toString());
+	}
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/table/TableProperty.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,26 @@
+//
+// $Id: TableProperty.java,v 1.1 2005-08-23 16:33:50 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 org.w3c.css.properties.css2.table;
+
+import org.w3c.css.properties.css1.CssProperty;
+
+/**
+ * @version $Revision: 1.1 $
+ */
+public abstract class TableProperty extends CssProperty {
+
+  /**
+   * Returns true if the property is inherited
+   */
+  public boolean Inherited() {
+    return TableProperties.getInheritance(this);
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/user/Css2Style.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,167 @@
+//
+// $Id: Css2Style.java,v 1.2 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.user;
+
+import org.w3c.css.parser.CssPrinterStyle;
+
+/**
+ * @version $Revision: 1.2 $
+ */
+public class Css2Style extends org.w3c.css.properties.css2.table.Css2Style {
+
+    CursorCSS2 cursorCSS2;
+    Cursor cursor;
+    CursorATSC cursorATSC;
+
+    Outline outline = new Outline();
+    OutlineATSC outlineATSC = new OutlineATSC();
+
+    /**
+     * Get the cursor property
+     */
+    public final CursorCSS2 getCursorCSS2() {
+	if (cursorCSS2 == null) {
+	    cursorCSS2 = (CursorCSS2) style.CascadingOrder(new CursorCSS2(),
+						   style, selector);
+	}
+	return cursorCSS2;
+    }
+
+    public final Cursor getCursor() {
+	if (cursor == null) {
+	    cursor = (Cursor) style.CascadingOrder(new Cursor(), style,
+						   selector);
+	}
+	return cursor;
+    }
+
+    public final CursorATSC getCursorATSC() {
+	if (cursorATSC == null) {
+	    cursorATSC = (CursorATSC) style.CascadingOrder(new CursorATSC(), style,
+						   selector);
+	}
+	return cursorATSC;
+    }
+
+    /**
+     * Get the outline-style property
+     */
+    public final OutlineStyle getOutlineStyle() {
+        if (outline.style == null) {
+            outline.style =
+                (OutlineStyle) style.CascadingOrder(new OutlineStyle(),
+                                                    style, selector);
+        }
+        return outline.style;
+    }
+
+    public final OutlineStyleATSC getOutlineStyleATSC() {
+        if (outlineATSC.style == null) {
+            outlineATSC.style =
+                (OutlineStyleATSC) style.CascadingOrder(new OutlineStyleATSC(),
+                                                    style, selector);
+        }
+        return outlineATSC.style;
+    }
+
+    /**
+     * Get the outline-width property
+     */
+    public final OutlineWidth getOutlineWidth() {
+        if (outline.width == null) {
+            outline.width =
+                (OutlineWidth) style.CascadingOrder(new OutlineWidth(),
+                                                    style, selector);
+        }
+        return outline.width;
+    }
+
+    public final OutlineWidthATSC getOutlineWidthATSC() {
+        if (outlineATSC.width == null) {
+            outlineATSC.width =
+                (OutlineWidthATSC) style.CascadingOrder(new OutlineWidthATSC(),
+                                                    style, selector);
+        }
+        return outlineATSC.width;
+    }
+
+    /**
+     * Get the outline-color property
+     */
+    public final OutlineColor getOutlineColor() {
+        if (outline.color == null) {
+            outline.color =
+                (OutlineColor) style.CascadingOrder(new OutlineColor(),
+                                                    style, selector);
+        }
+        return outline.color;
+    }
+
+    public final OutlineColorATSC getOutlineColorATSC() {
+        if (outlineATSC.color == null) {
+            outlineATSC.color =
+                (OutlineColorATSC) style.CascadingOrder(new OutlineColorATSC(),
+                                                    style, selector);
+        }
+        return outlineATSC.color;
+    }
+
+    /**
+     * Get the outline property
+     */
+    public final Outline getOutline() {
+	if (outline.style == null) {
+	    outline.style = getOutlineStyle();
+	}
+	if (outline.width == null) {
+	    outline.width = getOutlineWidth();
+	}
+	if (outline.color == null) {
+	    outline.color = getOutlineColor();
+	}
+        return outline;
+    }
+
+    public final OutlineATSC getOutlineATSC() {
+	if (outlineATSC.style == null) {
+	    outlineATSC.style = getOutlineStyleATSC();
+	}
+	if (outlineATSC.width == null) {
+	    outlineATSC.width = getOutlineWidthATSC();
+	}
+	if (outlineATSC.color == null) {
+	    outlineATSC.color = getOutlineColorATSC();
+	}
+        return outlineATSC;
+    }
+
+    /**
+     * Print this style.
+     *
+     * @param printer The printer interface.
+     */
+    public void print(CssPrinterStyle printer) {
+	super.print(printer);
+	if (cursor != null) {
+	    cursor.print(printer);
+	}
+	if (cursorATSC != null) {
+	    cursorATSC.print(printer);
+	}
+	if (cursorCSS2 != null) {
+	    cursorCSS2.print(printer);
+	}
+	if (outline != null) {
+	    outline.print(printer);
+	}
+	if (outlineATSC != null) {
+	    outlineATSC.print(printer);
+	}
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/user/Cursor.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,203 @@
+//
+// $Id: Cursor.java,v 1.2 2005-09-14 15:14:58 ylafon Exp $
+// From Philippe Le Hegaret (Philippe.Le_Hegaret@sophia.inria.fr)
+// Updated september 14th 2000 by Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT MIT and INRIA, 1997.
+// Please first read the full copyright statement in file COPYRIGHT.html
+/*
+ */
+package org.w3c.css.properties.css2.user;
+import java.util.Vector;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssOperator;
+import org.w3c.css.values.CssURL;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.2 $
+ */
+public class Cursor extends CssProperty
+    implements CssOperator {
+
+    int value;
+    Vector uris = new Vector();
+    boolean inheritedValue;
+
+    private static String CURSOR[] = {
+		"auto", "crosshair", "default", "pointer", "move", "e-resize",
+		"ne-resize", "nw-resize", "n-resize", "se-resize", "sw-resize",
+		"s-resize", "w-resize", "text", "wait", "help", "progress", "copy", "alias",
+		"context-menu", "cell", "all-scroll", "col-resize", "row-resize", "no-drop",
+		"not-allowed", "vertical-text"
+	};
+
+    private static int[] hash_values;
+
+
+    /**
+     * Create a new CssCursor
+     */
+    public Cursor() {
+		value = 0;
+    }
+
+    /**
+     * Create a new CssCursor
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public Cursor(ApplContext ac, CssExpression expression, boolean check)
+	throws InvalidParamException {
+
+	CssValue val = expression.getValue();
+	char op = expression.getOperator();
+
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    if(expression.getCount() > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    inheritedValue = true;
+	    expression.next();
+	    return;
+	}
+
+	while ((op == COMMA)&& (val instanceof CssURL)) {
+	    if(val != null && val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    uris.addElement(val);
+	    expression.next();
+	    val = expression.getValue();
+	    op = expression.getOperator();
+	}
+	if (val instanceof CssURL) {
+	    throw new InvalidParamException("comma",
+					    val.toString(),
+					    getPropertyName(), ac);
+	}
+
+	if (val instanceof CssIdent) {
+	    int hash = val.hashCode();
+
+	    for (int i = 0; i < CURSOR.length; i++) {
+		if (hash_values[i] == hash) {
+		    value = i;
+		    expression.next();
+		    if(check && !expression.end()) {
+			throw new InvalidParamException("unrecognize", ac);
+		    }
+		    return;
+		}
+	    }
+	}
+
+	throw new InvalidParamException("value",
+					val.toString(), getPropertyName(), ac);
+    }
+
+    public Cursor(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return null;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "cursor";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return inheritedValue;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (inheritedValue) {
+	    return inherit.toString();
+	} else {
+	    int i = 0;
+	    int l = uris.size();
+	    String ret = "";
+	    while (i != l) {
+		ret += uris.elementAt(i++) +
+		    (new Character(COMMA)).toString() + " ";
+	    }
+	    ret += " " + CURSOR[value];
+	    return ret;
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.cursor != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cursor = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getCursor();
+	} else {
+	    return ((Css2Style) style).cursor;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof Cursor
+		&& value == ((Cursor) property).value);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == 0;
+    }
+
+    static {
+	hash_values = new int[CURSOR.length];
+	for (int i=0; i<CURSOR.length; i++)
+	    hash_values[i] = CURSOR[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/user/CursorATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,200 @@
+//
+// $Id: CursorATSC.java,v 1.2 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.user;
+import java.util.Vector;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssOperator;
+import org.w3c.css.values.CssURL;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.2 $
+ */
+public class CursorATSC extends CssProperty
+    implements CssOperator {
+
+    int value;
+    Vector uris = new Vector();
+    boolean inheritedValue;
+
+    private static String CURSOR[] = {
+	"auto", "crosshair", "default", "pointer", "move", "e-resize",
+	"ne-resize", "nw-resize", "n-resize", "se-resize", "sw-resize",
+	"s-resize", "w-resize", "text", "wait", "help" };
+
+    private static int[] hash_values;
+
+
+    /**
+     * Create a new Cursor
+     */
+    public CursorATSC() {
+	value = 0;
+    }
+
+    /**
+     * Create a new Cursor
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CursorATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = expression.getValue();
+	char op = expression.getOperator();
+
+	setByUser();
+
+	ac.getFrame().addWarning("atsc", val.toString());
+
+	if (val.equals(inherit)) {
+	    if(expression.getCount() > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    inheritedValue = true;
+	    expression.next();
+	    return;
+	}
+
+	while ((op == COMMA)&& (val instanceof CssURL)) {
+	    if(val != null && val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    uris.addElement(val);
+	    expression.next();
+	    val = expression.getValue();
+	    op = expression.getOperator();
+	}
+	if (val instanceof CssURL) {
+	    throw new InvalidParamException("comma",
+					    val.toString(),
+					    getPropertyName(), ac);
+	}
+
+	if (val instanceof CssIdent) {
+	    int hash = val.hashCode();
+
+	    for (int i = 0; i < CURSOR.length; i++) {
+		if (hash_values[i] == hash) {
+		    value = i;
+		    expression.next();
+		    if(check && !expression.end()) {
+			throw new InvalidParamException("unrecognize", ac);
+		    }
+		    return;
+		}
+	    }
+	}
+
+	throw new InvalidParamException("value",
+					val.toString(), getPropertyName(), ac);
+    }
+
+    public CursorATSC(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return null;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "cursor";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return inheritedValue;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (inheritedValue) {
+	    return inherit.toString();
+	} else {
+	    int i = 0;
+	    int l = uris.size();
+	    String ret = "";
+	    while (i != l) {
+		ret += uris.elementAt(i++) +
+		    (new Character(COMMA)).toString() + " ";
+	    }
+	    ret += " " + CURSOR[value];
+	    return ret;
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.cursorATSC != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cursorATSC = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getCursorATSC();
+	} else {
+	    return ((Css2Style) style).cursorATSC;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CursorATSC
+		&& value == ((CursorATSC) property).value);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == 0;
+    }
+
+    static {
+	hash_values = new int[CURSOR.length];
+	for (int i=0; i<CURSOR.length; i++)
+	    hash_values[i] = CURSOR[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/user/CursorCSS2.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,240 @@
+//
+// $Id: CursorCSS2.java,v 1.3 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.user;
+import java.util.Vector;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssOperator;
+import org.w3c.css.values.CssURL;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public class CursorCSS2 extends CssProperty
+    implements CssOperator {
+
+    int value;
+    Vector uris = new Vector();
+    boolean inheritedValue;
+
+    private static String CURSOR[] = {
+	"auto", "crosshair", "default", "pointer", "move", "e-resize",
+	"ne-resize", "nw-resize", "n-resize", "se-resize", "sw-resize",
+	"s-resize", "w-resize", "text", "wait", "help" };
+
+    private static int[] hash_values;
+
+
+    /**
+     * Create a new Cursor
+     */
+    public CursorCSS2() {
+	value = 0;
+    }
+
+    /**
+     * Create a new Cursor
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CursorCSS2(ApplContext ac, CssExpression expression, boolean check)
+	throws InvalidParamException {
+	CssValue val = expression.getValue();
+	char op = expression.getOperator();
+
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    if(expression.getCount() > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    inheritedValue = true;
+	    expression.next();
+	    return;
+	}
+
+	while ((op == COMMA) && (val instanceof CssURL)) {
+	    if(val != null && val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    uris.addElement(val);
+	    expression.next();
+	    val = expression.getValue();
+	    op = expression.getOperator();
+	}
+	if (val instanceof CssURL) {
+	    throw new InvalidParamException("comma",
+					    val.toString(),
+					    getPropertyName(), ac);
+	}
+
+	if (val instanceof CssIdent) {
+	    int hash = val.hashCode();
+
+	    for (int i = 0; i < CURSOR.length; i++) {
+		if (hash_values[i] == hash) {
+		    value = i;
+		    expression.next();
+		    if(check && !expression.end()) {
+			throw new InvalidParamException("unrecognize", ac);
+		    }
+		    return;
+		}
+	    }
+	}
+
+	throw new InvalidParamException("value",
+					val.toString(), getPropertyName(), ac);
+    }
+
+    public CursorCSS2(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * @return Returns the uris.
+     */
+    public Vector getUris() {
+        return uris;
+    }
+
+    /**
+     * @param uris The uris to set.
+     */
+    public void setUris(Vector uris) {
+        this.uris = uris;
+    }
+
+    /**
+     * @return Returns the value.
+     */
+    public int getValue() {
+        return value;
+    }
+
+    /**
+     * @param value The value to set.
+     */
+    public void setValue(int value) {
+        this.value = value;
+    }
+
+    /**
+     * @return Returns the inheritedValue.
+     */
+    public boolean isInheritedValue() {
+        return inheritedValue;
+    }
+
+    /**
+     * @param inheritedValue The inheritedValue to set.
+     */
+    public void setInheritedValue(boolean inheritedValue) {
+        this.inheritedValue = inheritedValue;
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return null;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "cursor";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return inheritedValue;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (inheritedValue) {
+	    return inherit.toString();
+	} else {
+	    int i = 0;
+	    int l = uris.size();
+	    String ret = "";
+	    while (i != l) {
+		ret += uris.elementAt(i++) +
+		    (new Character(COMMA)).toString() + " ";
+	    }
+	    ret += " " + CURSOR[value];
+	    return ret;
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.cursorCSS2 != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cursorCSS2 = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getCursorCSS2();
+	} else {
+	    return ((Css2Style) style).cursor;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof Cursor
+		&& value == ((Cursor) property).value);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == 0;
+    }
+
+    static {
+	hash_values = new int[CURSOR.length];
+	for (int i=0; i<CURSOR.length; i++)
+	    hash_values[i] = CURSOR[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/user/Makefile	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,33 @@
+SRCS = Css2Properties.java Css2Property.java Css2Style.java
+
+OBJS = $(SRCS:.java=.class)
+
+PACKAGE = org.w3c.css.properties2
+JAVAC = /usr/local/java11/bin/javac
+JAVADOC = javadoc
+JAVADOCFLAGS = -version -d docs -protected
+JAVACFLAGS = 
+MAKEDEPEND = jmakedepend
+
+.SUFFIXES: .class .java
+.java.class:; $(JAVAC) $(JAVACFLAGS) $<
+
+all: $(OBJS)
+
+javadoc:; $(JAVADOC) $(JAVADOCFLAGS) $(PACKAGE)
+
+clean:; -rm -f $(OBJS) *~ core
+
+depend:; $(MAKEDEPEND) $(SRCS)
+
+# DO NOT DELETE THIS LINE -- make depend depends on it.
+Css2Style.class:: Css2Style.java\
+	/usr/local/java11/lib/classes.zip\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.util/Warnings.class\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.aural/ACssStyle.class
+Css2Properties.class:: Css2Properties.java\
+	/usr/local/java11/lib/classes.zip\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.properties/CssProperty.class
+Css2Property.class:: Css2Property.java\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.aural/ACssProperty.class
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/user/Outline.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,294 @@
+//
+// $Id: Outline.java,v 1.2 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.user;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.2 $
+ */
+public class Outline extends UserProperty implements CssOperator {
+
+    OutlineColor color;
+    OutlineWidth width;
+    OutlineStyle style;
+
+    boolean same;
+
+    /**
+     * Create a new Outline
+     */
+    public Outline() {
+    }
+
+    /**
+     * Create a new Outline
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public Outline(ApplContext ac, CssExpression expression,
+	    boolean check)  throws InvalidParamException {
+
+	if(check && expression.getCount() > 3) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+        char op = SPACE;
+        boolean find = true;
+        int max_values = 3;
+
+	if (val.equals(inherit)) {
+	    if(expression.getCount() > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    this.same = true;
+	    color = new OutlineColor(ac, expression);
+	    width = new OutlineWidth();
+	    width.value = inherit;
+	    style = new OutlineStyle();
+	    style.value = OutlineStyle.BORDERSTYLE.length - 1;
+	    return;
+	}
+
+        while (find && max_values-- > 0) {
+            find = false;
+            val = expression.getValue();
+            op = expression.getOperator();
+
+            if(val != null && val.equals(inherit)) {
+        	throw new InvalidParamException("unrecognize", ac);
+            }
+
+            if (val == null) {
+                break;
+	    }
+
+            if (op != SPACE) {
+                throw new InvalidParamException("operator",
+                                                ((new Character(op)).toString()), ac);
+	    }
+
+            if (style == null) {
+                try {
+                    style = new OutlineStyle(ac, expression);
+                    find = true;
+		} catch (InvalidParamException e) {
+		}
+            }
+            if (!find && color == null) {
+                try {
+                    color = new OutlineColor(ac, expression);
+                    find = true;
+                } catch (InvalidParamException e) {
+                }
+            }
+            if (!find && width == null) {
+        	width = new OutlineWidth(ac, expression);
+        	find = true;
+            }
+            if(val != null && !find) {
+        	throw new InvalidParamException("unrecognize", ac);
+            }
+        }
+
+	if (max_values >= 2) {
+	    throw new InvalidParamException("few-value", getPropertyName(), ac);
+	}
+	/*
+	if (color == null) {
+	    color = new OutlineColor();
+	}
+	if (width == null) {
+	    width = new OutlineWidth();
+	}
+	if (style == null) {
+	    style = new OutlineStyle();
+	}*/
+    }
+
+    public Outline(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     * not useful
+     */
+    public Object get() {
+	return color;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "outline";
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	// outlineColor and outlineWidth must be not null !
+	if (same) {
+	    return color.toString();
+	} else {
+	    String ret ="";
+	    if (color != null) {
+		ret += " " + color;
+	    }
+	    if (width != null) {
+		ret += " " + width;
+		}
+	    if (style != null) {
+		ret += " "  + style;
+	    }
+	    return ret.substring(1);
+	}
+    }
+
+    /**
+     * Set this property to be important.
+     * Overrides this method for a macro
+     */
+    public void setImportant() {
+	super.setImportant();
+	if(color != null)
+	    color.setImportant();
+	if(width != null)
+	    width.setImportant();
+	if(style != null)
+	    style.setImportant();
+    }
+
+    /**
+     * Returns true if this property is important.
+     * Overrides this method for a macro
+     */
+    public boolean getImportant() {
+	return ((width == null || width.getImportant())
+		&& (color == null || color.getImportant())
+		&& (style == null || style.getImportant()));
+    }
+
+    /**
+     * Print this property.
+     *
+     * @param printer The printer.
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	if ((color != null && width != null && style != null) &&
+	    (getImportant() ||
+	     (!color.getImportant()
+	      && !style.getImportant()
+	      && !width.getImportant()))) {
+	    printer.print(this);
+	} else {
+	    if (color != null) {
+		color.print(printer);
+	    }
+	    if (width != null) {
+		width.print(printer);
+	    }
+	    if (style != null) {
+		style.print(printer);
+	    }
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style0) {
+	// outlineColor and outlineWidth can't be null ...
+	((Css2Style) style0).outline.same = same;
+	if(color != null)
+	    color.addToStyle(ac, style0);
+	if(width != null)
+	    width.addToStyle(ac, style0);
+	if(style != null)
+	    style.addToStyle(ac, style0);
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	super.setInfo(line, source);
+	if(color != null)
+	    color.setInfo(line, source);
+	if(width != null)
+	    width.setInfo(line, source);
+	if(style != null)
+	    style.setInfo(line, source);
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return false; // @FIXME
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors selector) {
+	super.setSelectors(selector);
+	if (color != null) {
+	    color.setSelectors(selector);
+	}
+	if (width != null) {
+	    width.setSelectors(selector);
+	}
+	if (style != null) {
+	    style.setSelectors(selector);
+	}
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getOutline();
+	} else {
+	    return ((Css2Style) style).outline;
+	}
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/user/OutlineATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,297 @@
+//
+// $Id: OutlineATSC.java,v 1.2 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.user;
+
+import org.w3c.css.parser.CssPrinterStyle;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.2 $
+ */
+public class OutlineATSC extends UserProperty implements CssOperator {
+
+    OutlineColorATSC color;
+    OutlineWidthATSC width;
+    OutlineStyleATSC style;
+
+    boolean same;
+
+    /**
+     * Create a new OutlineATSC
+     */
+    public OutlineATSC() {
+    }
+
+    /**
+     * Create a new OutlineATSC
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public OutlineATSC(ApplContext ac, CssExpression expression,
+	    boolean check)  throws InvalidParamException {
+
+	if(check && expression.getCount() > 3) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+        char op = SPACE;
+        boolean find = true;
+        int max_values = 3;
+
+	ac.getFrame().addWarning("atsc", val.toString());
+
+	if (val.equals(inherit)) {
+	    if(expression.getCount() > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    this.same = true;
+	    color = new OutlineColorATSC(ac, expression);
+	    width = new OutlineWidthATSC();
+	    width.value = inherit;
+	    style = new OutlineStyleATSC();
+	    style.value = OutlineStyleATSC.BORDERSTYLE.length - 1;
+	    return;
+	}
+
+        while (find && max_values-- > 0) {
+            find = false;
+            val = expression.getValue();
+            op = expression.getOperator();
+
+            if(val != null && val.equals(inherit)) {
+        	throw new InvalidParamException("unrecognize", ac);
+            }
+
+            if (val == null) {
+                break;
+	    }
+
+            if (op != SPACE) {
+                throw new InvalidParamException("operator",
+                                                ((new Character(op)).toString()), ac);
+	    }
+
+            if (style == null) {
+                try {
+                    style = new OutlineStyleATSC(ac, expression);
+                    find = true;
+		} catch (InvalidParamException e) {
+		}
+            }
+            if (!find && color == null) {
+                try {
+                    color = new OutlineColorATSC(ac, expression);
+                    find = true;
+                } catch (InvalidParamException e) {
+                }
+            }
+            if (!find && width == null) {
+        	width = new OutlineWidthATSC(ac, expression);
+        	find = true;
+            }
+            if(val != null && !find) {
+        	throw new InvalidParamException("unrecognize", ac);
+            }
+        }
+
+	if (max_values >= 2) {
+	    throw new InvalidParamException("few-value", getPropertyName(), ac);
+	}
+	/*
+	if (color == null) {
+	    color = new OutlineColorATSC();
+	}
+	if (width == null) {
+	    width = new OutlineWidthATSC();
+	}
+	if (style == null) {
+	    style = new OutlineStyleATSC();
+	}
+	*/
+    }
+
+    public OutlineATSC(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     * not useful
+     */
+    public Object get() {
+	return color;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "outline";
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	// outlineColor and outlineWidth must be not null !
+	if (same) {
+	    return color.toString();
+	} else {
+	    String ret ="";
+	    if (color != null) {
+		ret += " " + color;
+	    }
+	    if (width != null) {
+		ret += " " + width;
+		}
+	    if (style != null) {
+		ret += " "  + style;
+	    }
+	    return ret.substring(1);
+	}
+    }
+
+    /**
+     * Set this property to be important.
+     * Overrides this method for a macro
+     */
+    public void setImportant() {
+	super.setImportant();
+	if(color != null)
+	    color.setImportant();
+	if(width != null)
+	    width.setImportant();
+	if(style != null)
+	    style.setImportant();
+    }
+
+    /**
+     * Returns true if this property is important.
+     * Overrides this method for a macro
+     */
+    public boolean getImportant() {
+	return ((width == null || width.getImportant())
+		&& (color == null || color.getImportant())
+		&& (style == null || style.getImportant()));
+    }
+
+    /**
+     * Print this property.
+     *
+     * @param printer The printer.
+     * @see #toString()
+     * @see #getPropertyName()
+     */
+    public void print(CssPrinterStyle printer) {
+	if ((color != null && width != null && style != null) &&
+	    (getImportant() ||
+	     (!color.getImportant()
+	      && !style.getImportant()
+	      && !width.getImportant()))) {
+	    printer.print(this);
+	} else {
+	    if (color != null) {
+		color.print(printer);
+	    }
+	    if (width != null) {
+		width.print(printer);
+	    }
+	    if (style != null) {
+		style.print(printer);
+	    }
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style0) {
+	// outlineColor and outlineWidth can't be null ...
+	((Css2Style) style0).outline.same = same;
+	if(color != null)
+	    color.addToStyle(ac, style0);
+	if(width != null)
+	    width.addToStyle(ac, style0);
+	if(style != null)
+	    style.addToStyle(ac, style0);
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	super.setInfo(line, source);
+	if(color != null)
+	    color.setInfo(line, source);
+	if(width != null)
+	    width.setInfo(line, source);
+	if(style != null)
+	    style.setInfo(line, source);
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return false; // @FIXME
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors selector) {
+	super.setSelectors(selector);
+	if (color != null) {
+	    color.setSelectors(selector);
+	}
+	if (width != null) {
+	    width.setSelectors(selector);
+	}
+	if (style != null) {
+	    style.setSelectors(selector);
+	}
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getOutlineATSC();
+	} else {
+	    return ((Css2Style) style).outlineATSC;
+	}
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/user/OutlineColor.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,141 @@
+//
+// $Id: OutlineColor.java,v 1.2 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.user;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssColor;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssIdent;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.2 $
+ */
+public class OutlineColor extends UserProperty {
+
+    CssValue color;
+
+    private static final CssIdent invert = new CssIdent("invert");
+
+    /**
+     * Create a new OutlineColor
+     */
+    public OutlineColor() {
+	color = invert;
+    }
+
+    /**
+     * Set the value of the property
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public OutlineColor(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    color = inherit;
+	    expression.next();
+	} else if (val.equals(invert)) {
+	    color = invert;
+	    expression.next();
+	} else if (val instanceof CssColor) {
+	    color = val;
+	    expression.next();
+	} else if (val instanceof CssIdent) {
+	    color = new CssColor(ac, (String) val.get());
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", val,
+					    getPropertyName(), ac);
+	}
+    }
+
+    public OutlineColor(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return color;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return color.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return color.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Outline outline = ((Css2Style) style).outline;
+	if (outline.color != null) {
+	    style.addRedefinitionWarning(ac, this);
+	}
+	outline.color = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getOutlineColor();
+	} else {
+	    return ((Css2Style) style).outline.color;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof OutlineColor &&
+		color.equals(((OutlineColor) property).color));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "outline-color";
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/user/OutlineColorATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,143 @@
+//
+// $Id: OutlineColorATSC.java,v 1.2 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.user;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssColor;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssIdent;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.2 $
+ */
+public class OutlineColorATSC extends UserProperty {
+
+    CssValue color;
+
+    private static final CssIdent invert = new CssIdent("invert");
+
+    /**
+     * Create a new OutlineColorATSC
+     */
+    public OutlineColorATSC() {
+	color = invert;
+    }
+
+    /**
+     * Set the value of the property
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public OutlineColorATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	setByUser();
+
+	ac.getFrame().addWarning("atsc", val.toString());
+
+	if (val.equals(inherit)) {
+	    color = inherit;
+	    expression.next();
+	} else if (val.equals(invert)) {
+	    color = invert;
+	    expression.next();
+	} else if (val instanceof CssColor) {
+	    color = val;
+	    expression.next();
+	} else if (val instanceof CssIdent) {
+	    color = new CssColor(ac, (String) val.get());
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", val,
+					    getPropertyName(), ac);
+	}
+    }
+
+    public OutlineColorATSC(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return color;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return color.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return color.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	OutlineATSC outline = ((Css2Style) style).outlineATSC;
+	if (outline.color != null) {
+	    style.addRedefinitionWarning(ac, this);
+	}
+	outline.color = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getOutlineColorATSC();
+	} else {
+	    return ((Css2Style) style).outlineATSC.color;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof OutlineColorATSC &&
+		color.equals(((OutlineColorATSC) property).color));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "outline-color";
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/user/OutlineStyle.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,148 @@
+//
+// $Id: OutlineStyle.java,v 1.2 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.user;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ * @version $Revision: 1.2 $
+ */
+public class OutlineStyle extends UserProperty {
+
+    int value = -1;
+
+    static String[] BORDERSTYLE = {
+	"none", "hidden", "dotted", "dashed", "solid", "double", "groove",
+	"ridge", "inset", "outset", "inherit" };
+
+    private static int[] hash_values;
+
+    /**
+     * Create a new OutlineStyle
+     */
+    public OutlineStyle() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new OutlineStyle
+     *
+     * @param expression The expression for this face
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public OutlineStyle(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	setByUser();
+
+	if (val instanceof CssIdent) {
+	    int hash = val.hashCode();
+	    for (int i = 0; i < BORDERSTYLE.length; i++) {
+		if (hash_values[i] == hash) {
+		    value = i;
+		    expression.next();
+		    return;
+		}
+	    }
+	}
+
+	throw new InvalidParamException("value", val.toString(),
+					getPropertyName(), ac);
+    }
+
+    public OutlineStyle(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the internal value
+     */
+    public Object get() {
+	return BORDERSTYLE[value];
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == (BORDERSTYLE.length - 1);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return BORDERSTYLE[value];
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Outline outline = ((Css2Style) style).outline;
+	if (outline.style != null) {
+	    style.addRedefinitionWarning(ac, this);
+	}
+	outline.style = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getOutlineStyle();
+	} else {
+	    return ((Css2Style) style).outline.style;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return ((property instanceof OutlineStyle)
+		&& (value == ((OutlineStyle) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "outline-style";
+    }
+
+    static {
+	hash_values = new int[BORDERSTYLE.length];
+	for (int i=0; i<BORDERSTYLE.length; i++)
+	    hash_values[i] = BORDERSTYLE[i].hashCode();
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/user/OutlineStyleATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,150 @@
+//
+// $Id: OutlineStyleATSC.java,v 1.2 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.user;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ * @version $Revision: 1.2 $
+ */
+public class OutlineStyleATSC extends UserProperty {
+
+    int value = -1;
+
+    static String[] BORDERSTYLE = {
+	"none", "dotted", "dashed", "solid", "double", "groove",
+	"ridge", "inset", "outset", "inherit" };
+
+    private static int[] hash_values;
+
+    /**
+     * Create a new OutlineStyleATSC
+     */
+    public OutlineStyleATSC() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new OutlineStyleATSC
+     *
+     * @param expression The expression for this face
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public OutlineStyleATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	setByUser();
+
+	ac.getFrame().addWarning("atsc", val.toString());
+
+	if (val instanceof CssIdent) {
+	    int hash = val.hashCode();
+	    for (int i = 0; i < BORDERSTYLE.length; i++) {
+		if (hash_values[i] == hash) {
+		    value = i;
+		    expression.next();
+		    return;
+		}
+	    }
+	}
+
+	throw new InvalidParamException("value", val.toString(),
+					getPropertyName(), ac);
+    }
+
+    public OutlineStyleATSC(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the internal value
+     */
+    public Object get() {
+	return BORDERSTYLE[value];
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == (BORDERSTYLE.length - 1);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return BORDERSTYLE[value];
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	OutlineATSC outline = ((Css2Style) style).outlineATSC;
+	if (outline.style != null) {
+	    style.addRedefinitionWarning(ac, this);
+	}
+	outline.style = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getOutlineStyleATSC();
+	} else {
+	    return ((Css2Style) style).outlineATSC.style;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return ((property instanceof OutlineStyleATSC)
+		&& (value == ((OutlineStyleATSC) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "outline-style";
+    }
+
+    static {
+	hash_values = new int[BORDERSTYLE.length];
+	for (int i=0; i<BORDERSTYLE.length; i++)
+	    hash_values[i] = BORDERSTYLE[i].hashCode();
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/user/OutlineWidth.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,165 @@
+//
+// $Id: OutlineWidth.java,v 1.2 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.user;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.2 $
+ */
+public class OutlineWidth extends UserProperty {
+
+    CssValue value;
+
+    private static CssIdent thin = new CssIdent("thin");
+    private static CssIdent medium = new CssIdent("medium");
+    private static CssIdent thick = new CssIdent("thick");
+
+    /**
+     * Create a new OutlineWidth
+     */
+    public OutlineWidth() {
+	value = medium;
+    }
+
+    /**
+     * Create a new OutlineWidth from an another OutlineWidth
+     *
+     * @param another The another side.
+     */
+    public OutlineWidth(OutlineWidth another) {
+	value = another.value;
+    }
+
+    /**
+     * Create a new OutlineWidth
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public OutlineWidth(ApplContext ac, CssExpression expression, boolean check)
+	throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	setByUser();
+
+	if (val instanceof CssLength) {
+	    float f = ((Float) val.get()).floatValue();
+	    if (f >= 0) {
+		this.value = val;
+	    } else {
+		throw new InvalidParamException("negative-value",
+						val.toString(), ac);
+	    }
+	} else if (val instanceof CssNumber) {
+	    value = ((CssNumber) val).getLength();
+	} else if (val.equals(thin)) {
+	    value = thin;
+	} else if (val.equals(medium)) {
+	    value = medium;
+	} else if (val.equals(thick)) {
+	    value = thick;
+	} else if (val.equals(inherit)) {
+	    value = CssProperty.inherit;
+	} else {
+	    throw new InvalidParamException("value", val.toString(),
+					    "width", ac);
+	}
+
+	expression.next();
+    }
+
+    public OutlineWidth(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the internal value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Outline outline = ((Css2Style) style).outline;
+	if (outline.width != null) {
+	    style.addRedefinitionWarning(ac, this);
+	}
+	outline.width = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getOutlineWidth();
+	} else {
+	    return ((Css2Style) style).outline.width;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof OutlineWidth &&
+		value.equals(((OutlineWidth) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "outline-width";
+    }
+
+}
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/user/OutlineWidthATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,167 @@
+//
+// $Id: OutlineWidthATSC.java,v 1.2 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.user;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.2 $
+ */
+public class OutlineWidthATSC extends UserProperty {
+
+    CssValue value;
+
+    private static CssIdent thin = new CssIdent("thin");
+    private static CssIdent medium = new CssIdent("medium");
+    private static CssIdent thick = new CssIdent("thick");
+
+    /**
+     * Create a new OutlineWidthATSC
+     */
+    public OutlineWidthATSC() {
+	value = medium;
+    }
+
+    /**
+     * Create a new OutlineWidthATSC from an another OutlineWidthATSC
+     *
+     * @param another The another side.
+     */
+    public OutlineWidthATSC(OutlineWidthATSC another) {
+	value = another.value;
+    }
+
+    /**
+     * Create a new OutlineWidthATSC
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public OutlineWidthATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	setByUser();
+
+	ac.getFrame().addWarning("atsc", val.toString());
+
+	if (val instanceof CssLength) {
+	    float f = ((Float) val.get()).floatValue();
+	    if (f >= 0) {
+		this.value = val;
+	    } else {
+		throw new InvalidParamException("negative-value",
+						val.toString(), ac);
+	    }
+	} else if (val instanceof CssNumber) {
+	    value = ((CssNumber) val).getLength();
+	} else if (val.equals(thin)) {
+	    value = thin;
+	} else if (val.equals(medium)) {
+	    value = medium;
+	} else if (val.equals(thick)) {
+	    value = thick;
+	} else if (val.equals(inherit)) {
+	    value = CssProperty.inherit;
+	} else {
+	    throw new InvalidParamException("value", val.toString(),
+					    "width", ac);
+	}
+
+	expression.next();
+    }
+
+    public OutlineWidthATSC(ApplContext ac, CssExpression expression)
+    	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the internal value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	OutlineATSC outline = ((Css2Style) style).outlineATSC;
+	if (outline.width != null) {
+	    style.addRedefinitionWarning(ac, this);
+	}
+	outline.width = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getOutlineWidthATSC();
+	} else {
+	    return ((Css2Style) style).outlineATSC.width;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof OutlineWidthATSC &&
+		value.equals(((OutlineWidthATSC) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "outline-width";
+    }
+
+}
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/user/UserDefault.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,5 @@
+cursor.inherited:  true
+outline.inherited:  false
+outline-color.inherited:  false
+outline-style.inherited:  false
+outline-width.inherited:  false
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/user/UserProperties.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,40 @@
+//
+// $Id: UserProperties.java,v 1.2 2005-09-14 15:14:58 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 org.w3c.css.properties.css2.user;
+
+import java.net.URL;
+
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.Utf8Properties;
+
+/**
+ * @version $Revision: 1.2 $
+ */
+public class UserProperties {
+    public static Utf8Properties properties;
+
+    public static String getString(CssProperty property, String prop) {
+	return properties.getProperty(property.getPropertyName() + "." + prop);
+    }
+
+    public static boolean getInheritance(CssProperty property) {
+	return getString(property, "inherited").equals("true");
+    }
+
+    static {
+	properties = new Utf8Properties();
+	try {
+	    URL url = UserProperties.class
+	    .getResource("UserDefault.properties");
+	    properties.load(url.openStream());
+	} catch (Exception e) {
+	    System.err
+	    .println("org.w3c.css.properties.css2.user.UserProperties: couldn't load properties ");
+	    System.err.println("  " + e.toString());
+	}
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css2/user/UserProperty.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,26 @@
+//
+// $Id: UserProperty.java,v 1.1 2005-08-23 16:33:51 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 org.w3c.css.properties.css2.user;
+
+import org.w3c.css.properties.css1.CssProperty;
+
+/**
+ * @version $Revision: 1.1 $
+ */
+public abstract class UserProperty extends CssProperty {
+
+  /**
+   * Returns true if the property is inherited
+   */
+  public boolean Inherited() {
+    return UserProperties.getInheritance(this);
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css21/Css21Style.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,21 @@
+// $Id: Css21Style.java,v 1.2 2005-09-14 15:14:58 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+
+package org.w3c.css.properties.css21;
+
+import org.w3c.css.properties.css2.font.Css2Style;
+import org.w3c.css.parser.CssPrinterStyle;
+
+/**
+ * Css21Style<br />
+ * Created: Aug 30, 2005 2:25:17 PM<br />
+ */
+public class Css21Style extends Css2Style {
+
+    public void print(CssPrinterStyle printer) {
+	super.print(printer);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css21/CssBackgroundCSS21.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,175 @@
+// $Id: CssBackgroundCSS21.java,v 1.5 2009-12-10 14:34:38 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// Revised by: Yves Lafon
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005-2008.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.properties.css21;
+
+import org.w3c.css.properties.css1.CssBackgroundAttachmentCSS2;
+import org.w3c.css.properties.css1.CssBackgroundCSS2;
+import org.w3c.css.properties.css1.CssBackgroundImageCSS2;
+import org.w3c.css.properties.css1.CssBackgroundRepeatCSS2;
+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;
+import org.w3c.css.values.CssString;
+import org.w3c.css.values.CssTypes;
+import org.w3c.css.values.CssURL;
+
+/**
+ * CssBackgroundCSS21<br />
+ * Created: Aug 31, 2005 2:03:41 PM<br />
+ */
+public class CssBackgroundCSS21 extends CssBackgroundCSS2 {
+    /**
+     * Create a new CssBackgroundCSS2
+     */
+    public CssBackgroundCSS21() {
+	super();
+    }
+
+    /**
+     * Set the value of the property
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssBackgroundCSS21(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	CssValue val;
+	char op = SPACE;
+	boolean find = true;
+	CssExpression background_position_expression = null;
+
+	// too many values
+	if(check && expression.getCount() > 6) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+
+	boolean manyValues = (expression.getCount() > 1);
+
+	while (find) {
+	    val = expression.getValue();
+	    if (val == null) {
+		break;
+	    }
+	    op = expression.getOperator();
+	    
+	    // if there are many values, we can't have inherit as one of them
+	    if(manyValues && val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", null, null, ac);
+	    }
+
+	    switch (val.getType()) {
+	    case CssTypes.CSS_STRING:
+		if (check) {
+		    throw new InvalidParamException("unrecognize", ac);
+		}
+		find = false;
+		break;
+	    case CssTypes.CSS_URL:
+		if (getImage() == null) {
+		    setImage(new CssBackgroundImageCSS2(ac, expression));
+		    continue;
+		}
+		find = false;
+		break;
+	    case CssTypes.CSS_COLOR:
+		if (getColor2() == null) {
+		    setColor(new CssBackgroundColorCSS21(ac, expression));
+		    continue;
+		}
+		find = false;
+		break;
+	    case CssTypes.CSS_NUMBER:
+	    case CssTypes.CSS_PERCENTAGE:
+	    case CssTypes.CSS_LENGTH:
+		if (background_position_expression == null) {
+		    background_position_expression = new CssExpression();
+		}
+		background_position_expression.addValue(val);
+		expression.next();
+		find = true;
+		break;
+	    case CssTypes.CSS_IDENT:
+		// the hard part, as ident can be from different subproperties
+		find = false;
+		CssIdent identval = (CssIdent) val;
+		// check background-image ident
+		if (CssBackgroundImageCSS2.checkMatchingIdent(identval)) {
+		    if (getImage() == null) {
+			setImage(new CssBackgroundImageCSS2(ac, expression));
+			find = true;
+		    } 
+		    break;
+		}
+		// check background-repeat ident
+		if (CssBackgroundRepeatCSS2.checkMatchingIdent(identval)) {
+		    if (getRepeat() == null) {
+			setRepeat(new CssBackgroundRepeatCSS2(ac, expression));
+			find = true;
+		    }
+		    break;
+		}
+		// check background-attachment ident
+		if (CssBackgroundAttachmentCSS2.checkMatchingIdent(identval)) {
+		    if (getAttachment() == null) {
+			setAttachment(new CssBackgroundAttachmentCSS2(ac, 
+								   expression));
+			find = true;
+		    }
+		    break;
+		}		
+		// check backgorund-position ident
+		if (CssBackgroundPositionCSS21.checkMatchingIdent(identval)) {
+		    if (background_position_expression == null) {
+			background_position_expression = new CssExpression();
+		    }
+		    background_position_expression.addValue(val);
+		    expression.next();
+		    find = true;
+		    break;
+		}
+
+		if (getColor2() == null) {
+		    try {
+			setColor(new CssBackgroundColorCSS21(ac, expression));
+			find = true;
+			break;
+		    } catch (InvalidParamException e) {
+			// nothing to do, image will test this value
+		    }
+		}	
+
+	    default:
+		if (check) {
+		    throw new InvalidParamException("unrecognize", ac);
+		}
+		find = false;
+	    }
+	    if(check && !find) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    if (op != SPACE) {
+		throw new InvalidParamException("operator",
+						Character.toString(op),
+						ac);
+	    }
+	}
+	if (background_position_expression != null) {
+	    setPosition(new CssBackgroundPositionCSS21(ac,
+					        background_position_expression, 
+						       check));
+	}
+    }
+
+    public CssBackgroundCSS21(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css21/CssBackgroundColorCSS21.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,71 @@
+// $Id: CssBackgroundColorCSS21.java,v 1.3 2009-02-11 22:43:15 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.properties.css21;
+
+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.CssIdent;
+import org.w3c.css.values.CssTypes;
+import org.w3c.css.values.CssValue;
+
+/**
+ * CssBackgroundColorCSS21<br />
+ * Created: Aug 31, 2005 2:04:23 PM<br />
+ */
+public class CssBackgroundColorCSS21 extends CssBackgroundColorCSS2 {
+
+    /**
+     * Create a new CssBackgroundColorCSS2
+     */
+    public CssBackgroundColorCSS21() {
+	super();
+    }
+
+    /**
+     * Create a new CssBackgroundColorCSS2
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBackgroundColorCSS21(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	switch (val.getType()) {
+	case CssTypes.CSS_COLOR:
+	    setColor(val);
+	    break;
+	case CssTypes.CSS_IDENT:
+	    if (transparent.equals(val)) {
+		setColor(transparent);
+		break;
+	    }  
+	    if (inherit.equals(val)) {
+		setColor(inherit);
+		break;
+	    } 
+	    setColor(new org.w3c.css.values.CssColorCSS21(ac,
+							  (String) val.get()));
+	    break;
+	default:
+	    throw new InvalidParamException("value", val.toString(),
+					    getPropertyName(), ac);
+	}
+	expression.next();
+    }
+
+    public CssBackgroundColorCSS21(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css21/CssBackgroundPositionCSS21.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,46 @@
+// $Id: CssBackgroundPositionCSS21.java,v 1.5 2009-02-06 15:17:48 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.properties.css21;
+
+import org.w3c.css.properties.css1.CssBackgroundPositionCSS2;
+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.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+/**
+ * CssBackgroundPositionCSS21<br />
+ * Created: Aug 31, 2005 5:45:30 PM<br />
+ */
+public class CssBackgroundPositionCSS21 extends CssBackgroundPositionCSS2 {
+
+    /**
+     * Create a new CssBackgroundPositionCSS2
+     */
+    public CssBackgroundPositionCSS21() {
+	super();
+    }
+
+    /**
+     * Creates a new CssBackgroundPositionCSS2
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBackgroundPositionCSS21(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	super(ac, expression, check);
+    }
+
+    public CssBackgroundPositionCSS21(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css21/CssBorderBottomCSS21.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,93 @@
+// $Id: CssBorderBottomCSS21.java,v 1.2 2005-09-14 15:14:58 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.properties.css21;
+
+import org.w3c.css.properties.css1.CssBorderBottomCSS2;
+import org.w3c.css.properties.css1.CssBorderBottomStyleCSS2;
+import org.w3c.css.properties.css1.CssBorderBottomWidthCSS2;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+/**
+ * CssBorderBottomCSS21<br />
+ * Created: Aug 31, 2005 2:07:13 PM<br />
+ */
+public class CssBorderBottomCSS21 extends CssBorderBottomCSS2 {
+
+    /**
+     * Create a new CssBorderBottomCSS21
+     */
+    public CssBorderBottomCSS21() {
+	super();
+    }
+
+    /**
+     * Create a new CssBorderBottomCSS21
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssBorderBottomCSS21(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = null;
+	char op = SPACE;
+	boolean find = true;
+
+	if(check && expression.getCount() > 3) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	boolean manyValues = (expression.getCount() > 1);
+
+	setByUser();
+
+	while (find) {
+	    find = false;
+	    val = expression.getValue();
+	    op = expression.getOperator();
+	    if (val == null)
+		break;
+
+	    // if there are many values, we can't have inherit as one of them
+	    if(manyValues && val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", null, null, ac);
+	    }
+
+	    if (op != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(op)).toString()),
+						ac);
+	    if (getWidth() == null) {
+		try {
+		    setWidth(new CssBorderBottomWidthCSS2(ac, expression));
+		    find = true;
+		} catch(InvalidParamException e){
+		    // nothing to do, style will test this value
+		}
+	    }
+	    if (!find && getStyle() == null) {
+		try {
+		    setStyle(new CssBorderBottomStyleCSS2(ac, expression));
+		    find = true;
+		} catch(InvalidParamException e){
+		    // nothing to do, color will test this value
+		}
+	    }
+	    if (!find && getColor() == null) {
+		// throws an exception if the value is not valid
+		setColor(new CssBorderBottomColorCSS21(ac, expression));
+		find = true;
+	    }
+	}
+    }
+
+    public CssBorderBottomCSS21(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression,false);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css21/CssBorderBottomColorCSS21.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,50 @@
+// $Id: CssBorderBottomColorCSS21.java,v 1.2 2005-09-14 15:14:58 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.properties.css21;
+
+import org.w3c.css.properties.css1.CssBorderBottomColorCSS2;
+import org.w3c.css.properties.css1.CssBorderFaceColorCSS2;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+/**
+ * CssBorderBottomColorCSS21<br />
+ * Created: Aug 31, 2005 2:10:07 PM<br />
+ */
+public class CssBorderBottomColorCSS21 extends CssBorderBottomColorCSS2 {
+
+    /**
+     * Create a new CssBorderBottomColorCSS21 with an another CssBorderFaceColorCSS2
+     *
+     * @param another An another face.
+     */
+    public CssBorderBottomColorCSS21(CssBorderFaceColorCSS2 another) {
+	super(another);
+    }
+
+    /**
+     * Create a new CssBorderBottomColor
+     *
+     * @param expression The expression for this property.
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderBottomColorCSS21(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	setFace(new CssBorderFaceColorCSS21(ac, expression));
+    }
+
+    public CssBorderBottomColorCSS21(ApplContext ac, CssExpression expression)
+    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css21/CssBorderCSS21.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,99 @@
+// $Id: CssBorderCSS21.java,v 1.3 2008-03-25 18:43:30 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.properties.css21;
+
+import org.w3c.css.properties.css1.CssBorderBottomStyleCSS2;
+import org.w3c.css.properties.css1.CssBorderBottomWidthCSS2;
+import org.w3c.css.properties.css1.CssBorderCSS2;
+import org.w3c.css.properties.css1.CssBorderFaceStyleCSS2;
+import org.w3c.css.properties.css1.CssBorderFaceWidthCSS2;
+import org.w3c.css.properties.css1.CssBorderLeftStyleCSS2;
+import org.w3c.css.properties.css1.CssBorderLeftWidthCSS2;
+import org.w3c.css.properties.css1.CssBorderRightStyleCSS2;
+import org.w3c.css.properties.css1.CssBorderRightWidthCSS2;
+import org.w3c.css.properties.css1.CssBorderTopColorCSS2;
+import org.w3c.css.properties.css1.CssBorderTopStyleCSS2;
+import org.w3c.css.properties.css1.CssBorderTopWidthCSS2;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+/**
+ * CssBorderCSS21<br />
+ * Created: Aug 31, 2005 2:07:02 PM<br />
+ */
+public class CssBorderCSS21 extends CssBorderCSS2 {
+
+    /**
+     * Create a new CssBorderFaceCSS2
+     */
+    public CssBorderCSS21() {
+	super();
+    }
+
+    /**
+     * Create a new CssBorderFaceCSS2
+     *
+     * @param value The value for this property
+     * @exception InvalidParamException The value is incorrect
+     */
+    public CssBorderCSS21(ApplContext ac, CssExpression value,
+	    boolean check) throws InvalidParamException {
+
+	if(check && value.getCount() > 3) {
+	     throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = value.getValue();
+
+	setByUser();
+
+	setTop(new CssBorderTopCSS21(ac, value));
+
+	if (val == value.getValue()) {
+	    throw new InvalidParamException("value",
+					    value.getValue(),
+					    getPropertyName(), ac);
+	}
+	setRight(new CssBorderRightCSS21());
+	setBottom(new CssBorderBottomCSS21());
+	setLeft(new CssBorderLeftCSS21());
+
+	CssBorderTopCSS21 top = (CssBorderTopCSS21) getTop();
+	CssBorderRightCSS21 right = (CssBorderRightCSS21) getRight();
+	CssBorderLeftCSS21 left = (CssBorderLeftCSS21) getLeft();
+	CssBorderBottomCSS21 bottom = (CssBorderBottomCSS21) getBottom();
+	
+	CssBorderTopWidthCSS2 w = top.getWidth2();
+	CssBorderTopStyleCSS2 s = top.getStyle2();
+	CssBorderTopColorCSS2 c = top.getColor2();
+
+	if(w != null) {
+	    CssBorderFaceWidthCSS2 bfw = (CssBorderFaceWidthCSS2) w.get();
+	    right.setWidth(new CssBorderRightWidthCSS2(bfw));
+	    left.setWidth(new CssBorderLeftWidthCSS2(bfw));
+	    bottom.setWidth(new CssBorderBottomWidthCSS2(bfw));
+	}
+	if(s != null) {
+	    CssBorderFaceStyleCSS2 bfs = (CssBorderFaceStyleCSS2) s.get();
+	    right.setStyle(new CssBorderRightStyleCSS2(bfs));
+	    left.setStyle(new CssBorderLeftStyleCSS2(bfs));
+	    bottom.setStyle(new CssBorderBottomStyleCSS2(bfs));
+	}
+	if(c != null) {
+	    CssBorderFaceColorCSS21 bfc = (CssBorderFaceColorCSS21) c.get();
+	    right.setColor(new CssBorderRightColorCSS21(bfc));
+	    left.setColor(new CssBorderLeftColorCSS21(bfc));
+	    bottom.setColor(new CssBorderBottomColorCSS21(bfc));
+	}
+    }
+
+    public CssBorderCSS21(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css21/CssBorderColorCSS21.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,136 @@
+// $Id: CssBorderColorCSS21.java,v 1.2 2005-09-14 15:14:58 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.properties.css21;
+
+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;
+
+/**
+ * CssBorderColorCSS21<br />
+ * Created: Aug 31, 2005 2:09:05 PM<br />
+ */
+public class CssBorderColorCSS21 extends CssBorderColorCSS2 {
+
+    /**
+     * Create a new CssBorderColorCSS2 with all four sides
+     */
+    public CssBorderColorCSS21(CssBorderTopColorCSS2 top,
+			  CssBorderBottomColorCSS2 bottom,
+			  CssBorderRightColorCSS2 right,
+			  CssBorderLeftColorCSS2 left) {
+	super(top, bottom, right, left);
+    }
+
+    /**
+     * Create a new CssBorderColorCSS21
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderColorCSS21(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+
+	switch (expression.getCount()) {
+	case 1:
+	    setTop(new CssBorderTopColorCSS21(ac, expression));
+//	    setBottom(new CssBorderBottomColorCSS21(
+//		    	(CssBorderFaceColorCSS21) getTop().get()));
+//	    setRight(new CssBorderRightColorCSS21(
+//		    (CssBorderFaceColorCSS21) getTop().get()));
+//	    setLeft(new CssBorderLeftColorCSS21(
+//		    (CssBorderFaceColorCSS21) getTop().get()));
+	    break;
+	case 2:
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(expression.getOperator())).toString()),
+			ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    setTop(new CssBorderTopColorCSS21(ac, expression));
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    setRight(new CssBorderRightColorCSS21(ac, expression));
+//	    setBottom(new CssBorderBottomColorCSS21(
+//		    (CssBorderFaceColorCSS21) getTop().get()));
+//	    setLeft(new CssBorderLeftColorCSS21(
+//		    (CssBorderFaceColorCSS21) getRight().get()));
+	    break;
+	case 3:
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(expression.getOperator())).toString()),
+			ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    setTop(new CssBorderTopColorCSS21(ac, expression));
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(expression.getOperator())).toString()), ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    setRight(new CssBorderRightColorCSS21(ac, expression));
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    setBottom(new CssBorderBottomColorCSS21(ac, expression));
+//	    setLeft(new CssBorderLeftColorCSS21(
+//		    (CssBorderFaceColorCSS21) getRight().get()));
+	    break;
+	case 4:
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(expression.getOperator())).toString()),
+			ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    setTop(new CssBorderTopColorCSS21(ac, expression));
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(expression.getOperator())).toString()),
+			ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    setRight(new CssBorderRightColorCSS21(ac, expression));
+	    if (expression.getOperator() != SPACE)
+		throw new InvalidParamException("operator",
+			((new Character(expression.getOperator())).toString()),
+			ac);
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    setBottom(new CssBorderBottomColorCSS21(ac, expression));
+	    if(expression.getValue().equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    setLeft(new CssBorderLeftColorCSS21(ac, expression));
+	    break;
+	default:
+	    if(check) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	}
+    }
+
+    public CssBorderColorCSS21(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css21/CssBorderFaceColorCSS21.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,80 @@
+// $Id: CssBorderFaceColorCSS21.java,v 1.2 2005-09-14 15:14:58 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.properties.css21;
+
+import org.w3c.css.properties.css1.CssBorderFaceColorCSS2;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ * CssBorderFaceColorCSS21<br />
+ * Created: Aug 31, 2005 3:29:22 PM<br />
+ */
+public class CssBorderFaceColorCSS21 extends CssBorderFaceColorCSS2 {
+
+    /**
+     * Create a new CssBorderFaceColor
+     */
+    public CssBorderFaceColorCSS21() {
+	super();
+    }
+
+    /**
+     * Create a new CssBorderFaceColor with a color property.
+     *
+     * @param color A color property
+     */
+    public CssBorderFaceColorCSS21(org.w3c.css.properties.css1.CssColorCSS2 color) {
+	super(color);
+    }
+
+    /**
+     * Create a new CssBorderFaceColor with an another CssBorderFaceColor
+     *
+     * @param another An another face.
+     */
+    public CssBorderFaceColorCSS21(CssBorderFaceColorCSS2 another) {
+	super(another);
+    }
+
+    /**
+     * Create a new CssBorderFaceColor with an expression
+     *
+     * @param expression The expression for this property.
+     * @exception InvalidParamException color is not a color
+     */
+    public CssBorderFaceColorCSS21(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	if (val instanceof org.w3c.css.values.CssColor) {
+	    setFace(val);
+	} else if (val.equals(CssProperty.inherit)) {
+	    setFace(CssProperty.inherit);
+	} else if(val.equals(CssProperty.transparent)) {
+	    setFace(CssProperty.transparent);
+	} else if (val instanceof CssIdent) {
+	    setFace(new org.w3c.css.values.CssColorCSS21(ac, (String) val.get()));
+	} else {
+	    throw new InvalidParamException("value", val.toString(),
+					    "border-color", ac);
+	}
+	expression.next();
+    }
+
+    public CssBorderFaceColorCSS21(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css21/CssBorderLeftCSS21.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,93 @@
+// $Id: CssBorderLeftCSS21.java,v 1.2 2005-09-14 15:14:58 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.properties.css21;
+
+import org.w3c.css.properties.css1.CssBorderLeftCSS2;
+import org.w3c.css.properties.css1.CssBorderLeftStyleCSS2;
+import org.w3c.css.properties.css1.CssBorderLeftWidthCSS2;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+/**
+ * CssBorderLeftCSS21<br />
+ * Created: Aug 31, 2005 2:08:48 PM<br />
+ */
+public class CssBorderLeftCSS21 extends CssBorderLeftCSS2 {
+
+    /**
+     * Create a new CssBorderLeftCSS21
+     */
+    public CssBorderLeftCSS21() {
+	super();
+    }
+
+    /**
+     * Create a new CssBorderLeftCSS21
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssBorderLeftCSS21(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = null;
+	char op = SPACE;
+	boolean find = true;
+
+	if(check && expression.getCount() > 3) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	boolean manyValues = (expression.getCount() > 1);
+
+	setByUser();
+
+	while (find) {
+	    find = false;
+	    val = expression.getValue();
+	    op = expression.getOperator();
+	    if (val == null)
+		break;
+
+	    // if there are many values, we can't have inherit as one of them
+	    if(manyValues && val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", null, null, ac);
+	    }
+
+	    if (op != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(op)).toString()),
+						ac);
+	    if (getWidth() == null) {
+		try {
+		    setWidth(new CssBorderLeftWidthCSS2(ac, expression));
+		    find = true;
+		} catch(InvalidParamException e){
+		    // nothing to do, style will test this value
+		}
+	    }
+	    if (!find && getStyle() == null) {
+		try {
+		    setStyle(new CssBorderLeftStyleCSS2(ac, expression));
+		    find = true;
+		} catch(InvalidParamException e){
+		    // nothing to do, color will test this value
+		}
+	    }
+	    if (!find && getColor() == null) {
+		// throws an exception if the value is not valid
+		setColor(new CssBorderLeftColorCSS21(ac, expression));
+		find = true;
+	    }
+	}
+    }
+
+    public CssBorderLeftCSS21(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression,false);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css21/CssBorderLeftColorCSS21.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,49 @@
+// $Id: CssBorderLeftColorCSS21.java,v 1.2 2005-09-14 15:14:58 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.properties.css21;
+
+import org.w3c.css.properties.css1.CssBorderFaceColorCSS2;
+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;
+
+/**
+ * CssBorderLeftColorCSS21<br />
+ * Created: Aug 31, 2005 2:10:19 PM<br />
+ */
+public class CssBorderLeftColorCSS21 extends CssBorderLeftColorCSS2 {
+
+    /**
+     * Create a new CssBorderLeftColorCSS21 with an another CssBorderFaceColorCSS2
+     *
+     * @param another An another face.
+     */
+    public CssBorderLeftColorCSS21(CssBorderFaceColorCSS2 another) {
+	super(another);
+    }
+
+    /**
+     * Create a new CssBorderLeftColor
+     *
+     * @param expression The expression for this property.
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderLeftColorCSS21(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	setFace(new CssBorderFaceColorCSS21(ac, expression));
+    }
+
+    public CssBorderLeftColorCSS21(ApplContext ac, CssExpression expression)
+    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css21/CssBorderRightCSS21.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,93 @@
+// $Id: CssBorderRightCSS21.java,v 1.2 2005-09-14 15:14:58 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.properties.css21;
+
+import org.w3c.css.properties.css1.CssBorderRightCSS2;
+import org.w3c.css.properties.css1.CssBorderRightStyleCSS2;
+import org.w3c.css.properties.css1.CssBorderRightWidthCSS2;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+/**
+ * CssBorderRightCSS21<br />
+ * Created: Aug 31, 2005 2:08:24 PM<br />
+ */
+public class CssBorderRightCSS21 extends CssBorderRightCSS2 {
+
+    /**
+     * Create a new CssBorderRightCSS21
+     */
+    public CssBorderRightCSS21() {
+	super();
+    }
+
+    /**
+     * Create a new CssBorderRightCSS21
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssBorderRightCSS21(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = null;
+	char op = SPACE;
+	boolean find = true;
+
+	if(check && expression.getCount() > 3) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	boolean manyValues = (expression.getCount() > 1);
+
+	setByUser();
+
+	while (find) {
+	    find = false;
+	    val = expression.getValue();
+	    op = expression.getOperator();
+	    if (val == null)
+		break;
+
+	    // if there are many values, we can't have inherit as one of them
+	    if(manyValues && val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", null, null, ac);
+	    }
+
+	    if (op != SPACE)
+		throw new InvalidParamException("operator",
+						((new Character(op)).toString()),
+						ac);
+	    if (getWidth() == null) {
+		try {
+		    setWidth(new CssBorderRightWidthCSS2(ac, expression));
+		    find = true;
+		} catch(InvalidParamException e){
+		    // nothing to do, style will test this value
+		}
+	    }
+	    if (!find && getStyle() == null) {
+		try {
+		    setStyle(new CssBorderRightStyleCSS2(ac, expression));
+		    find = true;
+		} catch(InvalidParamException e){
+		    // nothing to do, color will test this value
+		}
+	    }
+	    if (!find && getColor() == null) {
+		// throws an exception if the value is not valid
+		setColor(new CssBorderRightColorCSS21(ac, expression));
+		find = true;
+	    }
+	}
+    }
+
+    public CssBorderRightCSS21(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression,false);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css21/CssBorderRightColorCSS21.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,49 @@
+// $Id: CssBorderRightColorCSS21.java,v 1.2 2005-09-14 15:14:58 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.properties.css21;
+
+import org.w3c.css.properties.css1.CssBorderFaceColorCSS2;
+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;
+
+/**
+ * CssBorderRightColorCSS21<br />
+ * Created: Aug 31, 2005 2:09:31 PM<br />
+ */
+public class CssBorderRightColorCSS21 extends CssBorderRightColorCSS2 {
+
+    /**
+     * Create a new CssBorderRightColorCSS21 with an another CssBorderFaceColorCSS2
+     *
+     * @param another An another face.
+     */
+    public CssBorderRightColorCSS21(CssBorderFaceColorCSS2 another) {
+	super(another);
+    }
+
+    /**
+     * Create a new CssBorderRightColor
+     *
+     * @param expression The expression for this property.
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderRightColorCSS21(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	setFace(new CssBorderFaceColorCSS21(ac, expression));
+    }
+
+    public CssBorderRightColorCSS21(ApplContext ac, CssExpression expression)
+    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css21/CssBorderTopCSS21.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,112 @@
+// $Id: CssBorderTopCSS21.java,v 1.3 2008-03-25 18:43:30 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.properties.css21;
+
+import org.w3c.css.properties.css1.CssBorderTopStyleCSS2;
+import org.w3c.css.properties.css1.CssBorderTopWidthCSS2;
+import org.w3c.css.properties.css1.CssBorderTopCSS2;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssTypes;
+import org.w3c.css.values.CssValue;
+
+/**
+ * CssBorderTopCSS21<br />
+ * Created: Aug 31, 2005 2:08:11 PM<br />
+ */
+public class CssBorderTopCSS21 extends CssBorderTopCSS2 {
+
+    /**
+     * Create a new CssBorderTopCSS21
+     */
+    public CssBorderTopCSS21() {
+	super();
+    }
+
+    /**
+     * Create a new CssBorderTopCSS21
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssBorderTopCSS21(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = null;
+	char op;
+	boolean find = true;
+
+	if(check && expression.getCount() > 3) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	boolean manyValues = (expression.getCount() > 1);
+
+	setByUser();
+
+	while (find) {
+	    val = expression.getValue();
+	    if (val == null)
+		break;
+	    op = expression.getOperator();
+	    if (op != SPACE)
+		throw new InvalidParamException("operator",
+						Character.toString(op),
+						ac);	 
+	    switch (val.getType()) {
+	    case CssTypes.CSS_COLOR:
+		if (getColor() == null) {
+		    // throws an exception if the value is not valid
+		    setColor(new CssBorderTopColorCSS21(ac, expression));
+		    continue;
+		}
+		break;
+	    case CssTypes.CSS_NUMBER:
+	    case CssTypes.CSS_LENGTH:
+		if (getWidth() == null) {
+		    setWidth(new CssBorderTopWidthCSS2(ac, expression));
+		    continue;
+		}
+		break;
+	    case CssTypes.CSS_IDENT:
+		if(manyValues && inherit.equals(val)) {
+		    throw new InvalidParamException("unrecognize", null, 
+						    null, ac);
+		}
+		if (getWidth() == null) {
+		    try {
+			setWidth(new CssBorderTopWidthCSS2(ac, expression));
+			continue;
+		    } catch(InvalidParamException e){
+			// nothing to do, color will test this value
+		    }
+		}
+		if (getStyle() == null) {
+		    try {
+			setStyle(new CssBorderTopStyleCSS2(ac, expression));
+			continue;
+		    } catch(InvalidParamException e){
+			// nothing to do, color will test this value
+		    }
+		}
+		if (getColor() == null) {
+		    // throws an exception if the value is not valid
+		    setColor(new CssBorderTopColorCSS21(ac, expression));
+		    continue;
+		}
+	    default:
+		find = false;
+	    }
+	    throw new InvalidParamException("unrecognize", null, 
+					    null, ac);
+	}
+    }
+
+    public CssBorderTopCSS21(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression,false);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css21/CssBorderTopColorCSS21.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,50 @@
+// $Id: CssBorderTopColorCSS21.java,v 1.2 2005-09-14 15:14:58 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.properties.css21;
+
+import org.w3c.css.properties.css1.CssBorderFaceColorCSS2;
+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;
+
+/**
+ * CssBorderTopColorCSS21<br />
+ * Created: Aug 31, 2005 2:09:16 PM<br />
+ */
+public class CssBorderTopColorCSS21 extends CssBorderTopColorCSS2 {
+
+    /**
+     * Create a new CssBorderTopColorCSS21 with an another CssBorderFaceColorCSS2
+     *
+     * @param another An another face.
+     */
+    public CssBorderTopColorCSS21(CssBorderFaceColorCSS2 another) {
+	super(another);
+    }
+
+    /**
+     * Create a new CssBorderTopColor
+     *
+     * @param expression The expression for this property.
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderTopColorCSS21(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	setFace(new CssBorderFaceColorCSS21(ac, expression));
+    }
+
+    public CssBorderTopColorCSS21(ApplContext ac, CssExpression expression)
+    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css21/CssColorCSS21.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,60 @@
+// $Id: CssColorCSS21.java,v 1.4 2009-03-05 23:15:05 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.properties.css21;
+
+import org.w3c.css.properties.css1.CssColorCSS2;
+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;
+import org.w3c.css.values.CssTypes;
+
+/**
+ * CssColorCSS21<br />
+ * Created: Aug 30, 2005 2:33:04 PM<br />
+ */
+public class CssColorCSS21 extends CssColorCSS2 {
+
+    /**
+     * Set the value of the property
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssColorCSS21(ApplContext ac, CssExpression expression, 
+			 boolean check)
+	throws InvalidParamException 
+    {
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	setByUser();
+
+	switch (val.getType()) {
+	case CssTypes.CSS_COLOR:
+	    setColor(val);
+	    break;
+	case CssTypes.CSS_IDENT:
+	    if (inherit.equals(val)) {
+		setColor(inherit);
+		break;
+	    }
+	    setColor(new org.w3c.css.values.CssColorCSS21(ac,
+							  (String) val.get()));
+	    break;
+	default:
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+	expression.next();
+    }
+
+    public CssColorCSS21(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css21/CssContentCSS21.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,75 @@
+// $Id: CssContentCSS21.java,v 1.2 2005-09-14 15:14:58 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.properties.css21;
+
+import org.w3c.css.properties.css1.CssContentCSS2;
+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;
+
+/**
+ * CssContentCSS21<br />
+ * Created: Aug 30, 2005 4:18:11 PM<br />
+ */
+public class CssContentCSS21 extends CssContentCSS2{
+
+    static final CssIdent normal = new CssIdent("normal");
+    static final CssIdent none = new CssIdent("none");
+
+    /**
+     * Create a new CssContent
+     */
+    public CssContentCSS21() {
+    }
+
+    /**
+     * Create a new CssContent
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssContentCSS21(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    if(expression.getCount() > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    getValues().addElement(inherit);
+	    expression.next();
+	    return;
+	}
+	if (val.equals(normal)) {
+	    if(expression.getCount() > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    getValues().addElement(normal);
+	    expression.next();
+	    return;
+	}
+	if (val.equals(none)) {
+	    if(expression.getCount() > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    getValues().addElement(none);
+	    expression.next();
+	    return;
+	}
+
+	addContent(ac, expression);
+
+    }
+
+    public CssContentCSS21(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css21/CssCursorCSS21.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,120 @@
+// $Id: CssCursorCSS21.java,v 1.2 2005-09-14 15:14:58 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.properties.css21;
+
+import org.w3c.css.properties.css2.user.CursorCSS2;
+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.CssURL;
+import org.w3c.css.values.CssValue;
+
+/**
+ * CssCursorCSS21<br />
+ * Created: Aug 30, 2005 4:47:16 PM<br />
+ */
+public class CssCursorCSS21 extends CursorCSS2 {
+
+    private static String CURSOR[] = {
+	"auto", "crosshair", "default", "pointer", "move", "e-resize",
+	"ne-resize", "nw-resize", "n-resize", "se-resize", "sw-resize",
+	"s-resize", "w-resize", "text", "wait", "help", "progress" };
+
+    private static int[] hash_values;
+
+    /**
+     * Create a new Cursor
+     */
+    public CssCursorCSS21() {
+	super();
+    }
+
+    /**
+     * Create a new Cursor
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssCursorCSS21(ApplContext ac, CssExpression expression, boolean check)
+	throws InvalidParamException {
+	CssValue val = expression.getValue();
+	char op = expression.getOperator();
+
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    if(expression.getCount() > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    setInheritedValue(true);
+	    expression.next();
+	    return;
+	}
+
+	while ((op == COMMA) && (val instanceof CssURL)) {
+	    if(val != null && val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    getUris().addElement(val);
+	    expression.next();
+	    val = expression.getValue();
+	    op = expression.getOperator();
+	}
+	if (val instanceof CssURL) {
+	    throw new InvalidParamException("comma",
+					    val.toString(),
+					    getPropertyName(), ac);
+	}
+
+	if (val instanceof CssIdent) {
+	    int hash = val.hashCode();
+
+	    for (int i = 0; i < CURSOR.length; i++) {
+		if (hash_values[i] == hash) {
+		    setValue(i);
+		    expression.next();
+		    if(check && !expression.end()) {
+			throw new InvalidParamException("unrecognize", ac);
+		    }
+		    return;
+		}
+	    }
+	}
+
+	throw new InvalidParamException("value",
+					val.toString(), getPropertyName(), ac);
+    }
+
+    public CssCursorCSS21(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (isInheritedValue()) {
+	    return inherit.toString();
+	} else {
+	    int i = 0;
+	    int l = getUris().size();
+	    String ret = "";
+	    while (i != l) {
+		ret += getUris().elementAt(i++) +
+		    (new Character(COMMA)).toString() + " ";
+	    }
+	    ret += " " + CURSOR[getValue()];
+	    return ret;
+	}
+    }
+
+    static {
+	hash_values = new int[CURSOR.length];
+	for (int i=0; i<CURSOR.length; i++)
+	    hash_values[i] = CURSOR[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css21/CssDisplayCSS21.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,99 @@
+// $Id: CssDisplayCSS21.java,v 1.2 2005-09-14 15:14:58 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.properties.css21;
+
+import org.w3c.css.properties.css1.CssDisplayCSS2;
+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;
+
+/**
+ * CssDisplayCSS21<br />
+ * Created: Aug 30, 2005 3:54:43 PM<br />
+ */
+public class CssDisplayCSS21 extends CssDisplayCSS2 {
+
+    private static String[] DISPLAY = {
+	"inline", "block", "inline-block", "list-item", "run-in", "table",
+	"inline-table", "table-row-group", "table-column-group",
+	"table-header-group", "table-footer-group", "table-row", "table-column",
+	"table-cell", "table-caption", "none", "inherit" };
+
+    private static int[] hash_values;
+
+    static {
+	hash_values = new int[DISPLAY.length];
+	for (int i = 0; i < DISPLAY.length; i++)
+	    hash_values[i] = DISPLAY[i].hashCode();
+    }
+
+    /**
+     * Create a new CssDisplay
+     */
+    public CssDisplayCSS21() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new CssDisplay
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorect
+     */
+    public CssDisplayCSS21(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	if ( val instanceof CssIdent) {
+	    int hash = val.hashCode();
+	    for (int i = 0; i < DISPLAY.length; i++) {
+		if (hash_values[i] == hash) {
+		    setValue(i);
+		    expression.next();
+		    return;
+		}
+	    }
+	}
+
+	throw new InvalidParamException("value", expression.getValue(),
+					getPropertyName(), ac);
+    }
+
+    public CssDisplayCSS21(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return DISPLAY[getValue()];
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return getValue() == DISPLAY.length - 1;
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return DISPLAY[getValue()];
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css21/CssListStyleCSS21.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,100 @@
+// $Id: CssListStyleCSS21.java,v 1.2 2005-09-14 15:14:58 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.properties.css21;
+
+import org.w3c.css.properties.css1.CssListStyleCSS2;
+import org.w3c.css.properties.css1.CssListStyleImageCSS2;
+import org.w3c.css.properties.css1.CssListStylePositionCSS2;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+/**
+ * CssListStyleCSS21<br />
+ * Created: Aug 31, 2005 12:09:48 PM<br />
+ */
+public class CssListStyleCSS21 extends CssListStyleCSS2 {
+    /**
+     * Create a new CssListStyleCSS2
+     */
+    public CssListStyleCSS21() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new CssListStyleCSS2
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssListStyleCSS21(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	int exprLength = expression.getCount();
+
+	if(check && exprLength > 3) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	char op = SPACE;
+	boolean find = true;
+
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    if(exprLength > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    setInheritedValue(true);
+	    expression.next();
+	    return;
+	}
+
+	while (find) {
+	    find = false;
+	    val = expression.getValue();
+	    op = expression.getOperator();
+
+	    if(val != null && val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+
+	    if ((getListStyleType() == null)	&& (val != null)) {
+		try {
+		    setListStyleType(new CssListStyleTypeCSS21(ac, expression));
+		    find = true;
+		} catch (InvalidParamException e) {
+		}
+	    }
+	    if (!find && (getListStyleImage() == null) && (val != null)) {
+		try {
+		    setListStyleImage(new CssListStyleImageCSS2(ac, expression));
+		    find = true;
+		} catch (InvalidParamException e) {
+		}
+	    }
+	    if (!find && (val != null) && (getListStylePosition() == null)) {
+		setListStylePosition(new CssListStylePositionCSS2(ac, expression));
+		find = true;
+	    }
+	    if(val != null && !find) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    if (op != SPACE) {
+		throw new InvalidParamException("operator",
+						((new Character(op)).toString()),
+						ac);
+	    }
+	}
+
+    }
+
+    public CssListStyleCSS21(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css21/CssListStyleTypeCSS21.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,50 @@
+// $Id: CssListStyleTypeCSS21.java,v 1.2 2005-09-14 15:14:58 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.properties.css21;
+
+import org.w3c.css.properties.css1.CssListStyleTypeCSS2;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+/**
+ * CssListStyleTypeCSS21<br />
+ * Created: Aug 31, 2005 10:54:09 AM<br />
+ */
+public class CssListStyleTypeCSS21 extends CssListStyleTypeCSS2 {
+
+
+
+    /**
+     * Create a new CssListStyleTypeCSS21
+     */
+    public CssListStyleTypeCSS21() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new CssListStyleTypeCSS21
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssListStyleTypeCSS21(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	super(ac, expression, check);
+
+	// fast but ugly
+	if(getValue() == 12 || getValue() == 15 || getValue() == 16 ||
+		getValue() == 17 || getValue() == 18 || getValue() == 19) {
+	    throw new InvalidParamException("value", get().toString(),
+		    getPropertyName(), ac);
+	}
+    }
+
+    public CssListStyleTypeCSS21(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css21/CssTextAlignCSS21.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,47 @@
+// $Id: CssTextAlignCSS21.java,v 1.2 2005-09-14 15:14:58 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.properties.css21;
+
+import org.w3c.css.properties.css1.CssTextAlign;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssString;
+
+/**
+ * CssTextAlignCSS21<br />
+ * Created: Aug 31, 2005 11:39:33 AM<br />
+ */
+public class CssTextAlignCSS21 extends CssTextAlign {
+    /**
+     * Create a new CssTextAlignCSS21
+     */
+    public CssTextAlignCSS21() {
+	// depends on user agent and writing direction
+    }
+
+    /**
+     * Create a new CssTextAlign
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssTextAlignCSS21(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+
+	super(ac, expression, check);
+
+	Object val = get();
+
+	if(val instanceof CssString) {
+	    throw new InvalidParamException("value", val.toString(),
+		    getPropertyName(), ac);
+	}
+    }
+
+    public CssTextAlignCSS21(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css21/CssWhiteSpaceCSS21.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,93 @@
+// $Id: CssWhiteSpaceCSS21.java,v 1.2 2005-09-14 15:14:58 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.properties.css21;
+
+import org.w3c.css.properties.css1.CssWhiteSpace;
+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;
+
+/**
+ * CssWhiteSpaceCSS21<br />
+ * Created: Aug 30, 2005 5:02:07 PM<br />
+ */
+public class CssWhiteSpaceCSS21 extends CssWhiteSpace {
+    private static String[] WHITESPACE = {
+	"normal", "pre", "nowrap", "pre-wrap", "pre-line", "inherit" };
+    private static int[] hash_values;
+
+    /**
+     * Create a new CssWhiteSpace
+     */
+    public CssWhiteSpaceCSS21() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new CssWhiteSpace
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException values are incorrect
+     */
+    public CssWhiteSpaceCSS21(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	if ( val instanceof CssIdent) {
+	    int hash = val.hashCode();
+	    for (int i = 0; i < WHITESPACE.length; i++)
+		if (hash_values[i] == hash) {
+		    setValue(i);
+		    expression.next();
+		    return;
+		}
+	}
+
+	throw new InvalidParamException("value", expression.getValue(),
+					getPropertyName(), ac);
+    }
+
+    public CssWhiteSpaceCSS21(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return WHITESPACE[getValue()];
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return getValue() == (WHITESPACE.length - 1);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return WHITESPACE[getValue()];
+    }
+
+    static {
+	hash_values = new int[WHITESPACE.length];
+	for (int i = 0; i < WHITESPACE.length; i++)
+	    hash_values[i] = WHITESPACE[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css21/table/CssCaptionSideCSS21.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,48 @@
+// $Id: CssCaptionSideCSS21.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.properties.css21.table;
+
+import org.w3c.css.properties.css2.table.CaptionSide;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+/**
+ * CssCaptionSide21<br />
+ * Created: Aug 30, 2005 5:49:51 PM<br />
+ */
+public class CssCaptionSideCSS21 extends CaptionSide {
+
+    /**
+     * Create a new CaptionSide
+     */
+    public CssCaptionSideCSS21() {
+	super();
+    }
+
+    /**
+     * Creates a new CssCaptionSide
+     *
+     * @param expression the expression of the size
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssCaptionSideCSS21(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+
+	super(ac, expression, check);
+
+	// 'left' and 'right' are forbidden in CSS 2.1
+	if(getValue() == left || getValue() == right) {
+	    throw new InvalidParamException("value",
+		    getValue().toString(),
+		    getPropertyName(), ac);
+	}
+    }
+
+    public CssCaptionSideCSS21(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css21/user/CssCursorCSS21.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,120 @@
+// $Id: CssCursorCSS21.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.properties.css21.user;
+
+import org.w3c.css.properties.css2.user.CursorCSS2;
+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.CssURL;
+import org.w3c.css.values.CssValue;
+
+/**
+ * CssCursorCSS21<br />
+ * Created: Aug 30, 2005 4:47:16 PM<br />
+ */
+public class CssCursorCSS21 extends CursorCSS2 {
+
+    private static String CURSOR[] = {
+	"auto", "crosshair", "default", "pointer", "move", "e-resize",
+	"ne-resize", "nw-resize", "n-resize", "se-resize", "sw-resize",
+	"s-resize", "w-resize", "text", "wait", "help", "progress" };
+
+    private static int[] hash_values;
+
+    /**
+     * Create a new Cursor
+     */
+    public CssCursorCSS21() {
+	super();
+    }
+
+    /**
+     * Create a new Cursor
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssCursorCSS21(ApplContext ac, CssExpression expression, boolean check)
+	throws InvalidParamException {
+	CssValue val = expression.getValue();
+	char op = expression.getOperator();
+
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    if(expression.getCount() > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    setInheritedValue(true);
+	    expression.next();
+	    return;
+	}
+
+	while ((op == COMMA) && (val instanceof CssURL)) {
+	    if(val != null && val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    getUris().addElement(val);
+	    expression.next();
+	    val = expression.getValue();
+	    op = expression.getOperator();
+	}
+	if (val instanceof CssURL) {
+	    throw new InvalidParamException("comma",
+					    val.toString(),
+					    getPropertyName(), ac);
+	}
+
+	if (val instanceof CssIdent) {
+	    int hash = val.hashCode();
+
+	    for (int i = 0; i < CURSOR.length; i++) {
+		if (hash_values[i] == hash) {
+		    setValue(i);
+		    expression.next();
+		    if(check && !expression.end()) {
+			throw new InvalidParamException("unrecognize", ac);
+		    }
+		    return;
+		}
+	    }
+	}
+
+	throw new InvalidParamException("value",
+					val.toString(), getPropertyName(), ac);
+    }
+
+    public CssCursorCSS21(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (isInheritedValue()) {
+	    return inherit.toString();
+	} else {
+	    int i = 0;
+	    int l = getUris().size();
+	    String ret = "";
+	    while (i != l) {
+		ret += getUris().elementAt(i++) +
+		    (new Character(COMMA)).toString() + " ";
+	    }
+	    ret += " " + CURSOR[getValue()];
+	    return ret;
+	}
+    }
+
+    static {
+	hash_values = new int[CURSOR.length];
+	for (int i=0; i<CURSOR.length; i++)
+	    hash_values[i] = CURSOR[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CSS3Default.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,73 @@
+# inherited : true if this property is inherited ...
+
+opacity.inherited:			false
+color-profile.inherited:		true
+rendering-intent.inherited:		true
+font-effect.inherited:			true
+font-smooth.inherited:			true
+font-emphasize-style.inherited:		true
+font-emphasize-position.inherited:	true
+font-emphasize.inherited:		true
+ruby-position.inherited:		true	
+ruby-align.inherited:			true
+ruby-overhang.inherited:		true
+box-sizing.inherited:			false
+resizer.inherited:			false
+key-equivalent.inherited:		false
+tab-index.inherited:			false
+user-input.inherited:			false
+user-modify.inherited:			true
+user-select.inherited:			false
+user-focus.inherited:			true
+user-focus-key.inherited:		true
+user-focus-pointer.inherited:		true
+toggle-group.inherited:			false
+group-reset.inherited:			false
+writing-mode.inherited:			true
+glyph-orientation-vertical.inherited:	true
+glyph-orientation-horizontal.inherited:	true
+text-justify.inherited:			true
+text-align-last.inherited:		true
+min-font-size.inherited:		true
+max-font-size.inherited:		true
+text-justify-trim.inherited:		true
+text-kashida-space.inherited:		true
+dominant-baseline.inherited:		false
+alignment-baseline.inherited:		false
+alignment-adjust.inherited:		false
+baseline-shift.inherited:		false
+line-break.inherited:			true
+word-break-cjk.inherited:		true
+word-break-wrap.inherited:		true
+word-break-inside.inherited:		true
+word-break.inherited:			true
+text-space.inherited:			true
+text-wrap.inherited:			true
+text-end-overflow.inherited:		false
+text-after-overflow.inherited:		false
+punctuation-trim.inherited:		true
+text-autospace.inherited:		true
+kerning-mode.inherited:			true
+kerning-pair-treshold.inherited:	true
+text-underline-style.inherited:		false
+text-underline-color.inherited:		false
+text-underline-mode.inherited:		false
+text-underline-position.inherited:	false
+text-underline.inherited:		false
+text-line-through-style.inherited:	false
+text-line-through-color.inherited:	false
+text-line-through-mode.inherited:	false
+text-line-through.inherited:		false
+text-overline-style.inherited:		false
+text-overline-color.inherited:		false
+text-overline-mode.inherited:		false
+text-overline.inherited:		false
+layout-grid-type.inherited:		true
+layout-grid-line.inherited:		true
+layout-grid-mode.inherited:		true
+layout-grid-char.inherited:		true
+layout-grid.inherited:			true
+punctuation-wrap.inherited:		true
+text-combine.inherited:			false
+text-fit.inherited:			false
+media.inherited:			false
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/Css3Properties.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,38 @@
+//
+// $Id: Css3Properties.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// Copyright(c) 1995-2000, World Wide Web Consortium, (MIT, INRIA, Keio University)
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.properties.css3;
+
+import java.net.URL;
+
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.Utf8Properties;
+
+public class Css3Properties {
+
+    public static Utf8Properties properties;
+
+    public static String getString(CssProperty property, String prop) {
+	return properties.getProperty(property.getPropertyName() + "." + prop);
+    }
+
+    public static boolean getInheritance(CssProperty property) {
+	return getString(property, "inherited").equals("true");
+    }
+
+    static {
+	properties = new Utf8Properties();
+	try {
+	    URL url = Css3Properties.class
+	    .getResource("CSS3Default.properties");
+	    properties.load(url.openStream());
+	} catch (Exception e) {
+	    System.err
+	    .println("org.w3c.css.properties3.Css3Properties: couldn't load properties ");
+	    System.err.println("  " + e.toString());
+	}
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/Css3Property.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,21 @@
+//
+// $Id: Css3Property.java,v 1.1 2005-08-23 16:24:20 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// COPYRIGHT (c) 1995-2000 World Wide Web Consortium, (MIT, INRIA, Keio University)
+// Please first read the full copyright statement in the file COPYRIGHT.html
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.properties.css1.CssProperty;
+
+public abstract class Css3Property extends CssProperty {
+
+   /**
+    * Returns true if the property is inherited
+    */
+   public boolean Inherited() {
+      return Css3Properties.getInheritance(this);
+   }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/Css3Style.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,2975 @@
+//
+// $Id: Css3Style.java,v 1.5 2009-12-16 13:18:24 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// COPYRIGHT (c) 1995-2000 World Wide Web Consortium, (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssSelectors;
+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 org.w3c.css.parser.CssPrinterStyle;
+
+public class Css3Style extends org.w3c.css.properties.atsc.ATSCStyle {
+
+    CssOpacity cssOpacity;
+    CssColorProfile cssColorProfile;
+    CssRenderIntent cssRenderIntent;
+    CssFontEffect cssFontEffect;
+    CssFontSmooth cssFontSmooth;
+    CssFontEmphasizeStyle cssFontEmphasizeStyle;
+    CssFontEmphasizePos cssFontEmphasizePos;
+    CssFontEmphasize cssFontEmphasize;
+    CssRubyPosition cssRubyPosition;
+    CssRubyAlign cssRubyAlign;
+    CssRubyOverhang cssRubyOverhang;
+    CssBoxSizing cssBoxSizing;
+    CssResizer cssResizer;
+    CssKeyEq cssKeyEq;
+    CssTabIndex cssTabIndex;
+    CssUserInput cssUserInput;
+    CssUserModify cssUserModify;
+    CssUserSelect cssUserSelect;
+    CssUserFocus cssUserFocus;
+    CssUserFocusKey cssUserFocusKey;
+    CssUserFocusPointer cssUserFocusPointer;
+    CssToggleGroup cssToggleGroup;
+    CssGroupReset cssGroupReset;
+    CssWritingMode cssWritingMode;
+    CssGlyphOrVert cssGlyphOrVert;
+    CssGlyphHor cssGlyphHor;
+    CssTextJustify cssTextJustify;
+    CssTextAlignLast cssTextAlignLast;
+    CssMinFontSize cssMinFontSize;
+    CssMaxFontSize cssMaxFontSize;
+    CssTextJustifyTrim cssTextJustifyTrim;
+    CssTextKashidaSpace cssTextKashidaSpace;
+    CssDominantBaseLine cssDominantBaseLine;
+    CssAlignmentBaseLine cssAlignmentBaseLine;
+    CssAlignmentAdjust cssAlignmentAdjust;
+    CssBaselineShift cssBaselineShift;
+    CssLineBreak cssLineBreak;
+    CssWordBreakCJK cssWordBreakCJK;
+    CssWordBreakInside cssWordBreakInside;
+    CssWordBreak cssWordBreak;
+    CssTextSpace cssTextSpace;
+    CssTextEndOverflow cssTextEndOverflow;
+    CssTextAfterOverflow cssTextAfterOverflow;
+    CssPunctuationTrim cssPunctuationTrim;
+    CssTextAutoSpace cssTextAutoSpace;
+    CssKerningMode cssKerningMode;
+    CssKerningPairTreshold cssKerningPairTreshold;
+    CssTextUlStyle cssTextUlStyle;
+    CssTextUlColor cssTextUlColor;
+    CssTextUlMode cssTextUlMode;
+    CssTextUlPos cssTextUlPos;
+    CssTextUnderLine cssTextUnderLine;
+    CssTextLTStyle cssTextLTStyle;
+    CssTextLTColor cssTextLTColor;
+    CssTextLTMode cssTextLTMode;
+    CssTextLineThrough cssTextLineThrough;
+    CssTextOverLine cssTextOverLine;
+    CssTextOLStyle cssTextOLStyle;
+    CssTextOLColor cssTextOLColor;
+    CssTextOLMode cssTextOLMode;
+    CssTextCombine cssTextCombine;
+    CssMedia cssMedia;
+    CssDisplayModel cssDisplayModel;
+    CssDisplayRole cssDisplayRole;
+    CssMarginOutside cssMarginOutside;
+    CssMarginInside cssMarginInside;
+    CssBoxWidth cssBoxWidth;
+    CssBoxHeight cssBoxHeight;
+    CssFit cssFit;
+    CssLink cssLink;
+    CssLinkBehavior cssLinkBehavior;
+    CssCollapse cssCollapse;
+    CssFloatCSS3 cssFloatCSS3;
+    CssClearCSS3 cssClearCSS3;
+    CssLineHeightPolicy cssLineHeightPolicy;
+    CssLineBoxContain cssLineBoxContain;
+    CssColumnCount cssColumnCount;
+    CssColumnWidth cssColumnWidth;
+    CssColumnSpan cssColumnSpan;
+    CssBackgroundClip cssBackgroundClip;
+    CssBackgroundSize cssBackgroundSize;
+    CssBackgroundOrigin cssBackgroundOrigin;
+    CssBackgroundQuantity cssBackgroundQuantity;
+    CssBackgroundSpacing cssBackgroundSpacing;
+    CssTextDecorationCSS3 cssTextDecoration;
+    CssWhiteSpaceCSS3 cssWhiteSpace;
+    CssWordSpacingCSS3 cssWordSpacing;
+    CssAllSpaceTreatment cssAllSpaceTreatment;
+    CssHangingPunctuation cssHangingPunctuation;
+    CssLineGrid cssLineGrid;
+    CssLineGridMode cssLineGridMode;
+    CssLineGridProgression cssLineGridProgression;
+    CssLinefeedTreatment cssLinefeedTreatment;
+    CssScript cssScript;
+    CssTextOverflow cssTextOverflow;
+    CssTextOverflowEllipsis cssTextOverflowEllipsis;
+    CssTextOverflowMode cssTextOverflowMode;
+    CssWhiteSpaceTreatment cssWhiteSpaceTreatment;
+    CssWrapOption cssWrapOption;
+    CssColumnGap cssColumnGap;
+    CssColumnRuleColor cssColumnRuleColor;
+    CssColumnRuleStyle cssColumnRuleStyle;
+    CssColumnRuleWidth cssColumnRuleWidth;
+    CssColumnRule cssColumnRule;
+    CssDropInitialAfterAdjust cssDropInitialAfterAdjust;
+    CssDropInitialAfterAlign cssDropInitialAfterAlign;
+    CssDropInitialBeforeAdjust cssDropInitialBeforeAdjust;
+    CssDropInitialBeforeAlign cssDropInitialBeforeAlign;
+    CssDropInitialSize cssDropInitialSize;
+    CssDropInitialValue cssDropInitialValue;
+    CssInlineBoxAlign cssInlineBoxAlign;
+    CssLineStacking cssLineStacking;
+    CssLineStackingRuby cssLineStackingRuby;
+    CssLineStackingShift cssLineStackingShift;
+    CssLineStackingStrategy cssLineStackingStrategy;
+    CssTextHeight cssTextHeight;
+    CssAppearance cssAppearance;
+    CssIcon cssIcon;
+    CssNavIndex cssNavIndex;
+    CssNavUp cssNavUp;
+    CssNavRight cssNavRight;
+    CssNavDown cssNavDown;
+    CssNavLeft cssNavLeft;
+    CssOutlineOffset cssOutlineOffset;
+    CssOverflowX cssOverflowX;
+    CssOverflowY cssOverflowY;
+    CssRubySpan cssRubySpan;
+    CssTextBlink cssTextBlink;
+    CssClearAfter cssClearAfter;
+    CssCrop cssCrop;
+    CssFitPosition cssFitPosition;
+    CssFloatDisplace cssFloatDisplace;
+    CssIndentEdgeReset cssIndentEdgeReset;
+    CssVisibilityCSS3 cssVisibilityCSS3;
+    CssOverflowCSS3 cssOverflowCSS3;
+    CssOverflowClip cssOverflowClip;
+    CssMaxWidthCSS3 cssMaxWidthCSS3;
+    CssMaxHeightCSS3 cssMaxHeightCSS3;
+    CssMinWidthCSS3 cssMinWidthCSS3;
+    CssMinHeightCSS3 cssMinHeightCSS3;
+    CssPaddingCSS3 cssPaddingCSS3;
+    CssPaddingBottomCSS3 cssPaddingBottomCSS3;
+    CssPaddingTopCSS3 cssPaddingTopCSS3;
+    CssPaddingLeftCSS3 cssPaddingLeftCSS3;
+    CssPaddingRightCSS3 cssPaddingRightCSS3;
+    CssHeightCSS3 cssHeightCSS3;
+    CssWidthCSS3 cssWidthCSS3;
+    CssMarquee cssMarquee;
+    CssMarqueeDirection cssMarqueeDirection;
+    CssMarqueeRepetition cssMarqueeRepetition;
+    CssMarqueeSpeed cssMarqueeSpeed;
+    CssMarqueeStyle cssMarqueeStyle;
+    CssBorderTopRightRadius cssBorderTopRightRadius;
+    CssBorderBottomRightRadius cssBorderBottomRightRadius;
+    CssBorderBottomLeftRadius cssBorderBottomLeftRadius;
+    CssBorderTopLeftRadius cssBorderTopLeftRadius;
+    CssBorderRadius cssBorderRadius;
+    CssBorderTopImage cssBorderTopImage;
+    CssBorderBottomImage cssBorderBottomImage;
+    CssBorderLeftImage cssBorderLeftImage;
+    CssBorderRightImage cssBorderRightImage;
+    CssBorderImage cssBorderImage;
+    CssBorderTopLeftImage cssBorderTopLeftImage;
+    CssBorderTopRightImage cssBorderTopRightImage;
+    CssBorderBottomLeftImage cssBorderBottomLeftImage;
+    CssBorderBottomRightImage cssBorderBottomRightImage;
+    CssBorderCornerImage cssBorderCornerImage;
+    CssBorderTopFitLength cssBorderTopFitLength;
+    CssBorderBottomFitLength cssBorderBottomFitLength;
+    CssBorderLeftFitLength cssBorderLeftFitLength;
+    CssBorderRightFitLength cssBorderRightFitLength;
+    CssBorderTopFitWidth cssBorderTopFitWidth;
+    CssBorderBottomFitWidth cssBorderBottomFitWidth;
+    CssBorderLeftFitWidth cssBorderLeftFitWidth;
+    CssBorderRightFitWidth cssBorderRightFitWidth;
+    CssBorderTopLeftFitLength cssBorderTopLeftFitLength;
+    CssBorderTopRightFitLength cssBorderTopRightFitLength;
+    CssBorderBottomRightFitLength cssBorderBottomRightFitLength;
+    CssBorderBottomLeftFitLength cssBorderBottomLeftFitLength;
+    CssBorderTopLeftFitWidth cssBorderTopLeftFitWidth;
+    CssBorderTopRightFitWidth cssBorderTopRightFitWidth;
+    CssBorderBottomLeftFitWidth cssBorderBottomLeftFitWidth;
+    CssBorderBottomRightFitWidth cssBorderBottomRightFitWidth;
+    CssBorderFitLength cssBorderFitLength;
+    CssBorderFitWidth cssBorderFitWidth;
+    CssBorderFit cssBorderFit;
+    CssBorderCornerFit cssBorderCornerFit;
+    CssBorderImageTransform cssBorderImageTransform;
+    CssBorderBreak cssBorderBreak;
+    CssBoxShadow cssBoxShadow;
+    CssTextIndentCSS3 cssTextIndentCSS3;
+    CssBlockProgression cssBlockProgression;
+
+    //media features for media queries
+
+    MediaWidth mediaWidth;
+    MediaMaxWidth mediaMaxWidth;
+    MediaMinWidth mediaMinWidth;
+    MediaHeight mediaHeight;
+    MediaMinHeight mediaMinHeight;
+    MediaMaxHeight mediaMaxHeight;
+    MediaDeviceWidth mediaDeviceWidth;
+    MediaMinDeviceWidth mediaMinDeviceWidth;
+    MediaMaxDeviceWidth mediaMaxDeviceWidth;
+    MediaDeviceHeight mediaDeviceHeight;
+    MediaMinDeviceHeight mediaMinDeviceHeight;
+    MediaMaxDeviceHeight mediaMaxDeviceHeight;
+    MediaDeviceAspectRatio mediaDeviceAspectRatio;
+    MediaMaxDeviceAspectRatio mediaMaxDeviceAspectRatio;
+    MediaMinDeviceAspectRatio mediaMinDeviceAspectRatio;
+    MediaColor mediaColor;
+    MediaMinColor mediaMinColor;
+    MediaMaxColor mediaMaxColor;
+    MediaColorIndex mediaColorIndex;
+    MediaMinColorIndex mediaMinColorIndex;
+    MediaMaxColorIndex mediaMaxColorIndex;
+    MediaMonochrome mediaMonochrome;
+    MediaMinMonochrome mediaMinMonochrome;
+    MediaMaxMonochrome mediaMaxMonochrome;
+    MediaResolution mediaResolution;
+    MediaMinResolution mediaMinResolution;
+    MediaMaxResolution mediaMaxResolution;
+    MediaScan mediaScan;
+    MediaGrid mediaGrid;
+
+    public CssOpacity getOpacity() {
+	if (cssOpacity == null) {
+	    cssOpacity  =
+		(CssOpacity) style.CascadingOrder(new CssOpacity(),
+						  style, selector);
+	}
+	return cssOpacity;
+    }
+
+    public CssColorProfile getColorProfile() {
+	if (cssColorProfile == null) {
+	    cssColorProfile  =
+		(CssColorProfile) style.CascadingOrder(new CssOpacity(),
+						       style, selector);
+	}
+	return cssColorProfile;
+    }
+
+    public CssRenderIntent getRenderIntent() {
+	if (cssRenderIntent == null) {
+	    cssRenderIntent =
+		(CssRenderIntent) style.CascadingOrder(new CssRenderIntent(),
+						       style, selector);
+	}
+	return cssRenderIntent;
+    }
+
+    public CssFontEffect getFontEffect() {
+	if (cssFontEffect == null) {
+	    cssFontEffect =
+		(CssFontEffect) style.CascadingOrder(new CssFontEffect(),
+						     style, selector);
+	}
+	return cssFontEffect;
+    }
+
+    public CssFontSmooth getFontSmooth() {
+	if (cssFontSmooth == null) {
+	    cssFontSmooth =
+		(CssFontSmooth) style.CascadingOrder(new CssFontSmooth(),
+						     style, selector);
+	}
+	return cssFontSmooth;
+    }
+
+    public CssFontEmphasizeStyle getFontEmphasizeStyle() {
+	if (cssFontEmphasizeStyle == null) {
+	    cssFontEmphasizeStyle =
+		(CssFontEmphasizeStyle) style.CascadingOrder(
+							     new CssFontEmphasizeStyle(), style, selector);
+	}
+	return cssFontEmphasizeStyle;
+    }
+
+    public CssFontEmphasizePos getFontEmphasizePos() {
+	if (cssFontEmphasizePos == null) {
+	    cssFontEmphasizePos =
+		(CssFontEmphasizePos) style.CascadingOrder(
+							   new CssFontEmphasizePos(), style, selector);
+	}
+	return cssFontEmphasizePos;
+    }
+
+    public CssFontEmphasize getFontEmphasize() {
+	if (cssFontEmphasize == null) {
+	    cssFontEmphasize =
+		(CssFontEmphasize) style.CascadingOrder(
+							new CssFontEmphasizePos(), style, selector);
+	}
+	return cssFontEmphasize;
+    }
+
+    public CssRubyPosition getRubyPosition() {
+	if (cssRubyPosition == null) {
+	    cssRubyPosition =
+		(CssRubyPosition) style.CascadingOrder (
+							new CssRubyPosition(), style, selector);
+	}
+	return cssRubyPosition;
+    }
+
+    public CssRubyAlign getRubyAlign() {
+	if (cssRubyAlign == null) {
+	    cssRubyAlign =
+		(CssRubyAlign) style.CascadingOrder (
+						     new CssRubyAlign(), style, selector);
+	}
+	return cssRubyAlign;
+    }
+
+    public CssRubyOverhang getRubyOverhang() {
+	if (cssRubyOverhang == null) {
+	    cssRubyOverhang =
+		(CssRubyOverhang) style.CascadingOrder (
+							new CssRubyOverhang(), style, selector);
+	}
+	return cssRubyOverhang;
+    }
+
+    public CssBoxSizing getBoxSizing() {
+	if (cssBoxSizing == null) {
+	    cssBoxSizing =
+		(CssBoxSizing) style.CascadingOrder (
+						     new CssBoxSizing(), style, selector);
+	}
+	return cssBoxSizing;
+    }
+
+    public CssResizer getResizer() {
+	if (cssResizer == null) {
+	    cssResizer =
+		(CssResizer) style.CascadingOrder (
+						   new CssResizer(), style, selector);
+	}
+	return cssResizer;
+    }
+
+    public CssKeyEq getKeyEq() {
+	if (cssKeyEq == null) {
+	    cssKeyEq =
+		(CssKeyEq) style.CascadingOrder (
+						 new CssKeyEq(), style, selector);
+	}
+	return cssKeyEq;
+    }
+
+    public CssTabIndex getTabIndex() {
+	if (cssTabIndex == null) {
+	    cssTabIndex =
+		(CssTabIndex) style.CascadingOrder (
+						    new CssTabIndex(), style, selector);
+	}
+	return cssTabIndex;
+    }
+
+    public CssUserInput getUserInput() {
+	if (cssUserInput == null) {
+	    cssUserInput =
+		(CssUserInput) style.CascadingOrder (
+						     new CssUserInput(), style, selector);
+	}
+	return cssUserInput;
+    }
+
+    public CssUserModify getUserModify() {
+	if (cssUserModify == null) {
+	    cssUserModify =
+		(CssUserModify) style.CascadingOrder (
+						      new CssUserModify(), style, selector);
+	}
+	return cssUserModify;
+    }
+
+    public CssUserSelect getUserSelect() {
+	if (cssUserSelect == null) {
+	    cssUserSelect =
+		(CssUserSelect) style.CascadingOrder (
+						      new CssUserSelect(), style, selector);
+	}
+	return cssUserSelect;
+    }
+
+    public CssUserFocus getUserFocus() {
+	if (cssUserFocus == null) {
+	    cssUserFocus =
+		(CssUserFocus) style.CascadingOrder (
+						     new CssUserFocus(), style, selector);
+	}
+	return cssUserFocus;
+    }
+
+    public CssUserFocusKey getUserFocusKey() {
+	if (cssUserFocusKey == null) {
+	    cssUserFocusKey =
+		(CssUserFocusKey) style.CascadingOrder (
+							new CssUserFocusKey(), style, selector);
+	}
+	return cssUserFocusKey;
+    }
+
+    public CssUserFocusPointer getUserFocusPointer() {
+	if (cssUserFocusPointer == null) {
+	    cssUserFocusPointer =
+		(CssUserFocusPointer) style.CascadingOrder (
+							    new CssUserFocusPointer(), style, selector);
+	}
+	return cssUserFocusPointer;
+    }
+
+    public CssToggleGroup getToggleGroup() {
+	if (cssToggleGroup == null) {
+	    cssToggleGroup =
+		(CssToggleGroup) style.CascadingOrder (
+						       new CssToggleGroup(), style, selector);
+	}
+	return cssToggleGroup;
+    }
+
+    public CssGroupReset getGroupReset() {
+	if (cssGroupReset == null) {
+	    cssGroupReset =
+		(CssGroupReset) style.CascadingOrder (
+						      new CssGroupReset(), style, selector);
+	}
+	return cssGroupReset;
+    }
+
+    public CssWritingMode getWritingMode() {
+	if (cssWritingMode == null) {
+	    cssWritingMode =
+		(CssWritingMode) style.CascadingOrder (
+						       new CssWritingMode(), style, selector);
+	}
+	return cssWritingMode;
+    }
+
+    public CssGlyphOrVert getGlyphOrVert() {
+	if (cssGlyphOrVert == null) {
+	    cssGlyphOrVert =
+		(CssGlyphOrVert) style.CascadingOrder (
+						       new CssGlyphOrVert(), style, selector);
+	}
+	return cssGlyphOrVert;
+    }
+
+    public CssGlyphHor getGlyphHor() {
+	if (cssGlyphHor == null) {
+	    cssGlyphHor =
+		(CssGlyphHor) style.CascadingOrder (
+						    new CssGlyphHor(), style, selector);
+	}
+	return cssGlyphHor;
+    }
+
+    public CssTextJustify getTextJustify() {
+	if (cssTextJustify == null) {
+	    cssTextJustify =
+		(CssTextJustify) style.CascadingOrder (
+						       new CssTextJustify(), style, selector);
+	}
+	return cssTextJustify;
+    }
+
+    public CssTextAlignLast getTextAlignLast() {
+	if (cssTextAlignLast == null) {
+	    cssTextAlignLast =
+		(CssTextAlignLast) style.CascadingOrder (
+							 new CssTextAlignLast(), style, selector);
+	}
+	return cssTextAlignLast;
+    }
+
+    public CssMinFontSize getMinFontSize() {
+	if (cssMinFontSize == null) {
+	    cssMinFontSize =
+		(CssMinFontSize) style.CascadingOrder (
+						       new CssMinFontSize(), style, selector);
+	}
+	return cssMinFontSize;
+    }
+
+    public CssMaxFontSize getMaxFontSize() {
+	if (cssMaxFontSize == null) {
+	    cssMaxFontSize =
+		(CssMaxFontSize) style.CascadingOrder (
+						       new CssMaxFontSize(), style, selector);
+	}
+	return cssMaxFontSize;
+    }
+
+    public CssTextJustifyTrim getTextJustifyTrim() {
+	if (cssTextJustifyTrim == null) {
+	    cssTextJustifyTrim =
+		(CssTextJustifyTrim) style.CascadingOrder (
+							   new CssTextJustifyTrim(), style, selector);
+	}
+	return cssTextJustifyTrim;
+    }
+
+    public CssTextKashidaSpace getTextKashidaSpace() {
+	if (cssTextKashidaSpace == null) {
+	    cssTextKashidaSpace =
+		(CssTextKashidaSpace) style.CascadingOrder (
+							    new CssTextJustifyTrim(), style, selector);
+	}
+	return cssTextKashidaSpace;
+    }
+
+    public CssDominantBaseLine getDominantBaseLine() {
+	if (cssDominantBaseLine == null) {
+	    cssDominantBaseLine =
+		(CssDominantBaseLine) style.CascadingOrder (
+							    new CssDominantBaseLine(), style, selector);
+	}
+	return cssDominantBaseLine;
+    }
+
+    public CssAlignmentBaseLine getAlignmentBaseLine() {
+	if (cssAlignmentBaseLine == null) {
+	    cssAlignmentBaseLine =
+		(CssAlignmentBaseLine) style.CascadingOrder (
+							     new CssAlignmentBaseLine(), style, selector);
+	}
+	return cssAlignmentBaseLine;
+    }
+
+    public CssAlignmentAdjust getAlignmentAdjust() {
+	if (cssAlignmentAdjust == null) {
+	    cssAlignmentAdjust =
+		(CssAlignmentAdjust) style.CascadingOrder (
+							   new CssAlignmentAdjust(), style, selector);
+	}
+	return cssAlignmentAdjust;
+    }
+
+    public CssBaselineShift getBaselineShift() {
+	if (cssBaselineShift == null) {
+	    cssBaselineShift =
+		(CssBaselineShift) style.CascadingOrder (
+							 new CssBaselineShift(), style, selector);
+	}
+	return cssBaselineShift;
+    }
+
+    public CssLineBreak getLineBreak() {
+	if (cssLineBreak == null) {
+	    cssLineBreak =
+		(CssLineBreak) style.CascadingOrder (
+						     new CssLineBreak(), style, selector);
+	}
+	return cssLineBreak;
+    }
+
+    public CssWordBreakCJK getWordBreakCJK() {
+	if (cssWordBreakCJK == null) {
+	    cssWordBreakCJK =
+		(CssWordBreakCJK) style.CascadingOrder (
+							new CssWordBreakCJK(), style, selector);
+	}
+	return cssWordBreakCJK;
+    }
+
+    public CssWordBreakInside getWordBreakInside() {
+	if (cssWordBreakInside == null) {
+	    cssWordBreakInside =
+		(CssWordBreakInside) style.CascadingOrder (
+							   new CssWordBreakInside(), style, selector);
+	}
+	return cssWordBreakInside;
+    }
+
+    public CssWordBreak getWordBreak() {
+	if (cssWordBreak == null) {
+	    cssWordBreak =
+		(CssWordBreak) style.CascadingOrder (
+						     new CssWordBreak(), style, selector);
+	}
+	return cssWordBreak;
+    }
+
+    public CssTextSpace getTextSpace() {
+	if (cssTextSpace == null) {
+	    cssTextSpace =
+		(CssTextSpace) style.CascadingOrder (
+						     new CssTextSpace(), style, selector);
+	}
+	return cssTextSpace;
+    }
+
+    public CssTextEndOverflow getTextEndOverflow() {
+	if (cssTextEndOverflow == null) {
+	    cssTextEndOverflow =
+		(CssTextEndOverflow) style.CascadingOrder (
+							   new CssTextEndOverflow(), style, selector);
+	}
+	return cssTextEndOverflow;
+    }
+
+    public CssTextAfterOverflow getTextAfterOverflow() {
+	if (cssTextAfterOverflow == null) {
+	    cssTextAfterOverflow =
+		(CssTextAfterOverflow) style.CascadingOrder (
+							     new CssTextAfterOverflow(), style, selector);
+	}
+	return cssTextAfterOverflow;
+    }
+
+    public CssPunctuationTrim getPunctuationTrim() {
+	if (cssPunctuationTrim == null) {
+	    cssPunctuationTrim =
+		(CssPunctuationTrim) style.CascadingOrder (
+							   new CssPunctuationTrim(), style, selector);
+	}
+	return cssPunctuationTrim;
+    }
+
+    public CssTextAutoSpace getTextAutoSpace() {
+	if (cssTextAutoSpace == null) {
+	    cssTextAutoSpace =
+		(CssTextAutoSpace) style.CascadingOrder (
+							 new CssTextAutoSpace(), style, selector);
+	}
+	return cssTextAutoSpace;
+    }
+
+    public CssKerningMode getKerningMode() {
+	if (cssKerningMode == null) {
+	    cssKerningMode =
+		(CssKerningMode) style.CascadingOrder (
+						       new CssKerningMode(), style, selector);
+	}
+	return cssKerningMode;
+    }
+
+    public CssKerningPairTreshold getKerningPairTreshold() {
+	if (cssKerningPairTreshold == null) {
+	    cssKerningPairTreshold =
+		(CssKerningPairTreshold) style.CascadingOrder (
+							       new CssKerningPairTreshold(), style, selector);
+	}
+	return cssKerningPairTreshold;
+    }
+
+    public CssTextUlStyle getTextUlStyle() {
+	if (cssTextUlStyle == null) {
+	    cssTextUlStyle =
+		(CssTextUlStyle) style.CascadingOrder (
+						       new CssTextUlStyle(), style, selector);
+	}
+	return cssTextUlStyle;
+    }
+
+    public CssTextUlColor getTextUlColor() {
+	if (cssTextUlColor == null) {
+	    cssTextUlColor =
+		(CssTextUlColor) style.CascadingOrder (
+						       new CssTextUlColor(), style, selector);
+	}
+	return cssTextUlColor;
+    }
+
+    public CssTextUlMode getTextUlMode() {
+	if (cssTextUlMode == null) {
+	    cssTextUlMode =
+		(CssTextUlMode) style.CascadingOrder (
+						      new CssTextUlMode(), style, selector);
+	}
+	return cssTextUlMode;
+    }
+
+    public CssTextUlPos getTextUlPos() {
+	if (cssTextUlPos == null) {
+	    cssTextUlPos =
+		(CssTextUlPos) style.CascadingOrder (
+						     new CssTextUlPos(), style, selector);
+	}
+	return cssTextUlPos;
+    }
+
+    public CssTextUnderLine getTextUnderLine() {
+	if (cssTextUnderLine == null) {
+	    cssTextUnderLine =
+		(CssTextUnderLine) style.CascadingOrder (
+							 new CssTextUnderLine(), style, selector);
+	}
+	return cssTextUnderLine;
+    }
+
+    public CssTextLTStyle getTextLTStyle() {
+	if (cssTextLTStyle == null) {
+	    cssTextLTStyle =
+		(CssTextLTStyle) style.CascadingOrder (
+						       new CssTextLTStyle(), style, selector);
+	}
+	return cssTextLTStyle;
+    }
+
+    public CssTextLTColor getTextLTColor() {
+	if (cssTextLTColor == null) {
+	    cssTextLTColor =
+		(CssTextLTColor) style.CascadingOrder (
+						       new CssTextLTColor(), style, selector);
+	}
+	return cssTextLTColor;
+    }
+
+    public CssTextLTMode getTextLTMode() {
+	if (cssTextLTMode == null) {
+	    cssTextLTMode =
+		(CssTextLTMode) style.CascadingOrder (
+						      new CssTextLTMode(), style, selector);
+	}
+	return cssTextLTMode;
+    }
+
+    public CssTextLineThrough getTextLineThrough() {
+	if (cssTextLineThrough == null) {
+	    cssTextLineThrough =
+		(CssTextLineThrough) style.CascadingOrder (
+							   new CssTextLineThrough(), style, selector);
+	}
+	return cssTextLineThrough;
+    }
+
+    public CssTextOverLine getTextOverLine() {
+	if (cssTextOverLine == null) {
+	    cssTextOverLine =
+		(CssTextOverLine) style.CascadingOrder (
+							new CssTextOverLine(), style, selector);
+	}
+	return cssTextOverLine;
+    }
+
+    public CssTextOLStyle getTextOLStyle() {
+	if (cssTextOLStyle == null) {
+	    cssTextOLStyle =
+		(CssTextOLStyle) style.CascadingOrder (
+						       new CssTextOLStyle(), style, selector);
+	}
+	return cssTextOLStyle;
+    }
+
+    public CssTextOLColor getTextOLColor() {
+	if (cssTextOLColor == null) {
+	    cssTextOLColor =
+		(CssTextOLColor) style.CascadingOrder (
+						       new CssTextOLColor(), style, selector);
+	}
+	return cssTextOLColor;
+    }
+
+    public CssTextOLMode getTextOLMode() {
+	if (cssTextOLMode == null) {
+	    cssTextOLMode =
+		(CssTextOLMode) style.CascadingOrder (
+						      new CssTextOLMode(), style, selector);
+	}
+	return cssTextOLMode;
+    }
+
+    public CssTextCombine getTextCombine() {
+	if (cssTextCombine == null) {
+	    cssTextCombine =
+		(CssTextCombine) style.CascadingOrder (
+						       new CssTextCombine(), style, selector);
+	}
+	return cssTextCombine;
+    }
+
+    public CssMedia getMedia() {
+	if (cssMedia == null) {
+	    cssMedia =
+		(CssMedia) style.CascadingOrder (
+						 new CssMedia(), style, selector);
+	}
+	return cssMedia;
+    }
+
+    public CssDisplayModel getDisplayModel() {
+	if (cssDisplayModel == null) {
+	    cssDisplayModel =
+		(CssDisplayModel) style.CascadingOrder (
+							new CssDisplayModel(), style, selector);
+	}
+	return cssDisplayModel;
+    }
+
+    public CssDisplayRole getDisplayRole() {
+	if (cssDisplayRole == null) {
+	    cssDisplayRole =
+		(CssDisplayRole) style.CascadingOrder (
+						       new CssDisplayRole(), style, selector);
+	}
+	return cssDisplayRole;
+    }
+
+    public CssMarginOutside getMarginOutside() {
+	if (cssMarginOutside == null) {
+	    cssMarginOutside =
+		(CssMarginOutside) style.CascadingOrder (
+							 new CssMarginOutside(), style, selector);
+	}
+	return cssMarginOutside;
+    }
+
+    public CssMarginInside getMarginInside() {
+	if (cssMarginInside == null) {
+	    cssMarginInside =
+		(CssMarginInside) style.CascadingOrder (
+							new CssMarginInside(), style, selector);
+	}
+	return cssMarginInside;
+    }
+
+    public CssBoxWidth getBoxWidth() {
+	if (cssBoxWidth == null) {
+	    cssBoxWidth =
+		(CssBoxWidth) style.CascadingOrder (
+						    new CssBoxWidth(), style, selector);
+	}
+	return cssBoxWidth;
+    }
+
+    public CssBoxHeight getBoxHeight() {
+	if (cssBoxHeight == null) {
+	    cssBoxHeight =
+		(CssBoxHeight) style.CascadingOrder (
+						     new CssBoxHeight(), style, selector);
+	}
+	return cssBoxHeight;
+    }
+
+    public CssFit getFit() {
+	if (cssFit == null) {
+	    cssFit =
+		(CssFit) style.CascadingOrder (
+					       new CssFit(), style, selector);
+	}
+	return cssFit;
+    }
+
+    public CssLink getLink() {
+	if (cssLink == null) {
+	    cssLink =
+		(CssLink) style.CascadingOrder (
+						new CssLink(), style, selector);
+	}
+	return cssLink;
+    }
+
+    public CssLinkBehavior getLinkBehavior() {
+	if (cssLinkBehavior == null) {
+	    cssLinkBehavior =
+		(CssLinkBehavior) style.CascadingOrder (
+							new CssLinkBehavior(), style, selector);
+	}
+	return cssLinkBehavior;
+    }
+
+    public CssCollapse getCollapse() {
+	if (cssCollapse == null) {
+	    cssCollapse =
+		(CssCollapse) style.CascadingOrder (
+						    new CssCollapse(), style, selector);
+	}
+	return cssCollapse;
+    }
+
+    public CssFloatCSS3 getFloatCSS3() {
+	if (cssFloatCSS3 == null) {
+	    cssFloatCSS3 =
+		(CssFloatCSS3) style.CascadingOrder (
+						     new CssFloatCSS3(), style, selector);
+	}
+	return cssFloatCSS3;
+    }
+
+    public CssClearCSS3 getClearCSS3() {
+	if (cssClearCSS3 == null) {
+	    cssClearCSS3 =
+		(CssClearCSS3) style.CascadingOrder (
+						     new CssClearCSS3(), style, selector);
+	}
+	return cssClearCSS3;
+    }
+
+    public CssLineHeightPolicy getLineHeightPolicy() {
+	if (cssLineHeightPolicy == null) {
+	    cssLineHeightPolicy =
+		(CssLineHeightPolicy) style.CascadingOrder (
+							    new CssLineHeightPolicy(), style, selector);
+	}
+	return cssLineHeightPolicy;
+    }
+
+    public CssLineBoxContain getLineBoxContain() {
+	if (cssLineBoxContain == null) {
+	    cssLineBoxContain =
+		(CssLineBoxContain) style.CascadingOrder (
+							  new CssLineBoxContain(), style, selector);
+	}
+	return cssLineBoxContain;
+    }
+
+    public CssColumnCount getColumnCount() {
+	if (cssColumnCount == null) {
+	    cssColumnCount =
+		(CssColumnCount) style.CascadingOrder(
+						      new CssColumnCount(), style, selector);
+	}
+	return cssColumnCount;
+    }
+
+    public CssColumnWidth getColumnWidth() {
+	if (cssColumnWidth == null) {
+	    cssColumnWidth =
+		(CssColumnWidth) style.CascadingOrder(
+						      new CssColumnWidth(), style, selector);
+	}
+	return cssColumnWidth;
+    }
+
+    public CssBackgroundClip getCssBackgroundClip() {
+	if (cssBackgroundClip == null) {
+	    cssBackgroundClip =
+		(CssBackgroundClip) style.CascadingOrder(
+							 new CssBackgroundClip(), style, selector);
+	}
+	return cssBackgroundClip;
+    }
+
+    public CssBackgroundSize getCssBackgroundSize() {
+	if (cssBackgroundSize == null) {
+	    cssBackgroundSize =
+		(CssBackgroundSize) style.CascadingOrder(
+							 new CssBackgroundSize(), style, selector);
+	}
+	return cssBackgroundSize;
+    }
+
+    public CssBackgroundOrigin getCssBackgroundOrigin() {
+	if (cssBackgroundOrigin == null) {
+	    cssBackgroundOrigin =
+		(CssBackgroundOrigin) style.CascadingOrder(
+							   new CssBackgroundOrigin(), style, selector);
+	}
+	return cssBackgroundOrigin;
+    }
+
+    public CssBackgroundQuantity getCssBackgroundQuantity() {
+	if (cssBackgroundQuantity == null) {
+	    cssBackgroundQuantity =
+		(CssBackgroundQuantity) style.CascadingOrder(
+							     new CssBackgroundQuantity(), style, selector);
+	}
+	return cssBackgroundQuantity;
+    }
+
+    public CssBackgroundSpacing getCssBackgroundSpacing() {
+	if (cssBackgroundSpacing == null) {
+	    cssBackgroundSpacing =
+		(CssBackgroundSpacing) style.CascadingOrder(
+							    new CssBackgroundSpacing(), style, selector);
+	}
+	return cssBackgroundSpacing;
+    }
+
+    public CssTextDecorationCSS3 getCssTextDecoration() {
+	if (cssTextDecoration == null) {
+	    cssTextDecoration =
+		(CssTextDecorationCSS3) style.CascadingOrder(
+							     new CssTextDecorationCSS3(), style, selector);
+	}
+	return cssTextDecoration;
+    }
+
+    public CssWhiteSpaceCSS3 getCssWhiteSpace() {
+	if (cssWhiteSpace == null) {
+	    cssWhiteSpace =
+		(CssWhiteSpaceCSS3) style.CascadingOrder(
+							 new CssWhiteSpaceCSS3(), style, selector);
+	}
+	return cssWhiteSpace;
+    }
+
+    public CssWordSpacingCSS3 getCssWordSpacing() {
+	if (cssWordSpacing == null) {
+	    cssWordSpacing =
+		(CssWordSpacingCSS3) style.CascadingOrder(
+							  new CssWordSpacingCSS3(), style, selector);
+	}
+	return cssWordSpacing;
+    }
+
+    public CssAllSpaceTreatment getAllSpaceTreatment() {
+	if (cssAllSpaceTreatment == null) {
+	    cssAllSpaceTreatment =
+		(CssAllSpaceTreatment) style.CascadingOrder(
+							    new CssAllSpaceTreatment(), style, selector);
+	}
+	return cssAllSpaceTreatment;
+    }
+
+    public CssHangingPunctuation getHangingPunctuation() {
+	if (cssHangingPunctuation == null) {
+	    cssHangingPunctuation =
+		(CssHangingPunctuation) style.CascadingOrder(
+							     new CssHangingPunctuation(), style, selector);
+	}
+	return cssHangingPunctuation;
+    }
+
+    public CssLineGrid getLineGrid() {
+	if (cssLineGrid == null) {
+	    cssLineGrid =
+		(CssLineGrid) style.CascadingOrder(
+						   new CssLineGrid(), style, selector);
+	}
+	return cssLineGrid;
+    }
+
+    public CssLineGridMode getLineGridMode() {
+	if (cssLineGridMode == null) {
+	    cssLineGridMode =
+		(CssLineGridMode) style.CascadingOrder(
+						       new CssLineGridMode(), style, selector);
+	}
+	return cssLineGridMode;
+    }
+
+    public CssLineGridProgression getLineGridProgression() {
+	if (cssLineGridProgression == null) {
+	    cssLineGridProgression =
+		(CssLineGridProgression) style.CascadingOrder(
+							      new CssLineGridProgression(), style, selector);
+	}
+	return cssLineGridProgression;
+    }
+
+    public CssLinefeedTreatment getLinefeedTreatment() {
+	if (cssLinefeedTreatment == null) {
+	    cssLinefeedTreatment =
+		(CssLinefeedTreatment) style.CascadingOrder(
+							    new CssLinefeedTreatment(), style, selector);
+	}
+	return cssLinefeedTreatment;
+    }
+
+    public CssScript getScript() {
+	if (cssScript == null) {
+	    cssScript =
+		(CssScript) style.CascadingOrder(
+						 new CssScript(), style, selector);
+	}
+	return cssScript;
+    }
+
+    public CssTextOverflow getTextOverflow() {
+	if (cssTextOverflow == null) {
+	    cssTextOverflow =
+		(CssTextOverflow) style.CascadingOrder(
+						       new CssTextOverflow(), style, selector);
+	}
+	return cssTextOverflow;
+    }
+
+    public CssTextOverflowEllipsis getTextOverflowEllipsis() {
+	if (cssTextOverflowEllipsis == null) {
+	    cssTextOverflowEllipsis =
+		(CssTextOverflowEllipsis) style.CascadingOrder(
+							       new CssTextOverflowEllipsis(), style, selector);
+	}
+	return cssTextOverflowEllipsis;
+    }
+
+    public CssTextOverflowMode getTextOverflowMode() {
+	if (cssTextOverflowMode == null) {
+	    cssTextOverflowMode =
+		(CssTextOverflowMode) style.CascadingOrder(
+							   new CssTextOverflowMode(), style, selector);
+	}
+	return cssTextOverflowMode;
+    }
+
+    public CssWhiteSpaceTreatment getWhiteSpaceTreatment() {
+	if (cssWhiteSpaceTreatment == null) {
+	    cssWhiteSpaceTreatment =
+		(CssWhiteSpaceTreatment) style.CascadingOrder(
+							      new CssWhiteSpaceTreatment(), style, selector);
+	}
+	return cssWhiteSpaceTreatment;
+    }
+
+    public CssWrapOption getWrapOption() {
+	if (cssWrapOption == null) {
+	    cssWrapOption =
+		(CssWrapOption) style.CascadingOrder(
+						     new CssWrapOption(), style, selector);
+	}
+	return cssWrapOption;
+    }
+
+    public CssColumnGap getColumnGap() {
+	if (cssColumnGap == null) {
+	    cssColumnGap =
+		(CssColumnGap) style.CascadingOrder(
+						    new CssColumnGap(), style, selector);
+	}
+	return cssColumnGap;
+    }
+
+    public CssColumnRuleColor getColumnRuleColor() {
+	if (cssColumnRuleColor == null) {
+	    cssColumnRuleColor =
+		(CssColumnRuleColor) style.CascadingOrder(
+							  new CssColumnRuleColor(), style, selector);
+	}
+	return cssColumnRuleColor;
+    }
+
+    public CssColumnRuleStyle getColumnRuleStyle() {
+	if (cssColumnRuleStyle == null) {
+	    cssColumnRuleStyle =
+		(CssColumnRuleStyle) style.CascadingOrder(
+							  new CssColumnRuleStyle(), style, selector);
+	}
+	return cssColumnRuleStyle;
+    }
+
+    public CssColumnRuleWidth getColumnRuleWidth() {
+	if (cssColumnRuleWidth == null) {
+	    cssColumnRuleWidth =
+		(CssColumnRuleWidth) style.CascadingOrder(
+							  new CssColumnRuleWidth(), style, selector);
+	}
+	return cssColumnRuleWidth;
+    }
+
+    public CssColumnRule getColumnRule() {
+	if (cssColumnRule == null) {
+	    cssColumnRule =
+		(CssColumnRule) style.CascadingOrder(
+						     new CssColumnRule(), style, selector);
+	}
+	return cssColumnRule;
+    }
+
+    public CssDropInitialAfterAdjust getDropInitialAfterAdjust() {
+	if (cssDropInitialAfterAdjust == null) {
+	    cssDropInitialAfterAdjust =
+		(CssDropInitialAfterAdjust) style.CascadingOrder(
+								 new CssDropInitialAfterAdjust(), style, selector);
+	}
+	return cssDropInitialAfterAdjust;
+    }
+
+    public CssDropInitialAfterAlign getDropInitialAfterAlign() {
+	if (cssDropInitialAfterAlign == null) {
+	    cssDropInitialAfterAlign =
+		(CssDropInitialAfterAlign) style.CascadingOrder(
+								new CssDropInitialAfterAlign(), style, selector);
+	}
+	return cssDropInitialAfterAlign;
+    }
+
+    public CssDropInitialBeforeAdjust getDropInitialBeforeAdjust() {
+	if (cssDropInitialBeforeAdjust == null) {
+	    cssDropInitialBeforeAdjust =
+		(CssDropInitialBeforeAdjust) style.CascadingOrder(
+								  new CssDropInitialBeforeAdjust(), style, selector);
+	}
+	return cssDropInitialBeforeAdjust;
+    }
+
+    public CssDropInitialBeforeAlign getDropInitialBeforeAlign() {
+	if (cssDropInitialBeforeAlign == null) {
+	    cssDropInitialBeforeAlign =
+		(CssDropInitialBeforeAlign) style.CascadingOrder(
+								 new CssDropInitialBeforeAlign(), style, selector);
+	}
+	return cssDropInitialBeforeAlign;
+    }
+
+    public CssDropInitialSize getDropInitialSize() {
+	if (cssDropInitialSize == null) {
+	    cssDropInitialSize =
+		(CssDropInitialSize) style.CascadingOrder(
+							  new CssDropInitialSize(), style, selector);
+	}
+	return cssDropInitialSize;
+    }
+
+    public CssDropInitialValue getDropInitialValue() {
+	if (cssDropInitialValue == null) {
+	    cssDropInitialValue =
+		(CssDropInitialValue) style.CascadingOrder(
+							   new CssDropInitialValue(), style, selector);
+	}
+	return cssDropInitialValue;
+    }
+
+    public CssInlineBoxAlign getInlineBoxAlign() {
+	if (cssInlineBoxAlign == null) {
+	    cssInlineBoxAlign =
+		(CssInlineBoxAlign) style.CascadingOrder(
+							 new CssInlineBoxAlign(), style, selector);
+	}
+	return cssInlineBoxAlign;
+    }
+
+    public CssLineStacking getLineStacking() {
+	if (cssLineStacking == null) {
+	    cssLineStacking =
+		(CssLineStacking) style.CascadingOrder(
+						       new CssLineStacking(), style, selector);
+	}
+	return cssLineStacking;
+    }
+
+    public CssLineStackingRuby getLineStackingRuby() {
+	if (cssLineStackingRuby == null) {
+	    cssLineStackingRuby =
+		(CssLineStackingRuby) style.CascadingOrder(
+							   new CssLineStackingRuby(), style, selector);
+	}
+	return cssLineStackingRuby;
+    }
+
+    public CssLineStackingShift getLineStackingShift() {
+	if (cssLineStackingShift == null) {
+	    cssLineStackingShift =
+		(CssLineStackingShift) style.CascadingOrder(
+							    new CssLineStackingShift(), style, selector);
+	}
+	return cssLineStackingShift;
+    }
+
+    public CssLineStackingStrategy getLineStackingStrategy() {
+	if (cssLineStackingStrategy == null) {
+	    cssLineStackingStrategy =
+		(CssLineStackingStrategy) style.CascadingOrder(
+							       new CssLineStackingStrategy(), style, selector);
+	}
+	return cssLineStackingStrategy;
+    }
+
+    public CssTextHeight getTextHeight() {
+	if (cssTextHeight == null) {
+	    cssTextHeight =
+		(CssTextHeight) style.CascadingOrder(
+						     new CssTextHeight(), style, selector);
+	}
+	return cssTextHeight;
+    }
+
+    public CssAppearance getAppearance() {
+	if (cssAppearance == null) {
+	    cssAppearance =
+		(CssAppearance) style.CascadingOrder(
+						     new CssAppearance(), style, selector);
+	}
+	return cssAppearance;
+    }
+
+    public CssIcon getIcon() {
+	if (cssIcon == null) {
+	    cssIcon =
+		(CssIcon) style.CascadingOrder(
+					       new CssIcon(), style, selector);
+	}
+	return cssIcon;
+    }
+
+    public CssNavIndex getNavIndexCSS3() {
+	if (cssNavIndex == null) {
+	    cssNavIndex =
+		(CssNavIndex) style.CascadingOrder(
+						   new CssNavIndex(), style, selector);
+	}
+	return cssNavIndex;
+    }
+
+    public CssNavUp getNavUpCSS3() {
+	if (cssNavUp == null) {
+	    cssNavUp =
+		(CssNavUp) style.CascadingOrder(
+						new CssNavUp(), style, selector);
+	}
+	return cssNavUp;
+    }
+
+    public CssNavRight getNavRightCSS3() {
+	if (cssNavRight == null) {
+	    cssNavRight =
+		(CssNavRight) style.CascadingOrder(
+						   new CssNavRight(), style, selector);
+	}
+	return cssNavRight;
+    }
+
+    public CssNavDown getNavDownCSS3() {
+	if (cssNavDown == null) {
+	    cssNavDown =
+		(CssNavDown) style.CascadingOrder(
+						  new CssNavDown(), style, selector);
+	}
+	return cssNavDown;
+    }
+
+    public CssNavLeft getNavLeftCSS3() {
+	if (cssNavLeft == null) {
+	    cssNavLeft =
+		(CssNavLeft) style.CascadingOrder(
+						  new CssNavLeft(), style, selector);
+	}
+	return cssNavLeft;
+    }
+
+    public CssOutlineOffset getOutlineOffset() {
+	if (cssOutlineOffset == null) {
+	    cssOutlineOffset =
+		(CssOutlineOffset) style.CascadingOrder(
+							new CssOutlineOffset(), style, selector);
+	}
+	return cssOutlineOffset;
+    }
+
+    public CssOverflowX getOverflowX() {
+	if (cssOverflowX == null) {
+	    cssOverflowX =
+		(CssOverflowX) style.CascadingOrder(
+						    new CssOverflowX(), style, selector);
+	}
+	return cssOverflowX;
+    }
+
+    public CssOverflowY getOverflowY() {
+	if (cssOverflowY == null) {
+	    cssOverflowY =
+		(CssOverflowY) style.CascadingOrder(
+						    new CssOverflowY(), style, selector);
+	}
+	return cssOverflowY;
+    }
+
+    public CssRubySpan getRubySpan() {
+	if (cssRubySpan == null) {
+	    cssRubySpan =
+		(CssRubySpan) style.CascadingOrder(
+						   new CssRubySpan(), style, selector);
+	}
+	return cssRubySpan;
+    }
+
+    public CssTextBlink getTextBlink() {
+	if (cssTextBlink == null) {
+	    cssTextBlink =
+		(CssTextBlink) style.CascadingOrder(
+						    new CssTextBlink(), style, selector);
+	}
+	return cssTextBlink;
+    }
+
+    public CssClearAfter getClearAfter() {
+	if (cssClearAfter == null) {
+	    cssClearAfter =
+		(CssClearAfter) style.CascadingOrder(
+						     new CssClearAfter(), style, selector);
+	}
+	return cssClearAfter;
+    }
+
+    public CssCrop getCrop() {
+	if (cssCrop == null) {
+	    cssCrop =
+		(CssCrop) style.CascadingOrder(
+					       new CssCrop(), style, selector);
+	}
+	return cssCrop;
+    }
+
+    public CssFitPosition getFitPosition() {
+	if (cssFitPosition == null) {
+	    cssFitPosition =
+		(CssFitPosition) style.CascadingOrder(
+						      new CssFitPosition(), style, selector);
+	}
+	return cssFitPosition;
+    }
+
+    public CssFloatDisplace getFloatDisplace() {
+	if (cssFloatDisplace == null) {
+	    cssFloatDisplace =
+		(CssFloatDisplace) style.CascadingOrder(
+							new CssFloatDisplace(), style, selector);
+	}
+	return cssFloatDisplace;
+    }
+
+    public CssIndentEdgeReset getIndentEdgeReset() {
+	if (cssIndentEdgeReset == null) {
+	    cssIndentEdgeReset =
+		(CssIndentEdgeReset) style.CascadingOrder(
+							  new CssIndentEdgeReset(), style, selector);
+	}
+	return cssIndentEdgeReset;
+    }
+
+    public CssVisibilityCSS3 getVisibilityCSS3() {
+	if (cssVisibilityCSS3 == null) {
+	    cssVisibilityCSS3 =
+		(CssVisibilityCSS3) style.CascadingOrder(
+							 new CssVisibilityCSS3(), style, selector);
+	}
+	return cssVisibilityCSS3;
+    }
+
+    public CssOverflowCSS3 getOverflowCSS3() {
+	if (cssOverflowCSS3 == null) {
+	    cssOverflowCSS3 =
+		(CssOverflowCSS3) style.CascadingOrder(
+						       new CssOverflowCSS3(), style, selector);
+	}
+	return cssOverflowCSS3;
+    }
+
+    public CssOverflowClip getOverflowClip() {
+	if (cssOverflowClip == null) {
+	    cssOverflowClip =
+		(CssOverflowClip) style.CascadingOrder(
+						       new CssOverflowClip(), style, selector);
+	}
+	return cssOverflowClip;
+    }
+
+    public CssMaxHeightCSS3 getMaxHeightCSS3() {
+	if (cssMaxHeightCSS3 == null) {
+	    cssMaxHeightCSS3 =
+		(CssMaxHeightCSS3) style.CascadingOrder(
+							new CssMaxHeightCSS3(), style, selector);
+	}
+	return cssMaxHeightCSS3;
+    }
+
+    public CssMaxWidthCSS3 getMaxWidthCSS3() {
+	if (cssMaxWidthCSS3 == null) {
+	    cssMaxWidthCSS3 =
+		(CssMaxWidthCSS3) style.CascadingOrder(
+						       new CssMaxWidthCSS3(), style, selector);
+	}
+	return cssMaxWidthCSS3;
+    }
+
+    public CssMinHeightCSS3 getMinHeightCSS3() {
+	if (cssMinHeightCSS3 == null) {
+	    cssMinHeightCSS3 =
+		(CssMinHeightCSS3) style.CascadingOrder(
+							new CssMinHeightCSS3(), style, selector);
+	}
+	return cssMinHeightCSS3;
+    }
+
+    public CssMinWidthCSS3 getMinWidthCSS3() {
+	if (cssMinWidthCSS3 == null) {
+	    cssMinWidthCSS3 =
+		(CssMinWidthCSS3) style.CascadingOrder(
+						       new CssMinWidthCSS3(), style, selector);
+	}
+	return cssMinWidthCSS3;
+    }
+
+    public CssPaddingCSS3 getPaddingCSS3() {
+	if (cssPaddingCSS3 == null) {
+	    cssPaddingCSS3 =
+		(CssPaddingCSS3) style.CascadingOrder(
+						      new CssPaddingCSS3(), style, selector);
+	}
+	return cssPaddingCSS3;
+    }
+
+    public CssPaddingTopCSS3 getPaddingTopCSS3() {
+	if (cssPaddingTopCSS3 == null) {
+	    cssPaddingTopCSS3 =
+		(CssPaddingTopCSS3) style.CascadingOrder(
+							 new CssPaddingTopCSS3(), style, selector);
+	}
+	return cssPaddingTopCSS3;
+    }
+
+    public CssPaddingBottomCSS3 getPaddingBottomCSS3() {
+	if (cssPaddingBottomCSS3 == null) {
+	    cssPaddingBottomCSS3 =
+		(CssPaddingBottomCSS3) style.CascadingOrder(
+							    new CssPaddingBottomCSS3(), style, selector);
+	}
+	return cssPaddingBottomCSS3;
+    }
+
+    public CssPaddingLeftCSS3 getPaddingLeftCSS3() {
+	if (cssPaddingLeftCSS3 == null) {
+	    cssPaddingLeftCSS3 =
+		(CssPaddingLeftCSS3) style.CascadingOrder(
+							  new CssPaddingLeftCSS3(), style, selector);
+	}
+	return cssPaddingLeftCSS3;
+    }
+
+    public CssPaddingRightCSS3 getPaddingRightCSS3() {
+	if (cssPaddingRightCSS3 == null) {
+	    cssPaddingRightCSS3 =
+		(CssPaddingRightCSS3) style.CascadingOrder(
+							   new CssPaddingRightCSS3(), style, selector);
+	}
+	return cssPaddingRightCSS3;
+    }
+
+    public CssHeightCSS3 getHeightCSS3() {
+	if (cssHeightCSS3 == null) {
+	    cssHeightCSS3 =
+		(CssHeightCSS3) style.CascadingOrder(
+						     new CssHeightCSS3(), style, selector);
+	}
+	return cssHeightCSS3;
+    }
+
+    public CssWidthCSS3 getWidthCSS3() {
+	if (cssWidthCSS3 == null) {
+	    cssWidthCSS3 =
+		(CssWidthCSS3) style.CascadingOrder(
+						    new CssWidthCSS3(), style, selector);
+	}
+	return cssWidthCSS3;
+    }
+
+    public CssMarquee getMarquee() {
+	if (cssMarquee == null) {
+	    cssMarquee =
+		(CssMarquee) style.CascadingOrder(
+						  new CssMarquee(), style, selector);
+	}
+	return cssMarquee;
+    }
+
+    public CssMarqueeDirection getMarqueeDirection() {
+	if (cssMarqueeDirection == null) {
+	    cssMarqueeDirection =
+		(CssMarqueeDirection) style.CascadingOrder(
+							   new CssMarqueeDirection(), style, selector);
+	}
+	return cssMarqueeDirection;
+    }
+
+    public CssMarqueeRepetition getMarqueeRepetition() {
+	if (cssMarqueeRepetition == null) {
+	    cssMarqueeRepetition =
+		(CssMarqueeRepetition) style.CascadingOrder(
+							    new CssMarqueeRepetition(), style, selector);
+	}
+	return cssMarqueeRepetition;
+    }
+
+    public CssMarqueeSpeed getMarqueeSpeed() {
+	if (cssMarqueeSpeed == null) {
+	    cssMarqueeSpeed =
+		(CssMarqueeSpeed) style.CascadingOrder(
+						       new CssMarqueeSpeed(), style, selector);
+	}
+	return cssMarqueeSpeed;
+    }
+
+    public CssMarqueeStyle getMarqueeStyle() {
+	if (cssMarqueeStyle == null) {
+	    cssMarqueeStyle =
+		(CssMarqueeStyle) style.CascadingOrder(
+						       new CssMarqueeStyle(), style, selector);
+	}
+	return cssMarqueeStyle;
+    }
+
+    public CssBorderTopRightRadius getBorderTopRightRadius() {
+	if (cssBorderTopRightRadius == null) {
+	    cssBorderTopRightRadius =
+		(CssBorderTopRightRadius) style.CascadingOrder(
+							       new CssBorderTopRightRadius(), style, selector);
+	}
+	return cssBorderTopRightRadius;
+    }
+
+    public CssBorderBottomRightRadius getBorderBottomRightRadius() {
+	if (cssBorderBottomRightRadius == null) {
+	    cssBorderBottomRightRadius =
+		(CssBorderBottomRightRadius) style.CascadingOrder(
+								  new CssBorderBottomRightRadius(), style, selector);
+	}
+	return cssBorderBottomRightRadius;
+    }
+
+    public CssBorderBottomLeftRadius getBorderBottomLeftRadius() {
+	if (cssBorderBottomLeftRadius == null) {
+	    cssBorderBottomLeftRadius =
+		(CssBorderBottomLeftRadius) style.CascadingOrder(
+								 new CssBorderBottomLeftRadius(), style, selector);
+	}
+	return cssBorderBottomLeftRadius;
+    }
+
+    public CssBorderTopLeftRadius getBorderTopLeftRadius() {
+	if (cssBorderTopLeftRadius == null) {
+	    cssBorderTopLeftRadius =
+		(CssBorderTopLeftRadius) style.CascadingOrder(
+							      new CssBorderTopLeftRadius(), style, selector);
+	}
+	return cssBorderTopLeftRadius;
+    }
+
+    public CssBorderRadius getBorderRadius() {
+	if (cssBorderRadius == null) {
+	    cssBorderRadius =
+		(CssBorderRadius) style.CascadingOrder(
+						       new CssBorderRadius(), style, selector);
+	}
+	return cssBorderRadius;
+    }
+
+    public CssBorderTopImage getBorderTopImage() {
+	if (cssBorderTopImage == null) {
+	    cssBorderTopImage =
+		(CssBorderTopImage) style.CascadingOrder(
+							 new CssBorderTopImage(), style, selector);
+	}
+	return cssBorderTopImage;
+    }
+
+    public CssBorderBottomImage getBorderBottomImage() {
+	if (cssBorderBottomImage == null) {
+	    cssBorderBottomImage =
+		(CssBorderBottomImage) style.CascadingOrder(
+							    new CssBorderBottomImage(), style, selector);
+	}
+	return cssBorderBottomImage;
+    }
+
+    public CssBorderLeftImage getBorderLeftImage() {
+	if (cssBorderLeftImage == null) {
+	    cssBorderLeftImage =
+		(CssBorderLeftImage) style.CascadingOrder(
+							  new CssBorderLeftImage(), style, selector);
+	}
+	return cssBorderLeftImage;
+    }
+
+    public CssBorderRightImage getBorderRightImage() {
+	if (cssBorderRightImage == null) {
+	    cssBorderRightImage =
+		(CssBorderRightImage) style.CascadingOrder(
+							   new CssBorderRightImage(), style, selector);
+	}
+	return cssBorderRightImage;
+    }
+
+    public CssBorderImage getBorderImage() {
+	if (cssBorderImage == null) {
+	    cssBorderImage =
+		(CssBorderImage) style.CascadingOrder(
+						      new CssBorderImage(), style, selector);
+	}
+	return cssBorderImage;
+    }
+
+    public CssBorderTopLeftImage getBorderTopLeftImage() {
+	if (cssBorderTopLeftImage == null) {
+	    cssBorderTopLeftImage =
+		(CssBorderTopLeftImage) style.CascadingOrder(
+							     new CssBorderTopLeftImage(), style, selector);
+	}
+	return cssBorderTopLeftImage;
+    }
+
+    public CssBorderTopRightImage getBorderTopRightImage() {
+	if (cssBorderTopRightImage == null) {
+	    cssBorderTopRightImage =
+		(CssBorderTopRightImage) style.CascadingOrder(
+							      new CssBorderTopRightImage(), style, selector);
+	}
+	return cssBorderTopRightImage;
+    }
+
+    public CssBorderBottomLeftImage getBorderBottomLeftImage() {
+	if (cssBorderBottomLeftImage == null) {
+	    cssBorderBottomLeftImage =
+		(CssBorderBottomLeftImage) style.CascadingOrder(
+								new CssBorderBottomLeftImage(), style, selector);
+	}
+	return cssBorderBottomLeftImage;
+    }
+
+    public CssBorderBottomRightImage getBorderBottomRightImage() {
+	if (cssBorderBottomRightImage == null) {
+	    cssBorderBottomRightImage =
+		(CssBorderBottomRightImage) style.CascadingOrder(
+								 new CssBorderBottomRightImage(), style, selector);
+	}
+	return cssBorderBottomRightImage;
+    }
+
+    public CssBorderCornerImage getBorderCornerImage() {
+	if (cssBorderCornerImage == null) {
+	    cssBorderCornerImage =
+		(CssBorderCornerImage) style.CascadingOrder(
+							    new CssBorderCornerImage(), style, selector);
+	}
+	return cssBorderCornerImage;
+    }
+
+    public CssBorderTopFitLength getBorderTopFitLength() {
+	if (cssBorderTopFitLength == null) {
+	    cssBorderTopFitLength =
+		(CssBorderTopFitLength) style.CascadingOrder(
+							     new CssBorderTopFitLength(), style, selector);
+	}
+	return cssBorderTopFitLength;
+    }
+
+    public CssBorderBottomFitLength getBorderBottomFitLength() {
+	if (cssBorderBottomFitLength == null) {
+	    cssBorderBottomFitLength =
+		(CssBorderBottomFitLength) style.CascadingOrder(
+								new CssBorderBottomFitLength(), style, selector);
+	}
+	return cssBorderBottomFitLength;
+    }
+
+    public CssBorderLeftFitLength getBorderLeftFitLength() {
+	if (cssBorderLeftFitLength == null) {
+	    cssBorderLeftFitLength =
+		(CssBorderLeftFitLength) style.CascadingOrder(
+							      new CssBorderLeftFitLength(), style, selector);
+	}
+	return cssBorderLeftFitLength;
+    }
+
+    public CssBorderRightFitLength getBorderRightFitLength() {
+	if (cssBorderRightFitLength == null) {
+	    cssBorderRightFitLength =
+		(CssBorderRightFitLength) style.CascadingOrder(
+							       new CssBorderRightFitLength(), style, selector);
+	}
+	return cssBorderRightFitLength;
+    }
+
+    public CssBorderTopFitWidth getBorderTopFitWidth() {
+	if (cssBorderTopFitWidth == null) {
+	    cssBorderTopFitWidth =
+		(CssBorderTopFitWidth) style.CascadingOrder(
+							    new CssBorderTopFitWidth(), style, selector);
+	}
+	return cssBorderTopFitWidth;
+    }
+
+    public CssBorderBottomFitWidth getBorderBottomFitWidth() {
+	if (cssBorderBottomFitWidth == null) {
+	    cssBorderBottomFitWidth =
+		(CssBorderBottomFitWidth) style.CascadingOrder(
+							       new CssBorderBottomFitWidth(), style, selector);
+	}
+	return cssBorderBottomFitWidth;
+    }
+
+    public CssBorderLeftFitWidth getBorderLeftFitWidth() {
+	if (cssBorderLeftFitWidth == null) {
+	    cssBorderLeftFitWidth =
+		(CssBorderLeftFitWidth) style.CascadingOrder(
+							     new CssBorderLeftFitWidth(), style, selector);
+	}
+	return cssBorderLeftFitWidth;
+    }
+
+    public CssBorderRightFitWidth getBorderRightFitWidth() {
+	if (cssBorderRightFitWidth == null) {
+	    cssBorderRightFitWidth =
+		(CssBorderRightFitWidth) style.CascadingOrder(
+							      new CssBorderRightFitWidth(), style, selector);
+	}
+	return cssBorderRightFitWidth;
+    }
+
+    public CssBorderTopLeftFitLength getBorderTopLeftFitLength() {
+	if (cssBorderTopLeftFitLength == null) {
+	    cssBorderTopLeftFitLength =
+		(CssBorderTopLeftFitLength) style.CascadingOrder(
+								 new CssBorderTopLeftFitLength(), style, selector);
+	}
+	return cssBorderTopLeftFitLength;
+    }
+
+    public CssBorderTopRightFitLength getBorderTopRightFitLength() {
+	if (cssBorderTopRightFitLength == null) {
+	    cssBorderTopRightFitLength =
+		(CssBorderTopRightFitLength) style.CascadingOrder(
+								  new CssBorderTopRightFitLength(), style, selector);
+	}
+	return cssBorderTopRightFitLength;
+    }
+
+    public CssBorderBottomLeftFitLength getBorderBottomLeftFitLength() {
+	if (cssBorderBottomLeftFitLength == null) {
+	    cssBorderBottomLeftFitLength =
+		(CssBorderBottomLeftFitLength) style.CascadingOrder(
+								    new CssBorderBottomLeftFitLength(), style, selector);
+	}
+	return cssBorderBottomLeftFitLength;
+    }
+
+    public CssBorderBottomRightFitLength getBorderBottomRightFitLength() {
+	if (cssBorderBottomRightFitLength == null) {
+	    cssBorderBottomRightFitLength =
+		(CssBorderBottomRightFitLength) style.CascadingOrder(
+								     new CssBorderBottomRightFitLength(), style, selector);
+	}
+	return cssBorderBottomRightFitLength;
+    }
+
+    public CssBorderTopLeftFitWidth getBorderTopLeftFitWidth() {
+	if (cssBorderTopLeftFitWidth == null) {
+	    cssBorderTopLeftFitWidth =
+		(CssBorderTopLeftFitWidth) style.CascadingOrder(
+								new CssBorderTopLeftFitWidth(), style, selector);
+	}
+	return cssBorderTopLeftFitWidth;
+    }
+
+    public CssBorderTopRightFitWidth getBorderTopRightFitWidth() {
+	if (cssBorderTopRightFitWidth == null) {
+	    cssBorderTopRightFitWidth =
+		(CssBorderTopRightFitWidth) style.CascadingOrder(
+								 new CssBorderTopRightFitWidth(), style, selector);
+	}
+	return cssBorderTopRightFitWidth;
+    }
+
+    public CssBorderBottomLeftFitWidth getBorderBottomLeftFitWidth() {
+	if (cssBorderBottomLeftFitWidth == null) {
+	    cssBorderBottomLeftFitWidth =
+		(CssBorderBottomLeftFitWidth) style.CascadingOrder(
+								   new CssBorderBottomLeftFitWidth(), style, selector);
+	}
+	return cssBorderBottomLeftFitWidth;
+    }
+
+    public CssBorderBottomRightFitWidth getBorderBottomRightFitWidth() {
+	if (cssBorderBottomRightFitWidth == null) {
+	    cssBorderBottomRightFitWidth =
+		(CssBorderBottomRightFitWidth) style.CascadingOrder(
+								    new CssBorderBottomRightFitWidth(), style, selector);
+	}
+	return cssBorderBottomRightFitWidth;
+    }
+
+    public CssBorderFitLength getBorderFitLength() {
+	if (cssBorderFitLength == null) {
+	    cssBorderFitLength =
+		(CssBorderFitLength) style.CascadingOrder(
+							  new CssBorderFitLength(), style, selector);
+	}
+	return cssBorderFitLength;
+    }
+
+    public CssBorderFitWidth getBorderFitWidth() {
+	if (cssBorderFitWidth == null) {
+	    cssBorderFitWidth =
+		(CssBorderFitWidth) style.CascadingOrder(
+							 new CssBorderFitWidth(), style, selector);
+	}
+	return cssBorderFitWidth;
+    }
+
+    public CssBorderFit getBorderFit() {
+	if (cssBorderFit == null) {
+	    cssBorderFit =
+		(CssBorderFit) style.CascadingOrder(
+						    new CssBorderFit(), style, selector);
+	}
+	return cssBorderFit;
+    }
+
+    public CssBorderCornerFit getBorderCornerFit() {
+	if (cssBorderCornerFit == null) {
+	    cssBorderCornerFit =
+		(CssBorderCornerFit) style.CascadingOrder(
+							  new CssBorderCornerFit(), style, selector);
+	}
+	return cssBorderCornerFit;
+    }
+
+    public CssBorderImageTransform getBorderImageTransform() {
+	if (cssBorderImageTransform == null) {
+	    cssBorderImageTransform =
+		(CssBorderImageTransform) style.CascadingOrder(
+							       new CssBorderImageTransform(), style, selector);
+	}
+	return cssBorderImageTransform;
+    }
+
+    public CssBorderBreak getBorderBreak() {
+	if (cssBorderBreak == null) {
+	    cssBorderBreak =
+		(CssBorderBreak) style.CascadingOrder(
+						      new CssBorderBreak(), style, selector);
+	}
+	return cssBorderBreak;
+    }
+
+    public CssBoxShadow getBoxShadow() {
+	if (cssBoxShadow == null) {
+	    cssBoxShadow =
+		(CssBoxShadow) style.CascadingOrder(
+						    new CssBoxShadow(), style, selector);
+	}
+	return cssBoxShadow;
+    }
+
+    public CssTextIndentCSS3 getTextIndentCSS3() {
+	if (cssTextIndentCSS3 == null) {
+	    cssTextIndentCSS3 =
+		(CssTextIndentCSS3) style.CascadingOrder(
+							 new CssTextIndentCSS3(), style, selector);
+	}
+	return cssTextIndentCSS3;
+    }
+
+    public CssBlockProgression getBlockProgression() {
+	if (cssBlockProgression == null) {
+	    cssBlockProgression =
+		(CssBlockProgression) style.CascadingOrder(
+							   new CssBlockProgression(), style, selector);
+	}
+	return cssBlockProgression;
+    }
+
+    // media features
+
+
+    public MediaWidth getMediaWidth() {
+	if (mediaWidth == null) {
+	    mediaWidth =
+		(MediaWidth) style.CascadingOrder(
+						  new MediaWidth(), style, selector);
+	}
+	return mediaWidth;
+    }
+
+    public MediaMinWidth getMediaMinWidth() {
+	if (mediaMinWidth == null) {
+	    mediaMinWidth =
+		(MediaMinWidth) style.CascadingOrder(
+						     new MediaMinWidth(), style, selector);
+	}
+	return mediaMinWidth;
+    }
+
+    public MediaMaxWidth getMediaMaxWidth() {
+	if (mediaMaxWidth == null) {
+	    mediaMaxWidth =
+		(MediaMaxWidth) style.CascadingOrder(
+						     new MediaMaxWidth(), style, selector);
+	}
+	return mediaMaxWidth;
+    }
+
+    public MediaHeight getMediaHeight() {
+	if (mediaHeight == null) {
+	    mediaHeight =
+		(MediaHeight) style.CascadingOrder(
+						   new MediaHeight(), style, selector);
+	}
+	return mediaHeight;
+    }
+
+    public MediaMinHeight getMediaMinHeight() {
+	if (mediaMinHeight == null) {
+	    mediaMinHeight =
+		(MediaMinHeight) style.CascadingOrder(
+						      new MediaMinHeight(), style, selector);
+	}
+	return mediaMinHeight;
+    }
+
+    public MediaMaxHeight getMediaMaxHeight() {
+	if (mediaMaxHeight == null) {
+	    mediaMaxHeight =
+		(MediaMaxHeight) style.CascadingOrder(
+						      new MediaMaxHeight(), style, selector);
+	}
+	return mediaMaxHeight;
+    }
+
+    public MediaDeviceWidth getMediaDeviceWidth() {
+	if (mediaDeviceWidth == null) {
+	    mediaDeviceWidth =
+		(MediaDeviceWidth) style.CascadingOrder(
+							new MediaDeviceWidth(), style, selector);
+	}
+	return mediaDeviceWidth;
+    }
+
+    public MediaMinDeviceWidth getMediaMinDeviceWidth() {
+	if (mediaMinDeviceWidth == null) {
+	    mediaMinDeviceWidth =
+		(MediaMinDeviceWidth) style.CascadingOrder(
+							   new MediaMinDeviceWidth(), style, selector);
+	}
+	return mediaMinDeviceWidth;
+    }
+
+    public MediaMaxDeviceWidth getMediaMaxDeviceWidth() {
+	if (mediaMaxDeviceWidth == null) {
+	    mediaMaxDeviceWidth =
+		(MediaMaxDeviceWidth) style.CascadingOrder(
+							   new MediaMaxDeviceWidth(), style, selector);
+	}
+	return mediaMaxDeviceWidth;
+    }
+
+    public MediaDeviceHeight getMediaDeviceHeight() {
+	if (mediaDeviceHeight == null) {
+	    mediaDeviceHeight =
+		(MediaDeviceHeight) style.CascadingOrder(
+							 new MediaDeviceHeight(), style, selector);
+	}
+	return mediaDeviceHeight;
+    }
+
+    public MediaMinDeviceHeight getMediaMinDeviceHeight() {
+	if (mediaMinDeviceHeight == null) {
+	    mediaMinDeviceHeight =
+		(MediaMinDeviceHeight) style.CascadingOrder(
+							    new MediaMinDeviceHeight(), style, selector);
+	}
+	return mediaMinDeviceHeight;
+    }
+
+    public MediaMaxDeviceHeight getMediaMaxDeviceHeight() {
+	if (mediaMaxDeviceHeight == null) {
+	    mediaMaxDeviceHeight =
+		(MediaMaxDeviceHeight) style.CascadingOrder(
+							    new MediaMaxDeviceHeight(), style, selector);
+	}
+	return mediaMaxDeviceHeight;
+    }
+
+    public MediaDeviceAspectRatio getMediaDeviceAspectRatio() {
+	if (mediaDeviceAspectRatio == null) {
+	    mediaDeviceAspectRatio =
+		(MediaDeviceAspectRatio) style.CascadingOrder(
+							      new MediaDeviceAspectRatio(), style, selector);
+	}
+	return mediaDeviceAspectRatio;
+    }
+
+    public MediaMinDeviceAspectRatio getMediaMinDeviceAspectRatio() {
+	if (mediaMinDeviceAspectRatio == null) {
+	    mediaMinDeviceAspectRatio =
+		(MediaMinDeviceAspectRatio) style.CascadingOrder(
+								 new MediaMinDeviceAspectRatio(), style, selector);
+	}
+	return mediaMinDeviceAspectRatio;
+    }
+
+    public MediaMaxDeviceAspectRatio getMediaMaxDeviceAspectRatio() {
+	if (mediaMaxDeviceAspectRatio == null) {
+	    mediaMaxDeviceAspectRatio =
+		(MediaMaxDeviceAspectRatio) style.CascadingOrder(
+								 new MediaMaxDeviceAspectRatio(), style, selector);
+	}
+	return mediaMaxDeviceAspectRatio;
+    }
+
+    public MediaColor getMediaColor() {
+	if (mediaColor == null) {
+	    mediaColor =
+		(MediaColor) style.CascadingOrder(
+						  new MediaColor(), style, selector);
+	}
+	return mediaColor;
+    }
+
+    public MediaMinColor getMediaMinColor() {
+	if (mediaMinColor == null) {
+	    mediaMinColor =
+		(MediaMinColor) style.CascadingOrder(
+						     new MediaMinColor(), style, selector);
+	}
+	return mediaMinColor;
+    }
+
+    public MediaMaxColor getMediaMaxColor() {
+	if (mediaMaxColor == null) {
+	    mediaMaxColor =
+		(MediaMaxColor) style.CascadingOrder(
+						     new MediaMaxColor(), style, selector);
+	}
+	return mediaMaxColor;
+    }
+
+    public MediaColorIndex getMediaColorIndex() {
+	if (mediaColorIndex == null) {
+	    mediaColorIndex =
+		(MediaColorIndex) style.CascadingOrder(
+						       new MediaColorIndex(), style, selector);
+	}
+	return mediaColorIndex;
+    }
+
+    public MediaMinColorIndex getMediaMinColorIndex() {
+	if (mediaMinColorIndex == null) {
+	    mediaMinColorIndex =
+		(MediaMinColorIndex) style.CascadingOrder(
+							  new MediaMinColorIndex(), style, selector);
+	}
+	return mediaMinColorIndex;
+    }
+
+    public MediaMaxColorIndex getMediaMaxColorIndex() {
+	if (mediaMaxColorIndex == null) {
+	    mediaMaxColorIndex =
+		(MediaMaxColorIndex) style.CascadingOrder(
+							  new MediaMaxColorIndex(), style, selector);
+	}
+	return mediaMaxColorIndex;
+    }
+
+    public MediaMonochrome getMediaMonochrome() {
+	if (mediaMonochrome == null) {
+	    mediaMonochrome =
+		(MediaMonochrome) style.CascadingOrder(
+						       new MediaMonochrome(), style, selector);
+	}
+	return mediaMonochrome;
+    }
+
+    public MediaMinMonochrome getMediaMinMonochrome() {
+	if (mediaMinMonochrome == null) {
+	    mediaMinMonochrome =
+		(MediaMinMonochrome) style.CascadingOrder(
+							  new MediaMinMonochrome(), style, selector);
+	}
+	return mediaMinMonochrome;
+    }
+
+    public MediaMaxMonochrome getMediaMaxMonochrome() {
+	if (mediaMaxMonochrome == null) {
+	    mediaMaxMonochrome =
+		(MediaMaxMonochrome) style.CascadingOrder(
+							  new MediaMaxMonochrome(), style, selector);
+	}
+	return mediaMaxMonochrome;
+    }
+
+    public MediaResolution getMediaResolution() {
+	if (mediaResolution == null) {
+	    mediaResolution =
+		(MediaResolution) style.CascadingOrder(
+						       new MediaResolution(), style, selector);
+	}
+	return mediaResolution;
+    }
+
+    public MediaMinResolution getMediaMinResolution() {
+	if (mediaMinResolution == null) {
+	    mediaMinResolution =
+		(MediaMinResolution) style.CascadingOrder(
+							  new MediaMinResolution(), style, selector);
+	}
+	return mediaMinResolution;
+    }
+
+    public MediaMaxResolution getMediaMaxResolution() {
+	if (mediaMaxResolution == null) {
+	    mediaMaxResolution =
+		(MediaMaxResolution) style.CascadingOrder(
+							  new MediaMaxResolution(), style, selector);
+	}
+	return mediaMaxResolution;
+    }
+
+    public MediaScan getMediaScan() {
+	if (mediaScan == null) {
+	    mediaScan =
+		(MediaScan) style.CascadingOrder(
+						 new MediaScan(), style, selector);
+	}
+	return mediaScan;
+    }
+
+    public MediaGrid getMediaGrid() {
+	if (mediaGrid == null) {
+	    mediaGrid =
+		(MediaGrid) style.CascadingOrder(
+						 new MediaGrid(), style, selector);
+	}
+	return mediaGrid;
+    }
+
+    /**
+     * Print this style
+     *
+     * @param printer The printer interface
+     */
+    public void print(CssPrinterStyle printer) {
+	super.print(printer);
+
+	if (cssOpacity != null) {
+	    cssOpacity.print(printer);
+	}
+	if (cssRenderIntent != null) {
+	    cssRenderIntent.print(printer);
+	}
+	if (cssColorProfile != null) {
+	    cssColorProfile.print(printer);
+	}
+	if (cssFontEffect != null) {
+	    cssFontEffect.print(printer);
+	}
+	if (cssFontSmooth != null) {
+	    cssFontEffect.print(printer);
+	}
+	if (cssFontEmphasizeStyle != null) {
+	    cssFontEmphasizeStyle.print(printer);
+	}
+	if (cssFontEmphasizePos != null) {
+	    cssFontEmphasizeStyle.print(printer);
+	}
+	if (cssFontEmphasize != null) {
+	    cssFontEmphasize.print(printer);
+	}
+	if (cssRubyPosition != null) {
+	    cssRubyPosition.print(printer);
+	}
+	if (cssRubyAlign != null) {
+	    cssRubyAlign.print(printer);
+	}
+	if (cssRubyOverhang != null) {
+	    cssRubyOverhang.print(printer);
+	}
+	if (cssBoxSizing != null) {
+	    cssBoxSizing.print(printer);
+	}
+	if (cssResizer != null) {
+	    cssResizer.print(printer);
+	}
+	if (cssKeyEq != null) {
+	    cssKeyEq.print(printer);
+	}
+	if (cssTabIndex != null) {
+	    cssTabIndex.print(printer);
+	}
+	if (cssUserInput != null) {
+	    cssUserInput.print(printer);
+	}
+	if (cssUserModify != null) {
+	    cssUserModify.print(printer);
+	}
+	if (cssUserSelect != null) {
+	    cssUserSelect.print(printer);
+	}
+	if (cssUserFocus != null) {
+	    cssUserFocus.print(printer);
+	}
+	if (cssUserFocusKey != null) {
+	    cssUserFocusKey.print(printer);
+	}
+	if (cssUserFocusPointer != null) {
+	    cssUserFocusPointer.print(printer);
+	}
+	if (cssToggleGroup != null) {
+	    cssToggleGroup.print(printer);
+	}
+	if (cssGroupReset != null) {
+	    cssGroupReset.print(printer);
+	}
+	if (cssWritingMode != null) {
+	    cssWritingMode.print(printer);
+	}
+	if (cssGlyphOrVert != null) {
+	    cssGlyphOrVert.print(printer);
+	}
+	if (cssGlyphHor != null) {
+	    cssGlyphHor.print(printer);
+	}
+	if (cssTextJustify != null) {
+	    cssTextJustify.print(printer);
+	}
+	if (cssTextAlignLast != null) {
+	    cssTextAlignLast.print(printer);
+	}
+	if (cssMinFontSize != null) {
+	    cssMinFontSize.print(printer);
+	}
+	if (cssMaxFontSize != null) {
+	    cssMaxFontSize.print(printer);
+	}
+	if (cssTextJustifyTrim != null) {
+	    cssTextJustifyTrim.print(printer);
+	}
+	if (cssTextKashidaSpace != null) {
+	    cssTextKashidaSpace.print(printer);
+	}
+	if (cssDominantBaseLine != null) {
+	    cssDominantBaseLine.print(printer);
+	}
+	if (cssAlignmentBaseLine != null) {
+	    cssAlignmentBaseLine.print(printer);
+	}
+	if (cssAlignmentAdjust != null) {
+	    cssAlignmentAdjust.print(printer);
+	}
+	if (cssBaselineShift != null) {
+	    cssBaselineShift.print(printer);
+	}
+	if (cssLineBreak != null) {
+	    cssLineBreak.print(printer);
+	}
+	if (cssWordBreakCJK != null) {
+	    cssWordBreakCJK.print(printer);
+	}
+	if (cssWordBreakInside != null) {
+	    cssWordBreakInside.print(printer);
+	}
+	if (cssWordBreak != null) {
+	    cssWordBreak.print(printer);
+	}
+	if (cssTextSpace != null) {
+	    cssTextSpace.print(printer);
+	}
+	if (cssTextEndOverflow != null) {
+	    cssTextEndOverflow.print(printer);
+	}
+	if (cssTextAfterOverflow != null) {
+	    cssTextAfterOverflow.print(printer);
+	}
+	if (cssPunctuationTrim != null) {
+	    cssPunctuationTrim.print(printer);
+	}
+	if (cssTextAutoSpace != null) {
+	    cssTextAutoSpace.print(printer);
+	}
+	if (cssKerningMode != null) {
+	    cssKerningMode.print(printer);
+	}
+	if (cssKerningPairTreshold != null) {
+	    cssKerningPairTreshold.print(printer);
+	}
+	if (cssTextUlStyle != null) {
+	    cssTextUlStyle.print(printer);
+	}
+	if (cssTextUlColor != null) {
+	    cssTextUlColor.print(printer);
+	}
+	if (cssTextUlMode != null) {
+	    cssTextUlMode.print(printer);
+	}
+	if (cssTextUlPos != null) {
+	    cssTextUlPos.print(printer);
+	}
+	if (cssTextUnderLine != null) {
+	    cssTextUnderLine.print(printer);
+	}
+	if (cssTextLTStyle != null) {
+	    cssTextLTStyle.print(printer);
+	}
+	if (cssTextLTColor != null) {
+	    cssTextLTColor.print(printer);
+	}
+	if (cssTextLTMode != null) {
+	    cssTextLTMode.print(printer);
+	}
+	if (cssTextLineThrough != null) {
+	    cssTextLineThrough.print(printer);
+	}
+	if (cssTextOLStyle != null) {
+	    cssTextOLStyle.print(printer);
+	}
+	if (cssTextOLColor != null) {
+	    cssTextOLColor.print(printer);
+	}
+	if (cssTextOLMode != null) {
+	    cssTextOLMode.print(printer);
+	}
+	if (cssTextOverLine != null) {
+	    cssTextOverLine.print(printer);
+	}
+	if (cssTextCombine != null) {
+	    cssTextCombine.print(printer);
+	}
+	if (cssMedia != null) {
+	    cssMedia.print(printer);
+	}
+	if (cssDisplayModel != null) {
+	    cssDisplayModel.print(printer);
+	}
+	if (cssDisplayRole != null) {
+	    cssDisplayRole.print(printer);
+	}
+	if (cssMarginInside != null) {
+	    cssMarginInside.print(printer);
+	}
+	if (cssMarginOutside != null) {
+	    cssMarginOutside.print(printer);
+	}
+	if (cssFit != null) {
+	    cssFit.print(printer);
+	}
+	if (cssLink != null) {
+	    cssLink.print(printer);
+	}
+	if (cssLinkBehavior != null) {
+	    cssLinkBehavior.print(printer);
+	}
+	if (cssCollapse != null) {
+	    cssCollapse.print(printer);
+	}
+	if (cssFloatCSS3 != null) {
+	    cssFloatCSS3.print(printer);
+	}
+	if (cssClearCSS3 != null) {
+	    cssClearCSS3.print(printer);
+	}
+	if (cssLineHeightPolicy != null) {
+	    cssLineHeightPolicy.print(printer);
+	}
+	if (cssLineBoxContain != null) {
+	    cssLineBoxContain.print(printer);
+	}
+	if (cssColumnCount != null) {
+	    cssColumnCount.print(printer);
+	}
+	if (cssColumnWidth != null) {
+	    cssColumnWidth.print(printer);
+	}
+	if (cssColumnSpan != null) {
+	    cssColumnSpan.print(printer);
+	}
+	if (cssBackgroundClip != null) {
+	    cssBackgroundClip.print(printer);
+	}
+	if (cssBackgroundSize != null) {
+	    cssBackgroundSize.print(printer);
+	}
+	if (cssBackgroundOrigin != null) {
+	    cssBackgroundOrigin.print(printer);
+	}
+	if (cssBackgroundQuantity != null) {
+	    cssBackgroundQuantity.print(printer);
+	}
+	if (cssBackgroundSpacing != null) {
+	    cssBackgroundSpacing.print(printer);
+	}
+	if (cssTextDecoration != null) {
+	    cssTextDecoration.print(printer);
+	}
+	if (cssWhiteSpace != null) {
+	    cssWhiteSpace.print(printer);
+	}
+	if (cssWordSpacing != null) {
+	    cssWordSpacing.print(printer);
+	}
+	if (cssAllSpaceTreatment != null) {
+	    cssAllSpaceTreatment.print(printer);
+	}
+	if (cssHangingPunctuation != null) {
+	    cssHangingPunctuation.print(printer);
+	}
+	if (cssLineGrid != null) {
+	    cssLineGrid.print(printer);
+	}
+	if (cssLineGridMode != null) {
+	    cssLineGridMode.print(printer);
+	}
+	if (cssLineGridProgression != null) {
+	    cssLineGridProgression.print(printer);
+	}
+	if (cssLinefeedTreatment != null) {
+	    cssLinefeedTreatment.print(printer);
+	}
+	if (cssScript != null) {
+	    cssScript.print(printer);
+	}
+	if (cssTextOverflow != null) {
+	    cssTextOverflow.print(printer);
+	}
+	if (cssTextOverflowEllipsis != null) {
+	    cssTextOverflowEllipsis.print(printer);
+	}
+	if (cssTextOverflowMode != null) {
+	    cssTextOverflowMode.print(printer);
+	}
+	if (cssWhiteSpaceTreatment != null) {
+	    cssWhiteSpaceTreatment.print(printer);
+	}
+	if (cssWrapOption != null) {
+	    cssWrapOption.print(printer);
+	}
+	if (cssColumnGap != null) {
+	    cssColumnGap.print(printer);
+	}
+	if (cssColumnRuleColor != null) {
+	    cssColumnRuleColor.print(printer);
+	}
+	if (cssColumnRuleStyle != null) {
+	    cssColumnRuleStyle.print(printer);
+	}
+	if (cssColumnRuleWidth != null) {
+	    cssColumnRuleWidth.print(printer);
+	}
+	if (cssColumnRule != null) {
+	    cssColumnRule.print(printer);
+	}
+	if (cssDropInitialAfterAdjust != null) {
+	    cssDropInitialAfterAdjust.print(printer);
+	}
+	if (cssDropInitialAfterAlign != null) {
+	    cssDropInitialAfterAlign.print(printer);
+	}
+	if (cssDropInitialBeforeAdjust != null) {
+	    cssDropInitialBeforeAdjust.print(printer);
+	}
+	if (cssDropInitialBeforeAlign != null) {
+	    cssDropInitialBeforeAlign.print(printer);
+	}
+	if (cssDropInitialSize != null) {
+	    cssDropInitialSize.print(printer);
+	}
+	if (cssDropInitialValue != null) {
+	    cssDropInitialValue.print(printer);
+	}
+	if (cssInlineBoxAlign != null) {
+	    cssInlineBoxAlign.print(printer);
+	}
+	if (cssLineStacking != null) {
+	    cssLineStacking.print(printer);
+	}
+	if (cssLineStackingRuby != null) {
+	    cssLineStackingRuby.print(printer);
+	}
+	if (cssLineStackingShift != null) {
+	    cssLineStackingShift.print(printer);
+	}
+	if (cssLineStackingStrategy != null) {
+	    cssLineStackingStrategy.print(printer);
+	}
+	if (cssTextHeight != null) {
+	    cssTextHeight.print(printer);
+	}
+	if (cssAppearance != null) {
+	    cssAppearance.print(printer);
+	}
+	if (cssIcon != null) {
+	    cssIcon.print(printer);
+	}
+	if (cssNavIndex != null) {
+	    cssNavIndex.print(printer);
+	}
+	if (cssNavUp != null) {
+	    cssNavUp.print(printer);
+	}
+	if (cssNavRight != null) {
+	    cssNavRight.print(printer);
+	}
+	if (cssNavDown != null) {
+	    cssNavDown.print(printer);
+	}
+	if (cssNavLeft != null) {
+	    cssNavLeft.print(printer);
+	}
+	if (cssOutlineOffset != null) {
+	    cssOutlineOffset.print(printer);
+	}
+	if (cssOverflowX != null) {
+	    cssOverflowX.print(printer);
+	}
+	if (cssOverflowY != null) {
+	    cssOverflowY.print(printer);
+	}
+	if (cssRubySpan != null) {
+	    cssRubySpan.print(printer);
+	}
+	if (cssTextBlink != null) {
+	    cssTextBlink.print(printer);
+	}
+	if (cssClearAfter != null) {
+	    cssClearAfter.print(printer);
+	}
+	if (cssCrop != null) {
+	    cssCrop.print(printer);
+	}
+	if (cssFitPosition != null) {
+	    cssFitPosition.print(printer);
+	}
+	if (cssFloatDisplace != null) {
+	    cssFloatDisplace.print(printer);
+	}
+	if (cssIndentEdgeReset != null) {
+	    cssIndentEdgeReset.print(printer);
+	}
+	if (cssVisibilityCSS3 != null) {
+	    cssVisibilityCSS3.print(printer);
+	}
+	if (cssOverflowCSS3 != null) {
+	    cssOverflowCSS3.print(printer);
+	}
+	if (cssOverflowClip != null) {
+	    cssOverflowClip.print(printer);
+	}
+	if (cssMaxWidthCSS3 != null) {
+	    cssMaxWidthCSS3.print(printer);
+	}
+	if (cssMaxHeightCSS3 != null) {
+	    cssMaxHeightCSS3.print(printer);
+	}
+	if (cssMinWidthCSS3 != null) {
+	    cssMinWidthCSS3.print(printer);
+	}
+	if (cssMinHeightCSS3 != null) {
+	    cssMinHeightCSS3.print(printer);
+	}
+	if (cssPaddingCSS3 != null) {
+	    cssPaddingCSS3.print(printer);
+	}
+	if (cssPaddingTopCSS3 != null) {
+	    cssPaddingTopCSS3.print(printer);
+	}
+	if (cssPaddingBottomCSS3 != null) {
+	    cssPaddingBottomCSS3.print(printer);
+	}
+	if (cssPaddingLeftCSS3 != null) {
+	    cssPaddingLeftCSS3.print(printer);
+	}
+	if (cssPaddingRightCSS3 != null) {
+	    cssPaddingRightCSS3.print(printer);
+	}
+	if (cssWidthCSS3 != null){
+	    cssWidthCSS3.print(printer);
+	}
+	if (cssHeightCSS3 != null) {
+	    cssHeightCSS3.print(printer);
+	}
+	if (cssMarquee != null) {
+	    cssMarquee.print(printer);
+	}
+	if (cssMarqueeDirection != null) {
+	    cssMarqueeDirection.print(printer);
+	}
+	if (cssMarqueeRepetition != null) {
+	    cssMarqueeRepetition.print(printer);
+	}
+	if (cssMarqueeSpeed != null) {
+	    cssMarqueeSpeed.print(printer);
+	}
+	if (cssMarqueeStyle != null) {
+	    cssMarqueeStyle.print(printer);
+	}
+	if (cssBorderTopRightRadius  != null) {
+	    cssBorderTopRightRadius.print(printer);
+	}
+	if (cssBorderBottomRightRadius != null) {
+	    cssBorderBottomRightRadius.print(printer);
+	}
+	if (cssBorderBottomLeftRadius != null) {
+	    cssBorderBottomLeftRadius.print(printer);
+	}
+	if (cssBorderTopLeftRadius != null) {
+	    cssBorderTopLeftRadius.print(printer);
+	}
+	if (cssBorderRadius != null) {
+	    cssBorderRadius.print(printer);
+	}
+	if (cssBorderTopImage != null) {
+	    cssBorderTopImage.print(printer);
+	}
+	if (cssBorderBottomImage != null) {
+	    cssBorderBottomImage.print(printer);
+	}
+	if (cssBorderLeftImage != null) {
+	    cssBorderLeftImage.print(printer);
+	}
+	if (cssBorderRightImage != null) {
+	    cssBorderRightImage.print(printer);
+	}
+	if (cssBorderImage != null) {
+	    cssBorderImage.print(printer);
+	}
+	if (cssBorderTopLeftImage != null) {
+	    cssBorderTopLeftImage.print(printer);
+	}
+	if (cssBorderTopRightImage != null) {
+	    cssBorderTopRightImage.print(printer);
+	}
+	if (cssBorderBottomLeftImage != null) {
+	    cssBorderBottomLeftImage.print(printer);
+	}
+	if (cssBorderBottomRightImage != null) {
+	    cssBorderBottomRightImage.print(printer);
+	}
+	if (cssBorderCornerImage != null) {
+	    cssBorderCornerImage.print(printer);
+	}
+	if (cssBorderTopFitLength != null) {
+	    cssBorderTopFitLength.print(printer);
+	}
+	if (cssBorderBottomFitLength != null) {
+	    cssBorderBottomFitLength.print(printer);
+	}
+	if (cssBorderLeftFitLength != null) {
+	    cssBorderLeftFitLength.print(printer);
+	}
+	if (cssBorderRightFitLength != null) {
+	    cssBorderRightFitLength.print(printer);
+	}
+	if (cssBorderTopFitWidth != null) {
+	    cssBorderTopFitWidth.print(printer);
+	}
+	if (cssBorderBottomFitWidth != null) {
+	    cssBorderBottomFitWidth.print(printer);
+	}
+	if (cssBorderLeftFitWidth != null) {
+	    cssBorderLeftFitWidth.print(printer);
+	}
+	if (cssBorderRightFitWidth != null) {
+	    cssBorderRightFitWidth.print(printer);
+	}
+	if (cssBorderTopLeftFitLength != null) {
+	    cssBorderTopLeftFitLength.print(printer);
+	}
+	if (cssBorderTopRightFitLength != null) {
+	    cssBorderTopRightFitLength.print(printer);
+	}
+	if (cssBorderBottomLeftFitLength != null) {
+	    cssBorderBottomLeftFitLength.print(printer);
+	}
+	if (cssBorderBottomRightFitLength != null) {
+	    cssBorderBottomRightFitLength.print(printer);
+	}
+	if (cssBorderTopLeftFitWidth != null) {
+	    cssBorderTopLeftFitWidth.print(printer);
+	}
+	if (cssBorderTopRightFitWidth != null) {
+	    cssBorderTopRightFitWidth.print(printer);
+	}
+	if (cssBorderBottomLeftFitWidth != null) {
+	    cssBorderBottomLeftFitWidth.print(printer);
+	}
+	if (cssBorderBottomRightFitWidth != null) {
+	    cssBorderBottomRightFitWidth.print(printer);
+	}
+	if (cssBorderFitLength != null) {
+	    cssBorderFitLength.print(printer);
+	}
+	if (cssBorderFitWidth != null) {
+	    cssBorderFitWidth.print(printer);
+	}
+	if (cssBorderFit != null) {
+	    cssBorderFit.print(printer);
+	}
+	if (cssBorderCornerFit != null) {
+	    cssBorderCornerFit.print(printer);
+	}
+	if (cssBorderImageTransform != null) {
+	    cssBorderImageTransform.print(printer);
+	}
+	if (cssBorderBreak != null) {
+	    cssBorderBreak.print(printer);
+	}
+	if (cssBoxShadow != null) {
+	    cssBoxShadow.print(printer);
+	}
+	if (cssTextIndentCSS3 != null) {
+	    cssTextIndentCSS3.print(printer);
+	}
+
+
+	// media features
+
+
+	if (mediaWidth != null) {
+	    mediaWidth.print(printer);
+	}
+	if (mediaMinWidth != null) {
+	    mediaMinWidth.print(printer);
+	}
+	if (mediaMaxWidth != null) {
+	    mediaMaxWidth.print(printer);
+	}
+	if (mediaHeight != null) {
+	    mediaHeight.print(printer);
+	}
+	if (mediaMinHeight != null) {
+	    mediaMinHeight.print(printer);
+	}
+	if (mediaMaxHeight != null) {
+	    mediaMaxHeight.print(printer);
+	}
+	if (mediaDeviceWidth != null) {
+	    mediaDeviceWidth.print(printer);
+	}
+	if (mediaMinDeviceWidth != null) {
+	    mediaMinDeviceWidth.print(printer);
+	}
+	if (mediaMaxDeviceWidth != null) {
+	    mediaMaxDeviceWidth.print(printer);
+	}
+	if (mediaDeviceHeight != null) {
+	    mediaDeviceHeight.print(printer);
+	}
+	if (mediaMinDeviceHeight != null) {
+	    mediaMinDeviceHeight.print(printer);
+	}
+	if (mediaMaxDeviceHeight != null) {
+	    mediaMaxDeviceHeight.print(printer);
+	}
+	if (mediaDeviceAspectRatio != null) {
+	    mediaDeviceAspectRatio.print(printer);
+	}
+	if (mediaMinDeviceAspectRatio != null) {
+	    mediaMinDeviceAspectRatio.print(printer);
+	}
+	if (mediaMaxDeviceAspectRatio != null) {
+	    mediaMaxDeviceAspectRatio.print(printer);
+	}
+	if (mediaColor != null) {
+	    mediaColor.print(printer);
+	}
+	if (mediaMinColor != null) {
+	    mediaMinColor.print(printer);
+	}
+	if (mediaMaxColor != null) {
+	    mediaMaxColor.print(printer);
+	}
+	if (mediaColorIndex != null) {
+	    mediaColorIndex.print(printer);
+	}
+	if (mediaMinColorIndex != null) {
+	    mediaMinColorIndex.print(printer);
+	}
+	if (mediaMaxColorIndex != null) {
+	    mediaMaxColorIndex.print(printer);
+	}
+	if (mediaMonochrome != null) {
+	    mediaMonochrome.print(printer);
+	}
+	if (mediaMinMonochrome != null) {
+	    mediaMinMonochrome.print(printer);
+	}
+	if (mediaMaxMonochrome != null) {
+	    mediaMaxMonochrome.print(printer);
+	}
+	if (mediaResolution != null) {
+	    mediaResolution.print(printer);
+	}
+	if (mediaMinResolution != null) {
+	    mediaMinResolution.print(printer);
+	}
+	if (mediaMaxResolution != null) {
+	    mediaMaxResolution.print(printer);
+	}
+	if (mediaScan != null) {
+	    mediaScan.print(printer);
+	}
+	if (mediaGrid != null) {
+	    mediaGrid.print(printer);
+	}
+    }
+
+    /**
+     * Returns the name of the actual selector
+     */
+    public String getSelector()
+    {
+	return (selector.getElement().toLowerCase());
+    }
+
+    /*    public boolean isRubyText() {
+	  return(((selector.getElement()).toLowerCase() == "ruby") ||
+	  ((selector.getElement()).toLowerCase() == "rb") ||
+	  ((selector.getElement()).toLowerCase() == "rt") ||
+	  ((selector.getElement()).toLowerCase() == "rbc") ||
+	  ((selector.getElement()).toLowerCase() == "rtc"));
+	  }
+
+	  public void findConflicts(ApplContext ac) {
+	  if ((cssRubyPosition != null)
+	  && (selector != null)
+	  && (!isRubyText())) {
+	  warnings.addWarning(new Warning(cssRubyPosition,
+	  "ruby-text", 1, ac));
+	  }
+
+	  if ((cssRubyOverhang != null)
+	  && (selector != null)
+	  && (!isRubyText())) {
+	  warnings.addWarning(new Warning(cssRubyOverhang,
+	  "ruby-text", 1, ac));
+	  }
+	  }
+    */
+
+        /**
+     * Find conflicts in this Style
+     * For the float elements
+     *
+     * @param warnings For warnings reports.
+     * @param allSelectors All contexts is the entire style sheet.
+     */   
+    private void findConflictsBlockElements(ApplContext ac, Warnings warnings, 
+					    CssSelectors selector, 
+					    CssSelectors[] allSelectors) {
+	if (Util.fromHTMLFile) {
+	    if ((selector != null) &&
+		(!selector.isBlockLevelElement())) {
+		if (cssColumnCount != null) {
+		    warnings.addWarning(new Warning(cssColumnCount,
+						    "block-level", 1, ac));
+		}
+		if (cssColumnGap != null) {
+		    warnings.addWarning(new Warning(cssColumnGap,
+						    "block-level", 1, ac));
+		}
+		if (cssColumnSpan != null) {
+		    warnings.addWarning(new Warning(cssColumnSpan,
+						    "block-level", 1, ac));
+		}
+		if (cssColumnWidth != null) {
+		    warnings.addWarning(new Warning(cssColumnWidth,
+						    "block-level", 1, ac));
+		}
+	    }
+	}
+    }
+	
+        /**
+     * Find conflicts in this Style
+     *
+     * @param warnings For warnings reports.
+     * @param allSelectors All contexts is the entire style sheet.
+     */
+    public void findConflicts(ApplContext ac, Warnings warnings, 
+	    CssSelectors selector, CssSelectors[] allSelectors) {
+	findConflictsBlockElements(ac, warnings, selector, allSelectors);
+	super.findConflicts(ac, warnings, selector, allSelectors);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssAlignmentAdjust.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,177 @@
+//
+// $Id: CssAlignmentAdjust.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssLength;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> auto || &lt;percentage&gt; || &lt;length&gt; || inherit<BR>
+ *  <EM>Initial:</EM>auto<BR>
+ *  <EM>Applies to:</EM>inline-level elements<BR>
+ *  <EM>Inherited:</EM>yes<BR>
+ *  <EM>Percentages:</EM>refers to the 'line-height' of the element<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  The 'alignment-adjust' property allows more precise alignment of
+ *  elements, such as graphics, that do not have a baseline-table
+ *  or lack the desired baseline in their baseline-table. With the
+ *  'alignment-adjust' property, the position of the baseline
+ *  identified by the 'alignment-baseline' can be explicitly determined.
+ */
+
+public class CssAlignmentAdjust extends CssProperty {
+
+    CssValue alignadjust;
+
+    CssIdent auto = new CssIdent("auto");
+
+    private static String[] values = {
+	"auto", "baseline", "before-edge",
+	"text-before-edge", "middle", "central", "after-edge", "text-after-edge",
+	"ideographic", "alphabetic", "hanging", "mathematical", "inherit", "initial"
+    };
+
+    /**
+     * Create a new CssAlignmentAdjust
+     */
+    public CssAlignmentAdjust() {
+	alignadjust = auto;
+    }
+
+    /**
+     * Create a new CssAlignmentAdjust
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssAlignmentAdjust(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val instanceof CssIdent) {
+	    int i = 0;
+	    for (; i < values.length; i++) {
+		if (val.toString().equals(values[i])) {
+		    alignadjust = val;
+		    expression.next();
+		    break;
+		}
+	    }
+	    if (i == values.length) {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+	}
+	else if (val instanceof CssPercentage) {
+	    alignadjust = val;
+	    expression.next();
+	}
+	else if (val instanceof CssLength) {
+	    alignadjust = val;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+		    getPropertyName(), ac);
+	}
+    }
+
+    public CssAlignmentAdjust(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssAlignmentAdjust != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssAlignmentAdjust = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getAlignmentAdjust();
+	}
+	else {
+	    return ((Css3Style) style).cssAlignmentAdjust;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssAlignmentAdjust &&
+		alignadjust.equals(((CssAlignmentAdjust) property).alignadjust));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "alignment-adjust";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return alignadjust;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return alignadjust.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return alignadjust.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return alignadjust == auto;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssAlignmentBaseLine.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,161 @@
+//
+// $Id: CssAlignmentBaseLine.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> baseline || auto-script || before-edge ||
+ *  text-before-edge || after-edge || text-after-edge || middle ||
+ *  ideographic || lower || hanging || mathematical || inherit<BR>
+ *  <EM>Initial:</EM>baseline<BR>
+ *  <EM>Applies to:</EM>inline-level elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  This property specifies how an inline-level element is aligned with
+ *   respect to its parent.
+ */
+
+public class CssAlignmentBaseLine extends CssProperty {
+
+    CssValue albaseline;
+
+    static CssIdent baseline = new CssIdent("baseline");
+
+    private static String[] values = {
+	"baseline", "use-script", "before-edge",
+	"text-before-edge", "after-edge", "text-after-edge", "central",
+	"middle", "ideographic", "alphabetic", "hanging", "mathematical",
+	"inherit", "initial"
+    };
+
+    /**
+     * Create a new CssAlignmentBaseLine
+     */
+    public CssAlignmentBaseLine() {
+	albaseline = baseline;
+    }
+
+    /**
+     * Create a new CssAlignmentBaseLine
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssAlignmentBaseLine(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	int i = 0;
+	for (; i < values.length; i++) {
+	    if (val.toString().equals(values[i])) {
+		albaseline = val;
+		expression.next();
+		break;
+	    }
+	}
+	if (i == values.length) {
+	    throw new InvalidParamException("value", expression.getValue(),
+		    getPropertyName(), ac);
+	}
+    }
+
+    public CssAlignmentBaseLine(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssAlignmentBaseLine != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssAlignmentBaseLine = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getAlignmentBaseLine();
+	}
+	else {
+	    return ((Css3Style) style).cssAlignmentBaseLine;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssAlignmentBaseLine &&
+		albaseline.equals(((CssAlignmentBaseLine) property).albaseline));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "alignment-baseline";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return albaseline;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return albaseline.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return albaseline.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return (albaseline == baseline);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssAllSpaceTreatment.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,143 @@
+//
+// $Id: CssAllSpaceTreatment.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// COPYRIGHT (c) 1995-2000 World Wide Web Consortium, (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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 CssAllSpaceTreatment extends CssProperty {
+
+    CssValue spacetreat;
+
+    private static CssIdent preserve = new CssIdent("collapse");
+    private static CssIdent collapse = new CssIdent("preserve");
+
+    /**
+     * Create a new CssAllSpaceTreatment
+     */
+    public CssAllSpaceTreatment() {
+	spacetreat = collapse;
+    }
+
+    /**
+     * Create a new CssAllSpaceTreatment
+     *
+     *
+     */
+    public CssAllSpaceTreatment(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	CssValue val = expression.getValue();
+	if (val.equals(preserve)) {
+	    spacetreat = preserve;
+	    expression.next();
+	}
+	else if (val.equals(collapse)) {
+	    spacetreat = collapse;
+	    expression.next();
+	}
+	else if (val.equals(inherit)) {
+	    spacetreat = inherit;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+	}
+    }
+
+    public CssAllSpaceTreatment(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssAllSpaceTreatment != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssAllSpaceTreatment = this;
+
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getAllSpaceTreatment();
+	} else {
+	    return ((Css3Style) style).cssAllSpaceTreatment;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssAllSpaceTreatment &&
+		spacetreat.equals( ((CssAllSpaceTreatment) property).spacetreat));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "all-space-treatment";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return spacetreat;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return spacetreat.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return spacetreat.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return spacetreat == collapse;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssAppearance.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,168 @@
+//
+// $Id: CssAppearance.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> auto || &lt;percentage&gt; || &lt;length&gt; || inherit<BR>
+ *  <EM>Initial:</EM>auto<BR>
+ *  <EM>Applies to:</EM>inline-level elements<BR>
+ *  <EM>Inherited:</EM>yes<BR>
+ *  <EM>Percentages:</EM>refers to the 'line-height' of the element<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  The 'alignment-adjust' property allows more precise alignment of
+ *  elements, such as graphics, that do not have a baseline-table
+ *  or lack the desired baseline in their baseline-table. With the
+ *  'alignment-adjust' property, the position of the baseline
+ *  identified by the 'alignment-baseline' can be explicitly determined.
+ */
+
+public class CssAppearance extends CssProperty {
+
+    CssValue appearance;
+
+    CssIdent normal = new CssIdent("normal");
+
+    private static String[] values = {
+	"normal", "icon", "window", "document", "workspace",
+	"desktop", "tooltip", "dialog", "button", "default-button",
+	"hyperlink", "menu", "pull-down-menu", "pop-up-menu", "list-menu",
+	"field", "inherit"
+    };
+
+    /**
+     * Create a new CssAppearance
+     */
+    public CssAppearance() {
+	appearance = normal;
+    }
+
+    /**
+     * Create a new CssAppearance
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssAppearance(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val instanceof CssIdent) {
+	    int i = 0;
+	    for (; i < values.length; i++) {
+		if (val.toString().equals(values[i])) {
+		    appearance = val;
+		    expression.next();
+		    break;
+		}
+	    }
+	    if (i == values.length) {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+		    getPropertyName(), ac);
+	}
+    }
+
+    public CssAppearance(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssAppearance != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssAppearance = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getAppearance();
+	}
+	else {
+	    return ((Css3Style) style).cssAppearance;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssAppearance &&
+		appearance.equals(((CssAppearance) property).appearance));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "appearance";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return appearance;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return appearance.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return appearance.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return appearance == normal;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssBackgroundCSS3.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,177 @@
+// $Id: CssBackgroundCSS3.java,v 1.2 2009-03-09 21:12:20 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// Revised by: Yves Lafon
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005-2008.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.properties.css1.CssBackgroundAttachmentCSS2;
+import org.w3c.css.properties.css21.CssBackgroundCSS21;
+import org.w3c.css.properties.css1.CssBackgroundImageCSS2;
+import org.w3c.css.properties.css1.CssBackgroundRepeatCSS2;
+import org.w3c.css.properties.css1.CssBackgroundColor;
+import org.w3c.css.properties.css21.CssBackgroundPositionCSS21;
+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;
+import org.w3c.css.values.CssString;
+import org.w3c.css.values.CssTypes;
+import org.w3c.css.values.CssURL;
+
+/**
+ * CssBackgroundCSS21<br />
+ * Created: Aug 31, 2005 2:03:41 PM<br />
+ */
+public class CssBackgroundCSS3 extends CssBackgroundCSS21 {
+    CssBackgroundColor color;
+
+    /**
+     * @param color The color to set.
+     */
+    public void setColor(CssBackgroundColor color) {
+        this.color = color;
+    }
+
+    /**
+     * Create a new CssBackgroundCSS2
+     */
+    public CssBackgroundCSS3() {
+	super();
+    }
+
+    /**
+     * Set the value of the property
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssBackgroundCSS3(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	CssValue val;
+	char op = SPACE;
+	boolean find = true;
+
+	// too many values
+	if(check && expression.getCount() > 6) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+
+	boolean manyValues = (expression.getCount() > 1);
+
+	while (find) {
+	    val = expression.getValue();
+	    if (val == null) {
+		break;
+	    }
+	    op = expression.getOperator();
+	    
+	    // if there are many values, we can't have inherit as one of them
+	    if(manyValues && val.equals(inherit)) {
+		throw new InvalidParamException("unrecognize", null, null, ac);
+	    }
+
+	    switch (val.getType()) {
+	    case CssTypes.CSS_STRING:
+		if (check) {
+		    throw new InvalidParamException("unrecognize", ac);
+		}
+		find = false;
+		break;
+	    case CssTypes.CSS_URL:
+		if (getImage() == null) {
+		    setImage(new CssBackgroundImageCSS2(ac, expression));
+		    continue;
+		}
+		find = false;
+		break;
+	    case CssTypes.CSS_COLOR:
+	    case CssTypes.CSS_FUNCTION:
+		if (getColor2() == null) {
+		    setColor(new CssBackgroundColor(ac, expression));
+		    continue;
+		}
+		find = false;
+		break;
+	    case CssTypes.CSS_NUMBER:
+	    case CssTypes.CSS_PERCENTAGE:
+	    case CssTypes.CSS_LENGTH:
+		if (getPosition() == null) {
+		    setPosition(new CssBackgroundPositionCSS21(ac,expression));
+		    continue;
+		}
+		find = false;
+		break;
+	    case CssTypes.CSS_IDENT:
+		// the hard part, as ident can be from different subproperties
+		find = false;
+		CssIdent identval = (CssIdent) val;
+		// check background-image ident
+		if (CssBackgroundImageCSS2.checkMatchingIdent(identval)) {
+		    if (getImage() == null) {
+			setImage(new CssBackgroundImageCSS2(ac, expression));
+			find = true;
+		    } 
+		    break;
+		}
+		// check background-repeat ident
+		if (CssBackgroundRepeatCSS2.checkMatchingIdent(identval)) {
+		    if (getRepeat() == null) {
+			setRepeat(new CssBackgroundRepeatCSS2(ac, expression));
+			find = true;
+		    }
+		    break;
+		}
+		// check background-attachment ident
+		if (CssBackgroundAttachmentCSS2.checkMatchingIdent(identval)) {
+		    if (getAttachment() == null) {
+			setAttachment(new CssBackgroundAttachmentCSS2(ac, expression));
+			find = true;
+		    }
+		    break;
+		}		
+		// check backgorund-position ident
+		if (CssBackgroundPositionCSS21.checkMatchingIdent(identval)) {
+		    if (getPosition() == null) {
+			setPosition(new CssBackgroundPositionCSS21(ac, expression));
+			find = true;
+		    }
+		    break;
+		}
+
+		if (getColor2() == null) {
+		    try {
+			setColor(new CssBackgroundColor(ac, expression));
+			find = true;
+			break;
+		    } catch (InvalidParamException e) {
+			// nothing to do, image will test this value
+		    }
+		}	
+
+	    default:
+		if (check) {
+		    throw new InvalidParamException("unrecognize", ac);
+		}
+		find = false;
+	    }
+	    if(check && !find) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    if (op != SPACE) {
+		throw new InvalidParamException("operator",
+						Character.toString(op),
+						ac);
+	    }
+	}
+    }
+
+    public CssBackgroundCSS3(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssBackgroundClip.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,152 @@
+//
+// $Id: CssBackgroundClip.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche Smeman (sijtsche@wisdom.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> border || padding<BR>
+ *  <EM>Initial:</EM>border<BR>
+ *  <EM>Applies to:</EM>block-level and replaced elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  Determines whether the background extents into the border area or not. If the value is
+ *  'padding', the background is clipped to the padding edge and the background of the border
+ *  is transparent.
+ */
+
+public class CssBackgroundClip extends CssProperty {
+
+    CssValue bgclip;
+
+    CssIdent border = new CssIdent("border");
+    CssIdent padding = new CssIdent("padding");
+
+    /**
+     * Create a new CssBackgroundClip
+     */
+    public CssBackgroundClip() {
+	bgclip = border;
+    }
+
+    /**
+     * Create a new CssBackgroundClip
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssBackgroundClip(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val.equals(border)) {
+	    bgclip = border;
+	    expression.next();
+	} else if (val.equals(padding)) {
+	    bgclip = padding;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+		    getPropertyName(), ac);
+	}
+    }
+
+    public CssBackgroundClip(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssBackgroundClip != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssBackgroundClip = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getCssBackgroundClip();
+	}
+	else {
+	    return ((Css3Style) style).cssBackgroundClip;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBackgroundClip &&
+		bgclip.equals(((CssBackgroundClip) property).bgclip));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "background-clip";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return bgclip;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return bgclip.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return bgclip.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return bgclip == border;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssBackgroundOrigin.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,151 @@
+//
+// $Id: CssBackgroundOrigin.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche Smeman (sijtsche@wisdom.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> border || padding || content<BR>
+ *  <EM>Initial:</EM>border<BR>
+ *  <EM>Applies to:</EM>block-level and replaced elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  Determines whether the background extents into the border area or not. If the value is
+ *  'padding', the background is clipped to the padding edge and the background of the border
+ *  is transparent.
+ */
+
+public class CssBackgroundOrigin extends CssProperty {
+
+    CssValue bgorigin;
+
+    CssIdent border = new CssIdent("border");
+    CssIdent padding = new CssIdent("padding");
+    CssIdent content = new CssIdent("content");
+
+    /**
+     * Create a new CssBackgroundOrigin
+     */
+    public CssBackgroundOrigin() {
+	bgorigin = padding;
+    }
+
+    /**
+     * Create a new CssBackgroundOrigin
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssBackgroundOrigin(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val.equals(border)) {
+	    bgorigin = border;
+	    expression.next();
+	} else if (val.equals(padding)) {
+	    bgorigin = padding;
+	    expression.next();
+	} else if (val.equals(content)) {
+	    bgorigin = content;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+		    getPropertyName(), ac);
+	}
+    }
+
+    public CssBackgroundOrigin(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssBackgroundOrigin != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssBackgroundOrigin = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getCssBackgroundOrigin();
+	}
+	else {
+	    return ((Css3Style) style).cssBackgroundOrigin;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBackgroundOrigin &&
+		bgorigin.equals(((CssBackgroundOrigin) property).bgorigin));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "background-origin";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return bgorigin;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return bgorigin.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return bgorigin.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return bgorigin == padding;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssBackgroundQuantity.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,164 @@
+//
+// $Id: CssBackgroundQuantity.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche Smeman (sijtsche@wisdom.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> &lt;integer&gt; || inherit || infinite || initial<BR>
+ *  <EM>Initial:</EM>infinite<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  If a 'background-image' is specified, the value of, the value of 'background-quantity'
+ *  determines how many times the image will repeat.
+ */
+
+public class CssBackgroundQuantity extends CssProperty {
+
+    CssValue bgquantity;
+
+    CssIdent initial = new CssIdent("initial");
+    CssIdent infinite = new CssIdent("infinite");
+
+    /**
+     * Create a new CssBackgroundQuantity
+     */
+    public CssBackgroundQuantity() {
+	bgquantity = infinite;
+    }
+
+    /**
+     * Create a new CssBackgroundQuantity
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssBackgroundQuantity(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	CssValue val = expression.getValue();
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    bgquantity = inherit;
+	    expression.next();
+	    return;
+	} else if (val.equals(infinite)) {
+	    bgquantity = infinite;
+	    expression.next();
+	    return;
+	} else if (val.equals(initial)) {
+	    bgquantity = initial;
+	    expression.next();
+	    return;
+	} else if (val instanceof CssNumber) {
+	    if (((CssNumber) val).isInteger()) {
+		bgquantity = val;
+		expression.next();
+		return;
+	    } else {
+		throw new InvalidParamException("integer",
+			val.toString(),
+			getPropertyName(), ac);
+	    }
+	}
+
+	throw new InvalidParamException("value",
+		val.toString(),
+		getPropertyName(), ac);
+    }
+
+    public CssBackgroundQuantity(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssBackgroundQuantity != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssBackgroundQuantity = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getCssBackgroundQuantity();
+	}
+	else {
+	    return ((Css3Style) style).cssBackgroundQuantity;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBackgroundQuantity &&
+		bgquantity.equals(((CssBackgroundQuantity) property).bgquantity));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "background-quantity";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return bgquantity;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return bgquantity.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return bgquantity.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return bgquantity == infinite;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssBackgroundSize.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,175 @@
+//
+// $Id: CssBackgroundSize.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche Smeman (sijtsche@wisdom.nl)
+//
+// (c) COPYRIGHT MIT and INRIA, 1997.
+// Please first read the full copyright statement in file COPYRIGHT.html
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'background-size'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> [&lt;length&gt; | &lt;percentage&gt | auto]{1.2};<BR>
+ *   <EM>Initial:</EM> auto<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> see text<BR>
+ *   <P>
+ *   In case there is a 'background-image', the background-size can be used to stretch or shrink it.
+ *   If the property has only one value, it applies both horizontally and vertically. If there are
+ *   two, the first one refers to the width, the second to the height of the background image.
+ */
+public class CssBackgroundSize extends CssProperty  {
+
+    public CssValue value1 = null;
+    CssValue value2 = null;
+    CssIdent auto = new CssIdent("auto");
+
+    /**
+     * Create a new CssBackgroundSize
+     */
+    public CssBackgroundSize() {
+    }
+
+    /**
+     * Create a new CssBackgroundSize
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBackgroundSize(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	for (int i = 0; i < 2; i++) {
+
+	    CssValue val = expression.getValue();
+
+	    setByUser();
+
+	    if ((i == 0) || (i == 1 && val != null)) {
+
+		if (val.equals(auto)) {
+		    if (i == 0) {
+			value1 = auto;
+		    } else {
+			value2 = auto;
+		    }
+		} else if (val instanceof CssLength || val instanceof CssPercentage) {
+		    if (i == 0) {
+			value1 = val;
+		    } else {
+			value2 = val;
+		    }
+		} else if (val instanceof CssNumber) {
+		    if (i == 0) {
+			value1 = ((CssNumber) val).getLength();
+		    } else {
+			value2 = ((CssNumber) val).getLength();
+		    }
+		} else {
+		    throw new InvalidParamException("value", val.toString(),
+			    getPropertyName(), ac);
+		}
+
+		expression.next();
+	    }
+	}
+    }
+
+    public CssBackgroundSize(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssBackgroundSize != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssBackgroundSize = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getCssBackgroundSize();
+	}
+	else {
+	    return ((Css3Style) style).cssBackgroundSize;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	//return (property instanceof CssBackgroundSize &&
+	//	value.equals(((CssBackgroundSize) property).cssBackgroundSize));
+    	return false;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "background-size";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value1;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return false;
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	if (value2 == null) {
+	    return value1.toString();
+	} else {
+	    return value1.toString() + " " + value2.toString();
+	}
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value1 == auto;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssBackgroundSpacing.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,165 @@
+//
+// $Id: CssBackgroundSpacing.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche Smeman (sijtsche@wisdom.nl)
+//
+// (c) COPYRIGHT MIT and INRIA, 1997.
+// Please first read the full copyright statement in file COPYRIGHT.html
+/*
+ */
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+
+/**
+ */
+public class CssBackgroundSpacing extends CssProperty implements CssOperator {
+
+    CssValue value;
+    CssIdent initial = new CssIdent("initial");
+    CssValue second;
+
+    /**
+     * Create a new CssBackgroundSpacing
+     */
+    public CssBackgroundSpacing() {
+    }
+
+    /**
+     * Creates a new CssBackgroundSpacing
+     *
+     * @param expression the expression of the size
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssBackgroundSpacing(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = expression.getValue();
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	} else if (val.equals(initial)) {
+	    value = initial;
+	} else if (val instanceof CssLength || val instanceof CssNumber) {
+	    if (val instanceof CssNumber) {
+		val = ((CssNumber) val).getLength();
+	    }
+	    value = val;
+	    expression.next();
+	    val = expression.getValue();
+
+	    if (val != null) {
+		if (expression.getOperator() == SPACE) {
+		    if (val instanceof CssNumber) {
+			val = ((CssNumber) val).getLength();
+		    }
+		    second = val;
+		    expression.next();
+		} else {
+		    // invalid operator
+		}
+	    }
+	} else {
+	    throw new InvalidParamException("value",
+		    val.toString(),
+		    getPropertyName(), ac);
+	}
+
+	expression.next();
+    }
+
+    public CssBackgroundSpacing(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (second != null) {
+	    return value + " " + second;
+	} else {
+	    return value.toString();
+	}
+    }
+
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "background-spacing";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssBackgroundSpacing != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssBackgroundSpacing = this;
+    }
+
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getCssBackgroundSpacing();
+	}
+	else {
+	    return ((Css3Style) style).cssBackgroundSpacing;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBackgroundSpacing &&
+		value.equals(((CssBackgroundSpacing) property).value));
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == new CssNumber(0);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssBaselineShift.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,176 @@
+//
+// $Id: CssBaselineShift.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssLength;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> baseline || sub || super || &lt;percentage&gt; || &lt;length&gt; || inherit<BR>
+ *  <EM>Initial:</EM>baseline<BR>
+ *  <EM>Applies to:</EM>inline-level elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>refers to the 'line-height' of the element<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  The 'baseline-shift' property allows repositioning of the dominant-baseline
+ *  relative to the dominant-baseline. The shifted object might be a sub- or
+ *  superscript. Within the shifted object, the whole baseline table is offset;
+ *  not just a single baseline. For sub- and superscript, the amount of offset
+ *  is determined from the nominal font of the parent.
+ */
+
+public class CssBaselineShift extends CssProperty {
+
+    CssValue baselineshift;
+
+    private static CssIdent baseline = new CssIdent("baseline");
+    private static CssIdent sub = new CssIdent("sub");
+    private static CssIdent sup = new CssIdent("super");
+    private static CssIdent initial = new CssIdent("initial");
+
+    /**
+     * Create a new CssBaselineShift
+     */
+    public CssBaselineShift() {
+	baselineshift = baseline;
+    }
+
+    /**
+     * Create a new CssBaselineShift
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssBaselineShift(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val.equals(inherit)) {
+	    baselineshift = inherit;
+	    expression.next();
+	}
+	else if (val.equals(baseline)) {
+	    baselineshift = baseline;
+	    expression.next();
+	}
+	else if (val.equals(sub)) {
+	    baselineshift = sub;
+	    expression.next();
+	}
+	else if (val.equals(sup)) {
+	    baselineshift = sup;
+	    expression.next();
+	}
+	else if (val.equals(initial)) {
+		baselineshift = initial;
+		expression.next();
+	}
+	else if (val instanceof CssPercentage) {
+	    baselineshift = val;
+	    expression.next();
+	}
+	else if (val instanceof CssLength) {
+	    baselineshift = val;
+	    expression.next();
+	}
+       	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssBaselineShift(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssBaselineShift != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssBaselineShift = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getBaselineShift();
+	}
+	else {
+	    return ((Css3Style) style).cssBaselineShift;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBaselineShift &&
+		baselineshift.equals(((CssBaselineShift) property).baselineshift));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "baseline-shift";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return baselineshift;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return baselineshift.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return baselineshift.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return baselineshift == baseline;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssBlockProgression.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,145 @@
+//
+// $Id: CssBlockProgression.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssOperator;
+import org.w3c.css.values.CssValue;
+
+public class CssBlockProgression extends CssProperty implements CssOperator {
+
+    CssValue blockprog;
+    ApplContext ac;
+    CssIdent tb = new CssIdent("tb");
+    CssIdent rl = new CssIdent("rl");
+    CssIdent lr = new CssIdent("lr");
+
+    /**
+     * Create a new CssBlockProgression
+     */
+    public CssBlockProgression() {
+	blockprog = tb;
+    }
+
+    /**
+     * Create a new CssBlockProgression
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBlockProgression(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	this.ac = ac;
+	setByUser(); // tell this property is set by the user
+	CssValue val = expression.getValue();
+
+	if (val.equals(tb)) {
+	    blockprog = val;
+	    expression.next();
+	}
+	else if (val.equals(rl)) {
+	    blockprog = val;
+	    expression.next();
+	}
+	else if (val.equals(lr)) {
+	    blockprog = val;
+	    expression.next();
+	}
+	else if (val.equals(inherit)) {
+	    blockprog = inherit;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+	}
+    }
+
+    public CssBlockProgression(ApplContext ac, CssExpression expression)
+    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssBlockProgression != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssBlockProgression = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getBlockProgression();
+	} else {
+	    return ((Css3Style) style).cssBlockProgression;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBlockProgression &&
+		blockprog.equals( ((CssBlockProgression) property).blockprog));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "block-progression";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return blockprog;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return blockprog.equals("inherit");
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return blockprog.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return blockprog.equals(new CssIdent("tb"));
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssBorderBottomFitLength.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,169 @@
+//
+// $Id: CssBorderBottomFitLength.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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 CssBorderBottomFitLength extends CssProperty {
+
+    String value = "";
+
+    CssIdent repeat = new CssIdent("repeat");
+
+    private static String[] values = {
+	"clip", "repeat", "scale", "stretch", "overwrite", "overflow", "space"
+    };
+
+    /**
+     * Create a new CssBorderBottomFitLength
+     */
+    public CssBorderBottomFitLength() {
+	value = "repeat";
+    }
+
+    /**
+     * Create a new CssBorderBottomFitLength
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssBorderBottomFitLength(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+	int i = 0;
+
+	if (val instanceof CssIdent) {
+	    for (; i < values.length; i++) {
+		if (val.toString().equals(values[i])) {
+		    value = val.toString();
+		    expression.next();
+		    break;
+		}
+	    }
+	    if (i == values.length) {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+		    getPropertyName(), ac);
+	}
+
+	val = expression.getValue();
+	i = 0;
+
+	if (val != null) {
+	    if (val instanceof CssIdent) {
+		for (; i < values.length; i++) {
+		    if (val.toString().equals(values[i])) {
+			value += " " + val.toString();
+			expression.next();
+			break;
+		    }
+		}
+		if (i == values.length) {
+		    throw new InvalidParamException("value", expression.getValue(),
+			    getPropertyName(), ac);
+		}
+	    }
+	    else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+	}
+    }
+
+    public CssBorderBottomFitLength(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssBorderBottomFitLength != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssBorderBottomFitLength = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getBorderBottomFitLength();
+	}
+	else {
+	    return ((Css3Style) style).cssBorderBottomFitLength;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderBottomFitLength &&
+		value.equals(((CssBorderBottomFitLength) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-bottom-fit-length";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value.equals("repeat");
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssBorderBottomFitWidth.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,169 @@
+//
+// $Id: CssBorderBottomFitWidth.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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 CssBorderBottomFitWidth extends CssProperty {
+
+    String value = "";
+
+    CssIdent repeat = new CssIdent("repeat");
+
+    private static String[] values = {
+	"clip", "repeat", "scale", "stretch", "overwrite", "overflow", "space"
+    };
+
+    /**
+     * Create a new CssBorderBottomFitWidth
+     */
+    public CssBorderBottomFitWidth() {
+	value = "repeat";
+    }
+
+    /**
+     * Create a new CssBorderBottomFitWidth
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssBorderBottomFitWidth(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+	int i = 0;
+
+	if (val instanceof CssIdent) {
+	    for (; i < values.length; i++) {
+		if (val.toString().equals(values[i])) {
+		    value = val.toString();
+		    expression.next();
+		    break;
+		}
+	    }
+	    if (i == values.length) {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+		    getPropertyName(), ac);
+	}
+
+	val = expression.getValue();
+	i = 0;
+
+	if (val != null) {
+	    if (val instanceof CssIdent) {
+		for (; i < values.length; i++) {
+		    if (val.toString().equals(values[i])) {
+			value += " " + val.toString();
+			expression.next();
+			break;
+		    }
+		}
+		if (i == values.length) {
+		    throw new InvalidParamException("value", expression.getValue(),
+			    getPropertyName(), ac);
+		}
+	    }
+	    else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+	}
+    }
+
+    public CssBorderBottomFitWidth(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssBorderBottomFitWidth != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssBorderBottomFitWidth = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getBorderBottomFitWidth();
+	}
+	else {
+	    return ((Css3Style) style).cssBorderBottomFitWidth;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderBottomFitWidth &&
+		value.equals(((CssBorderBottomFitWidth) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-bottom-fit-width";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value.equals("repeat");
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssBorderBottomImage.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,168 @@
+//
+// $Id: CssBorderBottomImage.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssNumber;
+import org.w3c.css.values.CssURL;
+import org.w3c.css.values.CssValue;
+
+
+
+public class CssBorderBottomImage extends CssProperty {
+
+    String value;
+    ApplContext ac;
+    CssIdent none = new CssIdent("none");
+
+    /**
+     * Create new CssBorderBottomImage
+     */
+    public CssBorderBottomImage() {
+	value = "none";
+    }
+
+    /**
+     * Create new CssBorderBottomImage
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderBottomImage(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val instanceof CssIdent) {
+	    if (val.equals(none)) {
+		value = "none";
+		expression.next();
+	    } else if (val.equals(inherit)) {
+		value = "inherit";
+		expression.next();
+	    }
+	} else if (val instanceof CssURL) {
+
+	    value = val.toString();
+	    expression.next();
+
+	    val = expression.getValue();
+
+	    if (val != null) {
+		if (val instanceof CssURL) {
+		    value += " " + val.toString();
+		    expression.next();
+		} else {
+		    throw new InvalidParamException("value", expression.getValue(),
+			    getPropertyName(), ac);
+		}
+
+		expression.next();
+		val = expression.getValue();
+
+		if (val != null) {
+		    if (val instanceof CssURL) {
+			value += " " + val.toString();
+			expression.next();
+		    } else {
+			throw new InvalidParamException("value", expression.getValue(),
+				getPropertyName(), ac);
+		    }
+		}
+	    }
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+		    getPropertyName(), ac);
+	}
+    }
+
+    public CssBorderBottomImage(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssBorderBottomImage != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssBorderBottomImage = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getBorderBottomImage();
+	} else {
+	    return ((Css3Style) style).cssBorderBottomImage;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderBottomImage &&
+		value.equals( ((CssBorderBottomImage) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-bottom-image";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return value;
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	CssNumber cssnum = new CssNumber(ac, (float) 1.0);
+	return value == cssnum.toString();
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssBorderBottomLeftFitLength.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,169 @@
+//
+// $Id: CssBorderBottomLeftFitLength.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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 CssBorderBottomLeftFitLength extends CssProperty {
+
+    String value = "";
+
+    CssIdent repeat = new CssIdent("repeat");
+
+    private static String[] values = {
+	"clip", "repeat", "scale", "stretch", "overwrite", "overflow", "space"
+    };
+
+    /**
+     * Create a new CssBorderBottomLeftFitLength
+     */
+    public CssBorderBottomLeftFitLength() {
+	value = "overwrite";
+    }
+
+    /**
+     * Create a new CssBorderBottomLeftFitLength
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssBorderBottomLeftFitLength(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+	int i = 0;
+
+	if (val instanceof CssIdent) {
+	    for (; i < values.length; i++) {
+		if (val.toString().equals(values[i])) {
+		    value = val.toString();
+		    expression.next();
+		    break;
+		}
+	    }
+	    if (i == values.length) {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+		    getPropertyName(), ac);
+	}
+
+	val = expression.getValue();
+	i = 0;
+
+	if (val != null) {
+	    if (val instanceof CssIdent) {
+		for (; i < values.length; i++) {
+		    if (val.toString().equals(values[i])) {
+			value += " " + val.toString();
+			expression.next();
+			break;
+		    }
+		}
+		if (i == values.length) {
+		    throw new InvalidParamException("value", expression.getValue(),
+			    getPropertyName(), ac);
+		}
+	    }
+	    else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+	}
+    }
+
+    public CssBorderBottomLeftFitLength(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssBorderBottomLeftFitLength != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssBorderBottomLeftFitLength = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getBorderBottomLeftFitLength();
+	}
+	else {
+	    return ((Css3Style) style).cssBorderBottomLeftFitLength;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderBottomLeftFitLength &&
+		value.equals(((CssBorderBottomLeftFitLength) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-bottom-left-fit-length";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value.equals("overwrite");
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssBorderBottomLeftFitWidth.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,169 @@
+//
+// $Id: CssBorderBottomLeftFitWidth.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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 CssBorderBottomLeftFitWidth extends CssProperty {
+
+    String value = "";
+
+    CssIdent repeat = new CssIdent("repeat");
+
+    private static String[] values = {
+	"clip", "repeat", "scale", "stretch", "overwrite", "overflow", "space"
+    };
+
+    /**
+     * Create a new CssBorderBottomLeftFitWidth
+     */
+    public CssBorderBottomLeftFitWidth() {
+	value = "overwrite";
+    }
+
+    /**
+     * Create a new CssBorderBottomLeftFitWidth
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssBorderBottomLeftFitWidth(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+	int i = 0;
+
+	if (val instanceof CssIdent) {
+	    for (; i < values.length; i++) {
+		if (val.toString().equals(values[i])) {
+		    value = val.toString();
+		    expression.next();
+		    break;
+		}
+	    }
+	    if (i == values.length) {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+		    getPropertyName(), ac);
+	}
+
+	val = expression.getValue();
+	i = 0;
+
+	if (val != null) {
+	    if (val instanceof CssIdent) {
+		for (; i < values.length; i++) {
+		    if (val.toString().equals(values[i])) {
+			value += " " + val.toString();
+			expression.next();
+			break;
+		    }
+		}
+		if (i == values.length) {
+		    throw new InvalidParamException("value", expression.getValue(),
+			    getPropertyName(), ac);
+		}
+	    }
+	    else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+	}
+    }
+
+    public CssBorderBottomLeftFitWidth(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssBorderBottomLeftFitWidth != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssBorderBottomLeftFitWidth = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getBorderBottomLeftFitWidth();
+	}
+	else {
+	    return ((Css3Style) style).cssBorderBottomLeftFitWidth;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderBottomLeftFitWidth &&
+		value.equals(((CssBorderBottomLeftFitWidth) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-bottom-left-fit-length";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value.equals("overwrite");
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssBorderBottomLeftImage.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,144 @@
+//
+// $Id: CssBorderBottomLeftImage.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssNumber;
+import org.w3c.css.values.CssURL;
+import org.w3c.css.values.CssValue;
+
+
+
+public class CssBorderBottomLeftImage extends CssProperty {
+
+    String value = "";
+    ApplContext ac;
+    CssIdent contin = new CssIdent("continue");
+    CssIdent none = new CssIdent("none");
+
+    /**
+     * Create new CssBorderBottomLeftImage
+     */
+    public CssBorderBottomLeftImage() {
+	value = "continue";
+    }
+
+    /**
+     * Create new CssBorderBottomLeftImage
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderBottomLeftImage(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val != null) {
+	    if (val.equals(none)) {
+		value = "none";
+	    } else if (val.equals(contin)) {
+		value = "continue";
+	    } else if (val instanceof CssURL) {
+		value = val.toString();
+	    } else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+		    getPropertyName(), ac);
+	}
+
+	expression.next();
+    }
+
+    public CssBorderBottomLeftImage(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssBorderBottomLeftImage != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssBorderBottomLeftImage = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getBorderBottomLeftImage();
+	} else {
+	    return ((Css3Style) style).cssBorderBottomLeftImage;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderBottomLeftImage &&
+		value.equals( ((CssBorderBottomLeftImage) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-bottom-left-image";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return value;
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	CssNumber cssnum = new CssNumber(ac, (float) 1.0);
+	return value == cssnum.toString();
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssBorderBottomLeftRadius.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,172 @@
+//
+// $Id: CssBorderBottomLeftRadius.java,v 1.3 2008-03-26 09:04:05 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssOperator;
+import org.w3c.css.values.CssTypes;
+import org.w3c.css.values.CssValue;
+
+public class CssBorderBottomLeftRadius extends CssProperty {
+
+    String value;
+    ApplContext ac;
+
+    private static final String defaultValue;
+    private final static String propertyName = "border-bottom-left-radius";
+    
+    static {
+	defaultValue = (new CssNumber((float) 1.0)).toString();
+    }
+    
+    /**
+     * Create new CssBorderBottomLeftRadius
+     */
+    public CssBorderBottomLeftRadius() {
+	value = defaultValue;
+    }
+
+    /**
+     * Create new CssBorderBottomLeftRadius
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderBottomLeftRadius(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	setByUser();
+	CssValue val = expression.getValue();
+	char op = expression.getOperator();
+	StringBuilder sb = new StringBuilder();
+
+	if (op != CssOperator.SPACE) {
+	    throw new InvalidParamException("operator", Character.toString(op),
+					    ac);
+	}
+	switch (val.getType()) {
+	case CssTypes.CSS_NUMBER:
+	    val = ((CssNumber)val).getLength();
+	case CssTypes.CSS_LENGTH:
+	    sb.append(val.toString());
+	    
+	    expression.next();
+	    val = expression.getValue();
+	    op = expression.getOperator();
+	    if (val != null) {
+		if (op != CssOperator.SPACE) {
+		    throw new InvalidParamException("operator", 
+						    Character.toString(op),
+						    ac);
+		}
+		switch (val.getType()) {
+		case CssTypes.CSS_NUMBER:
+		    val = ((CssNumber)val).getLength();
+		case CssTypes.CSS_LENGTH:
+		    sb.append(' ').append(val.toString());
+		    expression.next();
+		    break;
+		default:
+		    throw new InvalidParamException("value", 
+						    val,
+						    getPropertyName(), ac);
+		}
+	    }
+	    value = sb.toString();
+	    break;
+	default:
+	    throw new InvalidParamException("value", 
+					    val,
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssBorderBottomLeftRadius(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssBorderBottomLeftRadius != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssBorderBottomLeftRadius = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getBorderBottomLeftRadius();
+	} else {
+	    return ((Css3Style) style).cssBorderBottomLeftRadius;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderBottomLeftRadius &&
+		value.equals( ((CssBorderBottomLeftRadius) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public final String getPropertyName() {
+	return propertyName;
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return value;
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return (defaultValue == value);
+
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssBorderBottomRightFitLength.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,169 @@
+//
+// $Id: CssBorderBottomRightFitLength.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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 CssBorderBottomRightFitLength extends CssProperty {
+
+    String value = "";
+
+    CssIdent repeat = new CssIdent("repeat");
+
+    private static String[] values = {
+	"clip", "repeat", "scale", "stretch", "overwrite", "overflow", "space"
+    };
+
+    /**
+     * Create a new CssBorderBottomRightFitLength
+     */
+    public CssBorderBottomRightFitLength() {
+	value = "overwrite";
+    }
+
+    /**
+     * Create a new CssBorderBottomRightFitLength
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssBorderBottomRightFitLength(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+	int i = 0;
+
+	if (val instanceof CssIdent) {
+	    for (; i < values.length; i++) {
+		if (val.toString().equals(values[i])) {
+		    value = val.toString();
+		    expression.next();
+		    break;
+		}
+	    }
+	    if (i == values.length) {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+		    getPropertyName(), ac);
+	}
+
+	val = expression.getValue();
+	i = 0;
+
+	if (val != null) {
+	    if (val instanceof CssIdent) {
+		for (; i < values.length; i++) {
+		    if (val.toString().equals(values[i])) {
+			value += " " + val.toString();
+			expression.next();
+			break;
+		    }
+		}
+		if (i == values.length) {
+		    throw new InvalidParamException("value", expression.getValue(),
+			    getPropertyName(), ac);
+		}
+	    }
+	    else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+	}
+    }
+
+    public CssBorderBottomRightFitLength(ApplContext ac,
+	    CssExpression expression) throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssBorderBottomRightFitLength != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssBorderBottomRightFitLength = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getBorderBottomRightFitLength();
+	}
+	else {
+	    return ((Css3Style) style).cssBorderBottomRightFitLength;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderBottomRightFitLength &&
+		value.equals(((CssBorderBottomRightFitLength) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-bottom-right-fit-length";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value.equals("overwrite");
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssBorderBottomRightFitWidth.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,169 @@
+//
+// $Id: CssBorderBottomRightFitWidth.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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 CssBorderBottomRightFitWidth extends CssProperty {
+
+    String value = "";
+
+    CssIdent repeat = new CssIdent("repeat");
+
+    private static String[] values = {
+	"clip", "repeat", "scale", "stretch", "overwrite", "overflow", "space"
+    };
+
+    /**
+     * Create a new CssBorderBottomRightFitWidth
+     */
+    public CssBorderBottomRightFitWidth() {
+	value = "overwrite";
+    }
+
+    /**
+     * Create a new CssBorderBottomRightFitWidth
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssBorderBottomRightFitWidth(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+	int i = 0;
+
+	if (val instanceof CssIdent) {
+	    for (; i < values.length; i++) {
+		if (val.toString().equals(values[i])) {
+		    value = val.toString();
+		    expression.next();
+		    break;
+		}
+	    }
+	    if (i == values.length) {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+		    getPropertyName(), ac);
+	}
+
+	val = expression.getValue();
+	i = 0;
+
+	if (val != null) {
+	    if (val instanceof CssIdent) {
+		for (; i < values.length; i++) {
+		    if (val.toString().equals(values[i])) {
+			value += " " + val.toString();
+			expression.next();
+			break;
+		    }
+		}
+		if (i == values.length) {
+		    throw new InvalidParamException("value", expression.getValue(),
+			    getPropertyName(), ac);
+		}
+	    }
+	    else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+	}
+    }
+
+    public CssBorderBottomRightFitWidth(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssBorderBottomRightFitWidth != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssBorderBottomRightFitWidth = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getBorderBottomRightFitWidth();
+	}
+	else {
+	    return ((Css3Style) style).cssBorderBottomRightFitWidth;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderBottomRightFitWidth &&
+		value.equals(((CssBorderBottomRightFitWidth) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-bottom-right-fit-width";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value.equals("overwrite");
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssBorderBottomRightImage.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,144 @@
+//
+// $Id: CssBorderBottomRightImage.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssNumber;
+import org.w3c.css.values.CssURL;
+import org.w3c.css.values.CssValue;
+
+
+
+public class CssBorderBottomRightImage extends CssProperty {
+
+    String value = "";
+    ApplContext ac;
+    CssIdent contin = new CssIdent("continue");
+    CssIdent none = new CssIdent("none");
+
+    /**
+     * Create new CssBorderBottomRightImage
+     */
+    public CssBorderBottomRightImage() {
+	value = "continue";
+    }
+
+    /**
+     * Create new CssBorderBottomRightImage
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderBottomRightImage(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val != null) {
+	    if (val.equals(none)) {
+		value = "none";
+	    } else if (val.equals(contin)) {
+		value = "continue";
+	    } else if (val instanceof CssURL) {
+		value = val.toString();
+	    } else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+		    getPropertyName(), ac);
+	}
+
+	expression.next();
+    }
+
+    public CssBorderBottomRightImage(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssBorderBottomRightImage != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssBorderBottomRightImage = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getBorderBottomRightImage();
+	} else {
+	    return ((Css3Style) style).cssBorderBottomRightImage;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderBottomRightImage &&
+		value.equals( ((CssBorderBottomRightImage) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-bottom-left-image";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return value;
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	CssNumber cssnum = new CssNumber(ac, (float) 1.0);
+	return value == cssnum.toString();
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssBorderBottomRightRadius.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,171 @@
+//
+// $Id: CssBorderBottomRightRadius.java,v 1.3 2008-03-26 09:04:05 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssOperator;
+import org.w3c.css.values.CssTypes;
+import org.w3c.css.values.CssValue;
+
+public class CssBorderBottomRightRadius extends CssProperty {
+
+    String value;
+    ApplContext ac;
+
+    private static final String defaultValue;
+    private final static String propertyName = "border-bottom-right-radius";
+    
+    static {
+	defaultValue = (new CssNumber((float) 1.0)).toString();
+    }
+
+    /**
+     * Create new CssBorderBottomRightRadius
+     */
+    public CssBorderBottomRightRadius() {
+	value = defaultValue;
+    }
+
+    /**
+     * Create new CssBorderBottomRightRadius
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderBottomRightRadius(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	setByUser();
+	CssValue val = expression.getValue();
+	char op = expression.getOperator();
+	StringBuilder sb = new StringBuilder();
+
+	if (op != CssOperator.SPACE) {
+	    throw new InvalidParamException("operator", Character.toString(op),
+					    ac);
+	}
+	switch (val.getType()) {
+	case CssTypes.CSS_NUMBER:
+	    val = ((CssNumber)val).getLength();
+	case CssTypes.CSS_LENGTH:
+	    sb.append(val.toString());
+	    
+	    expression.next();
+	    val = expression.getValue();
+	    op = expression.getOperator();
+	    if (val != null) {
+		if (op != CssOperator.SPACE) {
+		    throw new InvalidParamException("operator", 
+						    Character.toString(op),
+						    ac);
+		}
+		switch (val.getType()) {
+		case CssTypes.CSS_NUMBER:
+		    val = ((CssNumber)val).getLength();
+		case CssTypes.CSS_LENGTH:
+		    sb.append(' ').append(val.toString());
+		    expression.next();
+		    break;
+		default:
+		    throw new InvalidParamException("value", 
+						    val,
+						    getPropertyName(), ac);
+		}
+	    }
+	    value = sb.toString();
+	    break;
+	default:
+	    throw new InvalidParamException("value", 
+					    val,
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssBorderBottomRightRadius(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssBorderBottomRightRadius != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssBorderBottomRightRadius = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getBorderBottomRightRadius();
+	} else {
+	    return ((Css3Style) style).cssBorderBottomRightRadius;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderBottomRightRadius &&
+		value.equals( ((CssBorderBottomRightRadius) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public final String getPropertyName() {
+	return propertyName;
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return (defaultValue == value);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssBorderBreak.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,131 @@
+//
+// $Id: CssBorderBreak.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssBorderFaceStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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 CssBorderBreak extends CssProperty {
+
+    CssBorderFaceStyle bfsvalue = null;
+    CssValue value = null;
+
+    CssIdent none = new CssIdent("none");
+
+    /**
+     * Create a new CssBorderBreak
+     */
+    public CssBorderBreak() {
+	value = none;
+    }
+
+    /**
+     * Create a new CssBorderBreak
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssBorderBreak(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+
+	bfsvalue = new CssBorderFaceStyle(ac, expression);
+    }
+
+    public CssBorderBreak(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssBorderBreak != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssBorderBreak = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getBorderBreak();
+	}
+	else {
+	    return ((Css3Style) style).cssBorderBreak;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderBreak &&
+		(value.equals(((CssBorderBreak) property).value) ||
+			bfsvalue.equals(((CssBorderBreak) property).bfsvalue)));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-break";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	if (value != null) {
+	    return value.toString();
+	} else {
+	    return bfsvalue.toString();
+	}
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value.equals(new CssBorderFaceStyle());
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssBorderCornerFit.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,158 @@
+//
+// $Id: CssBorderCornerFit.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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 CssBorderCornerFit extends CssProperty {
+
+    String value = "";
+
+    CssIdent overwrite = new CssIdent("overwrite");
+
+    private static String[] values = {
+	"clip", "repeat", "scale", "stretch", "overwrite", "overflow", "space"
+    };
+
+    /**
+     * Create a new CssBorderCornerFit
+     */
+    public CssBorderCornerFit() {
+	value = "overwrite";
+    }
+
+    /**
+     * Create a new CssBorderCornerFit
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssBorderCornerFit(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (expression.getCount() == 4 || expression.getCount() == 2 ||
+		expression.getCount() == 1) {
+
+	    val = expression.getValue();
+
+	    if (val != null) {
+
+		for (int i = 0; i < expression.getCount(); i++) {
+
+		    int j = 0;
+		    for (; j < values.length; j++) {
+			if (val.toString().equals(values[j])) {
+			    value += val.toString() + " ";
+			    expression.next();
+			    break;
+			}
+		    }
+
+		    if (j == values.length) {
+			throw new InvalidParamException("value",
+				expression.getValue(), getPropertyName(), ac);
+		    }
+		}
+	    }
+
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+		    getPropertyName(), ac);
+	}
+
+    }
+
+    public CssBorderCornerFit(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssBorderCornerFit != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssBorderCornerFit = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getBorderCornerFit();
+	}
+	else {
+	    return ((Css3Style) style).cssBorderCornerFit;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderCornerFit &&
+		value.equals(((CssBorderCornerFit) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-corner-fit";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value.equals("overwrite");
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssBorderCornerImage.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,168 @@
+//
+// $Id: CssBorderCornerImage.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssNumber;
+import org.w3c.css.values.CssURL;
+import org.w3c.css.values.CssValue;
+
+
+
+public class CssBorderCornerImage extends CssProperty {
+
+    String value = "";
+    ApplContext ac;
+    CssIdent none = new CssIdent("none");
+    CssIdent cont = new CssIdent("continue");
+
+    /**
+     * Create new CssBorderCornerImage
+     */
+    public CssBorderCornerImage() {
+	value = "none";
+    }
+
+    /**
+     * Create new CssBorderCornerImage
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderCornerImage(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	setByUser();
+	CssValue val = null;
+
+	if (!(expression.getCount() <= 4)) {
+	    throw new InvalidParamException("value", expression.getValue(),
+		    getPropertyName(), ac);
+	}
+
+	if (expression.getCount() == 1) {
+	    if (val.equals(cont)) {
+		value = "continue";
+	    } else if (val.equals(none)) {
+		value = "none";
+	    } else if (val instanceof CssURL) {
+		value = val.toString();
+	    } else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+	} else {
+
+	    for (int i=0; i < expression.getCount(); i++) {
+
+		val = expression.getValue();
+
+		if (val != null) {
+		    if (val.equals(cont)) {
+			value += "continue ";
+		    } else if (val instanceof CssURL) {
+			value += val.toString() + " ";
+		    } else {
+			throw new InvalidParamException("value", expression.getValue(),
+				getPropertyName(), ac);
+		    }
+
+		} else {
+		    break;
+		}
+
+		expression.next();
+	    }
+
+	}
+	value = value.trim();
+    }
+
+    public CssBorderCornerImage(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssBorderCornerImage != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssBorderCornerImage = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getBorderCornerImage();
+	} else {
+	    return ((Css3Style) style).cssBorderCornerImage;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderCornerImage &&
+		value.equals( ((CssBorderCornerImage) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-corner-image";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return value;
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	CssNumber cssnum = new CssNumber(ac, (float) 1.0);
+	return value == cssnum.toString();
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssBorderFit.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,158 @@
+//
+// $Id: CssBorderFit.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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 CssBorderFit extends CssProperty {
+
+    String value = "";
+
+    CssIdent repeat = new CssIdent("repeat");
+
+    private static String[] values = {
+	"clip", "repeat", "scale", "stretch", "overwrite", "overflow", "space"
+    };
+
+    /**
+     * Create a new CssBorderFit
+     */
+    public CssBorderFit() {
+	value = "repeat";
+    }
+
+    /**
+     * Create a new CssBorderFit
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssBorderFit(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+	int i = 0;
+
+	if (expression.getCount() <= 2) {
+
+	    val = expression.getValue();
+
+	    if (val != null) {
+
+		for (; i < expression.getCount(); i++) {
+
+		    int j = 0;
+		    for (; j < values.length; j++) {
+			if (val.toString().equals(values[j])) {
+			    value += val.toString() + " ";
+			    expression.next();
+			    break;
+			}
+		    }
+
+		    if (j == values.length) {
+			throw new InvalidParamException("value", expression.getValue(),
+				getPropertyName(), ac);
+		    }
+		}
+	    }
+
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+		    getPropertyName(), ac);
+	}
+
+    }
+
+    public CssBorderFit(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssBorderFit != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssBorderFit = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getBorderFit();
+	}
+	else {
+	    return ((Css3Style) style).cssBorderFit;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderFit &&
+		value.equals(((CssBorderFit) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-fit";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value.equals("repeat");
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssBorderFitLength.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,158 @@
+//
+// $Id: CssBorderFitLength.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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 CssBorderFitLength extends CssProperty {
+
+    String value = "";
+
+    CssIdent repeat = new CssIdent("repeat");
+
+    private static String[] values = {
+	"clip", "repeat", "scale", "stretch", "overwrite", "overflow", "space"
+    };
+
+    /**
+     * Create a new CssBorderFitLength
+     */
+    public CssBorderFitLength() {
+	value = "repeat";
+    }
+
+    /**
+     * Create a new CssBorderFitLength
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssBorderFitLength(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+	int i = 0;
+
+	if (expression.getCount() <= 4) {
+
+	    val = expression.getValue();
+
+	    if (val != null) {
+
+		for (; i < expression.getCount(); i++) {
+
+		    int j = 0;
+		    for (; j < values.length; j++) {
+			if (val.toString().equals(values[j])) {
+			    value += val.toString() + " ";
+			    expression.next();
+			    break;
+			}
+		    }
+
+		    if (j == values.length) {
+			throw new InvalidParamException("value", expression.getValue(),
+				getPropertyName(), ac);
+		    }
+		}
+	    }
+
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+		    getPropertyName(), ac);
+	}
+
+    }
+
+    public CssBorderFitLength(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssBorderFitLength != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssBorderFitLength = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getBorderFitLength();
+	}
+	else {
+	    return ((Css3Style) style).cssBorderFitLength;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderFitLength &&
+		value.equals(((CssBorderFitLength) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-fit-length";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value.equals("repeat");
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssBorderFitWidth.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,158 @@
+//
+// $Id: CssBorderFitWidth.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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 CssBorderFitWidth extends CssProperty {
+
+    String value = "";
+
+    CssIdent repeat = new CssIdent("repeat");
+
+    private static String[] values = {
+	"clip", "repeat", "scale", "stretch", "overwrite", "overflow", "space"
+    };
+
+    /**
+     * Create a new CssBorderFitWidth
+     */
+    public CssBorderFitWidth() {
+	value = "repeat";
+    }
+
+    /**
+     * Create a new CssBorderFitWidth
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssBorderFitWidth(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+	int i = 0;
+
+	if (expression.getCount() <= 4) {
+
+	    val = expression.getValue();
+
+	    if (val != null) {
+
+		for (; i < expression.getCount(); i++) {
+
+		    int j = 0;
+		    for (; j < values.length; j++) {
+			if (val.toString().equals(values[j])) {
+			    value += val.toString() + " ";
+			    expression.next();
+			    break;
+			}
+		    }
+
+		    if (j == values.length) {
+			throw new InvalidParamException("value", expression.getValue(),
+				getPropertyName(), ac);
+		    }
+		}
+	    }
+
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+		    getPropertyName(), ac);
+	}
+
+    }
+
+    public CssBorderFitWidth(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssBorderFitWidth != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssBorderFitWidth = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getBorderFitWidth();
+	}
+	else {
+	    return ((Css3Style) style).cssBorderFitWidth;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderFitWidth &&
+		value.equals(((CssBorderFitWidth) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-fit-width";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value.equals("repeat");
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssBorderImage.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,154 @@
+//
+// $Id: CssBorderImage.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssNumber;
+import org.w3c.css.values.CssURL;
+import org.w3c.css.values.CssValue;
+
+
+
+public class CssBorderImage extends CssProperty {
+
+    String value = "";
+    ApplContext ac;
+    CssIdent none = new CssIdent("none");
+
+    /**
+     * Create new CssBorderImage
+     */
+    public CssBorderImage() {
+	value = "none";
+    }
+
+    /**
+     * Create new CssBorderImage
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderImage(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	setByUser();
+	CssValue val = null;
+
+	if (!(expression.getCount() <= 4)) {
+	    throw new InvalidParamException("value", expression.getValue(),
+		    getPropertyName(), ac);
+	}
+
+	for (int i=0; i < expression.getCount(); i++) {
+
+	    val = expression.getValue();
+
+	    if (val != null) {
+
+		if (val.equals(none)) {
+		    value += "none" + " ";
+		} else if (val instanceof CssURL) {
+		    value += val.toString() + " ";
+		} else {
+		    throw new InvalidParamException("value", expression.getValue(),
+			    getPropertyName(), ac);
+		}
+
+	    } else {
+		break;
+	    }
+
+	    expression.next();
+	}
+
+	value = value.trim();
+    }
+
+    public CssBorderImage(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssBorderImage != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssBorderImage = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getBorderImage();
+	} else {
+	    return ((Css3Style) style).cssBorderImage;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderImage &&
+		value.equals( ((CssBorderImage) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-image";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return value;
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	CssNumber cssnum = new CssNumber(ac, (float) 1.0);
+	return value == cssnum.toString();
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssBorderImageTransform.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,144 @@
+//
+// $Id: CssBorderImageTransform.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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 CssBorderImageTransform extends CssProperty {
+
+    String value = "";
+
+    CssIdent none = new CssIdent("none");
+
+    private static String[] values = {
+	"none", "rotate", "reflect-xy", "reflect-right", "reflect-left"
+    };
+
+    /**
+     * Create a new CssBorderImageTransform
+     */
+    public CssBorderImageTransform() {
+	value = "none";
+    }
+
+    /**
+     * Create a new CssBorderImageTransform
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssBorderImageTransform(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	val = expression.getValue();
+
+	int j = 0;
+	for (int i = 0; i < values.length; i++) {
+	    if (val.toString().equals(values[j])) {
+		value += val.toString() + " ";
+		expression.next();
+		break;
+	    }
+	}
+
+	if (j == values.length) {
+	    throw new InvalidParamException("value", expression.getValue(),
+		    getPropertyName(), ac);
+	}
+
+    }
+
+    public CssBorderImageTransform(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssBorderImageTransform != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssBorderImageTransform = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getBorderImageTransform();
+	}
+	else {
+	    return ((Css3Style) style).cssBorderImageTransform;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderImageTransform &&
+		value.equals(((CssBorderImageTransform) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-corner-fit";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value.equals("none");
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssBorderLeftFitLength.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,169 @@
+//
+// $Id: CssBorderLeftFitLength.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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 CssBorderLeftFitLength extends CssProperty {
+
+    String value = "";
+
+    CssIdent repeat = new CssIdent("repeat");
+
+    private static String[] values = {
+	"clip", "repeat", "scale", "stretch", "overwrite", "overflow", "space"
+    };
+
+    /**
+     * Create a new CssBorderLeftFitLength
+     */
+    public CssBorderLeftFitLength() {
+	value = "repeat";
+    }
+
+    /**
+     * Create a new CssBorderLeftFitLength
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssBorderLeftFitLength(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+	int i = 0;
+
+	if (val instanceof CssIdent) {
+	    for (; i < values.length; i++) {
+		if (val.toString().equals(values[i])) {
+		    value = val.toString();
+		    expression.next();
+		    break;
+		}
+	    }
+	    if (i == values.length) {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+		    getPropertyName(), ac);
+	}
+
+	val = expression.getValue();
+	i = 0;
+
+	if (val != null) {
+	    if (val instanceof CssIdent) {
+		for (; i < values.length; i++) {
+		    if (val.toString().equals(values[i])) {
+			value += " " + val.toString();
+			expression.next();
+			break;
+		    }
+		}
+		if (i == values.length) {
+		    throw new InvalidParamException("value", expression.getValue(),
+			    getPropertyName(), ac);
+		}
+	    }
+	    else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+	}
+    }
+
+    public CssBorderLeftFitLength(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssBorderLeftFitLength != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssBorderLeftFitLength = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getBorderLeftFitLength();
+	}
+	else {
+	    return ((Css3Style) style).cssBorderLeftFitLength;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderLeftFitLength &&
+		value.equals(((CssBorderLeftFitLength) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-left-fit-length";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value.equals("repeat");
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssBorderLeftFitWidth.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,170 @@
+//
+// $Id: CssBorderLeftFitWidth.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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 CssBorderLeftFitWidth extends CssProperty {
+
+    String value = "";
+
+    CssIdent repeat = new CssIdent("repeat");
+
+    private static String[] values = {
+	"clip", "repeat", "scale", "stretch",
+	"overwrite", "overflow", "space"
+    };
+
+    /**
+     * Create a new CssBorderLeftFitWidth
+     */
+    public CssBorderLeftFitWidth() {
+	value = "repeat";
+    }
+
+    /**
+     * Create a new CssBorderLeftFitWidth
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssBorderLeftFitWidth(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+	int i = 0;
+
+	if (val instanceof CssIdent) {
+	    for (; i < values.length; i++) {
+		if (val.toString().equals(values[i])) {
+		    value = val.toString();
+		    expression.next();
+		    break;
+		}
+	    }
+	    if (i == values.length) {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+		    getPropertyName(), ac);
+	}
+
+	val = expression.getValue();
+	i = 0;
+
+	if (val != null) {
+	    if (val instanceof CssIdent) {
+		for (; i < values.length; i++) {
+		    if (val.toString().equals(values[i])) {
+			value += " " + val.toString();
+			expression.next();
+			break;
+		    }
+		}
+		if (i == values.length) {
+		    throw new InvalidParamException("value", expression.getValue(),
+			    getPropertyName(), ac);
+		}
+	    }
+	    else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+	}
+    }
+
+    public CssBorderLeftFitWidth(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssBorderLeftFitWidth != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssBorderLeftFitWidth = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getBorderLeftFitWidth();
+	}
+	else {
+	    return ((Css3Style) style).cssBorderLeftFitWidth;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderLeftFitWidth &&
+		value.equals(((CssBorderLeftFitWidth) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-left-fit-width";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value.equals("repeat");
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssBorderLeftImage.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,168 @@
+//
+// $Id: CssBorderLeftImage.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssNumber;
+import org.w3c.css.values.CssURL;
+import org.w3c.css.values.CssValue;
+
+
+
+public class CssBorderLeftImage extends CssProperty {
+
+    String value;
+    ApplContext ac;
+    CssIdent none = new CssIdent("none");
+
+    /**
+     * Create new CssBorderLeftImage
+     */
+    public CssBorderLeftImage() {
+	value = "none";
+    }
+
+    /**
+     * Create new CssBorderLeftImage
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderLeftImage(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val instanceof CssIdent) {
+	    if (val.equals(none)) {
+		value = "none";
+		expression.next();
+	    } else if (val.equals(inherit)) {
+		value = "inherit";
+		expression.next();
+	    }
+	} else if (val instanceof CssURL) {
+
+	    value = val.toString();
+	    expression.next();
+
+	    val = expression.getValue();
+
+	    if (val != null) {
+		if (val instanceof CssURL) {
+		    value += " " + val.toString();
+		    expression.next();
+		} else {
+		    throw new InvalidParamException("value", expression.getValue(),
+			    getPropertyName(), ac);
+		}
+
+		expression.next();
+		val = expression.getValue();
+
+		if (val != null) {
+		    if (val instanceof CssURL) {
+			value += " " + val.toString();
+			expression.next();
+		    } else {
+			throw new InvalidParamException("value", expression.getValue(),
+				getPropertyName(), ac);
+		    }
+		}
+	    }
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+		    getPropertyName(), ac);
+	}
+    }
+
+    public CssBorderLeftImage(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssBorderLeftImage != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssBorderLeftImage = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getBorderLeftImage();
+	} else {
+	    return ((Css3Style) style).cssBorderLeftImage;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderLeftImage &&
+		value.equals( ((CssBorderLeftImage) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-left-image";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return value;
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	CssNumber cssnum = new CssNumber(ac, (float) 1.0);
+	return value == cssnum.toString();
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssBorderRadius.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,172 @@
+//
+// $Id: CssBorderRadius.java,v 1.4 2008-03-26 09:04:05 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssTypes;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+
+
+public class CssBorderRadius extends CssProperty {
+
+    String value;
+    ApplContext ac;
+
+    private static String defaultValue;
+    
+    static {
+	defaultValue = (new CssNumber((float) 1.0)).toString();
+    }
+    
+    /**
+     * Create new CssBorderRadius
+     */
+    public CssBorderRadius() {
+	value = defaultValue;
+    }
+
+    /**
+     * Create new CssBorderRadius
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderRadius(ApplContext ac, CssExpression expression,
+			   boolean check) throws InvalidParamException {
+	setByUser();
+	CssValue val = expression.getValue();
+	char op = expression.getOperator();
+	StringBuilder sb = new StringBuilder();
+
+	if (op != CssOperator.SPACE) {
+	    throw new InvalidParamException("operator", Character.toString(op),
+					    ac);
+	}
+	switch (val.getType()) {
+	case CssTypes.CSS_NUMBER:
+	    val = ((CssNumber)val).getLength();
+	case CssTypes.CSS_LENGTH:
+	    sb.append(val.toString());
+	    
+	    expression.next();
+	    val = expression.getValue();
+	    op = expression.getOperator();
+	    if (val != null) {
+		if (op != CssOperator.SPACE) {
+		    throw new InvalidParamException("operator", 
+						    Character.toString(op),
+						    ac);
+		}
+		switch (val.getType()) {
+		case CssTypes.CSS_NUMBER:
+		    val = ((CssNumber)val).getLength();
+		case CssTypes.CSS_LENGTH:
+		    sb.append(' ').append(val.toString());
+		    expression.next();
+		    break;
+		default:
+		    throw new InvalidParamException("value", 
+						    val,
+						    getPropertyName(), ac);
+		}
+	    }
+	    value = sb.toString();
+	    break;
+	default:
+	    throw new InvalidParamException("value", 
+					    val,
+					    getPropertyName(), ac);
+	}
+    }
+    
+    public CssBorderRadius(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+    
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css3Style c3style = (Css3Style) style;
+	if (c3style.cssBorderRadius != null)
+	    style.addRedefinitionWarning(ac, this);
+	c3style.cssBorderRadius = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getBorderRadius();
+	} else {
+	    return ((Css3Style) style).cssBorderRadius;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderRadius &&
+		value.equals( ((CssBorderRadius) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-radius";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return value;
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return (defaultValue == value);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssBorderRightFitLength.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,169 @@
+//
+// $Id: CssBorderRightFitLength.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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 CssBorderRightFitLength extends CssProperty {
+
+    String value = "";
+
+    CssIdent repeat = new CssIdent("repeat");
+
+    private static String[] values = {
+		"clip", "repeat", "scale", "stretch", "overwrite", "overflow", "space"
+    };
+
+    /**
+     * Create a new CssBorderRightFitLength
+     */
+    public CssBorderRightFitLength() {
+		value = "repeat";
+    }
+
+    /**
+     * Create a new CssBorderRightFitLength
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssBorderRightFitLength(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+	int i = 0;
+
+	if (val instanceof CssIdent) {
+	    for (; i < values.length; i++) {
+		if (val.toString().equals(values[i])) {
+		    value = val.toString();
+		    expression.next();
+		    break;
+		}
+	    }
+	    if (i == values.length) {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+		    getPropertyName(), ac);
+	}
+
+	val = expression.getValue();
+	i = 0;
+
+	if (val != null) {
+	    if (val instanceof CssIdent) {
+		for (; i < values.length; i++) {
+		    if (val.toString().equals(values[i])) {
+			value += " " + val.toString();
+			expression.next();
+			break;
+		    }
+		}
+		if (i == values.length) {
+		    throw new InvalidParamException("value", expression.getValue(),
+			    getPropertyName(), ac);
+		}
+	    }
+	    else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+	}
+    }
+
+    public CssBorderRightFitLength(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssBorderRightFitLength != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssBorderRightFitLength = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getBorderRightFitLength();
+	}
+	else {
+	    return ((Css3Style) style).cssBorderRightFitLength;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderRightFitLength &&
+		value.equals(((CssBorderRightFitLength) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-right-fit-length";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value.equals("repeat");
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssBorderRightFitWidth.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,169 @@
+//
+// $Id: CssBorderRightFitWidth.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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 CssBorderRightFitWidth extends CssProperty {
+
+    String value = "";
+
+    CssIdent repeat = new CssIdent("repeat");
+
+    private static String[] values = {
+	"clip", "repeat", "scale", "stretch", "overwrite", "overflow", "space"
+    };
+
+    /**
+     * Create a new CssBorderRightFitWidth
+     */
+    public CssBorderRightFitWidth() {
+	value = "repeat";
+    }
+
+    /**
+     * Create a new CssBorderRightFitWidth
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssBorderRightFitWidth(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+	int i = 0;
+
+	if (val instanceof CssIdent) {
+	    for (; i < values.length; i++) {
+		if (val.toString().equals(values[i])) {
+		    value = val.toString();
+		    expression.next();
+		    break;
+		}
+	    }
+	    if (i == values.length) {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+		    getPropertyName(), ac);
+	}
+
+	val = expression.getValue();
+	i = 0;
+
+	if (val != null) {
+	    if (val instanceof CssIdent) {
+		for (; i < values.length; i++) {
+		    if (val.toString().equals(values[i])) {
+			value += " " + val.toString();
+			expression.next();
+			break;
+		    }
+		}
+		if (i == values.length) {
+		    throw new InvalidParamException("value", expression.getValue(),
+			    getPropertyName(), ac);
+		}
+	    }
+	    else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+	}
+    }
+
+    public CssBorderRightFitWidth(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssBorderRightFitWidth != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssBorderRightFitWidth = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getBorderRightFitWidth();
+	}
+	else {
+	    return ((Css3Style) style).cssBorderRightFitWidth;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderRightFitWidth &&
+		value.equals(((CssBorderRightFitWidth) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-right-fit-width";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value.equals("repeat");
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssBorderRightImage.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,168 @@
+//
+// $Id: CssBorderRightImage.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssNumber;
+import org.w3c.css.values.CssURL;
+import org.w3c.css.values.CssValue;
+
+
+
+public class CssBorderRightImage extends CssProperty {
+
+    String value;
+    ApplContext ac;
+    CssIdent none = new CssIdent("none");
+
+    /**
+     * Create new CssBorderRightImage
+     */
+    public CssBorderRightImage() {
+	value = "none";
+    }
+
+    /**
+     * Create new CssBorderRightImage
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderRightImage(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val instanceof CssIdent) {
+	    if (val.equals(none)) {
+		value = "none";
+		expression.next();
+	    } else if (val.equals(inherit)) {
+		value = "inherit";
+		expression.next();
+	    }
+	} else if (val instanceof CssURL) {
+
+	    value = val.toString();
+	    expression.next();
+
+	    val = expression.getValue();
+
+	    if (val != null) {
+		if (val instanceof CssURL) {
+		    value += " " + val.toString();
+		    expression.next();
+		} else {
+		    throw new InvalidParamException("value", expression.getValue(),
+			    getPropertyName(), ac);
+		}
+
+		expression.next();
+		val = expression.getValue();
+
+		if (val != null) {
+		    if (val instanceof CssURL) {
+			value += " " + val.toString();
+			expression.next();
+		    } else {
+			throw new InvalidParamException("value", expression.getValue(),
+				getPropertyName(), ac);
+		    }
+		}
+	    }
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+		    getPropertyName(), ac);
+	}
+    }
+
+    public CssBorderRightImage(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssBorderRightImage != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssBorderRightImage = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getBorderRightImage();
+	} else {
+	    return ((Css3Style) style).cssBorderRightImage;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderRightImage &&
+		value.equals( ((CssBorderRightImage) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-right-image";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return value;
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	CssNumber cssnum = new CssNumber(ac, (float) 1.0);
+	return value == cssnum.toString();
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssBorderTopFitLength.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,169 @@
+//
+// $Id: CssBorderTopFitLength.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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 CssBorderTopFitLength extends CssProperty {
+
+    String value = "";
+
+    CssIdent repeat = new CssIdent("repeat");
+
+    private static String[] values = {
+	"clip", "repeat", "scale", "stretch", "overwrite", "overflow", "space"
+    };
+
+    /**
+     * Create a new CssBorderTopFitLength
+     */
+    public CssBorderTopFitLength() {
+	value = "repeat";
+    }
+
+    /**
+     * Create a new CssBorderTopFitLength
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssBorderTopFitLength(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+	int i = 0;
+
+	if (val instanceof CssIdent) {
+	    for (; i < values.length; i++) {
+		if (val.toString().equals(values[i])) {
+		    value = val.toString();
+		    expression.next();
+		    break;
+		}
+	    }
+	    if (i == values.length) {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+		    getPropertyName(), ac);
+	}
+
+	val = expression.getValue();
+	i = 0;
+
+	if (val != null) {
+	    if (val instanceof CssIdent) {
+		for (; i < values.length; i++) {
+		    if (val.toString().equals(values[i])) {
+			value += " " + val.toString();
+			expression.next();
+			break;
+		    }
+		}
+		if (i == values.length) {
+		    throw new InvalidParamException("value", expression.getValue(),
+			    getPropertyName(), ac);
+		}
+	    }
+	    else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+	}
+    }
+
+    public CssBorderTopFitLength(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssBorderTopFitLength != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssBorderTopFitLength = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getBorderTopFitLength();
+	}
+	else {
+	    return ((Css3Style) style).cssBorderTopFitLength;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderTopFitLength &&
+		value.equals(((CssBorderTopFitLength) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-top-fit-length";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value.equals("repeat");
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssBorderTopFitWidth.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,169 @@
+//
+// $Id: CssBorderTopFitWidth.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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 CssBorderTopFitWidth extends CssProperty {
+
+    String value = "";
+
+    CssIdent repeat = new CssIdent("repeat");
+
+    private static String[] values = {
+	"clip", "repeat", "scale", "stretch", "overwrite", "overflow", "space"
+    };
+
+    /**
+     * Create a new CssBorderTopFitWidth
+     */
+    public CssBorderTopFitWidth() {
+	value = "repeat";
+    }
+
+    /**
+     * Create a new CssBorderTopFitWidth
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssBorderTopFitWidth(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+	int i = 0;
+
+	if (val instanceof CssIdent) {
+	    for (; i < values.length; i++) {
+		if (val.toString().equals(values[i])) {
+		    value = val.toString();
+		    expression.next();
+		    break;
+		}
+	    }
+	    if (i == values.length) {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+		    getPropertyName(), ac);
+	}
+
+	val = expression.getValue();
+	i = 0;
+
+	if (val != null) {
+	    if (val instanceof CssIdent) {
+		for (; i < values.length; i++) {
+		    if (val.toString().equals(values[i])) {
+			value += " " + val.toString();
+			expression.next();
+			break;
+		    }
+		}
+		if (i == values.length) {
+		    throw new InvalidParamException("value", expression.getValue(),
+			    getPropertyName(), ac);
+		}
+	    }
+	    else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+	}
+    }
+
+    public CssBorderTopFitWidth(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssBorderTopFitWidth != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssBorderTopFitWidth = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getBorderTopFitWidth();
+	}
+	else {
+	    return ((Css3Style) style).cssBorderTopFitWidth;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderTopFitWidth &&
+		value.equals(((CssBorderTopFitWidth) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-top-fit-width";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value.equals("repeat");
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssBorderTopImage.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,168 @@
+//
+// $Id: CssBorderTopImage.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssNumber;
+import org.w3c.css.values.CssURL;
+import org.w3c.css.values.CssValue;
+
+
+
+public class CssBorderTopImage extends CssProperty {
+
+    String value;
+    ApplContext ac;
+    CssIdent none = new CssIdent("none");
+
+    /**
+     * Create new CssBorderTopImage
+     */
+    public CssBorderTopImage() {
+	value = "none";
+    }
+
+    /**
+     * Create new CssBorderTopImage
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderTopImage(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val instanceof CssIdent) {
+	    if (val.equals(none)) {
+		value = "none";
+		expression.next();
+	    } else if (val.equals(inherit)) {
+		value = "inherit";
+		expression.next();
+	    }
+	} else if (val instanceof CssURL) {
+
+	    value = val.toString();
+	    expression.next();
+
+	    val = expression.getValue();
+
+	    if (val != null) {
+		if (val instanceof CssURL) {
+		    value += " " + val.toString();
+		    expression.next();
+		} else {
+		    throw new InvalidParamException("value", expression.getValue(),
+			    getPropertyName(), ac);
+		}
+
+		expression.next();
+		val = expression.getValue();
+
+		if (val != null) {
+		    if (val instanceof CssURL) {
+			value += " " + val.toString();
+			expression.next();
+		    } else {
+			throw new InvalidParamException("value", expression.getValue(),
+				getPropertyName(), ac);
+		    }
+		}
+	    }
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+		    getPropertyName(), ac);
+	}
+    }
+
+    public CssBorderTopImage(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssBorderTopImage != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssBorderTopImage = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getBorderTopImage();
+	} else {
+	    return ((Css3Style) style).cssBorderTopImage;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderTopImage &&
+		value.equals( ((CssBorderTopImage) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-top-image";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return value;
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	CssNumber cssnum = new CssNumber(ac, (float) 1.0);
+	return value == cssnum.toString();
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssBorderTopLeftFitLength.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,169 @@
+//
+// $Id: CssBorderTopLeftFitLength.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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 CssBorderTopLeftFitLength extends CssProperty {
+
+    String value = "";
+
+    CssIdent repeat = new CssIdent("repeat");
+
+    private static String[] values = {
+	"clip", "repeat", "scale", "stretch", "overwrite", "overflow", "space"
+    };
+
+    /**
+     * Create a new CssBorderTopLeftFitLength
+     */
+    public CssBorderTopLeftFitLength() {
+	value = "overwrite";
+    }
+
+    /**
+     * Create a new CssBorderTopLeftFitLength
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssBorderTopLeftFitLength(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+	int i = 0;
+
+	if (val instanceof CssIdent) {
+	    for (; i < values.length; i++) {
+		if (val.toString().equals(values[i])) {
+		    value = val.toString();
+		    expression.next();
+		    break;
+		}
+	    }
+	    if (i == values.length) {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+		    getPropertyName(), ac);
+	}
+
+	val = expression.getValue();
+	i = 0;
+
+	if (val != null) {
+	    if (val instanceof CssIdent) {
+		for (; i < values.length; i++) {
+		    if (val.toString().equals(values[i])) {
+			value += " " + val.toString();
+			expression.next();
+			break;
+		    }
+		}
+		if (i == values.length) {
+		    throw new InvalidParamException("value", expression.getValue(),
+			    getPropertyName(), ac);
+		}
+	    }
+	    else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+	}
+    }
+
+    public CssBorderTopLeftFitLength(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssBorderTopLeftFitLength != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssBorderTopLeftFitLength = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getBorderTopLeftFitLength();
+	}
+	else {
+	    return ((Css3Style) style).cssBorderTopLeftFitLength;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderTopLeftFitLength &&
+		value.equals(((CssBorderTopLeftFitLength) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-top-left-fit-length";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value.equals("overwrite");
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssBorderTopLeftFitWidth.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,169 @@
+//
+// $Id: CssBorderTopLeftFitWidth.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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 CssBorderTopLeftFitWidth extends CssProperty {
+
+    String value = "";
+
+    CssIdent repeat = new CssIdent("repeat");
+
+    private static String[] values = {
+	"clip", "repeat", "scale", "stretch", "overwrite", "overflow", "space"
+    };
+
+    /**
+     * Create a new CssBorderTopLeftFitWidth
+     */
+    public CssBorderTopLeftFitWidth() {
+	value = "overwrite";
+    }
+
+    /**
+     * Create a new CssBorderTopLeftFitWidth
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssBorderTopLeftFitWidth(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+	int i = 0;
+
+	if (val instanceof CssIdent) {
+	    for (; i < values.length; i++) {
+		if (val.toString().equals(values[i])) {
+		    value = val.toString();
+		    expression.next();
+		    break;
+		}
+	    }
+	    if (i == values.length) {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+		    getPropertyName(), ac);
+	}
+
+	val = expression.getValue();
+	i = 0;
+
+	if (val != null) {
+	    if (val instanceof CssIdent) {
+		for (; i < values.length; i++) {
+		    if (val.toString().equals(values[i])) {
+			value += " " + val.toString();
+			expression.next();
+			break;
+		    }
+		}
+		if (i == values.length) {
+		    throw new InvalidParamException("value", expression.getValue(),
+			    getPropertyName(), ac);
+		}
+	    }
+	    else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+	}
+    }
+
+    public CssBorderTopLeftFitWidth(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssBorderTopLeftFitWidth != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssBorderTopLeftFitWidth = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getBorderTopLeftFitWidth();
+	}
+	else {
+	    return ((Css3Style) style).cssBorderTopLeftFitWidth;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderTopLeftFitWidth &&
+		value.equals(((CssBorderTopLeftFitWidth) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-top-left-fit-width";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value.equals("overwrite");
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssBorderTopLeftImage.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,144 @@
+//
+// $Id: CssBorderTopLeftImage.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssNumber;
+import org.w3c.css.values.CssURL;
+import org.w3c.css.values.CssValue;
+
+
+
+public class CssBorderTopLeftImage extends CssProperty {
+
+    String value = "";
+    ApplContext ac;
+    CssIdent contin = new CssIdent("continue");
+    CssIdent none = new CssIdent("none");
+
+    /**
+     * Create new CssBorderTopLeftImage
+     */
+    public CssBorderTopLeftImage() {
+	value = "continue";
+    }
+
+    /**
+     * Create new CssBorderTopLeftImage
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderTopLeftImage(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val != null) {
+	    if (val.equals(none)) {
+		value = "none";
+	    } else if (val.equals(contin)) {
+		value = "continue";
+	    } else if (val instanceof CssURL) {
+		value = val.toString();
+	    } else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+		    getPropertyName(), ac);
+	}
+
+	expression.next();
+    }
+
+    public CssBorderTopLeftImage(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssBorderTopLeftImage != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssBorderTopLeftImage = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getBorderTopLeftImage();
+	} else {
+	    return ((Css3Style) style).cssBorderTopLeftImage;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderTopLeftImage &&
+		value.equals( ((CssBorderTopLeftImage) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-top-left-image";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return value;
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	CssNumber cssnum = new CssNumber(ac, (float) 1.0);
+	return value == cssnum.toString();
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssBorderTopLeftRadius.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,171 @@
+//
+// $Id: CssBorderTopLeftRadius.java,v 1.3 2008-03-26 09:04:05 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssOperator;
+import org.w3c.css.values.CssTypes;
+import org.w3c.css.values.CssValue;
+
+public class CssBorderTopLeftRadius extends CssProperty {
+
+    String value;
+    ApplContext ac;
+
+    private static String defaultValue;
+    private final static String propertyName = "border-top-left-radius";
+
+    static {
+	defaultValue = (new CssNumber((float) 1.0)).toString();
+    }
+
+    /**
+     * Create new CssBorderTopLeftRadius
+     */
+    public CssBorderTopLeftRadius() {
+	value = defaultValue;
+    }
+
+    /**
+     * Create new CssBorderTopLeftRadius
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderTopLeftRadius(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	setByUser();
+	CssValue val = expression.getValue();
+	char op = expression.getOperator();
+	StringBuilder sb = new StringBuilder();
+
+	if (op != CssOperator.SPACE) {
+	    throw new InvalidParamException("operator", Character.toString(op),
+					    ac);
+	}
+	switch (val.getType()) {
+	case CssTypes.CSS_NUMBER:
+	    val = ((CssNumber)val).getLength();
+	case CssTypes.CSS_LENGTH:
+	    sb.append(val.toString());
+	    
+	    expression.next();
+	    val = expression.getValue();
+	    op = expression.getOperator();
+	    if (val != null) {
+		if (op != CssOperator.SPACE) {
+		    throw new InvalidParamException("operator", 
+						    Character.toString(op),
+						    ac);
+		}
+		switch (val.getType()) {
+		case CssTypes.CSS_NUMBER:
+		    val = ((CssNumber)val).getLength();
+		case CssTypes.CSS_LENGTH:
+		    sb.append(' ').append(val.toString());
+		    expression.next();
+		    break;
+		default:
+		    throw new InvalidParamException("value", 
+						    val,
+						    getPropertyName(), ac);
+		}
+	    }
+	    value = sb.toString();
+	    break;
+	default:
+	    throw new InvalidParamException("value", 
+					    val,
+					    getPropertyName(), ac);
+	}
+    }
+    
+    public CssBorderTopLeftRadius(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssBorderTopLeftRadius != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssBorderTopLeftRadius = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getBorderTopLeftRadius();
+	} else {
+	    return ((Css3Style) style).cssBorderTopLeftRadius;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderTopLeftRadius &&
+		value.equals( ((CssBorderTopLeftRadius) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public final String getPropertyName() {
+	return propertyName;
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return inherit.equals(value);
+    }
+    
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return value;
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return  (defaultValue == value);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssBorderTopRightFitLength.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,169 @@
+//
+// $Id: CssBorderTopRightFitLength.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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 CssBorderTopRightFitLength extends CssProperty {
+
+    String value = "";
+
+    CssIdent repeat = new CssIdent("repeat");
+
+    private static String[] values = {
+	"clip", "repeat", "scale", "stretch", "overwrite", "overflow", "space"
+    };
+
+    /**
+     * Create a new CssBorderTopRightFitLength
+     */
+    public CssBorderTopRightFitLength() {
+	value = "overwrite";
+    }
+
+    /**
+     * Create a new CssBorderTopRightFitLength
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssBorderTopRightFitLength(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+	int i = 0;
+
+	if (val instanceof CssIdent) {
+	    for (; i < values.length; i++) {
+		if (val.toString().equals(values[i])) {
+		    value = val.toString();
+		    expression.next();
+		    break;
+		}
+	    }
+	    if (i == values.length) {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+		    getPropertyName(), ac);
+	}
+
+	val = expression.getValue();
+	i = 0;
+
+	if (val != null) {
+	    if (val instanceof CssIdent) {
+		for (; i < values.length; i++) {
+		    if (val.toString().equals(values[i])) {
+			value += " " + val.toString();
+			expression.next();
+			break;
+		    }
+		}
+		if (i == values.length) {
+		    throw new InvalidParamException("value", expression.getValue(),
+			    getPropertyName(), ac);
+		}
+	    }
+	    else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+	}
+    }
+
+    public CssBorderTopRightFitLength(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssBorderTopRightFitLength != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssBorderTopRightFitLength = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getBorderTopRightFitLength();
+	}
+	else {
+	    return ((Css3Style) style).cssBorderTopRightFitLength;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderTopRightFitLength &&
+		value.equals(((CssBorderTopRightFitLength) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-top-right-fit-length";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value.equals("overwrite");
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssBorderTopRightFitWidth.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,169 @@
+//
+// $Id: CssBorderTopRightFitWidth.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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 CssBorderTopRightFitWidth extends CssProperty {
+
+    String value = "";
+
+    CssIdent repeat = new CssIdent("repeat");
+
+    private static String[] values = {
+	"clip", "repeat", "scale", "stretch", "overwrite", "overflow", "space"
+    };
+
+    /**
+     * Create a new CssBorderTopRightFitWidth
+     */
+    public CssBorderTopRightFitWidth() {
+	value = "overwrite";
+    }
+
+    /**
+     * Create a new CssBorderTopRightFitWidth
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssBorderTopRightFitWidth(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+	int i = 0;
+
+	if (val instanceof CssIdent) {
+	    for (; i < values.length; i++) {
+		if (val.toString().equals(values[i])) {
+		    value = val.toString();
+		    expression.next();
+		    break;
+		}
+	    }
+	    if (i == values.length) {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+		    getPropertyName(), ac);
+	}
+
+	val = expression.getValue();
+	i = 0;
+
+	if (val != null) {
+	    if (val instanceof CssIdent) {
+		for (; i < values.length; i++) {
+		    if (val.toString().equals(values[i])) {
+			value += " " + val.toString();
+			expression.next();
+			break;
+		    }
+		}
+		if (i == values.length) {
+		    throw new InvalidParamException("value", expression.getValue(),
+			    getPropertyName(), ac);
+		}
+	    }
+	    else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+	}
+    }
+
+    public CssBorderTopRightFitWidth(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssBorderTopRightFitWidth != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssBorderTopRightFitWidth = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getBorderTopRightFitWidth();
+	}
+	else {
+	    return ((Css3Style) style).cssBorderTopRightFitWidth;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderTopRightFitWidth &&
+		value.equals(((CssBorderTopRightFitWidth) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-top-right-fit-width";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value.equals("overwrite");
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssBorderTopRightImage.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,144 @@
+//
+// $Id: CssBorderTopRightImage.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssNumber;
+import org.w3c.css.values.CssURL;
+import org.w3c.css.values.CssValue;
+
+
+
+public class CssBorderTopRightImage extends CssProperty {
+
+    String value = "";
+    ApplContext ac;
+    CssIdent contin = new CssIdent("continue");
+    CssIdent none = new CssIdent("none");
+
+    /**
+     * Create new CssBorderTopRightImage
+     */
+    public CssBorderTopRightImage() {
+	value = "continue";
+    }
+
+    /**
+     * Create new CssBorderTopRightImage
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderTopRightImage(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val != null) {
+	    if (val.equals(none)) {
+		value = "none";
+	    } else if (val.equals(contin)) {
+		value = "continue";
+	    } else if (val instanceof CssURL) {
+		value = val.toString();
+	    } else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+		    getPropertyName(), ac);
+	}
+
+	expression.next();
+    }
+
+    public CssBorderTopRightImage(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssBorderTopRightImage != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssBorderTopRightImage = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getBorderTopRightImage();
+	} else {
+	    return ((Css3Style) style).cssBorderTopRightImage;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderTopRightImage &&
+		value.equals( ((CssBorderTopRightImage) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "border-top-right-image";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return value;
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	CssNumber cssnum = new CssNumber(ac, (float) 1.0);
+	return value == cssnum.toString();
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssBorderTopRightRadius.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,171 @@
+//
+// $Id: CssBorderTopRightRadius.java,v 1.3 2008-03-26 09:04:05 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssOperator;
+import org.w3c.css.values.CssTypes;
+import org.w3c.css.values.CssValue;
+
+public class CssBorderTopRightRadius extends CssProperty {
+
+    String value;
+    ApplContext ac;
+
+    private static final String defaultValue;
+    private final static String propertyName = "border-top-right-radius";
+   
+    static {
+	defaultValue = (new CssNumber((float) 1.0)).toString();
+    }
+    
+    /**
+     * Create new CssBorderTopRightRadius
+     */
+    public CssBorderTopRightRadius() {
+	value = defaultValue;
+    }
+
+    /**
+     * Create new CssBorderTopRightRadius
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBorderTopRightRadius(ApplContext ac, CssExpression expression,
+				   boolean check) throws InvalidParamException {
+	setByUser();
+	CssValue val = expression.getValue();
+	char op = expression.getOperator();
+	StringBuilder sb = new StringBuilder();
+
+	if (op != CssOperator.SPACE) {
+	    throw new InvalidParamException("operator", Character.toString(op),
+					    ac);
+	}
+	switch (val.getType()) {
+	case CssTypes.CSS_NUMBER:
+	    val = ((CssNumber)val).getLength();
+	case CssTypes.CSS_LENGTH:
+	    sb.append(val.toString());
+	    
+	    expression.next();
+	    val = expression.getValue();
+	    op = expression.getOperator();
+	    if (val != null) {
+		if (op != CssOperator.SPACE) {
+		    throw new InvalidParamException("operator", 
+						    Character.toString(op),
+						    ac);
+		}
+		switch (val.getType()) {
+		case CssTypes.CSS_NUMBER:
+		    val = ((CssNumber)val).getLength();
+		case CssTypes.CSS_LENGTH:
+		    sb.append(' ').append(val.toString());
+		    expression.next();
+		    break;
+		default:
+		    throw new InvalidParamException("value", 
+						    val,
+						    getPropertyName(), ac);
+		}
+	    }
+	    value = sb.toString();
+	    break;
+	default:
+	    throw new InvalidParamException("value", 
+					    val,
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssBorderTopRightRadius(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssBorderTopRightRadius != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssBorderTopRightRadius = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getBorderTopRightRadius();
+	} else {
+	    return ((Css3Style) style).cssBorderTopRightRadius;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBorderTopRightRadius &&
+		value.equals( ((CssBorderTopRightRadius) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public final String getPropertyName() {
+	return propertyName;
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return (defaultValue == value);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssBoxHeight.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,159 @@
+//
+// $Id: CssBoxHeight.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssLength;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> &lt;length&gt; || &lt;percentage&gt; || auto || inherit<BR>
+ *  <EM>Initial:</EM>auto<BR>
+ *  <EM>Applies to:</EM>same as 'width' and 'height'<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ */
+
+public class CssBoxHeight extends CssProperty {
+
+    CssValue boxheight;
+    ApplContext ac;
+
+    CssIdent auto = new CssIdent("auto");
+    CssIdent initial = new CssIdent("initial");
+
+    /**
+     * Create a new CssBoxHeight
+     */
+    public CssBoxHeight() {
+	boxheight = auto;
+    }
+
+    /**
+     * Create a new CssBoxHeight
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBoxHeight(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val.equals(auto)) {
+	    boxheight = auto;
+	    expression.next();
+	}
+	else if (val.equals(inherit)) {
+	    boxheight = inherit;
+	    expression.next();
+	}
+	else if (val.equals(initial)) {
+	    boxheight = initial;
+	    expression.next();
+	}
+	else if (val instanceof CssLength) {
+	    boxheight = val;
+	    expression.next();
+	} else if (val instanceof CssPercentage) {
+	    boxheight = val;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssBoxHeight(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssBoxHeight != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssBoxHeight = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getBoxHeight();
+	} else {
+	    return ((Css3Style) style).cssBoxHeight;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBoxHeight &&
+                boxheight.equals( ((CssBoxHeight) property).boxheight));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "box-height";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return boxheight;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return boxheight.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return boxheight.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return boxheight == auto;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssBoxShadow.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,190 @@
+//
+// $Id: CssBoxShadow.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssColor;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssIdent;
+import org.w3c.css.values.CssLength;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+
+
+public class CssBoxShadow extends CssProperty implements CssOperator {
+
+    String value = "";
+    ApplContext ac;
+    CssIdent none = new CssIdent("none");
+
+    /**
+     * Create new CssBoxShadow
+     */
+    public CssBoxShadow() {
+	value = "none";
+    }
+
+    /**
+     * Create new CssBoxShadow
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBoxShadow(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	setByUser();
+	CssValue val = expression.getValue();
+	char op = COMMA;
+
+	if (val instanceof CssIdent) {
+	    if (val.equals(none)) {
+		value = "none";
+		expression.next();
+	    } else if (val.equals(inherit)) {
+		value = "inherit";
+		expression.next();
+	    }
+	} else {
+
+	    // <length> <length> <length>? || <color> [, <length> <length> <length>? || <color>]+
+
+	    int lengthcounter = 0;
+	    int runs = 1;
+
+	    for (int i = 0; i < expression.getCount(); i++) {
+
+		if (op != COMMA) {
+		    throw new InvalidParamException("operator",
+			    ((new Character(op)).toString()), ac);
+		} else if (runs != 1) {
+		    value += ", ";
+		}
+
+		val = expression.getValue();
+
+		if (val != null) {
+
+		    while (val instanceof CssLength && lengthcounter < 3) {
+			value += val.toString() + " ";
+			expression.next();
+			i++;
+			val = expression.getValue();
+			lengthcounter++;
+		    }
+
+		    if (lengthcounter == 2 || lengthcounter == 3) {
+			if (val instanceof CssColor) {
+			    value += val.toString() + " ";
+			} else {
+			    value += (new org.w3c.css.values.CssColor(ac, (String) val.get())).toString() + " ";
+			}
+		    } else {
+			throw new InvalidParamException("value", expression.getValue(),
+				getPropertyName(), ac);
+		    }
+		} else {
+
+		    if (runs < 2) {
+			throw new InvalidParamException("value", expression.getValue(),
+				getPropertyName(), ac);
+		    }
+
+		    value = value.trim();
+		    return;
+		}
+
+		op = expression.getOperator();
+		lengthcounter = 0;
+		expression.next();
+		runs++;
+	    }
+	}
+    }
+
+    public CssBoxShadow(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssBoxShadow != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssBoxShadow = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getBoxShadow();
+	} else {
+	    return ((Css3Style) style).cssBoxShadow;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBoxShadow &&
+		value.equals( ((CssBoxShadow) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "box-shadow";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return value;
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value.equals(none);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssBoxSizing.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,149 @@
+//
+// $Id: CssBoxSizing.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> content-box || border-box || inherit<BR>
+ *  <EM>Initial:</EM>content-box<BR>
+ *  <EM>Applies to:</EM>all elements that accept width or height<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ */
+
+public class CssBoxSizing extends CssProperty {
+
+    CssValue boxsizing;
+    ApplContext ac;
+
+    CssIdent contentbox = new CssIdent("content-box");
+    CssIdent borderbox = new CssIdent("border-box");
+    CssIdent initial = new CssIdent("initial");
+
+    /**
+     * Create a new CssBoxSizing
+     */
+    public CssBoxSizing() {
+	boxsizing = contentbox;
+    }
+
+    public CssBoxSizing(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val.equals(contentbox)) {
+	    boxsizing = contentbox;
+	    expression.next();
+	}
+	else if (val.equals(borderbox)) {
+	    boxsizing = borderbox;
+	    expression.next();
+	}
+	else if (val.equals(inherit)) {
+	    boxsizing = inherit;
+	    expression.next();
+	}
+	else if (val.equals(initial)) {
+	    boxsizing = initial;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssBoxSizing(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssBoxSizing != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssBoxSizing = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getBoxSizing();
+	} else {
+	    return ((Css3Style) style).cssBoxSizing;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBoxSizing &&
+                boxsizing.equals( ((CssBoxSizing) property).boxsizing));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "box-sizing";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return boxsizing;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return boxsizing.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return boxsizing.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return boxsizing == contentbox;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssBoxWidth.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,159 @@
+//
+// $Id: CssBoxWidth.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssLength;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> &lt;length&gt; || &lt;percentage&gt; || auto || inherit<BR>
+ *  <EM>Initial:</EM>auto<BR>
+ *  <EM>Applies to:</EM>same as 'width' and 'height'<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ */
+
+public class CssBoxWidth extends CssProperty {
+
+    CssValue boxwidth;
+    ApplContext ac;
+
+    CssIdent auto = new CssIdent("auto");
+    CssIdent initial = new CssIdent("initial");
+
+    /**
+     * Create a new CssBoxWidth
+     */
+    public CssBoxWidth() {
+	boxwidth = auto;
+    }
+
+    /**
+     * Create a new CssBoxWidth
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssBoxWidth(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val.equals(auto)) {
+	    boxwidth = auto;
+	    expression.next();
+	}
+	else if (val.equals(initial)) {
+		boxwidth = initial;
+		expression.next();
+	}
+	else if (val.equals(inherit)) {
+	    boxwidth = inherit;
+	    expression.next();
+	}
+	else if (val instanceof CssLength) {
+	    boxwidth = val;
+	    expression.next();
+	} else if (val instanceof CssPercentage) {
+	    boxwidth = val;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssBoxWidth(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssBoxWidth != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssBoxWidth = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getBoxWidth();
+	} else {
+	    return ((Css3Style) style).cssBoxWidth;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssBoxWidth &&
+                boxwidth.equals( ((CssBoxWidth) property).boxwidth));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "box-width";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return boxwidth;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return boxwidth.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return boxwidth.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return boxwidth == auto;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssClearAfter.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,141 @@
+//
+// $Id: CssClearAfter.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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 CssClearAfter extends CssProperty {
+
+    CssValue value;
+
+    static CssIdent none = new CssIdent("none");
+
+    private static String[] values = {
+		"none", "left", "right", "top", "bottom", "inside", "outside",
+		"start", "end", "both", "initial", "inherit"
+    };
+
+    /**
+     * Create a new CssClearAfter
+     */
+    public CssClearAfter() {
+	value = none;
+    }
+
+    /**
+     * Create a new CssClearAfter
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssClearAfter(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	int i = 0;
+	for (; i < values.length; i++) {
+	    if (val.toString().equals(values[i])) {
+		value = val;
+		expression.next();
+		break;
+	    }
+	}
+	if (i == values.length) {
+	    throw new InvalidParamException("value", expression.getValue(),
+		    getPropertyName(), ac);
+	}
+    }
+
+    public CssClearAfter(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssClearAfter != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssClearAfter = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getClearAfter();
+	}
+	else {
+	    return ((Css3Style) style).cssClearAfter;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssClearAfter &&
+		value.equals(((CssClearAfter) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "clear-after";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return (value == none);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssClearCSS3.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,162 @@
+//
+// $Id: CssClearCSS3.java,v 1.3 2005-09-14 15:15:04 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 org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *   <H4>
+ *     <A NAME="clear">5.5.26 &nbsp;&nbsp; 'clear'</A>
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> none | left | right | both<BR>
+ *   <EM>Initial:</EM> none<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P> This property specifies if an element allows floating elements on its
+ *   sides.  More specifically, the value of this property lists the sides where
+ *   floating elements are not accepted. With 'clear' set to 'left', an element
+ *   will be moved below any floating element on the left side. With 'clear' set
+ *   to 'none', floating elements are allowed on all sides. Example:
+ *   <PRE>
+ *   H1 { clear: left }
+ *  </PRE>
+ *
+ * @version $Revision: 1.3 $ */
+public class CssClearCSS3 extends CssProperty {
+
+    int value;
+
+    private static String[] CLEAR = {
+	"none", "left", "right", "both", "inherit",
+	"top", "bottom", "inside", "outside", "start", "end", "initial", "inherit"
+    };
+
+    private static int[] hash_values;
+
+    /**
+     * Create a new CssClearCSS3
+     */
+    public CssClearCSS3() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new CssClearCSS3
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssClearCSS3(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = expression.getValue();
+
+	setByUser();
+	if ( val instanceof CssIdent) {
+	    int hash = val.hashCode();
+	    for (int i = 0; i < CLEAR.length; i++)
+		if (hash_values[i] == hash) {
+		    value = i;
+		    expression.next();
+		    return;
+		}
+	}
+	throw new InvalidParamException("value", expression.getValue(),
+					getPropertyName(), ac);
+    }
+
+    public CssClearCSS3(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return CLEAR[value];
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "clear";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == CLEAR.length - 1;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return CLEAR[value];
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css3Style style0 = (Css3Style) style;
+	if (style0.cssClearCSS3 != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssClearCSS3 = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getClearCSS3();
+	} else {
+	    return ((Css3Style) style).cssClearCSS3;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssClearCSS3 &&
+		value == ((CssClearCSS3) property).value);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == 0;
+    }
+
+    static {
+	hash_values = new int[CLEAR.length];
+	for (int i = 0; i < CLEAR.length; i++)
+	    hash_values[i] = CLEAR[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssCollapse.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,154 @@
+//
+// $Id: CssCollapse.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssContent;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> none | &lt;content&gt; | inherit <BR>
+ *  <EM>Initial:</EM>none<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  There is one kind of implicit link that CSS can exploit and present as a hyperlink
+ *  and that is the relation between an element and its children.
+ */
+
+public class CssCollapse extends CssProperty {
+
+    CssValue collapse;
+
+    static CssIdent none = new CssIdent("none");
+
+    /**
+     * Create a new CssCollapse
+     */
+    public CssCollapse() {
+	collapse = none;
+    }
+
+    /**
+     * Create a new CssCollapse
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssCollapse(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val.equals(none)) {
+	    collapse = none;
+	    expression.next();
+	} else if (val.equals(inherit)) {
+	    collapse = inherit;
+	    expression.next();
+	} else {
+	    try {
+		CssContent content = new CssContent(ac, expression);
+		expression.next();
+		return;
+	    } catch (InvalidParamException ie) {
+		throw new InvalidParamException("value", expression.getValue(),
+						getPropertyName(), ac);
+	    }
+	}
+    }
+
+    public CssCollapse(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssCollapse != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssCollapse = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getCollapse();
+	}
+	else {
+	    return ((Css3Style) style).cssCollapse;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssCollapse &&
+		collapse.equals(((CssCollapse) property).collapse));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "collapse";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return collapse;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return collapse.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return collapse.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return (collapse == none);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssColorProfile.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,161 @@
+//
+// $Id: CssColorProfile.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// COPYRIGHT (c) 1995-2000 World Wide Web Consortium, (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssURL;
+import org.w3c.css.values.CssValue;
+
+/**
+ * <P>
+ * <EM>Value:</EM> auto || sRGB || &lt;uri&gt; || inherit<BR>
+ * <EM>Initial:</EM>auto<BR>
+ * <EM>Applies to:</EM>all elements or replaced elements??<BR>
+ * <EM>Inherited</EM>yes<BR>
+ * <EM>Percentages:</EM>no<BR>
+ * <EM>Media:</EM>visual
+ * <P>
+ * This property permits the specification of a source color profile other
+ *  than the default.
+ */
+
+    public class CssColorProfile extends CssProperty {
+
+	CssValue colorprofile;
+
+	static CssIdent auto = new CssIdent("auto");
+
+	/**
+	 * Create a new CssColorProfile
+	 */
+	public CssColorProfile() {
+	    colorprofile = auto;
+	}
+
+	/**
+	 * Create a new CssColorProfile
+	 *
+	 * @param expression The expression for this property
+	 * @exception InvalidParamException Values are incorrect
+	 */
+	public CssColorProfile(ApplContext ac, CssExpression expression,
+		boolean check) throws InvalidParamException {
+	    setByUser();
+	    CssValue val = expression.getValue();
+	    if (val instanceof CssIdent) {
+		if (val.equals(inherit)) {
+		    colorprofile = inherit;
+		    expression.next();
+		}
+		else if (val.equals(auto)) {
+		    colorprofile = auto;
+		    expression.next();
+		}
+		else {
+		    colorprofile = new org.w3c.css.values.CssColor(ac,
+			    (String) val.get());
+		    expression.next();
+		}
+	    }
+	    else if (val instanceof CssURL) {
+		colorprofile = val;
+		expression.next();
+	    }
+	    else if (val instanceof org.w3c.css.values.CssColor) {
+		colorprofile = val;
+		expression.next();
+	    }
+	    else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+        }
+
+	public CssColorProfile(ApplContext ac, CssExpression expression)
+		throws InvalidParamException {
+	    this(ac, expression, false);
+	}
+
+	/**
+	 * Add this property to the CssStyle.
+	 *
+	 * @param style The CssStyle
+	 */
+	public void addToStyle(ApplContext ac, CssStyle style) {
+	    if (((Css3Style) style).cssColorProfile != null)
+		style.addRedefinitionWarning(ac, this);
+	    ((Css3Style) style).cssColorProfile = this;
+	}
+
+	/**
+	 * Get this property in the style.
+	 *
+	 * @param style The style where the property is
+	 * @param resolve if true, resolve the style to find this property
+	 */
+        public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	    if (resolve) {
+		return ((Css3Style) style).getColorProfile();
+	    } else {
+		return ((Css3Style) style).cssColorProfile;
+	    }
+	}
+
+       /**
+        * Compares two properties for equality.
+        *
+        * @param value The other property.
+        */
+       public boolean equals(CssProperty property) {
+	   return (property instanceof CssColorProfile &&
+                colorprofile.equals( ((CssColorProfile) property).colorprofile));
+       }
+
+	/**
+	 * Returns the name of this property
+	 */
+	public String getPropertyName() {
+	    return "color-profile";
+	}
+
+	/**
+	 * Returns the value of this property
+	 */
+	public Object get() {
+	    return colorprofile;
+	}
+
+	/**
+	 * Returns true if this property is "softly" inherited
+	 */
+	public boolean isSoftlyInherited() {
+	    return colorprofile.equals(inherit);
+	}
+
+	/**
+	 * Returns a string representation of the object
+	 */
+	public String toString() {
+	    return colorprofile.toString();
+	}
+
+	/**
+	 * Is the value of this property a default value
+	 * It is used by all macro for the function <code>print</code>
+	 */
+	public boolean isDefault() {
+	    return colorprofile == auto;
+	}
+
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssColumnCount.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,165 @@
+//
+// $Id: CssColumnCount.java,v 1.3 2009-12-15 16:59:43 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssNumber;
+import org.w3c.css.values.CssTypes;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> &lt;integer&gt; || auto || inherit<BR>
+ *  <EM>Initial:</EM>auto<BR>
+ *  <EM>Applies to:</EM>block-level elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  The 'column-count' property determines the number of columns into which the content
+ *  of the element will be flowed.
+ */
+
+public class CssColumnCount extends CssProperty {
+
+    CssValue count;
+
+    static CssIdent auto = new CssIdent("auto");
+
+    /**
+     * Create a new CssColumnCount
+     */
+    public CssColumnCount() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new CssColumnCount
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssColumnCount(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+	CssNumber num;
+
+	switch(val.getType()) {
+	case CssTypes.CSS_NUMBER:
+	    num = (CssNumber) val;
+	    if (!num.isInteger()) {
+		throw new InvalidParamException("integer",expression.getValue(),
+						getPropertyName(), ac);
+	    }
+	    if (num.getInt() <= 0) {
+		throw new InvalidParamException("strictly-positive",
+						expression.getValue(),
+						getPropertyName(), ac);
+	    }
+	    count = val;
+	    break;
+	case CssTypes.CSS_IDENT:
+	    if (auto.equals(val)) {
+		count = auto;
+		break;
+	    }
+	    if (inherit.equals(val)) {
+		count = inherit;
+		break;
+	    }
+	default:
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+	expression.next();
+    }
+
+    public CssColumnCount(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssColumnCount != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssColumnCount = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getColumnCount();
+	} else {
+	    return ((Css3Style) style).cssColumnCount;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssColumnCount &&
+		count.equals(((CssColumnCount) property).count));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "column-count";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return count;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return (count == inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return count.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return (count == auto);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssColumnGap.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,169 @@
+//
+// $Id: CssColumnGap.java,v 1.3 2009-12-15 17:38:46 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// COPYRIGHT (c) 1995-2000 World Wide Web Consortium, (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssTypes;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> &lt;length&gt; || normal <BR>
+ *  <EM>Initial:</EM>normal<BR>
+ *  <EM>Applies to:</EM>multicol elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <EM>Computed value: absolute length or 'normal'
+ *  <P>The ‘column-gap’ property sets the gap between columns. 
+ *  If there is a column rule between columns, it will appear in the 
+ *  middle of the gap.
+ *  The ‘normal’ value is UA-specific. A value of ‘1em’ is suggested.
+ *  Column gaps cannot be negative.
+ *
+ */
+
+public class CssColumnGap extends CssProperty {
+
+    CssValue columngap;
+
+    static CssIdent normal;
+    static {
+	normal = new CssIdent("normal");
+    }
+    /**
+     * Create a new CssColumnGap
+     */
+    public CssColumnGap() {
+	columngap = normal;
+    }
+
+    /**
+     * Create a new CssColumnGap
+     */
+    public CssColumnGap(ApplContext ac, CssExpression expression,
+			boolean check) throws InvalidParamException {
+	setByUser();
+	CssValue val = expression.getValue();
+	Float value;
+
+	switch(val.getType()) {
+	case CssTypes.CSS_NUMBER:
+	    val = ((CssNumber)val).getLength();
+	case CssTypes.CSS_LENGTH:
+	    value = (Float) ((CssLength)val).get();
+	    if (value == null || value.floatValue() < 0.0) {
+		throw new InvalidParamException("negative-value", 
+						expression.getValue(),
+						getPropertyName(), ac);
+	    }
+	    columngap = val;
+	    break;
+	case CssTypes.CSS_IDENT:
+	    if (normal.equals(val)) {
+		columngap = normal;
+		break;
+	    }
+	    if (inherit.equals(val)) {
+		columngap = inherit;
+		break;
+	    }
+	default:
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+	expression.next();
+    }
+
+    public CssColumnGap(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssColumnGap != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssColumnGap = this;
+
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getColumnGap();
+	} else {
+	    return ((Css3Style) style).cssColumnGap;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssColumnGap &&
+		columngap.equals( ((CssColumnGap) property).columngap));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "column-gap";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return columngap;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return columngap.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return columngap.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return (columngap == normal);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssColumnRule.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,266 @@
+//
+// $Id: CssColumnRule.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssBorderBottomStyle;
+import org.w3c.css.properties.css1.CssBorderBottomWidth;
+import org.w3c.css.properties.css1.CssBorderLeftStyle;
+import org.w3c.css.properties.css1.CssBorderLeftWidth;
+import org.w3c.css.properties.css1.CssBorderRightStyle;
+import org.w3c.css.properties.css1.CssBorderRightWidth;
+import org.w3c.css.properties.css1.CssBorderTopStyle;
+import org.w3c.css.properties.css1.CssBorderTopWidth;
+import org.w3c.css.properties.css1.CssColor;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> &lt;border-style&gt; || &lt;color&gt; || &lt;border-width&gt; ||
+ *  inherit<BR>
+ *  <EM>Initial:</EM>the value of the color property<BR>
+ *  <EM>Applies to:</EM>block-level elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ */
+
+public class CssColumnRule extends CssProperty
+implements CssOperator {
+
+    CssValue value;
+    /* I should use border-width and border-style here, but I don't
+     * see how to implement a
+     * shorthand property for shorthand properties ... So I splitted it up
+     */
+    CssBorderTopWidth btw;
+    CssBorderRightWidth brw;
+    CssBorderLeftWidth blw;
+    CssBorderBottomWidth bbw;
+    CssBorderTopStyle bts;
+    CssBorderRightStyle brs;
+    CssBorderLeftStyle bls;
+    CssBorderBottomStyle bbs;
+    CssColor color;
+
+
+    /**
+     * Create a new CssColumnRule
+     */
+    public CssColumnRule() {
+    }
+
+    /**
+     * Create a new CssColumnRule
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect values
+     */
+    public CssColumnRule(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	CssValue val = expression.getValue();
+	int maxvalues = 9;
+	boolean correct = true;
+	char op = SPACE;
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	    expression.next();
+	} else {
+
+	    while (correct && (val != null) && (maxvalues -- > 0)) {
+
+		correct = false;
+
+		if (btw == null) {
+		    try {
+			btw = new CssBorderTopWidth(ac, expression);
+			correct = true;
+		    }
+		    catch (InvalidParamException e) {
+		    }
+		}
+		if (!correct && bbw == null) {
+		    try {
+			bbw = new CssBorderBottomWidth(ac, expression);
+			correct = true;
+		    }
+		    catch (InvalidParamException e) {
+		    }
+		}
+		if (!correct && blw == null) {
+		    try {
+			blw = new CssBorderLeftWidth(ac, expression);
+			correct = true;
+		    }
+		    catch (InvalidParamException e) {
+		    }
+		}
+		if (!correct && brw == null) {
+		    try {
+			brw = new CssBorderRightWidth(ac, expression);
+			correct = true;
+		    }
+		    catch (InvalidParamException e) {
+		    }
+		}
+		if (!correct && color == null) {
+		    try {
+			color = new CssColor(ac, expression);
+			correct = true;
+		    }
+		    catch (InvalidParamException e) {
+		    }
+		}
+
+		if (!correct && bts == null) {
+		    try {
+			bts = new CssBorderTopStyle(ac, expression);
+			correct = true;
+		    }
+		    catch (InvalidParamException e) {
+		    }
+		}
+		if (!correct && bbw == null) {
+		    try {
+			bbs = new CssBorderBottomStyle(ac, expression);
+			correct = true;
+		    }
+		    catch (InvalidParamException e) {
+		    }
+		}
+		if (!correct && bls == null) {
+		    try {
+			bls = new CssBorderLeftStyle(ac, expression);
+			correct = true;
+		    }
+		    catch (InvalidParamException e) {
+		    }
+		}
+		if (!correct && brs == null) {
+		    try {
+			brs = new CssBorderRightStyle(ac, expression);
+			correct = true;
+		    }
+		    catch (InvalidParamException e) {
+		    }
+		}
+
+		if (!correct) {
+		    throw new InvalidParamException("value",
+						    expression.getValue(),
+						    getPropertyName(), ac);
+		}
+
+		val = expression.getValue();
+		op = expression.getOperator();
+
+	    }
+	}
+    }
+
+    public CssColumnRule(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssColumnRule != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssColumnRule = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getColumnRule();
+	}
+	else {
+	    return ((Css3Style) style).cssColumnRule;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return false;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "column-border";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return null;
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+
+	String ret = "";
+
+	if (btw != null) {
+		ret += " " + btw.toString();
+	}
+	if (brw != null) {
+		ret += " " + brw.toString();
+	}
+	if (blw != null) {
+		ret += " " + blw.toString();
+    }
+	if (bbw != null) {
+		ret += " " + bbw.toString();
+    }
+	if (bts != null) {
+		ret += " " + bts.toString();
+    }
+	if (brs != null) {
+		ret += " " + brs.toString();
+    }
+	if (bls != null) {
+		ret += " " + bls.toString();
+    }
+    if (bbs != null) {
+		ret += " " + bbs.toString();
+    }
+    if (color != null) {
+		ret += " " + color.toString();
+    }
+
+	return ret.substring(1);
+
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssColumnRuleColor.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,145 @@
+//
+// $Id: CssColumnRuleColor.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssColor;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> &lt;color&gt; || inherit<BR>
+ *  <EM>Initial:</EM>the value of the color property<BR>
+ *  <EM>Applies to:</EM>block-level elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  This property describes how to interpret 'column-width'. The 'flexible'
+ *  value indicates that the width of columns can be increased to fill all
+ *  the available space. The 'strict' value indicates that 'column-width' is
+ *  to be honored.
+ */
+
+public class CssColumnRuleColor extends CssProperty {
+
+    CssColor color;
+
+    /**
+     * Create a new CssColumnRuleColor
+     */
+    public CssColumnRuleColor() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new CssColumnRuleColor
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssColumnRuleColor(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	try {
+	    color = new CssColor(ac, expression);
+	    expression.next();
+	}
+	catch (InvalidParamException e) {
+	    throw new InvalidParamException("value",
+					    expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssColumnRuleColor(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssColumnRuleColor != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssColumnRuleColor = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getColumnRuleColor();
+	}
+	else {
+	    return ((Css3Style) style).cssColumnRuleColor;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssColumnRuleColor &&
+		color.equals(((CssColumnRuleColor) property).color));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "column-border-color";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return color;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return color.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return color.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssColumnRuleStyle.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,140 @@
+//
+// $Id: CssColumnRuleStyle.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssBorderStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> &lt;border-style&gt; || inherit<BR>
+ *  <EM>Initial:</EM>none<BR>
+ *  <EM>Applies to:</EM>block-level elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ */
+
+public class CssColumnRuleStyle extends CssProperty {
+
+    CssBorderStyle value;
+
+    /**
+     * Create a new CssColumnRuleStyle
+     */
+    public CssColumnRuleStyle() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new CssColumnRuleStyle
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssColumnRuleStyle(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	try {
+	    value = new CssBorderStyle(ac, expression);
+	    expression.next();
+	}
+	catch (InvalidParamException e) {
+	    throw new InvalidParamException("value",
+					    expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssColumnRuleStyle(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssColumnRuleStyle != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssColumnRuleStyle = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getColumnRuleStyle();
+	}
+	else {
+	    return ((Css3Style) style).cssColumnRuleStyle;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssColumnRuleStyle &&
+		value.equals(((CssColumnRuleStyle) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "column-border-style";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssColumnRuleWidth.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,140 @@
+//
+// $Id: CssColumnRuleWidth.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssBorderWidth;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> &lt;border-width&gt; || inherit<BR>
+ *  <EM>Initial:</EM>medium<BR>
+ *  <EM>Applies to:</EM>block-level elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ */
+
+public class CssColumnRuleWidth extends CssProperty {
+
+    CssBorderWidth value;
+
+    /**
+     * Create a new CssColumnRuleWidth
+     */
+    public CssColumnRuleWidth() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new CssColumnRuleWidth
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssColumnRuleWidth(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	try {
+	    value = new CssBorderWidth(ac, expression);
+	    expression.next();
+	}
+	catch (InvalidParamException e) {
+	    throw new InvalidParamException("value",
+					    expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssColumnRuleWidth(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssColumnRuleWidth != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssColumnRuleWidth = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getColumnRuleWidth();
+	}
+	else {
+	    return ((Css3Style) style).cssColumnRuleWidth;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssColumnRuleWidth &&
+		value.equals(((CssColumnRuleWidth) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "column-border-width";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssColumnSpan.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,161 @@
+//
+// $Id: CssColumnSpan.java,v 1.4 2009-12-15 18:57:20 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssNumber;
+import org.w3c.css.values.CssTypes;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> 1 ||  all <BR>
+ *  <EM>Initial:</EM>1<BR>
+ *  <EM>Applies to:</EM>static, non-floating elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>N/A<BR>
+ *  <EM>Media:</EM>:visual
+ */
+
+public class CssColumnSpan extends CssProperty {
+
+    CssValue value;
+    ApplContext ac;
+
+    static CssIdent all;
+    static {
+	all = new CssIdent("all");
+    }
+
+    /**
+     * Create a new CssColumnSpan
+     */
+    public CssColumnSpan() {
+	//nothing to do
+    }
+
+    /**
+     * Create a new CssColumnSpan
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssColumnSpan(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	this.ac = ac;
+	setByUser(); // tell this property is set by the user
+	CssValue val = expression.getValue();
+
+	switch (val.getType()) {
+	case CssTypes.CSS_NUMBER:
+	    int ival = ((CssNumber) val).getInt();
+	    if (ival != 1) {
+		throw new InvalidParamException("value", val.toString(),
+						getPropertyName(), ac);
+	    }
+	    value = val;
+	    break;
+	case CssTypes.CSS_IDENT:
+	    if (all.equals(val)) {
+		value = all;
+		break;
+	    }
+	    if (inherit.equals(val)) {
+		value = inherit;
+		break;
+	    }
+	default:
+	    throw new InvalidParamException("value", val.toString(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssColumnSpan(ApplContext ac, CssExpression expression)
+    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssColumnSpan != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssColumnSpan = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getColumnSpan();
+	} else {
+	    return ((Css3Style) style).cssColumnSpan;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssColumnSpan &&
+		value.equals( ((CssColumnSpan) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "column-span";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return (value == inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	// we only have 3 values
+	return ((value != all) && (value != inherit));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssColumnWidth.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,174 @@
+//
+// $Id: CssColumnWidth.java,v 1.4 2009-12-15 17:23:49 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssTypes;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> &lt;integer&gt; || auto <BR>
+ *  <EM>Initial:</EM>auto<BR>
+ *  <EM>Applies to:</EM>block-level elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  The 'column-width' property describes the optimal width of columns within the element.
+ *  Depending on the value of 'column-width-policy', the actual column width may be
+ *  larger than the specified one.
+ */
+
+public class CssColumnWidth extends CssProperty {
+
+    CssValue width;
+
+    static CssIdent auto;
+
+    static {
+	auto = new CssIdent("auto");
+    }
+
+    /**
+     * Create a new CssColumnWidth
+     */
+    public CssColumnWidth() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new CssColumnWidth
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssColumnWidth(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+	Float value;
+
+	switch (val.getType()) {
+	case CssTypes.CSS_NUMBER:
+	    val = ((CssNumber)val).getLength();
+	    // if we didn't fall in the first trap, there is another one :)
+	    throw new InvalidParamException("strictly-positive", 
+					    expression.getValue(),
+					    getPropertyName(), ac);
+	case CssTypes.CSS_LENGTH:
+	    value = (Float) ((CssLength)val).get();
+	    if (value == null || value.floatValue() <= 0.0) {
+		throw new InvalidParamException("strictly-positive", 
+						expression.getValue(),
+						getPropertyName(), ac);
+	    }
+	    width = val;
+	    break;
+	case CssTypes.CSS_IDENT:
+	    if (inherit.equals(val)) {
+		width = inherit;
+		break;
+	    } else if ( auto.equals(val)) {
+		width = auto;
+		break;
+	    } 
+	default:
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+	expression.next();
+    }
+
+    public CssColumnWidth(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssColumnWidth != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssColumnWidth = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getColumnWidth();
+	}
+	else {
+	    return ((Css3Style) style).cssColumnWidth;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssColumnWidth &&
+		width.equals(((CssColumnWidth) property).width));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "column-width";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return width;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return width.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return width.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return (width == auto);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssCrop.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,223 @@
+//
+// $Id: CssCrop.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssFunction;
+import org.w3c.css.values.CssIdent;
+import org.w3c.css.values.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> &lt; alphavalue&gt; || inherit<BR>
+ *  <EM>Initial:</EM>1<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  This property sets the Crop of an element.
+ *  <PRE>
+ *  H1 { Crop: 0}
+ *  </PRE>
+ */
+
+public class CssCrop extends CssProperty implements CssOperator {
+
+    String crop;
+    ApplContext ac;
+    CssIdent none = new CssIdent("none");
+    CssIdent initial = new CssIdent("initial");
+
+    /**
+     * Create a new CssCrop
+     */
+    public CssCrop() {
+	crop = "none";
+    }
+
+    /**
+     * Create a new CssCrop
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssCrop(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	this.ac = ac;
+	setByUser(); // tell this property is set by the user
+	CssValue val = expression.getValue();
+
+	if (val instanceof CssFunction) {
+	    CssFunction fun = (CssFunction) val;
+	    CssExpression params = fun.getParameters();
+
+	    CssValue v;
+
+	    if (fun.getName().equals("rect")) {
+		if (params.getCount() == 4) {
+
+		    crop = "rect(";
+
+		    for (int i =0; i < 4; i++) {
+			v = params.getValue();
+			if (!(v instanceof CssLength || v instanceof CssPercentage) ) {
+			    throw new InvalidParamException("value", params.getValue(),
+				    getPropertyName(), ac);
+			} else {
+			    if (i == 0)
+				crop += v.toString();
+			    else
+				crop += ", " + v.toString();
+			}
+			params.next();
+		    }
+
+		} else {
+		    throw new InvalidParamException("value", params.getValue(),
+			    getPropertyName(), ac);
+		}
+	    } else if (fun.getName().equals("inset-rect")) {
+
+		if (params.getCount() == 4) {
+
+		    crop = "inset-rect(";
+
+		    for (int i =0; i < 4; i++) {
+			v = params.getValue();
+			if (!(v instanceof CssLength || v instanceof CssPercentage) ) {
+			    throw new InvalidParamException("value", params.getValue(),
+				    getPropertyName(), ac);
+			} else {
+			    if (i == 0)
+				crop += v.toString();
+			    else
+				crop += ", " + v.toString();
+			}
+			params.next();
+		    }
+
+		} else {
+		    throw new InvalidParamException("value", params.getValue(),
+			    getPropertyName(), ac);
+		}
+	    }
+	    else throw new InvalidParamException("value", expression.getValue(),
+		    getPropertyName(), ac);
+
+	    crop += ")";
+	    expression.next();
+	    return;
+	}
+	else if (val instanceof CssIdent) {
+	    if (val.equals(inherit)) {
+		crop = "inherit";
+		expression.next();
+	    } else if (val.equals(none)) {
+		crop = "none";
+		expression.next();
+	    } else if (val.equals(initial)) {
+		crop = "initial";
+		expression.next();
+	    } else {
+		throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+	    }
+	}
+	else {
+	    throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+	}
+    }
+
+    public CssCrop(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssCrop != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssCrop = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getCrop();
+	} else {
+	    return ((Css3Style) style).cssCrop;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssCrop &&
+		crop.equals( ((CssCrop) property).crop));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "crop";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return crop;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return crop.equals("inherit");
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return crop;
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	CssNumber cssnum = new CssNumber(ac, (float) 1.0);
+	return crop == cssnum.toString();
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssDisplayModel.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,150 @@
+//
+// $Id: CssDisplayModel.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> text | flow | svg | math | table | ruby | inherit<BR>
+ *  <EM>Initial:</EM>text<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ */
+
+public class CssDisplayModel extends CssProperty {
+
+    CssValue model;
+
+    static CssIdent text = new CssIdent("text");
+
+    private static String[] values = {
+		"inline-inside", "block-inside", "table", "ruby",
+		"initial", "inherit"
+    };
+
+    /**
+     * Create a new CssDisplayModel
+     */
+    public CssDisplayModel() {
+	model = text;
+    }
+
+    /**
+     * Create a new CssDisplayModel
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssDisplayModel(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	int i = 0;
+	for (; i < values.length; i++) {
+	    if (val.toString().equals(values[i])) {
+		model = val;
+		expression.next();
+		break;
+	    }
+	}
+	if (i == values.length) {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssDisplayModel(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssDisplayModel != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssDisplayModel = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getDisplayModel();
+	}
+	else {
+	    return ((Css3Style) style).cssDisplayModel;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssDisplayModel &&
+		model.equals(((CssDisplayModel) property).model));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "display-model";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return model;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return model.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return model.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return (model == text);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssDisplayRole.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,155 @@
+//
+// $Id: CssDisplayRole.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> none | block | inline | list-item | marker | run-in | compact |
+ *  table-row | table-cell | table-row-group | table-header-group | table-footer-group |
+ *  table-column | table-column-group | table-caption | ruby-text | ruby-base |
+ *  ruby-base-group | ruby-text-group | inherited <BR>
+ *  <EM>Initial:</EM>inline<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ */
+
+public class CssDisplayRole extends CssProperty {
+
+    CssValue role;
+
+    static CssIdent inline = new CssIdent("inline");
+
+    private static String[] values = {
+	"none", "block", "inline", "list-item", "run-in", "compact", "table-row",
+	"table-cell", "table-row-group", "table-header-group", "table-footer-group",
+	"table-column", "table-column-group", "table-caption", "ruby-text", "ruby-base",
+	"ruby-base-group", "ruby-text-group", "initial", "inherit"
+    };
+
+    /**
+     * Create a new CssDisplayRole
+     */
+    public CssDisplayRole() {
+	role = inline;
+    }
+
+    /**
+     * Create a new CssDisplayRole
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssDisplayRole(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	int i = 0;
+	for (; i < values.length; i++) {
+	    if (val.toString().equals(values[i])) {
+		role = val;
+		expression.next();
+		break;
+	    }
+	}
+	if (i == values.length) {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssDisplayRole(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssDisplayRole != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssDisplayRole = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getDisplayRole();
+	}
+	else {
+	    return ((Css3Style) style).cssDisplayRole;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssDisplayRole &&
+		role.equals(((CssDisplayRole) property).role));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "display-role";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return role;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return role.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return role.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return (role == inline);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssDominantBaseLine.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,162 @@
+//
+// $Id: CssDominantBaseLine.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> auto || autosense-script || no-change || reset-size ||
+ *  ideographic || alphabetic || hanging || mathematical || inherit<BR>
+ *  <EM>Initial:</EM>auto<BR>
+ *  <EM>Applies to:</EM>inline-level elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  The 'dominant-baseline' property is used:
+ *   <UL>
+ *     <LI>to determine the dominant baseline
+ *     <LI>to select the baseline-table
+ *     <LI>to establish the font-size used with the baseline-table
+ *   </UL>
+ */
+
+public class CssDominantBaseLine extends CssProperty {
+
+    CssValue dombaseline;
+
+    static CssIdent auto = new CssIdent("auto");
+
+    private static String[] values = {
+	"auto", "use-script", "no-change", "reset-size",
+	"ideographic", "alphabetic", "hanging", "mathematical",
+	"central", "middle", "text-after-edge", "text-before-edge",
+	"inherit", "initial"
+    };
+
+    /**
+     * Create a new CssDominantBaseLine
+     */
+    public CssDominantBaseLine() {
+	dombaseline = auto;
+    }
+
+    /**
+     * Create a new CssDominantBaseLine
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssDominantBaseLine(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	int i = 0;
+	for (; i < values.length; i++) {
+	    if (val.toString().equals(values[i])) {
+		dombaseline = val;
+		expression.next();
+		break;
+	    }
+	}
+	if (i == values.length) {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssDominantBaseLine(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssDominantBaseLine != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssDominantBaseLine = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getDominantBaseLine();
+	}
+	else {
+	    return ((Css3Style) style).cssDominantBaseLine;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssDominantBaseLine &&
+		dombaseline.equals(((CssDominantBaseLine) property).dombaseline));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "dominant-baseline";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return dombaseline;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return dombaseline.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return dombaseline.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return (dombaseline == auto);
+    }
+
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssDropInitialAfterAdjust.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,172 @@
+//
+// $Id: CssDropInitialAfterAdjust.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssLength;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> auto || &lt;percentage&gt; || &lt;length&gt; || inherit<BR>
+ *  <EM>Initial:</EM>auto<BR>
+ *  <EM>Applies to:</EM>inline-level elements<BR>
+ *  <EM>Inherited:</EM>yes<BR>
+ *  <EM>Percentages:</EM>refers to the 'line-height' of the element<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  The 'alignment-adjust' property allows more precise alignment of
+ *  elements, such as graphics, that do not have a baseline-table
+ *  or lack the desired baseline in their baseline-table. With the
+ *  'alignment-adjust' property, the position of the baseline
+ *  identified by the 'alignment-baseline' can be explicitly determined.
+ */
+
+public class CssDropInitialAfterAdjust extends CssProperty {
+
+    CssValue dropvalue;
+
+    CssIdent textafteredge = new CssIdent("text-after-edge");
+
+    private static String[] values = {
+	"middle", "central", "after-edge", "text-after-edge",
+	"ideographic", "alphabetic", "hanging", "mathematical", "inherit", "initial"
+    };
+
+    /**
+     * Create a new CssDropInitialAfterAdjust
+     */
+    public CssDropInitialAfterAdjust() {
+	dropvalue = textafteredge;
+    }
+
+    /**
+     * Create a new CssDropInitialAfterAdjust
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssDropInitialAfterAdjust(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val instanceof CssIdent) {
+		int i = 0;
+		for (; i < values.length; i++) {
+		    if (val.toString().equals(values[i])) {
+				dropvalue = val;
+				expression.next();
+				break;
+	    	}
+		}
+		if (i == values.length) {
+			    throw new InvalidParamException("value", expression.getValue(),
+							    getPropertyName(), ac);
+		}
+	}
+	else if (val instanceof CssPercentage) {
+	    dropvalue = val;
+	    expression.next();
+	}
+	else if (val instanceof CssLength) {
+	    dropvalue = val;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssDropInitialAfterAdjust(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssDropInitialAfterAdjust != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssDropInitialAfterAdjust = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getDropInitialAfterAdjust();
+	}
+	else {
+	    return ((Css3Style) style).cssDropInitialAfterAdjust;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssDropInitialAfterAdjust &&
+		dropvalue.equals(((CssDropInitialAfterAdjust) property).dropvalue));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "drop-initial-after-adjust";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return dropvalue;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return dropvalue.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return dropvalue.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return dropvalue == textafteredge;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssDropInitialAfterAlign.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,156 @@
+//
+// $Id: CssDropInitialAfterAlign.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> baseline || auto-script || before-edge ||
+ *  text-before-edge || after-edge || text-after-edge || middle ||
+ *  ideographic || lower || hanging || mathematical || inherit<BR>
+ *  <EM>Initial:</EM>baseline<BR>
+ *  <EM>Applies to:</EM>inline-level elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  This property specifies how an inline-level element is aligned with
+ *   respect to its parent.
+ */
+
+public class CssDropInitialAfterAlign extends CssProperty {
+
+    CssValue dropvalue;
+
+    static CssIdent baseline = new CssIdent("baseline");
+
+    private static String[] values = {
+	"baseline", "use-script", "before-edge",
+	"text-before-edge", "after-edge", "text-after-edge", "central", "middle",
+	"ideographic", "alphabetic", "hanging", "mathematical", "inherit", "initial"
+    };
+
+    /**
+     * Create a new CssDropInitialAfterAlign
+     */
+    public CssDropInitialAfterAlign() {
+		dropvalue = baseline;
+    }
+
+    /**
+     * Create a new CssDropInitialAfterAlign
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssDropInitialAfterAlign(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	int i = 0;
+	for (; i < values.length; i++) {
+	    if (val.toString().equals(values[i])) {
+		dropvalue = val;
+		expression.next();
+		break;
+	    }
+	}
+	if (i == values.length) {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssDropInitialAfterAlign(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssDropInitialAfterAlign != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssDropInitialAfterAlign = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getDropInitialAfterAlign();
+	}
+	else {
+	    return ((Css3Style) style).cssDropInitialAfterAlign;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssDropInitialAfterAlign &&
+		dropvalue.equals(((CssDropInitialAfterAlign) property).dropvalue));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "drop-initial-after-align";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return dropvalue;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return dropvalue.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return dropvalue.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return (dropvalue == baseline);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssDropInitialBeforeAdjust.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,172 @@
+//
+// $Id: CssDropInitialBeforeAdjust.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssLength;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> auto || &lt;percentage&gt; || &lt;length&gt; || inherit<BR>
+ *  <EM>Initial:</EM>auto<BR>
+ *  <EM>Applies to:</EM>inline-level elements<BR>
+ *  <EM>Inherited:</EM>yes<BR>
+ *  <EM>Percentages:</EM>refers to the 'line-height' of the element<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  The 'alignment-adjust' property allows more precise alignment of
+ *  elements, such as graphics, that do not have a baseline-table
+ *  or lack the desired baseline in their baseline-table. With the
+ *  'alignment-adjust' property, the position of the baseline
+ *  identified by the 'alignment-baseline' can be explicitly determined.
+ */
+
+public class CssDropInitialBeforeAdjust extends CssProperty {
+
+    CssValue dropvalue;
+
+    CssIdent textbeforeedge = new CssIdent("text-before-edge");
+
+    private static String[] values = {
+	"before-edge", "text-before-edge", "middle", "central", "after-edge", "text-after-edge",
+	"ideographic", "hanging", "mathematical", "inherit", "initial"
+    };
+
+    /**
+     * Create a new CssDropInitialBeforeAdjust
+     */
+    public CssDropInitialBeforeAdjust() {
+	dropvalue = textbeforeedge;
+    }
+
+    /**
+     * Create a new CssDropInitialBeforeAdjust
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssDropInitialBeforeAdjust(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val instanceof CssIdent) {
+	    int i = 0;
+	    for (; i < values.length; i++) {
+		if (val.toString().equals(values[i])) {
+		    dropvalue = val;
+		    expression.next();
+		    break;
+		}
+	    }
+	    if (i == values.length) {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+	}
+	else if (val instanceof CssPercentage) {
+	    dropvalue = val;
+	    expression.next();
+	}
+	else if (val instanceof CssLength) {
+	    dropvalue = val;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+		    getPropertyName(), ac);
+	}
+    }
+
+    public CssDropInitialBeforeAdjust(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssDropInitialBeforeAdjust != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssDropInitialBeforeAdjust = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getDropInitialBeforeAdjust();
+	}
+	else {
+	    return ((Css3Style) style).cssDropInitialBeforeAdjust;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssDropInitialBeforeAdjust &&
+		dropvalue.equals(((CssDropInitialBeforeAdjust) property).dropvalue));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "drop-initial-before-adjust";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return dropvalue;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return dropvalue.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return dropvalue.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return dropvalue == textbeforeedge;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssDropInitialBeforeAlign.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,156 @@
+//
+// $Id: CssDropInitialBeforeAlign.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> baseline || auto-script || before-edge ||
+ *  text-before-edge || after-edge || text-after-edge || middle ||
+ *  ideographic || lower || hanging || mathematical || inherit<BR>
+ *  <EM>Initial:</EM>baseline<BR>
+ *  <EM>Applies to:</EM>inline-level elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  This property specifies how an inline-level element is aligned with
+ *   respect to its parent.
+ */
+
+public class CssDropInitialBeforeAlign extends CssProperty {
+
+    CssValue dropvalue;
+
+    static CssIdent capsheight = new CssIdent("caps-height");
+
+    private static String[] values = {
+	"caps-height", "baseline", "use-script", "before-edge",
+	"text-before-edge", "after-edge", "text-after-edge", "central", "middle",
+	"ideographic", "alphabetic", "hanging", "mathematical", "inherit", "initial"
+    };
+
+    /**
+     * Create a new CssDropInitialBeforeAlign
+     */
+    public CssDropInitialBeforeAlign() {
+		dropvalue = capsheight;
+    }
+
+    /**
+     * Create a new CssDropInitialBeforeAlign
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssDropInitialBeforeAlign(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	int i = 0;
+	for (; i < values.length; i++) {
+	    if (val.toString().equals(values[i])) {
+		dropvalue = val;
+		expression.next();
+		break;
+	    }
+	}
+	if (i == values.length) {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssDropInitialBeforeAlign(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssDropInitialBeforeAlign != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssDropInitialBeforeAlign = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getDropInitialBeforeAlign();
+	}
+	else {
+	    return ((Css3Style) style).cssDropInitialBeforeAlign;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssDropInitialBeforeAlign &&
+		dropvalue.equals(((CssDropInitialBeforeAlign) property).dropvalue));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "drop-initial-before-align";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return dropvalue;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return dropvalue.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return dropvalue.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return (dropvalue == capsheight);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssDropInitialSize.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,167 @@
+//
+// $Id: CssDropInitialSize.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> auto || &lt;percentage&gt; || &lt;length&gt; || inherit<BR>
+ *  <EM>Initial:</EM>auto<BR>
+ *  <EM>Applies to:</EM>inline-level elements<BR>
+ *  <EM>Inherited:</EM>yes<BR>
+ *  <EM>Percentages:</EM>refers to the 'line-height' of the element<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  The 'alignment-adjust' property allows more precise alignment of
+ *  elements, such as graphics, that do not have a baseline-table
+ *  or lack the desired baseline in their baseline-table. With the
+ *  'alignment-adjust' property, the position of the baseline
+ *  identified by the 'alignment-baseline' can be explicitly determined.
+ */
+
+public class CssDropInitialSize extends CssProperty {
+
+    CssValue dropvalue;
+
+    CssIdent auto = new CssIdent("auto");
+    CssIdent initial = new CssIdent("initial");
+
+    /**
+     * Create a new CssDropInitialSize
+     */
+    public CssDropInitialSize() {
+		dropvalue = auto;
+    }
+
+    /**
+     * Create a new CssDropInitialSize
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssDropInitialSize(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val.equals(auto)) {
+		dropvalue = auto;
+		expression.next();
+	}
+	else if (val.equals(initial)) {
+		dropvalue = initial;
+		expression.next();
+	}
+	else if (val instanceof CssNumber) {
+		dropvalue = val;
+		expression.next();
+	}
+	else if (val instanceof CssPercentage) {
+	    dropvalue = val;
+	    expression.next();
+	}
+	else if (val instanceof CssLength) {
+	    dropvalue = val;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssDropInitialSize(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssDropInitialSize != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssDropInitialSize = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getDropInitialSize();
+	}
+	else {
+	    return ((Css3Style) style).cssDropInitialSize;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssDropInitialSize &&
+		dropvalue.equals(((CssDropInitialSize) property).dropvalue));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "drop-initial-size";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return dropvalue;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return dropvalue.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return dropvalue.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return dropvalue == auto;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssDropInitialValue.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,140 @@
+//
+// $Id: CssDropInitialValue.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ *
+ */
+
+public class CssDropInitialValue extends CssProperty {
+
+    CssValue dropvalue;
+
+    CssIdent initial = new CssIdent("initial");
+
+    /**
+     * Create a new CssDropInitialValue
+     */
+    public CssDropInitialValue() {
+		dropvalue = initial;
+    }
+
+    /**
+     * Create a new CssDropInitialValue
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssDropInitialValue(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val.equals(initial)) {
+		dropvalue = initial;
+		expression.next();
+	}
+	else if (val instanceof CssNumber) {
+		dropvalue = val;
+		expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssDropInitialValue(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssDropInitialValue != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssDropInitialValue = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getDropInitialValue();
+	}
+	else {
+	    return ((Css3Style) style).cssDropInitialValue;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssDropInitialValue &&
+		dropvalue.equals(((CssDropInitialValue) property).dropvalue));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "drop-initial-value";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return dropvalue;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return dropvalue.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return dropvalue.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return dropvalue == initial;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssFit.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,153 @@
+//
+// $Id: CssFit.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> fill | hidden | meet | slice <BR>
+ *  <EM>Initial:</EM>hidden<BR>
+ *  <EM>Applies to:</EM>replaced elements<BR>
+ *  <EM>Inherited:</EM>yes<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  This property gives a hint for how to scale a replaced element if neither its
+ *  'width' nor its 'height' property is 'auto'. Not all replaced objects can be
+ *  scaled, but images typically can.
+ */
+
+public class CssFit extends CssProperty {
+
+    CssValue fit;
+
+    static CssIdent hidden = new CssIdent("hidden");
+
+    private static String[] values = {
+	"fill", "hidden", "meet", "slice", "initial", "inherit"
+    };
+
+    /**
+     * Create a new CssFit
+     */
+    public CssFit() {
+	fit = hidden;
+    }
+
+    /**
+     * Create a new CssFit
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssFit(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	int i = 0;
+	for (; i < values.length; i++) {
+	    if (val.toString().equals(values[i])) {
+		fit = val;
+		expression.next();
+		break;
+	    }
+	}
+	if (i == values.length) {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssFit(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssFit != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssFit = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getFit();
+	}
+	else {
+	    return ((Css3Style) style).cssFit;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssFit &&
+		fit.equals(((CssFit) property).fit));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "fit";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return fit;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return fit.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return fit.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return (fit == hidden);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssFitPosition.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,238 @@
+//
+// $Id: CssFitPosition.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.util.Util;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssIdent;
+import org.w3c.css.values.CssLength;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+
+public class CssFitPosition extends CssProperty implements CssOperator {
+
+    String fitpos = new String();
+    ApplContext ac;
+    CssIdent auto = new CssIdent("auto");
+    CssIdent initial = new CssIdent("initial");
+    CssIdent top = new CssIdent("top");
+    CssIdent center = new CssIdent("center");
+    CssIdent bottom = new CssIdent("bottom");
+
+    CssIdent left = new CssIdent("left");
+    CssIdent right = new CssIdent("right");
+
+    /**
+     * Create a new CssFitPosition
+     */
+    public CssFitPosition() {
+	fitpos = "0% 0%";
+    }
+
+    /**
+     * Create a new CssFitPosition
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssFitPosition(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	this.ac = ac;
+	setByUser(); // tell this property is set by the user
+	CssValue val = expression.getValue();
+	char op = expression.getOperator();
+
+	if (op == SPACE) {
+
+	    val = expression.getValue();
+
+	    if (val != null) {
+
+		if (val instanceof CssIdent) {
+		    if (val.equals(top)) {
+			fitpos += " " + val.toString();
+		    } else if (val.equals(center)) {
+			fitpos += " " + val.toString();
+		    } else if (val.equals(bottom)) {
+			fitpos += " " + val.toString();
+		    } else if (val.equals(initial)) {
+			fitpos += " " + val.toString();
+		    } else {
+			throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+		    }
+
+		    expression.next();
+		    op = expression.getOperator();
+		    val = expression.getValue();
+
+		    if (val != null && val instanceof CssIdent) {
+			if (val.equals(left)) {
+			    fitpos += " " + val.toString();
+			} else if (val.equals(center)) {
+			    fitpos += " " + val.toString();
+			} else if (val.equals(right)) {
+			    fitpos += " " + val.toString();
+			} else {
+			    throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+			}
+		    }
+
+		    expression.next();
+
+		} else if (val instanceof CssLength) {
+		    fitpos += " " + val.toString();
+
+		    expression.next();
+		    op = expression.getOperator();
+		    val = expression.getValue();
+
+		    if (val != null && val instanceof CssLength) {
+			fitpos += " " + val.toString();
+			expression.next();
+		    } else if (val instanceof CssPercentage) {
+			fitpos += " " + val.toString();
+			expression.next();
+		    }
+
+		} else if (val instanceof CssPercentage) {
+		    fitpos += " " + val.toString();
+
+		    expression.next();
+		    op = expression.getOperator();
+		    val = expression.getValue();
+
+		    if (val != null && val instanceof CssLength) {
+			fitpos += " " + val.toString();
+			expression.next();
+		    } else if (val instanceof CssPercentage) {
+			fitpos += " " + val.toString();
+			expression.next();
+		    }
+
+		} else {
+		    throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+		}
+	    }
+
+	}
+	else if (val instanceof CssIdent) {
+	    if (val.equals(inherit)) {
+		fitpos = "inherit";
+		expression.next();
+	    } else if (val.equals(auto)) {
+		fitpos = "auto";
+		expression.next();
+	    } else if (val.equals(initial)) {
+		fitpos = "initial";
+		expression.next();
+	    }
+	}
+	else {
+	    throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+	}
+    }
+
+    public CssFitPosition(ApplContext ac, CssExpression expression)
+    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Brings all values back between 0 and 1
+     *
+     * @param opac The value to be modified if necessary
+     */
+    private float clampedValue(ApplContext ac, float opac) {
+	if (opac < 0 || opac > 1) {
+	    ac.getFrame().addWarning("out-of-range", Util.displayFloat(opac));
+	    return ((opac<0)?0:1);
+	}
+	else return(opac);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssFitPosition != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssFitPosition = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getFitPosition();
+	} else {
+	    return ((Css3Style) style).cssFitPosition;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssFitPosition &&
+		fitpos.equals( ((CssFitPosition) property).fitpos));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "fit-position";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return fitpos;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return fitpos.equals("inherit");
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return fitpos;
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return fitpos.equals("0% 0%");
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssFloatCSS3.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,251 @@
+//
+// $Id: CssFloatCSS3.java,v 1.3 2005-09-14 15:15:04 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 org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *   <H4>
+ *      &nbsp;&nbsp; 'float'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> left | right | none<BR>
+ *   <EM>Initial:</EM> none<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+
+ *   <P> With the value 'none', the element will be displayed where it appears
+ *   in the text. With a value of 'left' ('right') the element will be moved to
+ *   the left ('right') and the text will wrap on the right (left) side of the
+ *   element.  With a value of 'left' or 'right', the element is treated as
+ *   block-level (i.e. the 'display' property is ignored).
+ *
+ *   <H3>
+ *      &nbsp;&nbsp; Floating elements
+ *   </H3>
+
+ *   <P> Using the <A HREF="#float">'float'</A> property, an element can be
+ *   declared to be outside the normal flow of elements and is then formatted as
+ *   a block-level element. For example, by setting the 'float' property of an
+ *   image to 'left', the image is moved to the left until the margin, padding
+ *   or border of another block-level element is reached. The normal flow will
+ *   wrap around on the right side. The margins, borders and padding of the
+ *   element itself will be honored, and the margins never collapse with the
+ *   margins of adjacent elements.
+
+ *   <P> A floating element is positioned subject to the following constraints:
+
+ *   <OL>
+
+ *     <LI> The left outer edge of a left-floating element may not be to the
+ *     left of the left inner edge of its parent element. Analogously for right
+ *     floating elements.
+
+ *     <LI> The left outer edge of a left floating element must be to the right
+ *     of the right outer edge of every earlier (in the HTML source)
+ *     left-floating element or the top of the former must be lower than the
+ *     bottom of the latter. Analogously for right floating elements.
+
+ *     <LI> The right outer edge of a left-floating element may not be to the
+ *     right of the left outer edge of any right-floating element that is to the
+ *     right of it. Analogously for right-floating elements.
+
+ *     <LI> A floating element's top may not be higher than the inner top of its
+ *     parent.
+
+ *     <LI> A floating element's top may not be higher than the top of any
+ *     earlier floating or block-level element.
+
+ *     <LI> A floating element's top may not be higher than the top of any
+ *     <EM>line-box</EM> (see section 4.4) with content that precedes the
+ *     floating element in the HTML source.
+
+ *     <LI> A floating element must be placed as high as possible.
+
+ *     <LI> A left-floating element must be put as far to the left as possible,
+ *     a right-floating element as far to the right as possible. A higher
+ *     position is preferred over one that is further to the left/right.
+
+ *   </OL>
+ *   <PRE>
+ *   &lt;STYLE TYPE="text/css"&gt;
+ *     IMG { float: left }
+ *     BODY, P, IMG { margin: 2em }
+ *   &lt;/STYLE&gt;
+
+ *   &lt;BODY&gt;
+ *     &lt;P&gt;
+ *       &lt;IMG SRC=img.gif&gt;
+ *       Some sample text that has no other...
+ *   &lt;/BODY&gt;
+ * </PRE>
+ *   <P>
+ *   The above example could be formatted as:
+ *   <PRE>
+ *    ________________________________________
+ *   |
+ *   |          max(BODY margin, P margin)
+ *   |          ______________________________
+ *   |    |    |             Some sample text
+ *   | B  | P  | IMG margins that has no other
+ *   | O  |    |    _____    purpose than to
+ *   | D  | m  |   |     |   show how floating
+ *   | Y  | a  |   | IMG |   elements are moved
+ *   |    | r  |   |     |   to the side of the
+ *   | m  | g  |   |_____|   parent element
+ *   | a  | i  |             while honoring
+ *   | r  | n  |             margins, borders
+ *   | g  |    |             and padding. Note
+ *   | i  |    |how adjacent vertical margins
+ *   | n  |    |are collapsed between non-
+ *   |    |    |floating block-level elements.
+ * </PRE>
+ *   <P> Note that the margin of the 'P' elements enclose the floating 'IMG'
+ *   element.
+ *   <P> There are two situations when floating elements can overlap with the
+ *   margin, border and padding areas of other elements:
+ *   <UL>
+ *     <LI> when the floating element has a negative margin: negative margins on
+ *     floating elements are honored as on other block-level elements.
+ *     <LI> when the floating element is wider or higher than the element it is
+ *     inside
+ *   </UL>
+ *
+ * @version $Revision: 1.3 $
+ */
+public class CssFloatCSS3 extends CssProperty {
+
+    int value;
+
+    private static String[] FLOAT = {
+	"left", "right", "top", "bottom", "inside", "outside", "start",
+	"end", "none", "inherit", "initial"
+    };
+
+    private static int[] hash_values;
+
+    /**
+     * Create a new CssFloatCSS3
+     */
+    public CssFloatCSS3() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new CssFloatCSS3
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssFloatCSS3(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = expression.getValue();
+	setByUser();
+	if ( val instanceof CssIdent) {
+	    int hash = val.hashCode();
+	    for (int i = 0; i < FLOAT.length; i++)
+		if (hash_values[i] == hash) {
+		    value = i;
+		    expression.next();
+		    return;
+		}
+	}
+	throw new InvalidParamException("value", expression.getValue(),
+					getPropertyName(), ac);
+    }
+
+    public CssFloatCSS3(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return FLOAT[value];
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "float";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == FLOAT.length - 1;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return FLOAT[value];
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css3Style style0 = (Css3Style) style;
+	if (style0.cssFloatCSS3 != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssFloatCSS3 = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getFloatCSS3();
+	} else {
+	    return ((Css3Style) style).cssFloatCSS3;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssFloatCSS3 &&
+		value == ((CssFloatCSS3) property).value);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == 0;
+    }
+
+    static {
+	hash_values = new int[FLOAT.length];
+	for (int i = 0; i < FLOAT.length; i++)
+	    hash_values[i] = FLOAT[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssFloatDisplace.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,152 @@
+//
+// $Id: CssFloatDisplace.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> none | block | line | list-item | marker | run-in | compact |
+ *  table-row | table-cell | table-row-group | table-header-group | table-footer-group |
+ *  table-column | table-column-group | table-caption | ruby-text | ruby-base |
+ *  ruby-base-group | ruby-text-group | inherited <BR>
+ *  <EM>Initial:</EM>line<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ */
+
+public class CssFloatDisplace extends CssProperty {
+
+    CssValue fd;
+
+    static CssIdent line = new CssIdent("line");
+
+    private static String[] values = {
+		"line", "indent", "block", "block-within-page", "initial", "inherit"
+    };
+
+    /**
+     * Create a new CssFloatDisplace
+     */
+    public CssFloatDisplace() {
+		fd = line;
+    }
+
+    /**
+     * Create a new CssFloatDisplace
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssFloatDisplace(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	int i = 0;
+	for (; i < values.length; i++) {
+	    if (val.toString().equals(values[i])) {
+		fd = val;
+		expression.next();
+		break;
+	    }
+	}
+	if (i == values.length) {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssFloatDisplace(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssFloatDisplace != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssFloatDisplace = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getFloatDisplace();
+	}
+	else {
+	    return ((Css3Style) style).cssFloatDisplace;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssFloatDisplace &&
+		fd.equals(((CssFloatDisplace) property).fd));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+		return "float-displace";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+		return fd;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+		return fd.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+		return fd.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+		return (fd == line);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssFontEffect.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,171 @@
+//
+// $Id: CssFontEffect.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> none || emboss || engrave || outline || inherit<BR>
+ *  <EM>Initial:</EM>none<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>yes<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  This property controls the special effect applied to glyphs.
+ *  <PRE>
+ *  H1 { font-effect: outline}
+ *  </PRE>
+ */
+
+public class CssFontEffect extends CssProperty {
+
+    CssValue effect;
+    ApplContext ac;
+
+    static CssIdent none = new CssIdent("none");
+    static CssIdent emboss = new CssIdent("emboss");
+    static CssIdent engrave = new CssIdent("engrave");
+    static CssIdent outline = new CssIdent("outline");
+
+    /**
+     * Create a new CssFontEffect
+     */
+    public CssFontEffect() {
+	effect = none;
+    }
+
+    /**
+     * Create a new CssFontEffect
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect values
+     */
+    public CssFontEffect(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	setByUser();
+	CssValue val = expression.getValue();
+	if (val.equals(none)) {
+	    effect = none;
+	    expression.next();
+	}
+	else if (val.equals(emboss)) {
+	    effect = emboss;
+	    expression.next();
+	}
+	else if (val.equals(engrave)) {
+	    effect = engrave;
+	    expression.next();
+	}
+	else if (val.equals(outline)) {
+	    effect = outline;
+	    expression.next();
+	}
+	else if (val.equals(inherit)) {
+	    effect = inherit;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+	}
+    }
+
+    public CssFontEffect(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssFontEffect != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssFontEffect = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getFontEffect();
+	}
+	else {
+	    return ((Css3Style) style).cssFontEffect;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssFontEffect &&
+		effect.equals(((CssFontEffect) property).effect));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "font-effect";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return effect;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return effect.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return effect.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return effect == none;
+    }
+
+}
+
+
+
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssFontEmphasize.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,173 @@
+//
+// $Id: CssFontEmphasize.java,v 1.3 2007-08-06 14:44:35 julien Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// COPYRIGHT (c) 1995-2000 World Wide Web Consortium, (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ * <P>
+ * <EM>Value:</EM> &lt;font-emphasize-style&gt; || &lt;font-emphasize-position&gt; || inherit<BR>
+ * <EM>Initial:</EM>see individual properties<BR>
+ * <EM>Applies to:</EM>all elements or replaced elements??<BR>
+ * <EM>Inherited</EM>yes<BR>
+ * <EM>Percentages:</EM>no<BR>
+ * <EM>Media:</EM>visual
+ * <P>
+ * This is a shorthand property for setting the style and position of the font emphasis decoration.
+ */
+
+public class CssFontEmphasize extends CssProperty
+implements CssOperator {
+
+    CssValue fontemph;
+    CssFontEmphasizePos fep;
+    CssFontEmphasizeStyle fes;
+
+    /**
+     * Creates a new CssFontEmphasize
+     */
+    public CssFontEmphasize() {
+    }
+
+    /**
+     * Creates a new CssFontEmphasize
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssFontEmphasize(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	CssValue val = expression.getValue();
+	int maxvalues = 2;
+	boolean correct = true;
+	char op = SPACE;
+
+	while (correct && (val != null) && (maxvalues-- > 0)) {
+
+	    correct = false;
+
+	    if (fep == null) {
+		try {
+		    fep = new CssFontEmphasizePos(ac, expression);
+		    correct = true;
+		}
+		catch (InvalidParamException e) {
+		}
+	    }
+	    if (fes == null) {
+		try {
+		    fes = new CssFontEmphasizeStyle(ac, expression);
+		    correct = true;
+		}
+		catch (InvalidParamException e) {
+		}
+	    }
+	    if (!correct) {
+		throw new InvalidParamException("value", expression.getValue(),
+						getPropertyName(), ac);
+	    }
+
+	    val = expression.getValue();
+	    op = expression.getOperator();
+
+	}
+
+    }
+
+    public CssFontEmphasize(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssFontEmphasize != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssFontEmphasize = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getFontEmphasize();
+	}
+	else {
+	    return ((Css3Style) style).cssFontEmphasize;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return false;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "font-emphasize";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return null;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    //    public boolean isSoftlyInherited() {
+    //	return fontemph.equals(inherit);
+    //}
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	String ret = "";
+	if (fes != null && fes.isByUser()) {
+	    ret += " " + fes;
+	}
+	if (fep != null && fep.isByUser()) {
+	    ret += " " + fep;
+	}
+	return ret.length() >= 1 ? ret.substring(1) : ret;
+    }
+
+    /*
+       Is the value of this property a default value
+       It is used by alle macro for the function <code>print</code>
+
+       public boolean isDefault() {
+       return fontemph == none;
+       }
+    */
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssFontEmphasizePos.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,157 @@
+//
+// $Id: CssFontEmphasizePos.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> before || after || inherit<BR>
+ *  <EM>Initial:</EM>before<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>yes<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  This property sets the position of the emphasis symbols. They can appear
+ *  either 'before' or 'after' the emphasized run of horizontal text.
+ *  The values 'before' and 'after' should be understood as relative to the
+ *  line baseline. In an horizontal layout flow, 'before' means above the text.
+ *  In a vertical layout flow, if the position is set to 'before' then the
+ *  emphasis marks should appear on the right side of the vertical text column.
+ *  If the position is set to 'after', then the emphasis should appear the the
+ *  left side of the column.
+ *  <PRE>
+ *  H1 { font-emphasize-position: before}
+ *  </PRE>
+ */
+
+public class CssFontEmphasizePos extends CssProperty {
+
+    CssValue emppos;
+    ApplContext ac;
+
+    static CssIdent before = new CssIdent("before");
+    static CssIdent after = new CssIdent("after");
+
+    /**
+     * Create new CssFontEmphasizePos
+     */
+    public CssFontEmphasizePos() {
+	emppos = before;
+    }
+
+    /**
+     * Create new CssFontEmphasizePos
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssFontEmphasizePos(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val.equals(before)) {
+	    emppos = before;
+	    expression.next();
+	}
+	else if (val.equals(after)) {
+	    emppos = before;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					getPropertyName(), ac);
+	}
+    }
+
+    public CssFontEmphasizePos(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssFontEmphasizePos != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssFontEmphasizePos = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getFontEmphasizePos();
+	} else {
+	    return ((Css3Style) style).cssFontEmphasizePos;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssFontEmphasizePos &&
+                emppos.equals( ((CssFontEmphasizePos) property).emppos));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "font-emphasize-position";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return emppos;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return emppos.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return emppos.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return emppos == before;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssFontEmphasizeStyle.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,168 @@
+//
+// $Id: CssFontEmphasizeStyle.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> none || accent || dot || circle || disc || inherit<BR>
+ *  <EM>Initial:</EM>none<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>yes<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  This property sets the style for the emphasis formatting applied to text.
+ *  East Asian documents use the following symbols on top of each glyph to
+ *  emphasize a run of text: an 'accent' symbol, a 'dot', a hollow 'circle', or *  a solid 'disc'.
+ *  <PRE>
+ *  H1 { font-emphasize: accent}
+ *  </PRE>
+ */
+
+public class CssFontEmphasizeStyle extends CssProperty {
+
+    CssValue emphstyle;
+    ApplContext ac;
+
+    static CssIdent none = new CssIdent("none");
+    static CssIdent accent = new CssIdent("accent");
+    static CssIdent dot = new CssIdent("dot");
+    static CssIdent circle = new CssIdent("circle");
+    static CssIdent disc = new CssIdent("disc");
+
+    /**
+     * Create a new CssFontEmphasizeStyle
+     */
+    public CssFontEmphasizeStyle() {
+	emphstyle = none;
+    }
+
+    /**
+     * Create a new CssFontEmphasizeStyle
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssFontEmphasizeStyle(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	setByUser();
+	CssValue val = expression.getValue();
+	if (val.equals(none)) {
+	    emphstyle = none;
+	    expression.next();
+	}
+	else if (val.equals(accent)) {
+	    emphstyle = accent;
+	    expression.next();
+	}
+	else if (val.equals(dot)) {
+	    emphstyle = dot;
+	    expression.next();
+	}
+	else if (val.equals(circle)) {
+	    emphstyle = circle;
+	    expression.next();
+	}
+	else if (val.equals(disc)) {
+	    emphstyle = disc;
+	    expression.next();
+	}
+	else if (val.equals(inherit)) {
+	    emphstyle = inherit;
+	    expression.next();
+	}
+	else throw new InvalidParamException("value", expression.getValue(),
+					     getPropertyName(), ac);
+    }
+
+    public CssFontEmphasizeStyle(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssFontEmphasizeStyle != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssFontEmphasizeStyle = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getFontEmphasizeStyle();
+	} else {
+	    return ((Css3Style) style).cssFontEmphasizeStyle;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssFontEmphasizeStyle &&
+                emphstyle.equals( ((CssFontEmphasizeStyle) property).emphstyle));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "font-emphasize-style";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return emphstyle;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return emphstyle.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return emphstyle.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return emphstyle == none;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssFontSmooth.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,201 @@
+//
+// $Id: CssFontSmooth.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import java.util.Hashtable;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssLength;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> auto || never || always || &lt;font-size&gt; || inherit<BR>
+ *  <EM>Initial:</EM>auto<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>yes<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  This property allows author control over applying anti-aliasing fonts when rendered.
+ *  <PRE>
+ *  H1 { font-smooth: never}
+ *  </PRE>
+ */
+
+public class CssFontSmooth extends CssProperty {
+
+    CssValue fontsmooth;
+    ApplContext ac;
+
+    static CssIdent auto = new CssIdent("auto");
+    static CssIdent never = new CssIdent("never");
+    static CssIdent always = new CssIdent("always");
+    static CssIdent xxsmall = new CssIdent("xx-small");
+    static CssIdent xsmall = new CssIdent("x-small");
+    static CssIdent small = new CssIdent("small");
+    static CssIdent medium = new CssIdent("medium");
+    static CssIdent large = new CssIdent("large");
+    static CssIdent xlarge = new CssIdent("x-large");
+    static CssIdent xxlarge = new CssIdent("xx-large");
+
+    Hashtable fsizes = new Hashtable();
+
+    /**
+     * Create a new CssFontSmooth
+     */
+    public CssFontSmooth() {
+	fontsmooth = auto;
+    }
+
+    /**
+     * Create a new CssFontSmooth
+     *
+     * @param  expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssFontSmooth(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	setByUser();
+	fsizes.put(xxsmall, "nothing");
+	fsizes.put(xsmall, "nothing");
+	fsizes.put(small, "nothing");
+	fsizes.put(medium, "nothing");
+	fsizes.put(large, "nothing");
+	fsizes.put(xlarge, "nothing");
+	fsizes.put(xxlarge, "nothing");
+	CssValue val = expression.getValue();
+
+	if (fsizes.containsKey(val)) {
+	    fontsmooth = val;
+	    expression.next();
+	}
+	else if (val instanceof CssLength) { // may not be negative!
+	    float f = ((Float) val.get()).floatValue();
+	    if (f >= 0) {
+		fontsmooth = val;
+		expression.next();
+		return;
+	    }
+	    else {
+		throw new InvalidParamException("negative-value",
+						val.toString(), ac);
+	    }
+	}
+	else if (val instanceof CssIdent) {
+	    if (val.equals(auto)) {
+		fontsmooth = auto;
+		expression.next();
+	    }
+	    else if (val.equals(never)) {
+		fontsmooth = never;
+		expression.next();
+	    }
+	    else if (val.equals(always)) {
+		fontsmooth = always;
+		expression.next();
+	    }
+	    else if (val.equals(inherit)) {
+		fontsmooth = inherit;
+		expression.next();
+	    }
+	} else if (val instanceof CssLength) {
+		fontsmooth = val;
+		expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssFontSmooth(ApplContext ac, CssExpression expression)
+    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssFontSmooth != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssFontSmooth = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getFontSmooth();
+	} else {
+	    return ((Css3Style) style).cssFontSmooth;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssFontSmooth &&
+		fontsmooth.equals( ((CssFontSmooth) property).fontsmooth));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "font-smooth";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return fontsmooth;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return fontsmooth.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return fontsmooth.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return fontsmooth == auto;
+    }
+
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssGlyphHor.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,165 @@
+//
+// $Id: CssGlyphHor.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssAngle;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssIdent;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> &lt;angle&gt; || inherit<BR>
+ *  <EM>Initial:</EM>0<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>yes<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  glyph-orientation-horizontal' controls glyph orientation when the primary
+ *  text advance direction is horizontal.
+ */
+
+public class CssGlyphHor extends CssProperty {
+
+    CssValue hor;
+    ApplContext ac;
+    CssIdent auto = new CssIdent("auto");
+    CssIdent inline = new CssIdent("inline");
+
+    /**
+     * Create a new CssGlyphHor
+     */
+    public CssGlyphHor() {
+	CssNumber cssnum = new CssNumber(1);
+	hor = cssnum;
+	this.ac = ac;
+    }
+
+    /**
+     * Create a new CssGlyphOrHor
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssGlyphHor(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	this.ac = ac;
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val.equals(inherit)) {
+	    hor = inherit;
+	    expression.next();
+	} else if (val instanceof CssAngle) {
+		hor = val;
+		expression.next();
+	} else if (val instanceof CssIdent) {
+		if (val.equals(auto)) {
+			hor = val;
+			expression.next();
+		} else if (val.equals(inline)) {
+			hor = val;
+			expression.next();
+		} else {
+		    throw new InvalidParamException("value", val.toString(),
+					    getPropertyName(), ac);
+		}
+	}
+	else {
+	    throw new InvalidParamException("value", val.toString(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssGlyphHor(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssGlyphHor != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssGlyphHor = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getGlyphHor();
+	}
+	else {
+	    return ((Css3Style) style).cssGlyphHor;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssGlyphHor &&
+		hor.equals(((CssGlyphHor) property).hor));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "glyph-orientation-horizontal";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return hor;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return hor.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	    return hor.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	CssNumber cssnum = new CssNumber(ac, 1);
+	return hor == cssnum;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssGlyphOrVert.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,163 @@
+//
+// $Id: CssGlyphOrVert.java,v 1.1 2005-08-23 16:24:20 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssAngle;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssIdent;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> &lt;angle&gt; || auto || inherit<BR>
+ *  <EM>Initial:</EM>auto<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>yes<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  glyph-orientation-vertical' controls glyph orientation when the primary
+ *  text advance direction is vertical.
+ */
+
+public class CssGlyphOrVert extends CssProperty {
+
+    CssValue vert;
+    CssIdent auto = new CssIdent("auto");
+    CssIdent inline = new CssIdent("inline");
+    CssIdent upright = new CssIdent("upright");
+
+    /**
+     * Create a new CssGlyphOrVert
+     */
+    public CssGlyphOrVert() {
+	vert = auto;
+    }
+
+    /**
+     * Create a new CssGlyphOrVert
+     *
+     * @param expression The expression for this property
+     8 @exception InvalidParamException Incorrect value
+     */
+    public CssGlyphOrVert(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val.equals(inherit)) {
+	    vert = inherit;
+	    expression.next();
+	} else if (val instanceof CssAngle) {
+		vert = val;
+		expression.next();
+	} else if (val instanceof CssIdent) {
+		if (val.equals(auto)) {
+			vert = val;
+			expression.next();
+		} else if (val.equals(inline)) {
+			vert = val;
+			expression.next();
+		} else if (val.equals(upright)) {
+			vert = val;
+			expression.next();
+		} else {
+		    throw new InvalidParamException("value", val.toString(),
+					    getPropertyName(), ac);
+		}
+	}
+	else {
+	    throw new InvalidParamException("value", val.toString(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssGlyphOrVert(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssGlyphOrVert != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssGlyphOrVert = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getGlyphOrVert();
+	}
+	else {
+	    return ((Css3Style) style).cssGlyphOrVert;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssGlyphOrVert &&
+		vert.equals(((CssGlyphOrVert) property).vert));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "glyph-orientation-vertical";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return vert;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return vert.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return vert.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return vert == auto;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssGroupReset.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,172 @@
+//
+// $Id: CssGroupReset.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import java.util.Vector;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> <identifier>+ || none || inherit<BR>
+ *  <EM>Initial:</EM>none<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:all
+ *  <P>
+ *  The groups defined by the group-reset property are used as values
+ *  for the toggle-group property.
+ */
+public class CssGroupReset extends CssProperty {
+
+    CssValue groupreset;
+    Vector values = new Vector();
+
+    static CssIdent none = new CssIdent("none");
+
+    /**
+     * Create a new CssGroupReset
+     */
+    public CssGroupReset() {
+	groupreset = none;
+    }
+
+    /**
+     * Create a new CssGroupReset
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect values
+     */
+    public CssGroupReset(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+	CssToggleGroup tg = new CssToggleGroup();
+	char op = expression.getOperator();
+	int counter = 0;
+
+	if (val.equals(none)) {
+	    groupreset = none;
+	    expression.next();
+	    return;
+	}
+	if (val.equals(inherit)) {
+	    groupreset = inherit;
+	    expression.next();
+	    return;
+	}
+
+	while ((op == CssOperator.SPACE)
+	       && (counter < expression.getCount())) {
+
+	    if (tg.groups.containsKey(val.toString())) {
+		values.addElement(val.toString());
+		expression.next();
+		val = expression.getValue();
+		op = expression.getOperator();
+	    }
+	    else {
+		throw new InvalidParamException("nogroup", expression.getValue(),
+						getPropertyName(), ac);
+	    }
+
+	    counter++;
+	}
+    }
+
+    public CssGroupReset(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssGroupReset != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssGroupReset = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getGroupReset();
+	} else {
+	    return ((Css3Style) style).cssGroupReset;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssGroupReset &&
+                groupreset.equals( ((CssGroupReset) property).groupreset));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "group-reset";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return groupreset;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return groupreset.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	if (groupreset != null)
+	    return groupreset.toString();
+	else
+	    return values.firstElement().toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return groupreset == none;
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssHangingPunctuation.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,149 @@
+//
+// $Id: CssHangingPunctuation.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// COPYRIGHT (c) 1995-2000 World Wide Web Consortium, (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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 CssHangingPunctuation extends CssProperty {
+
+    CssValue hangpunct;
+
+    private static CssIdent none = new CssIdent("none");
+    private static CssIdent start = new CssIdent("start");
+    private static CssIdent end = new CssIdent("end");
+    private static CssIdent both = new CssIdent("both");
+
+    /**
+     * Create a new CssHangingPunctuation
+     */
+    public CssHangingPunctuation() {
+	hangpunct = none;
+    }
+
+    /**
+     * Create a new CssHangingPunctuation
+     *
+     *
+     */
+    public CssHangingPunctuation(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	setByUser();
+	CssValue val = expression.getValue();
+	if (val.equals(none)) {
+	    hangpunct = none;
+	    expression.next();
+	}
+	else if (val.equals(start)) {
+	    hangpunct = start;
+	    expression.next();
+	}
+	else if (val.equals(inherit)) {
+	    hangpunct = inherit;
+	    expression.next();
+	}
+	else if (val.equals(end)) {
+	    hangpunct = end;
+	    expression.next();
+	}
+	else if (val.equals(both)) {
+	    hangpunct = both;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+	}
+    }
+
+    public CssHangingPunctuation(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssHangingPunctuation != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssHangingPunctuation = this;
+
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getHangingPunctuation();
+	} else {
+	    return ((Css3Style) style).cssHangingPunctuation;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssHangingPunctuation &&
+		hangpunct.equals( ((CssHangingPunctuation) property).hangpunct));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "hanging-punctuation";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return hangpunct;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return hangpunct.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return hangpunct.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return hangpunct == none;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssHeightCSS3.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,176 @@
+//
+// $Id: CssHeightCSS3.java,v 1.3 2005-09-14 15:15:04 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 org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *      &nbsp;&nbsp; 'height'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;length&gt; | auto <BR>
+ *   <EM>Initial:</EM> auto<BR>
+ *   <EM>Applies to:</EM> block-level and replaced elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   This property can be applied to text, but it is most useful with replaced
+ *   elements such as images. The height is to be enforced by scaling the image
+ *   if necessary. When scaling, the aspect ratio of the image is preserved if
+ *   the 'width' property is 'auto'.
+ *   <P>
+ *   Example:
+ *   <PRE>
+ *   IMG.icon { height: 100px }
+ *   </PRE>
+ *   <P>
+ *   If the 'width' and 'height' of a replaced element are both 'auto', these
+ *   properties will be set to the intrinsic dimensions of the element.
+ *   <P>
+ *   If applied to a textual element, the height can be enforced with e.g. a
+ *   scrollbar.
+ *   <P>
+ *   Negative values are not allowed.
+ * @version $Revision: 1.3 $
+ */
+public class CssHeightCSS3 extends CssProperty {
+
+    CssValue value;
+
+    private static CssIdent auto = new CssIdent("auto");
+    private static CssIdent initial = new CssIdent("initial");
+
+    /**
+     * Create a new CssHeightCSS3
+     */
+    public CssHeightCSS3() {
+	value = auto;
+    }
+
+    /**
+     * Create a new CssHeightCSS3
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssHeightCSS3(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = expression.getValue();
+
+	setByUser();
+	if (val.equals(inherit)) {
+	    value = inherit;
+	} else if (val.equals(initial)) {
+		value = initial;
+	} else if (val instanceof CssLength || val instanceof CssPercentage) {
+	    float f = ((Float) val.get()).floatValue();
+	    if (f < 0) {
+		throw new InvalidParamException("negative-value",
+						val.toString(), ac);
+	    }
+	    value = val;
+	} else if (val.equals(auto)) {
+	    value = auto;
+	} else if (val instanceof CssNumber) {
+	    value = ((CssNumber) val).getLength();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+
+	expression.next();
+    }
+
+    public CssHeightCSS3(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "height";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css3Style style0 = (Css3Style) style;
+	if (style0.cssHeightCSS3 != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssHeightCSS3 = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getHeightCSS3();
+	} else {
+	    return ((Css3Style) style).cssHeightCSS3;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssHeightCSS3 &&
+		value.equals(((CssHeightCSS3) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == auto;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssIcon.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,178 @@
+//
+// $Id: CssIcon.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Philippe Le Hegaret (Philippe.Le_Hegaret@sophia.inria.fr)
+// Updated september 14th 2000 by Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT MIT and INRIA, 1997.
+// Please first read the full copyright statement in file COPYRIGHT.html
+/*
+ */
+package org.w3c.css.properties.css3;
+import java.util.Vector;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssOperator;
+import org.w3c.css.values.CssURL;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.2 $
+ */
+public class CssIcon extends CssProperty
+    implements CssOperator {
+
+    int value;
+    CssValue icon;
+    Vector uris = new Vector();
+    CssIdent auto = new CssIdent("auto");
+    boolean inheritedValue;
+
+    /**
+     * Create a new CssIcon
+     */
+    public CssIcon() {
+		value = 0;
+    }
+
+    /**
+     * Create a new CssIcon
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssIcon(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	CssValue val = expression.getValue();
+	char op = expression.getOperator();
+
+	setByUser();
+	boolean correct = false;
+
+
+	if (val.equals(inherit)) {
+	    inheritedValue = true;
+	    icon = inherit;
+	    expression.next();
+	    return;
+	} else if (val.equals(auto)) {
+	    icon = auto;
+	    expression.next();
+	    return;
+	}
+
+	while (val != null) {
+	    if (val instanceof CssURL) {
+		uris.addElement(val);
+		expression.next();
+		val = expression.getValue();
+		op = expression.getOperator();
+		correct = true;
+	    } else {
+		throw new InvalidParamException("value",
+			val.toString(), getPropertyName(), ac);
+	    }
+	}
+
+	if (!correct) {
+	    throw new InvalidParamException("value",
+		    val.toString(), getPropertyName(), ac);
+	}
+    }
+
+    public CssIcon(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+		return null;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+		return "icon";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+		return inheritedValue;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+		if (icon != null) {
+		    return icon.toString();
+		} else {
+		    int i = 0;
+		    int l = uris.size();
+		    String ret = "";
+		    while (i != l) {
+			ret += uris.elementAt(i++) +
+			    (new Character(COMMA)).toString() + " ";
+		    }
+
+		    return ret;
+		}
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+		Css3Style style0 = (Css3Style) style;
+		if (style0.cssIcon != null)
+		    style0.addRedefinitionWarning(ac, this);
+		style0.cssIcon = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+		if (resolve) {
+		    return ((Css3Style) style).getIcon();
+		} else {
+		    return ((Css3Style) style).cssIcon;
+		}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+		return (property instanceof CssIcon
+			&& value == ((CssIcon) property).value);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+		return value == 0;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssIndentEdgeReset.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,139 @@
+//
+// $Id: CssIndentEdgeReset.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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 CssIndentEdgeReset extends CssProperty {
+
+    CssValue value;
+
+    static CssIdent none = new CssIdent("none");
+
+    private static String[] values = {
+		"none", "margin-edge", "border-edge", "padding-edge", "content-edge", "initial", "inherit"
+    };
+
+    /**
+     * Create a new CssIndentEdgeReset
+     */
+    public CssIndentEdgeReset() {
+		value = none;
+    }
+
+    /**
+     * Create a new CssIndentEdgeReset
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssIndentEdgeReset(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	int i = 0;
+	for (; i < values.length; i++) {
+	    if (val.toString().equals(values[i])) {
+		value = val;
+		expression.next();
+		break;
+	    }
+	}
+	if (i == values.length) {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssIndentEdgeReset(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssIndentEdgeReset != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssIndentEdgeReset = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getIndentEdgeReset();
+	}
+	else {
+	    return ((Css3Style) style).cssIndentEdgeReset;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssIndentEdgeReset &&
+		value.equals(((CssIndentEdgeReset) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+		return "float-displace";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+		return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+		return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+		return value.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+		return (value == none);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssInlineBoxAlign.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,145 @@
+//
+// $Id: CssInlineBoxAlign.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ *
+ */
+
+public class CssInlineBoxAlign extends CssProperty {
+
+    CssValue inlineboxalign;
+
+    private static CssIdent initial = new CssIdent("initial");
+    private static CssIdent last = new CssIdent("last");
+
+    /**
+     * Create a new CssInlineBoxAlign
+     */
+    public CssInlineBoxAlign() {
+		inlineboxalign = initial;
+    }
+
+    /**
+     * Create a new CssInlineBoxAlign
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssInlineBoxAlign(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val.equals(initial)) {
+	    inlineboxalign = initial;
+	    expression.next();
+	}
+	else if (val.equals(last)) {
+	    inlineboxalign = last;
+	    expression.next();
+	}
+	else if (val instanceof CssNumber) {
+	    inlineboxalign = val;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+		    getPropertyName(), ac);
+	}
+    }
+
+    public CssInlineBoxAlign(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssInlineBoxAlign != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssInlineBoxAlign = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getInlineBoxAlign();
+	}
+	else {
+	    return ((Css3Style) style).cssInlineBoxAlign;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssInlineBoxAlign &&
+		inlineboxalign.equals(((CssInlineBoxAlign) property).inlineboxalign));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "inline-box-align";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return inlineboxalign;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return inlineboxalign.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return inlineboxalign.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return inlineboxalign == initial;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssKerningMode.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,154 @@
+//
+// $Id: CssKerningMode.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> none || pair || contextual || inherit<BR>
+ *  <EM>Initial:</EM>none<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>yes<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  This property controls all kerning effects.
+ */
+
+public class CssKerningMode extends CssProperty {
+
+    CssValue mode;
+
+    static CssIdent none = new CssIdent("none");
+    static CssIdent pair = new CssIdent("pair");
+    static CssIdent contextual = new CssIdent("contextual");
+
+    /**
+     * Create a new CssKerningMode
+     */
+    public CssKerningMode() {
+	mode = none;
+    }
+
+    /**
+     * Create a new CssKerningMode
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect values
+     */
+    public CssKerningMode(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	setByUser();
+	CssValue val = expression.getValue();
+	if (val.equals(none)) {
+	    mode = none;
+	    expression.next();
+	}
+	else if (val.equals(pair)) {
+	    mode = pair;
+	    expression.next();
+	}
+	else if (val.equals(contextual)) {
+	    mode = contextual;
+	    expression.next();
+	}
+	else if (val.equals(inherit)) {
+	    mode = inherit;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+	}
+    }
+
+    public CssKerningMode(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssKerningMode != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssKerningMode = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getKerningMode();
+	}
+	else {
+	    return ((Css3Style) style).cssKerningMode;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssKerningMode &&
+		mode.equals(((CssKerningMode) property).mode));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "kerning-mode";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return mode;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return mode.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return mode.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return mode == none;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssKerningPairTreshold.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,151 @@
+//
+// $Id: CssKerningPairTreshold.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssLength;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> auto || &lt;length&gt; || inherit<BR>
+ *  <EM>Initial:</EM>auto<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>yes<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  This property controls the font size threshold, above which pair kerning
+ *  would be active (if enabled).
+ */
+
+public class CssKerningPairTreshold extends CssProperty {
+
+    CssValue treshold;
+
+    static CssIdent auto = new CssIdent("auto");
+
+    /**
+     * Create a new CssKerningPairTreshold
+     */
+    public CssKerningPairTreshold() {
+	treshold = auto;
+    }
+
+    /**
+     * Create a new CssKerningPairTreshold
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect values
+     */
+    public CssKerningPairTreshold(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	setByUser();
+	CssValue val = expression.getValue();
+	if (val.equals(auto)) {
+	    treshold = auto;
+	    expression.next();
+	}
+	else if (val instanceof CssLength) {
+	    treshold = val;
+	    expression.next();
+	}
+	else if (val.equals(inherit)) {
+	    treshold = inherit;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+	}
+    }
+
+    public CssKerningPairTreshold(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssKerningPairTreshold != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssKerningPairTreshold = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getKerningPairTreshold();
+	}
+	else {
+	    return ((Css3Style) style).cssKerningPairTreshold;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssKerningPairTreshold &&
+		treshold.equals(((CssKerningPairTreshold) property).treshold));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "kerning-pair-treshold";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return treshold;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return treshold.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return treshold.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return treshold == auto;
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssKeyEq.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,267 @@
+//
+// $Id: CssKeyEq.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import java.util.Vector;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssFunction;
+import org.w3c.css.values.CssIdent;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> none || &lt;key-press-combination&gt;+ || &lt;system-key-equivalent&gt; || inherit<BR>
+ *  <EM>Initial:</EM>none<BR>
+ *  <EM>Applies to:</EM>all enabled elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:interactive
+ */
+
+public class CssKeyEq extends CssProperty {
+
+    CssValue keyCombi;
+    Vector values = new Vector();
+
+    CssIdent none = new CssIdent("none");
+    CssIdent listitemmarker = new CssIdent("list-item-marker");
+
+    private static String keys[] =
+        { " ", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L",
+	  "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z",
+	  "accesskey", "fn", "fcn", "caps", "cmd", "rcmd", "lcmd", "opt",
+	  "ropt", "lopt", "ctrl", "rctrl", "lctrl", "shift", "rshift",
+	  "lshift", "alt", "ralt", "lalt", "win", "rwin", "lwin", "meta",
+	  "rmeta", "lmeta", "f1", "f2", "f3", "f4", "f5", "f6", "f7", "f8",
+	  "f9", "f10", "f11", "f12", "f13", "f14", "f15", "tab", "esc",
+	  "enter", "return", "menu", "help", "namemenu", "rcl", "snd",
+	  "up", "down", "left", "right", "home", "end", "pgup", "pgdn",
+	  "bs", "del", "ins", "undo", "cut", "copy", "paste", "clr", "sto",
+	  "prtsc", "sysrq", "scrlock", "pause", "brk", "numlock", "pwr"};
+
+    private static String systemkeys[] =
+        { "system-new", "system-open", "system-close", "system-save",
+	  "system-print", "system-quit", "system-terminate-operation",
+	  "system-undo", "system-redo", "system-cut", "system-copy",
+	  "system-paste", "system-clear", "system-duplicate",
+	  "system-select-all", "system-find", "system-find-again",
+	  "system-ok", "system-cancel", "system-apply"
+	};
+
+    /**
+     * Create a new CssKeyEq
+     */
+    public CssKeyEq() {
+	keyCombi = none;
+    }
+
+    /**
+     * Create a new CssKeyEq
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssKeyEq(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	String kc = new String();
+	int hyphenindex;
+	int counter = 0;
+	char op = expression.getOperator();
+        CssValue val = expression.getValue();
+	String part = new String();
+	String rest = new String();
+	Vector ks = new Vector();
+	setByUser();
+
+	if (val.equals(none)) {
+	    keyCombi = none;
+	    expression.next();
+	    return;
+	}
+	else if (val.equals(inherit)) {
+	    keyCombi = inherit;
+	    expression.next();
+	    return;
+	} else if (val.equals(listitemmarker)) {
+		keyCombi = listitemmarker;
+		expression.next();
+		return;
+	}
+	else if (val instanceof CssFunction) {
+	    CssFunction attr = (CssFunction) val;
+	    CssExpression params = attr.getParameters();
+	    CssValue v = params.getValue();
+	    if (attr.getName().equals("attr")) {
+		if ((params.getCount() != 1)
+		    || !(v instanceof CssIdent)) {
+		    throw new InvalidParamException("attr", params.getValue(),
+						    getPropertyName(), ac);
+		}
+	    }
+	    else throw new InvalidParamException("value", expression.getValue(),
+						 getPropertyName(), ac);
+	    keyCombi = val;
+	    expression.next();
+	    return;
+	}
+
+	// check if it is a system-key-equivalent
+	for (int i = 0;i < systemkeys.length; i++) {
+	    if (val.toString().equals(systemkeys[i])) {
+		keyCombi = val;
+		expression.next();
+		return;
+	    }
+	}
+	// no error, because it still can be a normal key combination
+
+       	while ((op == CssOperator.SPACE)
+	     && (counter < expression.getCount())) {
+	    kc = val.toString();
+	    if (kc.indexOf("-") < 0) { // only one key
+		int i = 0;
+		for (;i < keys.length; i++) {
+		    if (kc.equals(keys[i])) {
+			break;
+		    }
+		}
+		if (i == keys.length) {
+		    throw new InvalidParamException("value",
+						    expression.getValue(),
+						    getPropertyName(), ac);
+		}
+	    }
+	    else { // keycombination
+
+		int hyphenidx = kc.indexOf("-");
+		part = kc.substring(0, hyphenidx).trim();
+		rest = kc.substring(hyphenidx + 1, kc.length());
+		ks.addElement(part);
+
+		while (rest.indexOf("-") >= 0) {
+		    hyphenidx = rest.indexOf("-");
+		    part = rest.substring(0, hyphenidx).trim();
+		    rest = rest.substring(hyphenidx + 1, rest.length());
+		    ks.addElement(part);
+		}
+		ks.addElement(rest);
+
+		for (int idx = 0; idx < ks.size(); idx++) {
+		    int i = 0;
+		    for (;i < keys.length; i++) {
+			if ((keys[i]).equals((String)ks.elementAt(idx))) {
+			    break;
+			}
+		    }
+		    if (i == keys.length) {
+			throw new InvalidParamException("value",
+							expression.getValue(),
+							getPropertyName(), ac);
+		    }
+		}
+	    }
+	    values.addElement(val);
+	    expression.next();
+	    counter++;
+	    val = expression.getValue();
+	    op = expression.getOperator();
+	    ks.removeAllElements();
+	}
+
+    }
+
+    public CssKeyEq(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssKeyEq != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssKeyEq = this;
+
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getKeyEq();
+	} else {
+	    return ((Css3Style) style).cssKeyEq;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssKeyEq &&
+		keyCombi.equals( ((CssKeyEq) property).keyCombi));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "key-equivalent";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return values;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	// @@TODO
+	return false;
+	//values.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	if (keyCombi != null)
+	    return keyCombi.toString();
+	else
+	    return values.firstElement().toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return keyCombi == none;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssLineBoxContain.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,152 @@
+//
+// $Id: CssLineBoxContain.java,v 1.3 2005-09-14 15:15:04 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 org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     <A NAME="clear">5.5.26 &nbsp;&nbsp; 'clear'</A>
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> [block || inline || font || text || replaced || inline-box ]
+ *   | none | inherit <BR>
+ *   <EM>Initial:</EM> block inline replaced<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>This property enumerates the aspects of an element that contribute to the
+ *   height of a line line box.</P>
+ *
+ * @version $Revision: 1.3 $ */
+public class CssLineBoxContain extends CssProperty {
+
+    CssValue value;
+
+    private static String[] values = {
+	"block", "inline", "font", "text", "replaced", "inline-box",
+	"none", "inherit"
+    };
+
+    /**
+     * Create a new CssLineBoxContain
+     */
+    public CssLineBoxContain() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new CssLineBoxContain
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssLineBoxContain(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	int i = 0;
+	for (; i < values.length; i++) {
+	    if (val.toString().equals(values[i])) {
+		value = val;
+		expression.next();
+		break;
+	    }
+	}
+	if (i == values.length) {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+
+    }
+
+    public CssLineBoxContain(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "line-box-contain";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css3Style style0 = (Css3Style) style;
+	if (style0.cssLineBoxContain != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssLineBoxContain = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getLineBoxContain();
+	} else {
+	    return ((Css3Style) style).cssLineBoxContain;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssLineBoxContain &&
+		value == ((CssLineBoxContain) property).value);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssLineBreak.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,155 @@
+//
+// $Id: CssLineBreak.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> normal || strict || inherit<BR>
+ *  <EM>Initial:</EM>normal<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>yes<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  This property selects the set of line breaking rules to be used for text. The values described below are especially useful to CJK authors, but the property itself is open to other, not yet specified settings for non-CJK
+authors as well.
+ */
+
+public class CssLineBreak extends CssProperty {
+
+    CssValue linebreak;
+
+    CssIdent normal = new CssIdent("normal");
+    CssIdent strict = new CssIdent("strict");
+
+    /**
+     * Create a new CssLineBreak
+     */
+    public CssLineBreak() {
+	linebreak = normal;
+    }
+
+    /**
+     * Create a new CssLineBreak
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssLineBreak(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val.equals(normal)) {
+	    linebreak = normal;
+	    expression.next();
+	}
+	else if (val.equals(strict)) {
+	    linebreak = strict;
+	    expression.next();
+	}
+	else if (val.equals(inherit)) {
+	    linebreak = inherit;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssLineBreak(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssLineBreak != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssLineBreak = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getLineBreak();
+	}
+	else {
+	    return ((Css3Style) style).cssLineBreak;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssLineBreak &&
+		linebreak.equals(((CssLineBreak) property).linebreak));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "line-break";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return linebreak;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return linebreak.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return linebreak.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return linebreak == normal;
+    }
+
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssLineGrid.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,157 @@
+//
+// $Id: CssLineGrid.java,v 1.1 2005-08-23 16:24:20 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// COPYRIGHT (c) 1995-2000 World Wide Web Consortium, (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ *
+ */
+
+public class CssLineGrid extends CssProperty
+implements CssOperator {
+
+    CssValue linegrid;
+    CssLineGridMode lgm;
+    CssLineGridProgression lgp;
+
+    /**
+     * Creates a new CssLineGrid
+     */
+    public CssLineGrid() {
+    }
+
+    /**
+     * Creates a new CssLineGrid
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssLineGrid(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	CssValue val = expression.getValue();
+	int maxvalues = 2;
+	boolean correct = true;
+	char op = SPACE;
+
+	while (correct && (val != null) && (maxvalues-- > 0)) {
+
+	    correct = false;
+
+	    if (lgm == null) {
+		try {
+		    lgm = new CssLineGridMode(ac, expression);
+		    correct = true;
+		}
+		catch (InvalidParamException e) {
+		}
+	    }
+	    if (!correct && lgp == null) {
+		try {
+		    lgp = new CssLineGridProgression(ac, expression);
+		    correct = true;
+		}
+		catch (InvalidParamException e) {
+		}
+	    }
+	    if (!correct) {
+		throw new InvalidParamException("value", expression.getValue(),
+						getPropertyName(), ac);
+	    }
+
+	    val = expression.getValue();
+	    op = expression.getOperator();
+
+	}
+
+    }
+
+    public CssLineGrid(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssLineGrid != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssLineGrid = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getLineGrid();
+	}
+	else {
+	    return ((Css3Style) style).cssLineGrid;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return false;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "line-grid";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+		return null;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    //    public boolean isSoftlyInherited() {
+    //	return fontemph.equals(inherit);
+    //}
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	String ret = "";
+	if (lgp != null) {
+	    ret += " " + lgp.toString();
+	}
+	if (lgm != null) {
+	    ret += " " + lgm.toString();
+	}
+	return ret.substring(1);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssLineGridMode.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,146 @@
+//
+// $Id: CssLineGridMode.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// COPYRIGHT (c) 1995-2000 World Wide Web Consortium, (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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 CssLineGridMode extends CssProperty {
+
+	CssValue linegridmode;
+
+	private static CssIdent none = new CssIdent("none");
+	private static CssIdent ideograph = new CssIdent("ideograph");
+	private static CssIdent all = new CssIdent("all");
+
+	/**
+	 * Create a new CssLineGridMode
+	 */
+	public CssLineGridMode() {
+	    linegridmode = none;
+	}
+
+	/**
+	 * Create a new CssLineGridMode
+	 *
+	 *
+	 */
+	public CssLineGridMode(ApplContext ac, CssExpression expression,
+		boolean check) throws InvalidParamException {
+	    setByUser();
+	    CssValue val = expression.getValue();
+	    if (val.equals(none)) {
+			linegridmode = none;
+			expression.next();
+	    }
+	    else if (val.equals(ideograph)) {
+			linegridmode = ideograph;
+			expression.next();
+	    }
+	    else if (val.equals(all)) {
+			linegridmode = all;
+			expression.next();
+	    }
+	    else if (val.equals(inherit)) {
+			linegridmode = inherit;
+			expression.next();
+	    }
+
+	    else {
+		throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+	    }
+	}
+
+	public CssLineGridMode(ApplContext ac, CssExpression expression)
+		throws InvalidParamException {
+	    this(ac, expression, false);
+	}
+
+	/**
+	 * Add this property to the CssStyle.
+	 *
+	 * @param style The CssStyle
+	 */
+	public void addToStyle(ApplContext ac, CssStyle style) {
+	    if (((Css3Style) style).cssLineGridMode != null)
+		style.addRedefinitionWarning(ac, this);
+	    ((Css3Style) style).cssLineGridMode = this;
+
+	}
+
+	/**
+	 * Get this property in the style.
+	 *
+	 * @param style The style where the property is
+	 * @param resolve if true, resolve the style to find this property
+	 */
+        public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	    if (resolve) {
+		return ((Css3Style) style).getLineGridMode();
+	    } else {
+		return ((Css3Style) style).cssLineGridMode;
+	    }
+	}
+
+	/**
+	 * Compares two properties for equality.
+	 *
+	 * @param value The other property.
+	 */
+	public boolean equals(CssProperty property) {
+	    return (property instanceof CssLineGridMode &&
+		    linegridmode.equals( ((CssLineGridMode) property).linegridmode));
+	}
+
+	/**
+	 * Returns the name of this property
+	 */
+	public String getPropertyName() {
+	    return "line-grid-mode";
+	}
+
+	/**
+	 * Returns the value of this property
+	 */
+	public Object get() {
+	    return linegridmode;
+	}
+
+	/**
+	 * Returns true if this property is "softly" inherited
+	 */
+	public boolean isSoftlyInherited() {
+	    return linegridmode.equals(inherit);
+	}
+
+	/**
+	 * Returns a string representation of the object
+	 */
+	public String toString() {
+	    return linegridmode.toString();
+	}
+
+	/**
+	 * Is the value of this property a default value
+	 * It is used by all macro for the function <code>print</code>
+	 */
+	public boolean isDefault() {
+	    return linegridmode == none;
+	}
+
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssLineGridProgression.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,146 @@
+//
+// $Id: CssLineGridProgression.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// COPYRIGHT (c) 1995-2000 World Wide Web Consortium, (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssLength;
+import org.w3c.css.values.CssValue;
+
+/**
+ *
+ */
+
+    public class CssLineGridProgression extends CssProperty {
+
+	CssValue linegridprog;
+
+	private static CssIdent normal = new CssIdent("normal");
+	private static CssIdent gridheight = new CssIdent("grid-height");
+
+	/**
+	 * Create a new CssLineGridProgression
+	 */
+	public CssLineGridProgression() {
+	    linegridprog = normal;
+	}
+
+	/**
+	 * Create a new CssLineGridProgression
+	 *
+	 *
+	 */
+	public CssLineGridProgression(ApplContext ac, CssExpression expression,
+		boolean check) throws InvalidParamException {
+	    setByUser();
+	    CssValue val = expression.getValue();
+	    if (val.equals(normal)) {
+			linegridprog = normal;
+			expression.next();
+	    }
+	    else if (val.equals(gridheight)) {
+			linegridprog = gridheight;
+			expression.next();
+	    }
+	    else if (val instanceof CssLength) {
+			linegridprog = val;
+			expression.next();
+	    }
+	    else if (val.equals(inherit)) {
+			linegridprog = inherit;
+			expression.next();
+	    }
+
+	    else {
+		throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+	    }
+	}
+
+	public CssLineGridProgression(ApplContext ac, CssExpression expression)
+		throws InvalidParamException {
+	    this(ac, expression, false);
+	}
+
+	/**
+	 * Add this property to the CssStyle.
+	 *
+	 * @param style The CssStyle
+	 */
+	public void addToStyle(ApplContext ac, CssStyle style) {
+	    if (((Css3Style) style).cssLineGridProgression != null)
+		style.addRedefinitionWarning(ac, this);
+	    ((Css3Style) style).cssLineGridProgression = this;
+
+	}
+
+	/**
+	 * Get this property in the style.
+	 *
+	 * @param style The style where the property is
+	 * @param resolve if true, resolve the style to find this property
+	 */
+        public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	    if (resolve) {
+		return ((Css3Style) style).getLineGridProgression();
+	    } else {
+		return ((Css3Style) style).cssLineGridProgression;
+	    }
+	}
+
+	/**
+	 * Compares two properties for equality.
+	 *
+	 * @param value The other property.
+	 */
+	public boolean equals(CssProperty property) {
+	    return (property instanceof CssLineGridProgression &&
+		    linegridprog.equals( ((CssLineGridProgression) property).linegridprog));
+	}
+
+	/**
+	 * Returns the name of this property
+	 */
+	public String getPropertyName() {
+	    return "line-grid-progression";
+	}
+
+	/**
+	 * Returns the value of this property
+	 */
+	public Object get() {
+	    return linegridprog;
+	}
+
+	/**
+	 * Returns true if this property is "softly" inherited
+	 */
+	public boolean isSoftlyInherited() {
+	    return linegridprog.equals(inherit);
+	}
+
+	/**
+	 * Returns a string representation of the object
+	 */
+	public String toString() {
+	    return linegridprog.toString();
+	}
+
+	/**
+	 * Is the value of this property a default value
+	 * It is used by all macro for the function <code>print</code>
+	 */
+	public boolean isDefault() {
+	    return linegridprog == normal;
+	}
+
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssLineHeightPolicy.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,162 @@
+//
+// $Id: CssLineHeightPolicy.java,v 1.3 2005-09-14 15:15:04 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 org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *   <H4>
+ *     <A NAME="clear">5.5.26 &nbsp;&nbsp; 'clear'</A>
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> none | left | right | both<BR>
+ *   <EM>Initial:</EM> none<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P> This property specifies if an element allows floating elements on its
+ *   sides.  More specifically, the value of this property lists the sides where
+ *   floating elements are not accepted. With 'clear' set to 'left', an element
+ *   will be moved below any floating element on the left side. With 'clear' set
+ *   to 'none', floating elements are allowed on all sides. Example:
+ *   <PRE>
+ *   H1 { clear: left }
+ *  </PRE>
+ *
+ * @version $Revision: 1.3 $ */
+public class CssLineHeightPolicy extends CssProperty {
+
+    CssValue value;
+
+    private CssIdent normal = new CssIdent("normal");
+    private CssIdent stack = new CssIdent("stack");
+    private CssIdent enforce = new CssIdent("enforce");
+    private CssIdent snap = new CssIdent("snap");
+
+    /**
+     * Create a new CssLineHeightPolicy
+     */
+    public CssLineHeightPolicy() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new CssLineHeightPolicy
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssLineHeightPolicy(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	if (val.equals(normal)) {
+	    value = val;
+	    expression.next();
+	} else if (val.equals(stack)) {
+	    value = val;
+	    expression.next();
+	} else if (val.equals(enforce)) {
+	    value = val;
+	    expression.next();
+	} else if (val.equals(snap)) {
+	    value = val;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					getPropertyName(), ac);
+	}
+    }
+
+    public CssLineHeightPolicy(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "line-height-policy";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css3Style style0 = (Css3Style) style;
+	if (style0.cssLineHeightPolicy != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssLineHeightPolicy = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getLineHeightPolicy();
+	} else {
+	    return ((Css3Style) style).cssLineHeightPolicy;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssLineHeightPolicy &&
+		value == ((CssLineHeightPolicy) property).value);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == normal;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssLineStacking.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,171 @@
+//
+// $Id: CssLineStacking.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// COPYRIGHT (c) 1995-2000 World Wide Web Consortium, (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ *
+ */
+
+public class CssLineStacking extends CssProperty
+implements CssOperator {
+
+    CssValue linegrid;
+    CssLineStackingRuby lsruby;
+    CssLineStackingShift lsshift;
+    CssLineStackingStrategy lsstrategy;
+
+    /**
+     * Creates a new CssLineStacking
+     */
+    public CssLineStacking() {
+    }
+
+    /**
+     * Creates a new CssLineStacking
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssLineStacking(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	CssValue val = expression.getValue();
+	int maxvalues = 3;
+	boolean correct = true;
+	char op = SPACE;
+
+	while (correct && (val != null) && (maxvalues-- > 0)) {
+
+	    correct = false;
+
+	    if (!correct && lsruby == null) {
+		try {
+		    lsruby = new CssLineStackingRuby(ac, expression);
+		    correct = true;
+		}
+		catch (InvalidParamException e) {
+		}
+	    }
+
+	    if (!correct && lsshift == null) {
+		try {
+		    lsshift = new CssLineStackingShift(ac, expression);
+		    correct = true;
+		}
+		catch (InvalidParamException e) {
+		}
+	    }
+
+	    if (!correct && lsstrategy == null) {
+		try {
+		    lsstrategy = new CssLineStackingStrategy(ac, expression);
+		    correct = true;
+		} catch (InvalidParamException e) {
+		}
+	    }
+
+	    if (!correct) {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+
+	    val = expression.getValue();
+	    op = expression.getOperator();
+
+	}
+
+    }
+
+    public CssLineStacking(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssLineStacking != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssLineStacking = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getLineStacking();
+	}
+	else {
+	    return ((Css3Style) style).cssLineStacking;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return false;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "line-stacking";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+		return null;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    //    public boolean isSoftlyInherited() {
+    //	return fontemph.equals(inherit);
+    //}
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	String ret = "";
+	if (lsshift != null) {
+	    ret += " " + lsshift.toString();
+	}
+	if (lsruby != null) {
+	    ret += " " + lsruby.toString();
+	}
+	if (lsstrategy != null) {
+		ret += " " + lsstrategy.toString();
+	}
+	return ret.substring(1);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssLineStackingRuby.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,145 @@
+//
+// $Id: CssLineStackingRuby.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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 CssLineStackingRuby extends CssProperty {
+
+    CssValue linestackingruby;
+
+    private static CssIdent initial = new CssIdent("initial");
+    private static CssIdent excluderuby = new CssIdent("exclude-ruby");
+    private static CssIdent includeruby = new CssIdent("include-ruby");
+
+    /**
+     * Create a new CssLineStackingRuby
+     */
+    public CssLineStackingRuby() {
+		linestackingruby = excluderuby;
+    }
+
+    /**
+     * Create a new CssLineStackingRuby
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssLineStackingRuby(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val.equals(initial)) {
+		linestackingruby = initial;
+		expression.next();
+	}
+	else if (val.equals(excluderuby)) {
+		linestackingruby = excluderuby;
+		expression.next();
+	}
+	else if (val.equals(includeruby)) {
+		linestackingruby = includeruby;
+		expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssLineStackingRuby(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssLineStackingRuby != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssLineStackingRuby = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getLineStackingRuby();
+	}
+	else {
+	    return ((Css3Style) style).cssLineStackingRuby;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssLineStackingRuby &&
+		linestackingruby.equals(((CssLineStackingRuby) property).linestackingruby));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "line-stacking-ruby";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return linestackingruby;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return linestackingruby.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return linestackingruby.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return linestackingruby == excluderuby;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssLineStackingShift.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,145 @@
+//
+// $Id: CssLineStackingShift.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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 CssLineStackingShift extends CssProperty {
+
+    CssValue linestackingshift;
+
+    private static CssIdent initial = new CssIdent("initial");
+    private static CssIdent considershifts = new CssIdent("consider-shifts");
+    private static CssIdent disregardshifts = new CssIdent("disregard-shifts");
+
+    /**
+     * Create a new CssLineStackingShift
+     */
+    public CssLineStackingShift() {
+		linestackingshift = considershifts;
+    }
+
+    /**
+     * Create a new CssLineStackingShift
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssLineStackingShift(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val.equals(initial)) {
+		linestackingshift = initial;
+		expression.next();
+	}
+	else if (val.equals(considershifts)) {
+		linestackingshift = considershifts;
+		expression.next();
+	}
+	else if (val.equals(disregardshifts)) {
+		linestackingshift = disregardshifts;
+		expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssLineStackingShift(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssLineStackingShift != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssLineStackingShift = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getLineStackingShift();
+	}
+	else {
+	    return ((Css3Style) style).cssLineStackingShift;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssLineStackingShift &&
+		linestackingshift.equals(((CssLineStackingShift) property).linestackingshift));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "line-stacking-shift";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return linestackingshift;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return linestackingshift.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return linestackingshift.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return linestackingshift == considershifts;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssLineStackingStrategy.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,144 @@
+//
+// $Id: CssLineStackingStrategy.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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 CssLineStackingStrategy extends CssProperty {
+
+    CssValue strategy;
+
+    static CssIdent inlinelineheight = new CssIdent("inline-line-height");
+
+    private static String[] values = {
+	"inline-line-height", "block-line-height", "max-height", "grid-height",
+	"inherit", "initial"
+    };
+
+    /**
+     * Create a new CssLineStackingStrategy
+     */
+    public CssLineStackingStrategy() {
+		strategy = inlinelineheight;
+    }
+
+    /**
+     * Create a new CssLineStackingStrategy
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssLineStackingStrategy(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	int i = 0;
+	for (; i < values.length; i++) {
+	    if (val.toString().equals(values[i])) {
+		strategy = val;
+		expression.next();
+		break;
+	    }
+	}
+	if (i == values.length) {
+	    throw new InvalidParamException("value", val,
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssLineStackingStrategy(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssLineStackingStrategy != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssLineStackingStrategy = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getLineStackingStrategy();
+	}
+	else {
+	    return ((Css3Style) style).cssLineStackingStrategy;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssLineStackingStrategy &&
+		strategy.equals(((CssLineStackingStrategy) property).strategy));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "line-stacking-strategy";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return strategy;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return strategy.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return strategy.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return (strategy == inlinelineheight);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssLinefeedTreatment.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,162 @@
+//
+// $Id: CssLinefeedTreatment.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// COPYRIGHT (c) 1995-2000 World Wide Web Consortium, (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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 CssLinefeedTreatment extends CssProperty {
+
+	CssValue linefeedtreat;
+
+	private static CssIdent auto = new CssIdent("auto");
+	private static CssIdent ignore = new CssIdent("ignore");
+	private static CssIdent preserve = new CssIdent("preserve");
+	private static CssIdent treatasspace = new CssIdent("treat-as-space");
+	private static CssIdent treataszerowidthspace = new CssIdent("treat-as-zero-width-space");
+	private static CssIdent ignoreifafterlinefeed = new CssIdent("ignore-if-after-linefeed");
+
+
+	/**
+	 * Create a new CssLinefeedTreatment
+	 */
+	public CssLinefeedTreatment() {
+	    linefeedtreat = treatasspace;
+	}
+
+	/**
+	 * Create a new CssLinefeedTreatment
+	 *
+	 *
+	 */
+	public CssLinefeedTreatment(ApplContext ac, CssExpression expression,
+		boolean check) throws InvalidParamException {
+	    setByUser();
+	    CssValue val = expression.getValue();
+	    if (val.equals(auto)) {
+		linefeedtreat = auto;
+		expression.next();
+	    }
+	    else if (val.equals(ignore)) {
+		linefeedtreat = ignore;
+		expression.next();
+	    }
+	    else if (val.equals(treatasspace)) {
+		linefeedtreat = treatasspace;
+		expression.next();
+	    }
+	    else if (val.equals(preserve)) {
+		linefeedtreat = preserve;
+		expression.next();
+	    }
+	    else if (val.equals(treataszerowidthspace)) {
+		linefeedtreat = treataszerowidthspace;
+		expression.next();
+	    }
+	    else if (val.equals(ignoreifafterlinefeed)) {
+		linefeedtreat = ignoreifafterlinefeed;
+		expression.next();
+	    }
+	    else if (val.equals(inherit)) {
+		linefeedtreat = inherit;
+		expression.next();
+	    }
+
+	    else {
+		throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+	    }
+	}
+
+	public CssLinefeedTreatment(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	    this(ac, expression, false);
+	}
+
+	/**
+	 * Add this property to the CssStyle.
+	 *
+	 * @param style The CssStyle
+	 */
+	public void addToStyle(ApplContext ac, CssStyle style) {
+	    if (((Css3Style) style).cssLinefeedTreatment != null)
+		style.addRedefinitionWarning(ac, this);
+	    ((Css3Style) style).cssLinefeedTreatment = this;
+
+	}
+
+	/**
+	 * Get this property in the style.
+	 *
+	 * @param style The style where the property is
+	 * @param resolve if true, resolve the style to find this property
+	 */
+        public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	    if (resolve) {
+		return ((Css3Style) style).getLinefeedTreatment();
+	    } else {
+		return ((Css3Style) style).cssLinefeedTreatment;
+	    }
+	}
+
+	/**
+	 * Compares two properties for equality.
+	 *
+	 * @param value The other property.
+	 */
+	public boolean equals(CssProperty property) {
+	    return (property instanceof CssLinefeedTreatment &&
+		    linefeedtreat.equals( ((CssLinefeedTreatment) property).linefeedtreat));
+	}
+
+	/**
+	 * Returns the name of this property
+	 */
+	public String getPropertyName() {
+	    return "linefeed-treatment";
+	}
+
+	/**
+	 * Returns the value of this property
+	 */
+	public Object get() {
+	    return linefeedtreat;
+	}
+
+	/**
+	 * Returns true if this property is "softly" inherited
+	 */
+	public boolean isSoftlyInherited() {
+	    return linefeedtreat.equals(inherit);
+	}
+
+	/**
+	 * Returns a string representation of the object
+	 */
+	public String toString() {
+	    return linefeedtreat.toString();
+	}
+
+	/**
+	 * Is the value of this property a default value
+	 * It is used by all macro for the function <code>print</code>
+	 */
+	public boolean isDefault() {
+	    return linefeedtreat == treatasspace;
+	}
+
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssLink.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,177 @@
+//
+// $Id: CssLink.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2003  World Wide Web Consortium (MIT, ERCIM,
+//                                                     Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssFunction;
+import org.w3c.css.values.CssIdent;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> none | <url> | attr(X) | down-attr(X) | up-attr(X) |
+ *                                                                 inherit <BR>
+ *  <EM>Initial:</EM>none<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:all
+ *  <P>
+ *  Specifies whether an element is the source of a link and where to find
+ *  the URL of the link target.
+ */
+
+public class CssLink extends CssProperty {
+
+    CssValue link;
+
+    static CssIdent none = new CssIdent("none");
+
+    /**
+     * Create a new CssLink
+     */
+    public CssLink() {
+	link = none;
+    }
+
+    /**
+     * Create a new CssLink
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssLink(ApplContext ac, CssExpression expression, boolean check)
+	throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val.equals(none)) {
+	    link = none;
+	    expression.next();
+	} else if (val.equals(inherit)) {
+	    link = inherit;
+	    expression.next();
+	} else if (val instanceof CssFunction) {
+	    CssFunction attr = (CssFunction) val;
+	    CssExpression params = attr.getParameters();
+	    CssValue v = params.getValue();
+
+	    if (attr.getName().equals("attr")) {
+		if ((params.getCount() != 1)
+		    || !(v instanceof CssIdent)) {
+		    throw new InvalidParamException("attr",
+						    params.getValue(),
+						    getPropertyName(), ac);
+		}
+	    } else if (attr.getName().equals("down-attr")) {
+		if ((params.getCount() != 1)
+		    || !(v instanceof CssIdent)) {
+		    throw new InvalidParamException("function",
+						    params.getValue(),
+						    getPropertyName(), ac);
+		}
+	    } else if (attr.getName().equals("up-attr")) {
+		if ((params.getCount() != 1)
+		    || !(v instanceof CssIdent)) {
+		    throw new InvalidParamException("function",
+						    params.getValue(),
+						    getPropertyName(), ac);
+		}
+	    }
+	    else{
+		throw new InvalidParamException("value", expression.getValue(),
+						getPropertyName(), ac);
+	    }
+	}
+    }
+
+    public CssLink(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssLink != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssLink = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getLink();
+	}
+	else {
+	    return ((Css3Style) style).cssLink;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssLink &&
+		link.equals(((CssLink) property).link));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "link";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return link;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return link.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return link.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return (link == none);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssLinkBehavior.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,152 @@
+//
+// $Id: CssLinkBehavior.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> normal | pop-up | confirm | expand | none | inherit<BR>
+ *  <EM>Initial:</EM>baseline<BR>
+ *  <EM>Applies to:</EM>link elements and collapsed elements<BR>
+ *  <EM>Inherited:</EM>yes<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:all
+ *  <P>
+ *  This property determines what the UA will do with a link element or a collapsed
+ *  element (see 'collapse').
+ */
+
+public class CssLinkBehavior extends CssProperty {
+
+    CssValue behavior;
+
+    static CssIdent normal = new CssIdent("normal");
+
+    private static String[] values = {
+	"normal", "pop-up", "confirm", "expand", "none", "inherit"
+    };
+
+    /**
+     * Create a new CssLinkBehavior
+     */
+    public CssLinkBehavior() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new CssLinkBehavior
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssLinkBehavior(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	int i = 0;
+	for (; i < values.length; i++) {
+	    if (val.toString().equals(values[i])) {
+		behavior = val;
+		expression.next();
+		break;
+	    }
+	}
+	if (i == values.length) {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssLinkBehavior(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssLinkBehavior != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssLinkBehavior = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getLinkBehavior();
+	}
+	else {
+	    return ((Css3Style) style).cssLinkBehavior;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssLinkBehavior &&
+		behavior.equals(((CssLinkBehavior) property).behavior));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "link-behavior";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return behavior;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return behavior.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return behavior.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return (behavior == normal);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssMarginInside.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,113 @@
+//
+// $Id: CssMarginInside.java,v 1.3 2005-09-14 15:15:04 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 org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssMarginSide;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'margin-inside'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;length&gt; | &lt;percentage&gt; | auto<BR>
+ *   <EM>Initial:</EM> 0<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> refer to parent element's width<BR>
+ *   <P>
+ *   This property sets the left margin of an element:
+ *   <PRE>
+ *   H1 { margin-inside: 2em }
+ * </PRE>
+ *   <P>
+ *   A negative value is allowed, but there may be implementation-specific limits.
+ * @version $Revision: 1.3 $
+ */
+public class CssMarginInside extends CssMarginSide {
+
+  /**
+   * Create a new CssMarginInside
+   */
+  public CssMarginInside() {
+    super();
+  }
+
+  /**
+   * Create a new CssMarginInside with an another CssMarginSide
+   *
+   * @param another The another side.
+   */
+  public CssMarginInside(CssMarginSide another) {
+    super(another);
+  }
+
+  /**
+   * Create a new CssMarginInside
+   *
+   * @param expression The expression foir this property.
+   * @exception InvalidParamException Values are incorrect
+   */
+  public CssMarginInside(ApplContext ac, CssExpression expression,
+	  boolean check) throws InvalidParamException {
+    super(ac, expression, check);
+  }
+
+  public CssMarginInside(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+    this(ac, expression, false);
+  }
+
+  /**
+   * Returns the name of this property
+   */
+  public String getPropertyName() {
+    return "margin-inside";
+  }
+
+  /**
+   * Add this property to the CssStyle.
+   *
+   * @param style The CssStyle
+   */
+  public void addToStyle(ApplContext ac, CssStyle style) {
+    Css3Style style0 = (Css3Style) style;
+    if (style0.cssMarginInside != null)
+      style0.addRedefinitionWarning(ac, this);
+    style0.cssMarginInside = this;
+  }
+
+  /**
+   * Get this property in the style.
+   *
+   * @param style The style where the property is
+   * @param resolve if true, resolve the style to find this property
+   */
+  public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+    if (resolve) {
+      return ((Css3Style) style).getMarginInside();
+    } else {
+      return ((Css3Style) style).cssMarginInside;
+    }
+  }
+
+  /**
+   * Compares two properties for equality.
+   *
+   * @param value The other property.
+   */
+  public boolean equals(CssProperty property) {
+      //   return (property instanceof CssMarginInside &&
+      //    value.equals(((CssMarginInside) property).value));
+      return false;
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssMarginOutside.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,112 @@
+//
+// $Id: CssMarginOutside.java,v 1.3 2005-09-14 15:15:04 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 org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssMarginSide;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'margin-outside'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;length&gt; | &lt;percentage&gt; | auto<BR>
+ *   <EM>Initial:</EM> 0<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> refer to parent element's width<BR>
+ *   <P>
+ *   This property sets the right margin of an element:
+ *   <PRE>
+ *   H1 { margin-outside: 12.3% }
+ * </PRE>
+ *   <P> A negative value is allowed, but there may be implementation-specific
+ *   limits.
+ *
+ * @version $Revision: 1.3 $ */
+public class CssMarginOutside extends CssMarginSide {
+
+  /**
+   * Create a new CssMarginOutside
+   */
+  public CssMarginOutside() {
+    super();
+  }
+
+  /**
+   * Create a new CssMarginOutside with an another CssMarginSide
+   * @param another The another side.
+   */
+  public CssMarginOutside(CssMarginSide another) {
+    super(another);
+  }
+
+  /**
+   * Create a new CssMarginOutside
+   *
+   * @param expression The expression for this property.
+   * @exception InvalidParamException Values are incorrect
+   */
+  public CssMarginOutside(ApplContext ac, CssExpression expression,
+	  boolean check) throws InvalidParamException {
+    super(ac, expression, check);
+  }
+
+  public CssMarginOutside(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+    this(ac, expression, false);
+  }
+
+  /**
+   * Returns the name of this property
+   */
+  public String getPropertyName() {
+    return "margin-outside";
+  }
+
+  /**
+   * Add this property to the CssStyle.
+   *
+   * @param style The CssStyle
+   */
+  public void addToStyle(ApplContext ac, CssStyle style) {
+    Css3Style style0 = (Css3Style) style;
+    if (style0.cssMarginOutside != null)
+      style0.addRedefinitionWarning(ac, this);
+    style0.cssMarginOutside = this;
+  }
+
+  /**
+   * Get this property in the style.
+   *
+   * @param style The style where the property is
+   * @param resolve if true, resolve the style to find this property
+   */
+  public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+    if (resolve) {
+      return ((Css3Style) style).getMarginOutside();
+    } else {
+      return ((Css3Style) style).cssMarginOutside;
+    }
+  }
+
+  /**
+   * Compares two properties for equality.
+   *
+   * @param value The other property.
+   */
+  public boolean equals(CssProperty property) {
+      //    return (property instanceof CssMarginOutside &&
+      //    value.equals(((CssMarginOutside) property).value));
+      return false;
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssMarquee.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,197 @@
+//
+// $Id: CssMarquee.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> &lt;style&gt; || &lt;color&gt; || &lt;mode&gt; ||
+ *  &lt;position&gt; || inherit<BR>
+ *  <EM>Initial:</EM>not defined for shorthand properties<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  This property is the shorthand for 'text-underline-style',
+ *  'text-underline-color', 'text-underline-mode' and 'text-underline-position'.
+ */
+
+public class CssMarquee extends CssProperty
+implements CssOperator  {
+
+    CssValue underline;
+    CssMarqueeDirection mdir;
+    CssMarqueeRepetition mrep;
+    CssMarqueeSpeed mspeed;
+    CssMarqueeStyle mstyle;
+
+    /**
+     * Create a new CssMarquee
+     */
+    public CssMarquee() {
+    }
+
+    /**
+     * Create a new CssMarquee
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect values
+     */
+    public CssMarquee(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	CssValue val = expression.getValue();
+	int maxvalues = 4;
+	boolean correct = true;
+	char op = SPACE;
+
+	while (correct && (val != null) && (maxvalues-- > 0)) {
+
+	    correct = false;
+
+	    if (mstyle == null) {
+		try {
+		    mstyle = new CssMarqueeStyle(ac, expression);
+		    correct = true;
+		}
+		catch (InvalidParamException e) {
+		}
+	    }
+	    if (!correct && mdir == null) {
+		try {
+		    mdir = new CssMarqueeDirection(ac, expression);
+		    correct = true;
+		}
+		catch (InvalidParamException e) {
+		}
+	    }
+	    if (!correct && mrep == null) {
+		try {
+		    mrep = new CssMarqueeRepetition(ac, expression);
+		    correct = true;
+		}
+		catch (InvalidParamException e) {
+		}
+	    }
+	    if (!correct && mspeed == null) {
+		try {
+		    mspeed = new CssMarqueeSpeed(ac, expression);
+		    correct = true;
+		}
+		catch (InvalidParamException e) {
+		}
+	    }
+	    if (!correct) {
+		throw new InvalidParamException("value",
+						expression.getValue(),
+						getPropertyName(), ac);
+	    }
+
+	    val = expression.getValue();
+	    op = expression.getOperator();
+	}
+
+	if (mdir == null) {
+	    mdir = new CssMarqueeDirection();
+	}
+	if (mrep == null) {
+	    mrep = new CssMarqueeRepetition();
+	}
+	if (mspeed == null) {
+	    mspeed = new CssMarqueeSpeed();
+	}
+	if (mstyle == null) {
+	    mstyle = new CssMarqueeStyle();
+	}
+
+    }
+
+    public CssMarquee(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssMarquee != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssMarquee = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getMarquee();
+	}
+	else {
+	    return ((Css3Style) style).cssMarquee;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return false;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "marquee";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return null;
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+
+	String ret = "";
+	if (mstyle.isByUser()) {
+	    ret += " " + mstyle;
+	}
+	if (mdir.isByUser()) {
+	    ret += " " + mdir;
+	}
+	if (mrep.isByUser()) {
+	    ret += " " + mrep;
+	}
+	if (mspeed.isByUser()) {
+	    ret += " " + mspeed;
+	}
+	return ret.substring(1);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssMarqueeDirection.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,144 @@
+//
+// $Id: CssMarqueeDirection.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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 CssMarqueeDirection extends CssProperty {
+
+    CssValue mdir;
+
+    static CssIdent auto = new CssIdent("auto");
+
+    private static String[] values = {
+		"forwards", "backwards", "ahead", "reverse",
+		"left", "right", "up", "down", "auto", "initial", "inherit"
+    };
+
+    /**
+     * Create a new CssMarqueeDirection
+     */
+    public CssMarqueeDirection() {
+		mdir = auto;
+    }
+
+    /**
+     * Create a new CssMarqueeDirection
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect values
+     */
+    public CssMarqueeDirection(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	setByUser();
+	CssValue val = expression.getValue();
+
+	int i = 0;
+
+	for (;i < values.length; i++) {
+	    if (val.toString().equals(values[i])) {
+		mdir = val;
+		expression.next();
+		break;
+	    }
+	}
+
+	if (i == values.length) {
+	    throw new InvalidParamException("value",
+		    expression.getValue(),
+		    getPropertyName(), ac);
+	}
+
+    }
+
+    public CssMarqueeDirection(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssMarqueeDirection != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssMarqueeDirection = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getMarqueeDirection();
+	}
+	else {
+	    return ((Css3Style) style).cssMarqueeDirection;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssMarqueeDirection &&
+		mdir.equals(((CssMarqueeDirection) property).mdir));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "marquee-direction";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return mdir;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return mdir.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return mdir.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return mdir == auto;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssMarqueeRepetition.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,143 @@
+//
+// $Id: CssMarqueeRepetition.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssNumber;
+import org.w3c.css.values.CssValue;
+
+public class CssMarqueeRepetition extends CssProperty {
+
+    CssValue mrep;
+
+    static CssIdent infinite = new CssIdent("infinite");
+    static CssIdent initial = new CssIdent("initial");
+
+
+    /**
+     * Create a new CssMarqueeRepetition
+     */
+    public CssMarqueeRepetition() {
+	mrep = infinite;
+    }
+
+    /**
+     * Create a new CssMarqueeRepetition
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect values
+     */
+    public CssMarqueeRepetition(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val.equals(infinite)) {
+	    mrep = infinite;
+	    expression.next();
+	}
+	else if (val.equals(inherit)) {
+	    mrep = inherit;
+	    expression.next();
+	} else if (val instanceof CssNumber && ((CssNumber) val).isInteger() ) {
+
+	    mrep = val;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value",
+		    expression.getValue(),
+		    getPropertyName(), ac);
+	}
+
+    }
+
+    public CssMarqueeRepetition(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssMarqueeRepetition != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssMarqueeRepetition = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getMarqueeRepetition();
+	}
+	else {
+	    return ((Css3Style) style).cssMarqueeRepetition;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssMarqueeRepetition &&
+		mrep.equals(((CssMarqueeRepetition) property).mrep));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "marquee-repetition";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return mrep;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return mrep.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return mrep.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return mrep == infinite;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssMarqueeSpeed.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,167 @@
+//
+// $Id: CssMarqueeSpeed.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssLength;
+import org.w3c.css.values.CssTime;
+import org.w3c.css.values.CssValue;
+
+public class CssMarqueeSpeed extends CssProperty {
+
+    String mspeed;
+
+    static CssIdent slow = new CssIdent("slow");
+    static CssIdent normal = new CssIdent("normal");
+    static CssIdent fast = new CssIdent("fast");
+    static CssIdent initial = new CssIdent("initial");
+
+    /**
+     * Create a new CssMarqueeSpeed
+     */
+    public CssMarqueeSpeed() {
+		mspeed = "normal";
+    }
+
+    /**
+     * Create a new CssMarqueeSpeed
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect values
+     */
+    public CssMarqueeSpeed(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val.equals(normal)) {
+	    mspeed = "normal";
+	    expression.next();
+	}
+	else if (val.equals(slow)) {
+	    mspeed = "slow";
+	    expression.next();
+	}
+	else if (val.equals(initial)) {
+		mspeed = "initial";
+		expression.next();
+	}
+	else if (val.equals(fast)) {
+	    mspeed = "fast";
+	    expression.next();
+	}
+	else if (val instanceof CssLength) {
+	    mspeed = val.toString();
+	    expression.next();
+
+	    val = expression.getValue();
+	    if (val != null) {
+		if (val instanceof CssTime) {
+		    mspeed = mspeed += " " + val.toString();
+		    expression.next();
+		} else {
+		    throw new InvalidParamException("value", expression.getValue(), getPropertyName(), ac);
+		}
+	    }
+	}
+	else if (val.equals(inherit)) {
+	    mspeed = "inherit";
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value",
+		    expression.getValue(),
+		    getPropertyName(), ac);
+	}
+
+    }
+
+    public CssMarqueeSpeed(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssMarqueeSpeed != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssMarqueeSpeed = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getMarqueeSpeed();
+	}
+	else {
+	    return ((Css3Style) style).cssMarqueeSpeed;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssMarqueeSpeed &&
+		mspeed.equals(((CssMarqueeSpeed) property).mspeed));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "marquee-speed";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return mspeed;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return mspeed.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return mspeed.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return mspeed.equals("normal");
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssMarqueeStyle.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,140 @@
+//
+// $Id: CssMarqueeStyle.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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 CssMarqueeStyle extends CssProperty {
+
+    CssValue mstyle;
+
+    static CssIdent alternate = new CssIdent("alternate");
+
+    private static String[] values = {
+		"none", "slide", "scroll", "alternate", "initial", "inherit"
+    };
+
+    /**
+     * Create a new CssMarqueeStyle
+     */
+    public CssMarqueeStyle() {
+		mstyle = alternate;
+    }
+
+    /**
+     * Create a new CssMarqueeStyle
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect values
+     */
+    public CssMarqueeStyle(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	setByUser();
+	CssValue val = expression.getValue();
+
+	int i = 0;
+	for (;i < values.length; i++) {
+	    if (val.toString().equals(values[i])) {
+		mstyle = val;
+		expression.next();
+		break;
+	    }
+	}
+	if (i == values.length) {
+	    throw new InvalidParamException("value",
+					    expression.getValue(),
+					    getPropertyName(), ac);
+	}
+
+    }
+
+    public CssMarqueeStyle(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssMarqueeStyle != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssMarqueeStyle = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getMarqueeStyle();
+	}
+	else {
+	    return ((Css3Style) style).cssMarqueeStyle;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssMarqueeStyle &&
+		mstyle.equals(((CssMarqueeStyle) property).mstyle));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "marquee-style";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return mstyle;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return mstyle.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return mstyle.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return mstyle == alternate;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssMaxFontSize.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,154 @@
+//
+// $Id: CssMaxFontSize.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.properties.css2.font.FontSize;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> &lt;font-size&gt; || auto || inherit<BR>
+ *  <EM>Initial:</EM>auto<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>yes<BR>
+ *  <EM>Percentages:</EM>element's computed 'font-size'<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  If 'text-align-last' is 'size', the fonts of the last line of an element are not allowed to become larger than the larger of 'font-size' and 'max-font-size'. 'auto' means that there is no limit.
+*/
+
+public class CssMaxFontSize extends CssProperty {
+
+    CssValue max;
+
+    static CssIdent auto = new CssIdent("auto");
+
+    /**
+     * Create a new CssMaxFontSize
+     */
+    public CssMaxFontSize() {
+	max = auto;
+    }
+
+    /**
+     * Create a new CssMaxFontSize
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssMaxFontSize(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val.equals(auto)) {
+	    max = auto;
+	    expression.next();
+	}
+	else if (val.equals(inherit)) {
+	    max = inherit;
+	    expression.next();
+	}
+	else {
+	    try {
+		FontSize fontsize = new FontSize(ac, expression);
+		max = val;
+		expression.next();
+	    }
+	    catch (InvalidParamException e) {
+		throw new InvalidParamException("value", expression.getValue(),
+						getPropertyName(), ac);
+	    }
+	}
+    }
+
+    public CssMaxFontSize(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssMaxFontSize != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssMaxFontSize = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getMaxFontSize();
+	} else {
+	    return ((Css3Style) style).cssMaxFontSize;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssMaxFontSize &&
+                max.equals( ((CssMaxFontSize) property).max));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "max-font-size";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return max;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return max.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return max.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return max == auto;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssMaxHeightCSS3.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,152 @@
+//
+// $Id: CssMaxHeightCSS3.java,v 1.2 2005-09-14 15:15:04 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 org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class CssMaxHeightCSS3 extends CssProperty {
+
+    CssValue value;
+
+    private static CssIdent none = new CssIdent("none");
+    private static CssIdent initial = new CssIdent("initial");
+
+    /**
+     * Create a new CssMaxHeightCSS3
+     */
+    public CssMaxHeightCSS3() {
+	value = none;
+    }
+
+    /**
+     * Create a new CssMaxHeightCSS3.
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssMaxHeightCSS3(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	} else if (val instanceof CssLength || val instanceof CssPercentage) {
+	    float f = ((Float) val.get()).floatValue();
+	    if (f < 0) {
+		throw new InvalidParamException("negative-value",
+						val.toString(), ac);
+	    }
+	    value = val;
+	} else if (val.equals(none)) {
+	    value = none;
+	} else if (val.equals(initial)) {
+	    value = initial;
+	} else if (val instanceof CssNumber) {
+	    value = ((CssNumber) val).getLength();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+
+	expression.next();
+    }
+
+    public CssMaxHeightCSS3(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property.
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property.
+     */
+    public String getPropertyName() {
+	return "max-height";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css3Style style0 = (Css3Style) style;
+	if (style0.cssMaxHeightCSS3 != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssMaxHeightCSS3 = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getMaxHeightCSS3();
+	} else {
+	    return ((Css3Style) style).cssMaxHeightCSS3;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssMaxHeightCSS3
+		&& value.equals(((CssMaxHeightCSS3) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == none;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssMaxWidthCSS3.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,152 @@
+//
+// $Id: CssMaxWidthCSS3.java,v 1.2 2005-09-14 15:15:04 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 org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class CssMaxWidthCSS3 extends CssProperty {
+
+    CssValue value;
+
+    private static CssIdent none = new CssIdent("none");
+    private static CssIdent initial = new CssIdent("initial");
+
+    /**
+     * Create a new CssMaxWidthCSS3
+     */
+    public CssMaxWidthCSS3() {
+	value = none;
+    }
+
+    /**
+     * Create a new CssMaxWidthCSS3.
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssMaxWidthCSS3(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	} else if (val instanceof CssLength || val instanceof CssPercentage) {
+	    float f = ((Float) val.get()).floatValue();
+	    if (f < 0) {
+		throw new InvalidParamException("negative-value",
+						val.toString(), ac);
+	    }
+	    value = val;
+	} else if (val.equals(none)) {
+	    value = none;
+	} else if (val.equals(initial)) {
+	    value = initial;
+	} else if (val instanceof CssNumber) {
+	    value = ((CssNumber) val).getLength();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+
+	expression.next();
+    }
+
+    public CssMaxWidthCSS3(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property.
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property.
+     */
+    public String getPropertyName() {
+	return "max-width";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css3Style style0 = (Css3Style) style;
+	if (style0.cssMaxWidthCSS3 != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssMaxWidthCSS3 = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getMaxWidthCSS3();
+	} else {
+	    return ((Css3Style) style).cssMaxWidthCSS3;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssMaxWidthCSS3
+		&& value.equals(((CssMaxWidthCSS3) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == none;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssMedia.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,177 @@
+//
+// $Id: CssMedia.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import java.util.Vector;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssOperator;
+import org.w3c.css.values.CssValue;
+
+
+/**
+ * This property sets the preferred media for this stylesheet
+ */
+
+public class CssMedia extends CssProperty implements CssOperator {
+
+    CssValue value;
+    Vector values = new Vector();
+
+    CssIdent all = new CssIdent("all");
+
+    private String[] media = {
+	"all", "aural", "braille", "embossed", "handheld", "print",
+	"projection", "screen", "presentation", "tty", "tv" };
+
+    /**
+     * Create a new CssMedia
+     */
+    public CssMedia() {
+	value = all;
+    }
+
+    /**
+     * Create a new CssMedia
+     */
+    public CssMedia(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	//setByUser();
+	char op = expression.getOperator();
+	CssValue val = expression.getValue();
+	int counter = 0;
+
+
+	while ((op == COMMA || op == SPACE)
+	       && (counter < expression.getCount())) {
+
+	    int i = 0;
+	    for (;i < media.length; i++) {
+		if (val.toString().equals(media[i])) {
+		    break;
+		}
+	    }
+
+	    if (i == media.length) {
+		throw new InvalidParamException("media", expression.getValue(),
+						getPropertyName(), ac);
+	    }
+
+	    values.addElement(val);
+	    expression.next();
+	    counter++;
+	    val = expression.getValue();
+	    op = expression.getOperator();
+	}
+    }
+
+    public CssMedia(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssMedia != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssMedia = this;
+
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getMedia();
+	} else {
+	    return ((Css3Style) style).cssMedia;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return false;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "media";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	if (value != null) {
+	    return value;
+	}
+	else {
+	    return values;
+	}
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * This property can't be inherited, it's only for @preference
+     */
+    public boolean isSoftlyInherited() {
+	return false;
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	if (value != null) {
+	    return value.toString();
+	}
+	else {
+	    String ret = new String("");
+	    for (int i = 0; i < values.size(); i++ ) {
+		ret += " " + values.elementAt(i).toString();
+	    }
+	    return ret;
+	}
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == all;
+    }
+
+}
+
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssMinFontSize.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,154 @@
+//
+// $Id: CssMinFontSize.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.properties.css2.font.FontSize;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> &lt;font-size&gt; || inherit<BR>
+ *  <EM>Initial:</EM>0<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>yes<BR>
+ *  <EM>Percentages:</EM>element's computed 'font-size'<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  If 'text-align-last' is 'size', the fonts of the last line of an element
+ *  are not allowed to become smaller than the smaller of 'font-size' and
+ *  'min-font-size'.
+ */
+
+public class CssMinFontSize extends CssProperty {
+
+    CssValue min;
+    ApplContext ac;
+
+    /**
+     * Create a new CssMinFontSize
+     */
+    public CssMinFontSize() {
+	CssNumber cssnum = new CssNumber(0);
+	min = cssnum;
+    }
+
+    /**
+     * Create a new CssMinFontSize
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssMinFontSize(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val.equals(inherit)) {
+	    min = inherit;
+	    expression.next();
+	}
+	else {
+	    try {
+		FontSize fontsize = new FontSize(ac, expression);
+		min = val;
+		expression.next();
+	    }
+	    catch (InvalidParamException e) {
+		throw new InvalidParamException("value", expression.getValue(),
+						getPropertyName(), ac);
+	    }
+	}
+    }
+
+    public CssMinFontSize(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssMinFontSize != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssMinFontSize = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getMinFontSize();
+	} else {
+	    return ((Css3Style) style).cssMinFontSize;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssMinFontSize &&
+                min.equals( ((CssMinFontSize) property).min));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "min-font-size";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return min;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return min.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return min.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	CssNumber cssnum = new CssNumber(ac, 0);
+	return min == cssnum;
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssMinHeightCSS3.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,139 @@
+//
+// $Id: CssMinHeightCSS3.java,v 1.2 2005-09-14 15:15:04 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 org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class CssMinHeightCSS3 extends CssProperty {
+
+    CssValue value;
+    private static CssIdent initial = new CssIdent("initial");
+
+    /**
+     * Create a new CssMinHeightCSS3
+     */
+    public CssMinHeightCSS3() {
+    }
+
+    /**
+     * Create a new CssMinHeightCSS3.
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssMinHeightCSS3(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+ 	} else if (val.equals(initial)) {
+		value = initial;
+	} else if (val instanceof CssLength || val instanceof CssPercentage) {
+	    float f = ((Float) val.get()).floatValue();
+	    if (f < 0) {
+		throw new InvalidParamException("negative-value",
+						val.toString(), ac);
+	    }
+	    value = val;
+	} else if (val instanceof CssNumber) {
+	    value = ((CssNumber) val).getLength();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+
+	expression.next();
+    }
+
+    public CssMinHeightCSS3(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property.
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property.
+     */
+    public String getPropertyName() {
+	return "min-height";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css3Style style0 = (Css3Style) style;
+	if (style0.cssMinHeightCSS3 != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssMinHeightCSS3 = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getMinHeightCSS3();
+	} else {
+	    return ((Css3Style) style).cssMinHeightCSS3;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssMinHeightCSS3
+		&& value.equals(((CssMinHeightCSS3) property).value));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssMinWidthCSS3.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,139 @@
+//
+// $Id: CssMinWidthCSS3.java,v 1.2 2005-09-14 15:15:04 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 org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+/**
+ */
+public class CssMinWidthCSS3 extends CssProperty {
+
+    CssValue value;
+    private static CssIdent initial = new CssIdent("initial");
+
+    /**
+     * Create a new CssMinWidthCSS3
+     */
+    public CssMinWidthCSS3() {
+    }
+
+    /**
+     * Create a new CssMinWidthCSS3.
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssMinWidthCSS3(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	} else if (val.equals(initial)) {
+		value = initial;
+	} else if (val instanceof CssLength || val instanceof CssPercentage) {
+	    float f = ((Float) val.get()).floatValue();
+	    if (f < 0) {
+		throw new InvalidParamException("negative-value",
+						val.toString(), ac);
+	    }
+	    value = val;
+	} else if (val instanceof CssNumber) {
+	    value = ((CssNumber) val).getLength();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+
+	expression.next();
+    }
+
+    public CssMinWidthCSS3(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property.
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property.
+     */
+    public String getPropertyName() {
+	return "min-width";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css3Style style0 = (Css3Style) style;
+	if (style0.cssMinWidthCSS3 != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssMinWidthCSS3 = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getMinWidthCSS3();
+	} else {
+	    return ((Css3Style) style).cssMinWidthCSS3;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssMinWidthCSS3
+		&& value.equals(((CssMinWidthCSS3) property).value));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssNavDown.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,137 @@
+//
+// $Id: CssNavDown.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYDown 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyDown statement at
+// http://www.w3.org/Consortium/Legal/copyDown-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssURL;
+import org.w3c.css.values.CssValue;
+
+public class CssNavDown extends CssProperty {
+
+    CssValue navDown;
+
+    static CssIdent auto = new CssIdent("auto");
+
+    /**
+     * Create a new CssNavDown
+     */
+    public CssNavDown() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new CssNavDown
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssNavDown(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val.equals(inherit)) {
+	    navDown = val;
+	    expression.next();
+	} else if (val.equals(auto)) {
+	    navDown = val;
+	    expression.next();
+	} else if (val instanceof CssURL) {
+	    navDown = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssNavDown(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssNavDown != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssNavDown = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getNavDownCSS3();
+	}
+	else {
+	    return ((Css3Style) style).cssNavDown;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssNavDown &&
+		navDown.equals(((CssNavDown) property).navDown));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "nav-down";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return navDown;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return navDown.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return navDown.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return (navDown == auto);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssNavIndex.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,137 @@
+//
+// $Id: CssNavIndex.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssNumber;
+import org.w3c.css.values.CssValue;
+
+public class CssNavIndex extends CssProperty {
+
+    CssValue navindex;
+
+    static CssIdent auto = new CssIdent("auto");
+
+    /**
+     * Create a new CssNavIndex
+     */
+    public CssNavIndex() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new CssNavIndex
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssNavIndex(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val.equals(inherit)) {
+	    navindex = val;
+	    expression.next();
+	} else if (val.equals(auto)) {
+	    navindex = val;
+	    expression.next();
+	} else if (val instanceof CssNumber) {
+	    navindex = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssNavIndex(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssNavIndex != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssNavIndex = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getNavIndexCSS3();
+	}
+	else {
+	    return ((Css3Style) style).cssNavIndex;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssNavIndex &&
+		navindex.equals(((CssNavIndex) property).navindex));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "nav-index";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return navindex;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return navindex.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return navindex.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return (navindex == auto);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssNavLeft.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,137 @@
+//
+// $Id: CssNavLeft.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYLeft 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyLeft statement at
+// http://www.w3.org/Consortium/Legal/copyLeft-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssURL;
+import org.w3c.css.values.CssValue;
+
+public class CssNavLeft extends CssProperty {
+
+    CssValue navLeft;
+
+    static CssIdent auto = new CssIdent("auto");
+
+    /**
+     * Create a new CssNavLeft
+     */
+    public CssNavLeft() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new CssNavLeft
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssNavLeft(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val.equals(inherit)) {
+	    navLeft = val;
+	    expression.next();
+	} else if (val.equals(auto)) {
+	    navLeft = val;
+	    expression.next();
+	} else if (val instanceof CssURL) {
+	    navLeft = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssNavLeft(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssNavLeft != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssNavLeft = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getNavLeftCSS3();
+	}
+	else {
+	    return ((Css3Style) style).cssNavLeft;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssNavLeft &&
+		navLeft.equals(((CssNavLeft) property).navLeft));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "nav-left";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return navLeft;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return navLeft.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return navLeft.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return (navLeft == auto);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssNavRight.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,137 @@
+//
+// $Id: CssNavRight.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssURL;
+import org.w3c.css.values.CssValue;
+
+public class CssNavRight extends CssProperty {
+
+    CssValue navRight;
+
+    static CssIdent auto = new CssIdent("auto");
+
+    /**
+     * Create a new CssNavRight
+     */
+    public CssNavRight() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new CssNavRight
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssNavRight(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val.equals(inherit)) {
+	    navRight = val;
+	    expression.next();
+	} else if (val.equals(auto)) {
+	    navRight = val;
+	    expression.next();
+	} else if (val instanceof CssURL) {
+	    navRight = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssNavRight(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssNavRight != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssNavRight = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getNavRightCSS3();
+	}
+	else {
+	    return ((Css3Style) style).cssNavRight;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssNavRight &&
+		navRight.equals(((CssNavRight) property).navRight));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "nav-right";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return navRight;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return navRight.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return navRight.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return (navRight == auto);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssNavUp.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,137 @@
+//
+// $Id: CssNavUp.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssURL;
+import org.w3c.css.values.CssValue;
+
+public class CssNavUp extends CssProperty {
+
+    CssValue navUp;
+
+    static CssIdent auto = new CssIdent("auto");
+
+    /**
+     * Create a new CssNavUp
+     */
+    public CssNavUp() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new CssNavUp
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssNavUp(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val.equals(inherit)) {
+	    navUp = val;
+	    expression.next();
+	} else if (val.equals(auto)) {
+	    navUp = val;
+	    expression.next();
+	} else if (val instanceof CssURL) {
+	    navUp = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssNavUp(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssNavUp != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssNavUp = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getNavUpCSS3();
+	}
+	else {
+	    return ((Css3Style) style).cssNavUp;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssNavUp &&
+		navUp.equals(((CssNavUp) property).navUp));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "nav-up";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return navUp;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return navUp.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return navUp.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return (navUp == auto);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssOpacity.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,183 @@
+//
+// $Id: CssOpacity.java,v 1.3 2007-07-13 13:32:21 julien Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.util.Util;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssIdent;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ * <P>
+ * <EM>Value:</EM> &lt; alphavalue&gt; || inherit<BR>
+ * <EM>Initial:</EM>1<BR>
+ * <EM>Applies to:</EM>all elements<BR>
+ * <EM>Inherited:</EM>no<BR>
+ * <EM>Percentages:</EM>no<BR>
+ * <EM>Media:</EM>:visual
+ * <P>
+ * This property sets the opacity of an element.
+ * 
+ * <PRE>
+ * 
+ * H1 { opacity: 0}
+ * 
+ * </PRE>
+ */
+
+public class CssOpacity extends CssProperty implements CssOperator {
+
+	String opaclevel;
+
+	ApplContext ac;
+
+	/**
+	 * Create a new CssOpacity
+	 */
+	public CssOpacity() {
+		CssNumber cssnum = new CssNumber((float) 1.0);
+		opaclevel = cssnum.toString();
+	}
+
+	/**
+	 * Create a new CssOpacity
+	 * 
+	 * @param expression
+	 *            The expression for this property
+	 * @exception InvalidParamException
+	 *                Values are incorrect
+	 */
+	public CssOpacity(ApplContext ac, CssExpression expression, boolean check)
+			throws InvalidParamException {
+		this.ac = ac;
+		setByUser(); // tell this property is set by the user
+		CssValue val = expression.getValue();
+
+		if (val instanceof CssNumber) {
+
+			CssNumber cssnum = new CssNumber(clampedValue(ac, ((CssNumber) val)
+					.getValue()));
+			opaclevel = cssnum.toString();
+			expression.next();
+		} else if (val instanceof CssIdent) {
+			if (val.equals(inherit)) {
+				opaclevel = "inherit";
+				expression.next();
+			} else {
+				throw new InvalidParamException("value", val.toString(),
+						getPropertyName(), ac);
+			}
+		} else {
+			throw new InvalidParamException("value", val.toString(),
+					getPropertyName(), ac);
+		}
+	}
+
+	public CssOpacity(ApplContext ac, CssExpression expression)
+			throws InvalidParamException {
+		this(ac, expression, false);
+	}
+
+	/**
+	 * Brings all values back between 0 and 1
+	 * 
+	 * @param opac
+	 *            The value to be modified if necessary
+	 */
+	private float clampedValue(ApplContext ac, float opac) {
+		if (opac < 0 || opac > 1) {
+			ac.getFrame().addWarning("out-of-range", Util.displayFloat(opac));
+			return ((opac < 0) ? 0 : 1);
+		} else
+			return (opac);
+	}
+
+	/**
+	 * Add this property to the CssStyle.
+	 * 
+	 * @param style
+	 *            The CssStyle
+	 */
+	public void addToStyle(ApplContext ac, CssStyle style) {
+		if (((Css3Style) style).cssOpacity != null)
+			style.addRedefinitionWarning(ac, this);
+		((Css3Style) style).cssOpacity = this;
+	}
+
+	/**
+	 * Get this property in the style.
+	 * 
+	 * @param style
+	 *            The style where the property is
+	 * @param resolve
+	 *            if true, resolve the style to find this property
+	 */
+	public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+		if (resolve) {
+			return ((Css3Style) style).getOpacity();
+		} else {
+			return ((Css3Style) style).cssOpacity;
+		}
+	}
+
+	/**
+	 * Compares two properties for equality.
+	 * 
+	 * @param value
+	 *            The other property.
+	 */
+	public boolean equals(CssProperty property) {
+		return (property instanceof CssOpacity && opaclevel
+				.equals(((CssOpacity) property).opaclevel));
+	}
+
+	/**
+	 * Returns the name of this property
+	 */
+	public String getPropertyName() {
+		return "opacity";
+	}
+
+	/**
+	 * Returns the value of this property
+	 */
+	public Object get() {
+		return opaclevel;
+	}
+
+	/**
+	 * Returns true if this property is "softly" inherited
+	 */
+	public boolean isSoftlyInherited() {
+		return opaclevel.equals("inherit");
+	}
+
+	/**
+	 * Returns a string representation of the object
+	 */
+	public String toString() {
+		return opaclevel;
+	}
+
+	/**
+	 * Is the value of this property a default value It is used by all macro for
+	 * the function <code>print</code>
+	 */
+	public boolean isDefault() {
+		CssNumber cssnum = new CssNumber(ac, (float) 1.0);
+		return opaclevel == cssnum.toString();
+	}
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssOutlineOffset.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,139 @@
+//
+// $Id: CssOutlineOffset.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYLeft 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyLeft statement at
+// http://www.w3.org/Consortium/Legal/copyLeft-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+public class CssOutlineOffset extends CssProperty {
+
+    CssValue outlineOffset;
+    ApplContext ac;
+
+    static CssIdent auto = new CssIdent("auto");
+
+    /**
+     * Create a new CssOutlineOffset
+     */
+    public CssOutlineOffset() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new CssOutlineOffset
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssOutlineOffset(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	this.ac = ac;
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val.equals(inherit)) {
+	    outlineOffset = val;
+	    expression.next();
+	} else if (val instanceof CssLength) {
+	    outlineOffset = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssOutlineOffset(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssOutlineOffset != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssOutlineOffset = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getOutlineOffset();
+	}
+	else {
+	    return ((Css3Style) style).cssOutlineOffset;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssOutlineOffset &&
+		outlineOffset.equals(((CssOutlineOffset) property).outlineOffset));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "outline-offset";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return outlineOffset;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return outlineOffset.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return outlineOffset.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+
+		CssNumber cssnum = new CssNumber(ac, (float) 0.0);
+        return outlineOffset.toString() == cssnum.toString();
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssOverflowCSS3.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,155 @@
+//
+// $Id: CssOverflowCSS3.java,v 1.2 2005-09-14 15:15:04 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 org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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 CssOverflowCSS3 extends CssProperty {
+
+    CssValue value;
+
+    private static CssIdent visible = new CssIdent("visible");
+    private static CssIdent hidden = new CssIdent("hidden");
+    private static CssIdent scroll = new CssIdent("scroll");
+    private static CssIdent auto = new CssIdent("auto");
+    private static CssIdent initial = new CssIdent("initial");
+
+    /**
+     * Create a new CssOverflowCSS3
+     */
+    public CssOverflowCSS3() {
+	value = visible;
+    }
+
+    /**
+     * Create a new CssOverflowCSS3
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssOverflowCSS3(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = expression.getValue();
+
+	setByUser();
+	if (val.equals(inherit)) {
+	    value = inherit;
+	    expression.next();
+	} else if (val.equals(visible)) {
+	    value = visible;
+	    expression.next();
+	} else if (val.equals(hidden)) {
+	    value = hidden;
+	    expression.next();
+	} else if (val.equals(visible)) {
+	    value = visible;
+	    expression.next();
+	} else if (val.equals(scroll)) {
+	    value = scroll;
+	    expression.next();
+	} else if (val.equals(auto)) {
+	    value = auto;
+	    expression.next();
+	} else if (val.equals(initial)) {
+	    value = initial;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+
+    }
+
+    public CssOverflowCSS3(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "overflow";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css3Style style0 = (Css3Style) style;
+	if (style0.cssOverflowCSS3 != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssOverflowCSS3 = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getOverflowCSS3();
+	} else {
+	    return ((Css3Style) style).cssOverflowCSS3;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssOverflowCSS3 &&
+		value.equals(((CssOverflowCSS3) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == visible;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssOverflowClip.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,221 @@
+//
+// $Id: CssOverflowClip.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssFunction;
+import org.w3c.css.values.CssIdent;
+import org.w3c.css.values.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> &lt; alphavalue&gt; || inherit<BR>
+ *  <EM>Initial:</EM>1<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  This property sets the OverflowClip of an element.
+ *  <PRE>
+ *  H1 { OverflowClip: 0}
+ *  </PRE>
+ */
+
+public class CssOverflowClip extends CssProperty implements CssOperator {
+
+    String overflowclip = new String();
+    ApplContext ac;
+    CssIdent auto = new CssIdent("auto");
+    CssIdent initial = new CssIdent("initial");
+
+    /**
+     * Create a new CssOverflowClip
+     */
+    public CssOverflowClip() {
+
+    }
+
+    /**
+     * Create a new CssOverflowClip
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssOverflowClip(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	this.ac = ac;
+	setByUser(); // tell this property is set by the user
+	CssValue val = expression.getValue();
+
+	if (val instanceof CssFunction) {
+	    CssFunction fun = (CssFunction) val;
+	    CssExpression params = fun.getParameters();
+
+	    CssValue v;
+
+	    if (fun.getName().equals("rect")) {
+		if (params.getCount() == 4) {
+
+		    overflowclip = "rect(";
+
+		    for (int i =0; i < 4; i++) {
+			v = params.getValue();
+			if (!(v instanceof CssLength || v instanceof CssPercentage) ) {
+			    throw new InvalidParamException("value", params.getValue(),
+				    getPropertyName(), ac);
+			} else {
+			    if (i == 0)
+				overflowclip += v.toString();
+			    else
+				overflowclip += ", " + v.toString();
+			}
+		    }
+
+		} else {
+		    throw new InvalidParamException("value", params.getValue(),
+			    getPropertyName(), ac);
+		}
+	    } else if (fun.getName().equals("inset-rect")) {
+
+		if (params.getCount() == 4) {
+
+		    overflowclip = "inset-rect(";
+
+		    for (int i =0; i < 4; i++) {
+			v = params.getValue();
+			if (!(v instanceof CssLength || v instanceof CssPercentage) ) {
+			    throw new InvalidParamException("value", params.getValue(),
+				    getPropertyName(), ac);
+			} else {
+			    if (i == 0)
+				overflowclip += v.toString();
+			    else
+				overflowclip += ", " + v.toString();
+			}
+		    }
+		} else {
+		    throw new InvalidParamException("value", params.getValue(),
+			    getPropertyName(), ac);
+		}
+
+	    }
+	    else throw new InvalidParamException("value", expression.getValue(),
+		    getPropertyName(), ac);
+
+	    overflowclip += ")";
+	    expression.next();
+	    return;
+	}
+	else if (val instanceof CssIdent) {
+	    if (val.equals(inherit)) {
+		overflowclip = "inherit";
+		expression.next();
+	    } else if (val.equals(auto)) {
+		overflowclip = "auto";
+		expression.next();
+	    } else if (val.equals(initial)) {
+		overflowclip = "initial";
+		expression.next();
+	    } else {
+		throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+	    }
+	}
+	else {
+	    throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+	}
+    }
+
+    public CssOverflowClip(ApplContext ac, CssExpression expression)
+    	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssOverflowClip != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssOverflowClip = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getOverflowClip();
+	} else {
+	    return ((Css3Style) style).cssOverflowClip;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssOverflowClip &&
+		overflowclip.equals( ((CssOverflowClip) property).overflowclip));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "overflow-clip";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return overflowclip;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return overflowclip.equals("inherit");
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return overflowclip;
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	CssNumber cssnum = new CssNumber(ac, (float) 1.0);
+	return overflowclip == cssnum.toString();
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssOverflowX.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,150 @@
+//
+// $Id: CssOverflowX.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYLeft 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyLeft statement at
+// http://www.w3.org/Consortium/Legal/copyLeft-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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 CssOverflowX extends CssProperty {
+
+    CssValue overflowX;
+
+    static CssIdent auto = new CssIdent("auto");
+    static CssIdent visible = new CssIdent("visible");
+    static CssIdent hidden = new CssIdent("hidden");
+    static CssIdent scroll = new CssIdent("scroll");
+    static CssIdent initial = new CssIdent("initial");
+
+    /**
+     * Create a new CssOverflowX
+     */
+    public CssOverflowX() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new CssOverflowX
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssOverflowX(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val.equals(inherit)) {
+	    overflowX = val;
+	    expression.next();
+	} else if (val.equals(visible)) {
+	    overflowX = val;
+	    expression.next();
+	} else if (val.equals(hidden)) {
+	    overflowX = val;
+	    expression.next();
+	} else if (val.equals(scroll)) {
+	    overflowX = val;
+	    expression.next();
+	} else if (val.equals(auto)) {
+	    overflowX = val;
+	    expression.next();
+	} else if (val.equals(initial)) {
+	    overflowX = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+		    getPropertyName(), ac);
+	}
+    }
+
+    public CssOverflowX(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssOverflowX != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssOverflowX = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getOverflowX();
+	}
+	else {
+	    return ((Css3Style) style).cssOverflowX;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssOverflowX &&
+		overflowX.equals(((CssOverflowX) property).overflowX));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "overflow-x";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return overflowX;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return overflowX.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return overflowX.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+
+	return overflowX == visible;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssOverflowY.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,150 @@
+//
+// $Id: CssOverflowY.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYLeft 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyLeft statement at
+// http://www.w3.org/Consortium/Legal/copyLeft-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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 CssOverflowY extends CssProperty {
+
+    CssValue overflowY;
+
+    static CssIdent auto = new CssIdent("auto");
+    static CssIdent visible = new CssIdent("visible");
+    static CssIdent hidden = new CssIdent("hidden");
+    static CssIdent scroll = new CssIdent("scroll");
+    static CssIdent initial = new CssIdent("initial");
+
+    /**
+     * Create a new CssOverflowY
+     */
+    public CssOverflowY() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new CssOverflowY
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssOverflowY(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val.equals(inherit)) {
+	    overflowY = val;
+	    expression.next();
+	} else if (val.equals(visible)) {
+	    overflowY = val;
+	    expression.next();
+	} else if (val.equals(hidden)) {
+	    overflowY = val;
+	    expression.next();
+	} else if (val.equals(scroll)) {
+	    overflowY = val;
+	    expression.next();
+	} else if (val.equals(auto)) {
+	    overflowY = val;
+	    expression.next();
+	} else if (val.equals(initial)) {
+	    overflowY = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+		    getPropertyName(), ac);
+	}
+    }
+
+    public CssOverflowY(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssOverflowY != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssOverflowY = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getOverflowY();
+	}
+	else {
+	    return ((Css3Style) style).cssOverflowY;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssOverflowY &&
+		overflowY.equals(((CssOverflowY) property).overflowY));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "overflow-y";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return overflowY;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return overflowY.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return overflowY.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+
+	return overflowY == visible;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssPaddingBottomCSS3.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,111 @@
+//
+// $Id: CssPaddingBottomCSS3.java,v 1.3 2005-09-14 15:15:04 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 org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'padding-bottom'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;length&gt; | &lt;percentage&gt;<BR>
+ *   <EM>Initial:</EM> 0<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> refer to parent element's width<BR>
+ *   <P>
+ *   This property sets the bottom padding of an element.
+ *   <PRE>
+ *   BLOCKQUOTE { padding-bottom: 2em }
+ * </PRE>
+ *   <P>
+ *   Padding values cannot be negative.
+ * @version $Revision: 1.3 $
+ */
+public class CssPaddingBottomCSS3 extends CssPaddingSideCSS3 {
+
+    /**
+     * Create a new CssPaddingBottomCSS3
+     */
+    public CssPaddingBottomCSS3() {
+	super();
+    }
+
+    /**
+     * Create a new CssPaddingBottomCSS3 with an another CssPaddingSideCSS3
+     *
+     * @param another The another side.
+     */
+    public CssPaddingBottomCSS3(CssPaddingSideCSS3 another) {
+	super(another);
+    }
+
+    /**
+     * Create a new CssPaddingBottomCSS3
+     *
+     * @param expression The expression for this property.
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssPaddingBottomCSS3(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	super(ac, expression, check);
+    }
+
+    public CssPaddingBottomCSS3(ApplContext ac, CssExpression expression)
+    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "padding-bottom";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssPaddingBottomCSS3 != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssPaddingBottomCSS3 = this;
+
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getPaddingBottomCSS3();
+	} else {
+	    return ((Css3Style) style).cssPaddingCSS3.getBottom();
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssPaddingBottomCSS3 &&
+		value.equals(((CssPaddingBottomCSS3) property).value));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssPaddingCSS3.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,281 @@
+//
+// $Id: CssPaddingCSS3.java,v 1.4 2006-04-19 11:28:06 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 org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'padding'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> [ &lt;length&gt; | &lt;percentage&gt; ]{1,4} <BR>
+ *   <EM>Initial:</EM> 0<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> refer to parent element's width<BR>
+ *   <P>
+ *   The 'padding' property is a shorthand property for setting 'padding-top',
+ *   'padding-right' 'padding-bottom' and 'padding-left' at the same place in
+ *   the style sheet.
+ *   <P>
+ *   If four values are specified they apply to top, right, bottom and left
+ *   respectively. If there is only one value, it applies to all sides, if there
+ *   are two or three, the missing values are taken from the opposite side.
+ *   <P>
+ *   The surface of the padding area is set with the 'background' property:
+ *   <PRE>
+ *   H1 {
+ *     background: white;
+ *     padding: 1em 2em;
+ *   }
+ * </PRE>
+ *   <P>
+ *   The example above sets a '1em' padding vertically ('padding-top' and
+ *   'padding-bottom') and a '2em' padding horizontally ('padding-right' and
+ *   'padding-left'). The 'em' unit is relative to the element's font size: '1em'
+ *   is equal to the size of the font in use.
+ *   <P>
+ *   Padding values cannot be negative.
+ * @version $Revision: 1.4 $
+ */
+public class CssPaddingCSS3 extends CssProperty implements CssOperator {
+
+    CssPaddingTopCSS3 top;
+    CssPaddingBottomCSS3 bottom;
+    CssPaddingRightCSS3 right;
+    CssPaddingLeftCSS3 left;
+
+    boolean inheritedValue;
+
+    /**
+     * Create a new CssPadding
+     */
+    public CssPaddingCSS3() {
+    }
+
+    /**
+     * Create a new CssPadding
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssPaddingCSS3(ApplContext ac, CssExpression expression,
+	    boolean check)  throws InvalidParamException {
+	CssValue val = expression.getValue();
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    inheritedValue = true;
+	    top = new CssPaddingTopCSS3();
+	    top.value = inherit;
+	    bottom = new CssPaddingBottomCSS3();
+	    bottom.value = inherit;
+	    right = new CssPaddingRightCSS3();
+	    right.value = inherit;
+	    left = new CssPaddingLeftCSS3();
+	    left.value = inherit;
+	}
+
+	switch (expression.getCount()) {
+	case 1:
+	    top = new CssPaddingTopCSS3(ac, expression, check);
+	    /*bottom = new CssPaddingBottomCSS3(top);
+	    right = new CssPaddingRightCSS3(top);
+	    left = new CssPaddingLeftCSS3(top);*/
+	    break;
+	case 2:
+	    if (expression.getOperator() != SPACE)
+		return;
+	    top = new CssPaddingTopCSS3(ac, expression, check);
+	    right = new CssPaddingRightCSS3(ac, expression, check);
+	    /*bottom = new CssPaddingBottomCSS3(top);
+	    left = new CssPaddingLeftCSS3(right);*/
+	    break;
+	case 3:
+	    if (expression.getOperator() != SPACE)
+		return;
+	    top = new CssPaddingTopCSS3(ac, expression, check);
+	    if (expression.getOperator() != SPACE)
+		return;
+	    right = new CssPaddingRightCSS3(ac, expression, check);
+	    bottom = new CssPaddingBottomCSS3(ac, expression, check);
+	    //left = new CssPaddingLeftCSS3(right);
+	    break;
+	case 4:
+	    if (expression.getOperator() != SPACE)
+		return;
+	    top = new CssPaddingTopCSS3(ac, expression, check);
+	    if (expression.getOperator() != SPACE)
+		return;
+	    right = new CssPaddingRightCSS3(ac, expression, check);
+	    if (expression.getOperator() != SPACE)
+		return;
+	    bottom = new CssPaddingBottomCSS3(ac, expression, check);
+	    left = new CssPaddingLeftCSS3(ac, expression, check);
+	    break;
+	default:
+	}
+    }
+
+    public CssPaddingCSS3(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return top;
+    }
+
+    /**
+     * Returns the top property
+     */
+    public CssPaddingTopCSS3 getTop() {
+	return top;
+    }
+
+    /**
+     * Returns the right property
+     */
+    public CssPaddingRightCSS3 getRight() {
+	return right;
+    }
+
+    /**
+     * Returns the bottom property
+     */
+    public CssPaddingBottomCSS3 getBottom() {
+	return bottom;
+    }
+
+    /**
+     * Returns the left property
+     */
+    public CssPaddingLeftCSS3 getLeft() {
+	return left;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "padding";
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (inheritedValue) {
+	    return inherit.toString();
+	}
+        String result = "";
+        // top should never be null
+        if(top != null) result += top;
+        if(right != null) result += " " + right;
+        if(bottom != null) result += " " + bottom;
+        if(left != null) result += " " + left;
+        return result;
+	/*if (right.value.equals(left.value)) {
+	    if (top.value.equals(bottom.value)) {
+		if (top.value.equals(right.value)) {
+		    return top.toString();
+		} else {
+		    return top + " " + right;
+		}
+	    } else {
+		return top + " " + right + " " + bottom;
+	    }
+	} else {
+	    return top + " " + right + " " + bottom + " " + left;
+	}*/
+    }
+
+    /**
+     * Set the context.
+     * Overrides this method for a macro
+     *
+     * @see org.w3c.css.css.CssCascadingOrder#order
+     * @see org.w3c.css.css.StyleSheetParser#handleRule
+     */
+    public void setSelectors(CssSelectors selector) {
+	super.setSelectors(selector);
+	if (top != null) {
+	    top.setSelectors(selector);
+	}
+	if (right != null) {
+	    right.setSelectors(selector);
+	}
+	if (bottom != null) {
+	    bottom.setSelectors(selector);
+	}
+	if (left != null) {
+	    left.setSelectors(selector);
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (top != null) top.addToStyle(ac, style);
+	if (right != null) right.addToStyle(ac, style);
+	if (bottom != null) bottom.addToStyle(ac, style);
+	if (left != null) left.addToStyle(ac, style);
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getPadding();
+	} else {
+	    return ((Css3Style) style).cssPaddingCSS3;
+	}
+    }
+
+    /**
+     * Update the source file and the line.
+     * Overrides this method for a macro
+     *
+     * @param line The line number where this property is defined
+     * @param source The source file where this property is defined
+     */
+    public void setInfo(int line, String source) {
+	super.setInfo(line, source);
+	if (top != null) top.setInfo(line, source);
+	if (right != null) right.setInfo(line, source);
+	if (bottom != null) bottom.setInfo(line, source);
+	if (left != null) left.setInfo(line, source);
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @FIXME
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssPaddingLeftCSS3.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,110 @@
+//
+// $Id: CssPaddingLeftCSS3.java,v 1.3 2005-09-14 15:15:04 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 org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+/**
+ *   <H4>
+ *     <A NAME="padding-left">5.5.9 &nbsp;&nbsp; 'padding-left'</A>
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;length&gt; | &lt;percentage&gt;<BR>
+ *   <EM>Initial:</EM> 0<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> refer to parent element's width<BR>
+ *   <P>
+ *   This property sets the left padding of an element.
+ *   <PRE>
+ *   BLOCKQUOTE { padding-left: 20% }
+ * </PRE>
+ *   <P>
+ *   Padding values cannot be negative.
+ * @version $Revision: 1.3 $
+ */
+public class CssPaddingLeftCSS3 extends CssPaddingSideCSS3 {
+
+    /**
+     * Create a new CssPaddingLeftCSS3
+     */
+    public CssPaddingLeftCSS3() {
+	super();
+    }
+
+    /**
+     * Create a new CssPaddingLeftCSS3 with an another CssPaddingSideCSS3
+     * @param another The another side.
+     */
+    public CssPaddingLeftCSS3(CssPaddingSideCSS3 another) {
+	super(another);
+    }
+
+    /**
+     * Create a new CssPaddingLeftCSS3
+     *
+     * @param expression The expression for this property.
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssPaddingLeftCSS3(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	super(ac, expression, check);
+    }
+
+    public CssPaddingLeftCSS3(ApplContext ac, CssExpression expression)
+    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "padding-left";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssPaddingLeftCSS3 != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssPaddingLeftCSS3 = this;
+
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getPaddingLeftCSS3();
+	} else {
+	    return ((Css3Style) style).cssPaddingCSS3.getLeft();
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssPaddingLeftCSS3 &&
+		value.equals(((CssPaddingLeftCSS3) property).value));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssPaddingRightCSS3.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,113 @@
+//
+// $Id: CssPaddingRightCSS3.java,v 1.3 2005-09-14 15:15:04 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 org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'padding-right'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;length&gt; | &lt;percentage&gt;<BR>
+ *   <EM>Initial:</EM> 0<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> refer to parent element's width<BR>
+ *   <P>
+ *   This property sets the right padding of an element.
+ *   <PRE>
+ *   BLOCKQUOTE { padding-right: 10px }
+ * </PRE>
+ *   <P>
+ *   Padding values cannot be negative.
+ *
+ * @version $Revision: 1.3 $
+ */
+public class CssPaddingRightCSS3 extends CssPaddingSideCSS3 {
+
+    /**
+     * Create a new CssPaddingRightCSS3
+     */
+    public CssPaddingRightCSS3() {
+	super();
+    }
+
+    /**
+     * Create a new CssPaddingRightCSS3 with an another CssPaddingSideCSS3
+     *
+     * @param another The another side
+     */
+    public CssPaddingRightCSS3(CssPaddingSideCSS3 another) {
+	super(another);
+    }
+
+    /**
+     * Create a new CssPaddingRightCSS3
+     *
+     * @param expression The expression for this property.
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssPaddingRightCSS3(ApplContext ac, CssExpression expression,
+	    boolean check)
+    throws InvalidParamException {
+	super(ac, expression, check);
+    }
+
+    public CssPaddingRightCSS3(ApplContext ac, CssExpression expression)
+    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "padding-right";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssPaddingRightCSS3 != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssPaddingRightCSS3 = this;
+
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getPaddingRightCSS3();
+	} else {
+	    return ((Css3Style) style).cssPaddingCSS3.getRight();
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssPaddingRightCSS3 &&
+		value.equals(((CssPaddingRightCSS3) property).value));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssPaddingSideCSS3.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,119 @@
+//
+// $Id: CssPaddingSideCSS3.java,v 1.3 2005-09-14 15:15:04 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 org.w3c.css.properties.css3;
+
+import org.w3c.css.properties.css1.CssProperty;
+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.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public abstract class CssPaddingSideCSS3 extends CssProperty {
+
+    CssValue value;
+    CssIdent initial = new CssIdent("initial");
+
+    /**
+     * Create a new CssPaddingSideCSS3.
+     */
+    public CssPaddingSideCSS3() {
+	value = new CssLength();
+    }
+
+    /**
+     * Create a new CssPaddingSideCSS3 with an another CssPaddingSideCSS3
+     *
+     * @param another An another side.
+     */
+    public CssPaddingSideCSS3(CssPaddingSideCSS3 another) {
+	value = another.value;
+    }
+
+    /**
+     * Create a new CssPaddingSideCSS3
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssPaddingSideCSS3(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	    expression.next();
+	} else if (val.equals(initial)) {
+	    value = initial;
+	    expression.next();
+	} else if (val instanceof CssLength || val instanceof CssPercentage) {
+	    value = val;
+	    float v = ((Float) val.get()).floatValue();
+	    if (v < 0)
+		throw new InvalidParamException("negative-value",
+						Float.toString(v), ac);
+	    expression.next();
+	} else if (val instanceof CssNumber) {
+	    value = ((CssNumber) val).getLength();
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value", val.toString(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssPaddingSideCSS3(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the internal value
+     */
+    public CssValue getValue() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return ((Float) value.get()).floatValue() == 0;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssPaddingTopCSS3.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,109 @@
+//
+// $Id: CssPaddingTopCSS3.java,v 1.3 2005-09-14 15:15:04 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 org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'padding-top'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;length&gt; | &lt;percentage&gt;<BR>
+ *   <EM>Initial:</EM> 0<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> refer to parent element's width<BR>
+ *   <P>
+ *   This property sets the top padding of an element.
+ *   <PRE>
+ *   BLOCKQUOTE { padding-top: 0.3em }
+ * </PRE>
+ *   <P>
+ *   Padding values cannot be negative.
+ * @version $Revision: 1.3 $
+ */
+public class CssPaddingTopCSS3 extends CssPaddingSideCSS3 {
+
+    /**
+     * Create a new CssPaddingTopCSS3
+     */
+    public CssPaddingTopCSS3() {
+	super();
+    }
+
+    /**
+     * Create a new CssPaddingTopCSS3 with an another CssPaddingSideCSS3.
+     *
+     * @param another The another side.
+     */
+    public CssPaddingTopCSS3(CssPaddingSideCSS3 another) {
+	super(another);
+    }
+
+    /**
+     * Create a new CssPaddingTopCSS3
+     *
+     * @param expression The expression for this property.
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssPaddingTopCSS3(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	super(ac, expression, check);
+    }
+
+    public CssPaddingTopCSS3(ApplContext ac, CssExpression expression)
+    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "padding-top";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssPaddingTopCSS3 != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssPaddingTopCSS3 = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getPaddingTopCSS3();
+	} else {
+	    return ((Css3Style) style).cssPaddingCSS3.getTop();
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssPaddingTopCSS3 && value.equals(((CssPaddingTopCSS3) property).value));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssPunctuationTrim.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,151 @@
+//
+// $Id: CssPunctuationTrim.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> none || start || inherit<BR>
+ *  <EM>Initial:</EM>none<BR>
+ *  <EM>Applies to:</EM>block-level elements<BR>
+ *  <EM>Inherited:</EM>yes<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  This property determines whether or not a fullwidth punctuation mark
+ *  character should be trimmed if it appears at the beginning of a line, so
+ *  that its "ink" lines up with the first glyph in the line above and below.
+ */
+
+public class CssPunctuationTrim extends CssProperty {
+
+    CssValue trim;
+
+    static CssIdent none = new CssIdent("none");
+    static CssIdent start = new CssIdent("start");
+
+    /**
+     * Create a new CssPunctuationTrim
+     */
+    public CssPunctuationTrim() {
+	trim = none;
+    }
+
+    /**
+     * Create a new CssPunctuationTrim
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect values
+     */
+    public CssPunctuationTrim(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	setByUser();
+	CssValue val = expression.getValue();
+	if (val.equals(none)) {
+	    trim = none;
+	    expression.next();
+	}
+	else if (val.equals(start)) {
+	    trim = start;
+	    expression.next();
+	}
+	else if (val.equals(inherit)) {
+	    trim = inherit;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+	}
+    }
+
+    public CssPunctuationTrim(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssPunctuationTrim != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssPunctuationTrim = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getPunctuationTrim();
+	}
+	else {
+	    return ((Css3Style) style).cssPunctuationTrim;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssPunctuationTrim &&
+		trim.equals(((CssPunctuationTrim) property).trim));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "punctuation-trim";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return trim;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return trim.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return trim.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return trim == none;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssRenderIntent.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,164 @@
+//
+// $Id: CssRenderIntent.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// COPYRIGHT (c) 1995-2000 World Wide Web Consortium, (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ * <P>
+ * <EM>Value:</EM> auto || perceptual || relative-colorimetric ||
+ * saturation || absolute-colorimetric || inherit<BR>
+ * <EM>Initial:</EM>auto<BR>
+ * <EM>Applies to:</EM>all elements<BR>
+ * <EM>Inherited</EM>yes<BR>
+ * <EM>Percentages:</EM>no<BR>
+ * <EM>Media:</EM>visual
+ * <P>
+ * This property permits the specification of a color profile rendering intent other than the default.
+ * The behavior of values other than auto and inherent are defined by the International Color Consortium standard.
+ */
+public class CssRenderIntent extends CssProperty {
+
+    CssValue renderintent;
+
+    static CssIdent auto = new CssIdent("auto");
+    static CssIdent abscolorimetric = new CssIdent("absolute-colorimetric");
+    static CssIdent relcolorimetric = new CssIdent("relative-colorimetric");
+    static CssIdent saturation = new CssIdent("saturation");
+    static CssIdent perceptual = new CssIdent("perceptual");
+
+    /**
+     * Create a new CssRenderIntent
+     */
+    public CssRenderIntent() {
+	renderintent = auto;
+    }
+
+    /**
+     * Create a new CssRenderIntent
+     *
+     *
+     */
+    public CssRenderIntent(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	setByUser();
+	CssValue val = expression.getValue();
+	if (val.equals(auto)) {
+	    renderintent = auto;
+	    expression.next();
+	}
+	else if (val.equals(perceptual)) {
+	    renderintent = perceptual;
+	    expression.next();
+	}
+	else if (val.equals(relcolorimetric)) {
+	    renderintent = relcolorimetric;
+	    expression.next();
+	}
+	else if (val.equals(saturation)) {
+	    renderintent = saturation;
+	    expression.next();
+	}
+	else if (val.equals(abscolorimetric)) {
+	    renderintent = abscolorimetric;
+	    expression.next();
+	}
+	else if (val.equals(inherit)) {
+	    renderintent = inherit;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+	}
+    }
+
+    public CssRenderIntent(ApplContext ac, CssExpression expression)
+    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssRenderIntent != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssRenderIntent = this;
+
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getRenderIntent();
+	} else {
+	    return ((Css3Style) style).cssRenderIntent;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssRenderIntent &&
+		renderintent.equals( ((CssRenderIntent) property).renderintent));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "rendering-intent";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return renderintent;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return renderintent.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return renderintent.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return renderintent == auto;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssResizer.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,162 @@
+//
+// $Id: CssResizer.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> auto || both || horizontal || vertical || none || inherit<BR>
+ *  <EM>Initial:</EM>auto<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:interactive
+ */
+
+public class CssResizer extends CssProperty {
+
+    CssValue resz;
+    ApplContext ac;
+
+    CssIdent auto = new CssIdent("auto");
+    CssIdent both = new CssIdent("both");
+    CssIdent horizontal = new CssIdent("horizontal");
+    CssIdent vertical = new CssIdent("vertical");
+    CssIdent none = new CssIdent("none");
+
+    /**
+     * Create a new CssResizer
+     */
+    public CssResizer() {
+	resz = auto;
+    }
+
+    /**
+     * Create a new CssResizer
+     */
+    public CssResizer(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val.equals(auto)) {
+	    resz = auto;
+	    expression.next();
+	}
+	else if (val.equals(both)) {
+	    resz = both;
+	    expression.next();
+	}
+	else if (val.equals(horizontal)) {
+	    resz = horizontal;
+	    expression.next();
+	}
+	else if (val.equals(vertical)) {
+	    resz = vertical;
+	    expression.next();
+	}
+	else if (val.equals(none)) {
+	    resz = none;
+	    expression.next();
+	}
+	else if (val.equals(inherit)) {
+	    resz = inherit;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssResizer(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssResizer != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssResizer = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getResizer();
+	} else {
+	    return ((Css3Style) style).cssResizer;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssResizer &&
+                resz.equals( ((CssResizer) property).resz));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "resizer";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return resz;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return resz.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return resz.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return resz == auto;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssRubyAlign.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,191 @@
+//
+// $Id: CssRubyAlign.java,v 1.1 2005-08-23 16:24:20 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> auto || start || left || center || end|| right || distribute-letter ||
+ *  distribute-space || line-edge || inherit<BR>
+ *  <EM>Initial:</EM>auto<BR>
+ *  <EM>Applies to:</EM>all elementes<BR>
+ *  <EM>Inherited:</EM>yes<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  This property can be used on any element to control the text alignment of
+ *  the ruby text and ruby base contents relative to each other. It applies to
+ *  all the ruby's in the element.
+ *  For simple ruby, the alignment is applied to the ruby child element whose
+ *  content is shorter: either the rb element or the rt element [RUBY]. For
+ *  group ruby, the alignment is also applied to the ruby child elements
+ *  whose content is shorter: either the rb element and/or one or two rt
+ *  elements for each related ruby text and ruby base element within the
+ *  rtc and rbc element.
+*/
+
+public class CssRubyAlign extends CssProperty {
+
+    CssValue rubyalign;
+    ApplContext ac;
+
+    CssIdent auto = new CssIdent("auto");
+    CssIdent start = new CssIdent("start");
+    CssIdent left = new CssIdent("left");
+    CssIdent center = new CssIdent("center");
+    CssIdent end = new CssIdent("end");
+    CssIdent right = new CssIdent("right");
+    CssIdent distributeletter = new CssIdent("distribute-letter");
+    CssIdent distributespace = new CssIdent("distribute-space");
+    CssIdent lineedge = new CssIdent("line-edge");
+
+    /**
+     * Create a new CssRubyAlign
+     */
+    public CssRubyAlign() {
+	rubyalign = auto;
+    }
+
+    /**
+     * Create a new CssRubyAlign
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssRubyAlign(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+	if (val.equals(auto)) {
+	    rubyalign = auto;
+	    expression.next();
+	}
+	else if (val.equals(left)) {
+	    rubyalign = left;
+	    expression.next();
+	}
+	else if (val.equals(center)) {
+	    rubyalign = center;
+	    expression.next();
+	}
+	else if (val.equals(right)) {
+	    rubyalign = right;
+	    expression.next();
+	}
+	else if (val.equals(distributeletter)) {
+	    rubyalign = distributeletter;
+	    expression.next();
+	}
+	else if (val.equals(distributespace)) {
+	    rubyalign = distributespace;
+	    expression.next();
+	}
+	else if (val.equals(lineedge)) {
+	    rubyalign = lineedge;
+	    expression.next();
+	}
+	else if (val.equals(start)) {
+	    rubyalign = start;
+	    expression.next();
+	}
+	else if (val.equals(end)) {
+	    rubyalign = end;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssRubyAlign(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssRubyAlign != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssRubyAlign = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getRubyAlign();
+	} else {
+	    return ((Css3Style) style).cssRubyAlign;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssRubyAlign &&
+                rubyalign.equals( ((CssRubyAlign) property).rubyalign));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "ruby-align";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return rubyalign;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return rubyalign.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return rubyalign.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return rubyalign == auto;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssRubyOverhang.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,160 @@
+//
+// $Id: CssRubyOverhang.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> auto || start || end || none || inherit<BR>
+ *  <EM>Initial:</EM>auto<BR>
+ *  <EM>Applies to:</EM>the parent of elements with display: ruby-text<BR>
+ *  <EM>Inherited:</EM>yes<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ */
+
+public class CssRubyOverhang extends CssProperty {
+
+    CssValue rubyov;
+    ApplContext ac;
+
+    CssIdent auto = new CssIdent("auto");
+    CssIdent start = new CssIdent("start");
+    CssIdent end = new CssIdent("end");
+    CssIdent none = new CssIdent("none");
+
+    /**
+     * Create a new CssRubyOverhang
+     */
+    public CssRubyOverhang() {
+	rubyov = auto;
+    }
+
+    /**
+     * Create a new CssRubyOverhang
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssRubyOverhang(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val.equals(auto)) {
+	    rubyov = auto;
+	    expression.next();
+	}
+	else if (val.equals(start)) {
+	    rubyov = start;
+	    expression.next();
+	}
+	else if (val.equals(end)) {
+	    rubyov = end;
+	    expression.next();
+	}
+	else if (val.equals(none)) {
+	    rubyov = end;
+	    expression.next();
+	}
+	else if (val.equals(inherit)) {
+	    rubyov = inherit;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssRubyOverhang(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssRubyOverhang != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssRubyOverhang = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getRubyOverhang();
+	} else {
+	    return ((Css3Style) style).cssRubyOverhang;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssRubyOverhang &&
+                rubyov.equals( ((CssRubyOverhang) property).rubyov));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "ruby-overhang";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return rubyov;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return rubyov.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return rubyov.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return rubyov == auto;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssRubyPosition.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,164 @@
+//
+// $Id: CssRubyPosition.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> before || after || right || inline || inherit<BR>
+ *  <EM>Initial:</EM>before<BR>
+ *  <EM>Applies to:</EM>the parent of elements with display: ruby-text<BR>
+ *  <EM>Inherited:</EM>yes<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  This property is used by the parent of elements with display: ruby-text to
+ *  control the position of the ruby text with respect to its base. Such
+ *  parents are typically either the ruby element itself (simple ruby) or
+ *  the rtc element (group ruby).
+ */
+
+public class CssRubyPosition extends CssProperty {
+
+    CssValue pos;
+    ApplContext ac;
+
+    CssIdent before = new CssIdent("before");
+    CssIdent after = new CssIdent("after");
+    CssIdent right = new CssIdent("right");
+    CssIdent inline = new CssIdent("inline");
+
+    /**
+     * Create a new CssRubyPosition
+     */
+    public CssRubyPosition() {
+	pos = before;
+    }
+
+    /**
+     * Create a new CssRubyPosition
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssRubyPosition(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+	if (val.equals(before)) {
+	    pos = before;
+	    expression.next();
+	}
+	else if (val.equals(after)) {
+	    pos = after;
+	    expression.next();
+	}
+	else if (val.equals(right)) {
+	    pos = right;
+	    expression.next();
+	}
+	else if (val.equals(inline)) {
+	    pos = inline;
+	    expression.next();
+	}
+	else if (val.equals(inherit)) {
+	    pos = inherit;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssRubyPosition(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssRubyPosition != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssRubyPosition = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getRubyPosition();
+	} else {
+	    return ((Css3Style) style).cssRubyPosition;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssRubyPosition &&
+                pos.equals( ((CssRubyPosition) property).pos));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "ruby-position";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return pos;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return pos.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return pos.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return pos == before;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssRubySpan.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,180 @@
+//
+// $Id: CssRubySpan.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import java.util.Vector;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssFunction;
+import org.w3c.css.values.CssIdent;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> none || &lt;key-press-combination&gt;+ || &lt;system-key-equivalent&gt; || inherit<BR>
+ *  <EM>Initial:</EM>none<BR>
+ *  <EM>Applies to:</EM>all enabled elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:interactive
+ */
+
+public class CssRubySpan extends CssProperty {
+
+    CssValue rubyspan;
+    Vector values = new Vector();
+
+    CssIdent none = new CssIdent("none");
+
+    /**
+     * Create a new CssRubySpan
+     */
+    public CssRubySpan() {
+	rubyspan = none;
+    }
+
+    /**
+     * Create a new CssRubySpan
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssRubySpan(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	//String kc = new String();
+	//int hyphenindex;
+	//int counter = 0;
+	//char op = expression.getOperator();
+	CssValue val = expression.getValue();
+	//String part = new String();
+	//String rest = new String();
+	//Vector ks = new Vector();
+	setByUser();
+
+	if (val.equals(none)) {
+	    rubyspan = none;
+	    expression.next();
+	    return;
+	}
+	else if (val.equals(inherit)) {
+	    rubyspan = inherit;
+	    expression.next();
+	    return;
+	}
+	else if (val instanceof CssFunction) {
+	    CssFunction attr = (CssFunction) val;
+	    CssExpression params = attr.getParameters();
+	    CssValue v = params.getValue();
+	    if (attr.getName().equals("attr")) {
+		if ((params.getCount() != 1)
+			|| !(v instanceof CssIdent)) {
+		    throw new InvalidParamException("attr", params.getValue(),
+			    getPropertyName(), ac);
+		}
+	    }
+	    else throw new InvalidParamException("value", expression.getValue(),
+		    getPropertyName(), ac);
+	    rubyspan = val;
+	    expression.next();
+	    return;
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+		    getPropertyName(), ac);
+	}
+
+    }
+
+    public CssRubySpan(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssRubySpan != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssRubySpan = this;
+
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getRubySpan();
+	} else {
+	    return ((Css3Style) style).cssRubySpan;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssRubySpan &&
+		rubyspan.equals( ((CssRubySpan) property).rubyspan));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "ruby-span";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return values;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	// @@TODO
+	return false;
+	//values.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	if (rubyspan != null)
+	    return rubyspan.toString();
+	else
+	    return values.firstElement().toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return rubyspan == none;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssScript.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,143 @@
+//
+// $Id: CssScript.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// COPYRIGHT (c) 1995-2000 World Wide Web Consortium, (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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 CssScript extends CssProperty {
+
+    CssValue script;
+
+    private static CssIdent auto = new CssIdent("auto");
+    private static CssIdent none = new CssIdent("none");
+
+    /**
+     * Create a new CssScript
+     */
+    public CssScript() {
+	script = auto;
+    }
+
+    /**
+     * Create a new CssScript
+     *
+     *
+     */
+    public CssScript(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	setByUser();
+	CssValue val = expression.getValue();
+	if (val.equals(auto)) {
+	    script = auto;
+	    expression.next();
+	}
+	else if (val.equals(none)) {
+	    script = none;
+	    expression.next();
+	}
+	else if (val.equals(inherit)) {
+	    script = inherit;
+	    expression.next();
+	}
+	else if (val instanceof CssIdent) {
+	    script = val;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+	}
+    }
+
+    public CssScript(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssScript != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssScript = this;
+
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getScript();
+	} else {
+	    return ((Css3Style) style).cssScript;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssScript &&
+		script.equals( ((CssScript) property).script));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "text-script";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return script;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return script.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return script.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return script == auto;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssTabIndex.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,152 @@
+//
+// $Id: CssTabIndex.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> auto || <number> || inherit<BR>
+ *  <EM>Initial:</EM>auto<BR>
+ *  <EM>Applies to:</EM>all enabled elements<BR>
+ *  <EM>Inherited:</EM>yes<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:interactive
+ *  <P>
+ *  This property specifies the position of the current element in the tabbing
+ *  order for the current document.
+ */
+
+public class CssTabIndex extends CssProperty {
+
+    CssValue tabidx;
+
+    static CssIdent auto = new CssIdent("auto");
+
+    /**
+     * Create a new CssTabIndex
+     */
+    public CssTabIndex() {
+	tabidx = auto;
+    }
+
+    /**
+     * Create a new CssTabIndex
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssTabIndex(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val.equals(auto)) {
+	    tabidx = auto;
+	    expression.next();
+	}
+	else if (val.equals(inherit)) {
+	    tabidx = inherit;
+	    expression.next();
+	}
+	else if (val instanceof CssNumber) {
+	    tabidx = val;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssTabIndex(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssTabIndex != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssTabIndex = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getTabIndex();
+	}
+	else {
+	    return ((Css3Style) style).cssTabIndex;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssTabIndex &&
+		tabidx.equals(((CssTabIndex) property).tabidx));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "tab-index";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return tabidx;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return tabidx.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return tabidx.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return tabidx == auto;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssTextAfterOverflow.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,166 @@
+//
+// $Id: CssTextAfterOverflow.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> clip || ellipsis || ellipsis-word || ellipsis-path || fade || inherit<BR>
+ *  <EM>Initial:</EM>clip<BR>
+ *  <EM>Applies to:</EM>all block-level elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  This property controls whether or not text wraps when it reaches the flow
+ *  edge of its containing block box.
+ */
+
+public class CssTextAfterOverflow extends CssProperty {
+
+    CssValue overflow;
+    ApplContext ac;
+
+    static CssIdent clip = new CssIdent("clip");
+    static CssIdent ellipsis = new CssIdent("ellipsis");
+    static CssIdent ellipsisword = new CssIdent("ellipsis-word");
+    static CssIdent ellipsispath = new CssIdent("ellipsis-path");
+    static CssIdent fade = new CssIdent("fade");
+
+    /**
+     * Create a new CssTextAfterOverflow
+     */
+    public CssTextAfterOverflow() {
+	overflow = clip;
+    }
+
+    /**
+     * Create a new CssTextAfterOverflow
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect values
+     */
+    public CssTextAfterOverflow(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	setByUser();
+	CssValue val = expression.getValue();
+	if (val.equals(clip)) {
+	    overflow = clip;
+	    expression.next();
+	}
+	else if (val.equals(ellipsis)) {
+	    overflow = ellipsis;
+	    expression.next();
+	}
+	else if (val.equals(ellipsisword)) {
+	    overflow = ellipsisword;
+	    expression.next();
+	}
+	else if (val.equals(ellipsispath)) {
+	    overflow = ellipsispath;
+	    expression.next();
+	}
+        else if (val.equals(fade)) {
+            overflow = fade;
+            expression.next();
+        }
+	else if (val.equals(inherit)) {
+	    overflow = inherit;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+	}
+    }
+
+    public CssTextAfterOverflow(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssTextAfterOverflow != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssTextAfterOverflow = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getTextAfterOverflow();
+	}
+	else {
+	    return ((Css3Style) style).cssTextAfterOverflow;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssTextAfterOverflow &&
+		overflow.equals(((CssTextAfterOverflow) property).overflow));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "text-after-overflow";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return overflow;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return overflow.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return overflow.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return overflow == clip;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssTextAlignLast.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,185 @@
+//
+// $Id: CssTextAlignLast.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> auto || start || end || center || justify ||
+ *  size || inherit<BR>
+ *  <EM>Initial:</EM>auto<BR>
+ *  <EM>Applies to:</EM>block-level elements<BR>
+ *  <EM>Inherited:</EM>yes<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  This property describes how the last line of the inline content of a block
+ *  is aligned. This also applies to the only line of a block if it contains a
+ *  single line, the line preceding a BR element and to last lines of
+ *  anonymous blocks. Typically the last line is aligned like the other lines
+ *  of the block element, this is set by the 'text-align' property. However,
+ *  in some situations like when the 'text-align' property is set to
+ *  'justify', the last line may be aligned differently.
+ */
+
+public class CssTextAlignLast extends CssProperty {
+
+    CssValue alignlast;
+
+    static CssIdent start = new CssIdent("start");
+    static CssIdent end = new CssIdent("end");
+    static CssIdent center = new CssIdent ("center");
+    static CssIdent justify = new CssIdent("justify");
+    static CssIdent size = new CssIdent("size");
+	static CssIdent left = new CssIdent("left");
+	static CssIdent right = new CssIdent("right");
+
+    /**
+     * Create a new CssTextAlignLast
+     */
+    public CssTextAlignLast() {
+		alignlast = start;
+    }
+
+    /**
+     * Create a new CssTextAlignLast
+     *
+     * @param expression The expression for this parameter
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssTextAlignLast(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val.equals(start)) {
+	    alignlast = start;
+	    expression.next();
+	}
+	else if (val.equals(end)) {
+	    alignlast = end;
+	    expression.next();
+	}
+	else if (val.equals(center)) {
+	    alignlast = center;
+	    expression.next();
+	}
+	else if (val.equals(justify)) {
+	    alignlast = justify;
+	    expression.next();
+	}
+	else if (val.equals(size)) {
+	    alignlast = size;
+	    expression.next();
+	}
+	else if (val.equals(inherit)) {
+	    alignlast = inherit;
+	    expression.next();
+	}
+	else if (val.equals(left)) {
+		alignlast = left;
+	}
+	else if (val.equals(right)) {
+		alignlast = right;
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssTextAlignLast(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssTextAlignLast != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssTextAlignLast = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getTextAlignLast();
+	}
+	else {
+	    return ((Css3Style) style).cssTextAlignLast;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssTextAlignLast &&
+		alignlast.equals(((CssTextAlignLast) property).alignlast));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "text-align-last";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return alignlast;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return alignlast.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return alignlast.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+		return alignlast == start;
+    }
+
+}
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssTextAutoSpace.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,161 @@
+//
+// $Id: CssTextAutoSpace.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> none || ideograph-numeric || ideograph-alpha ||
+ *  ideograph-space || ideograph-parenthesis || inherit<BR>
+ *  <EM>Initial:</EM>none<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>yes<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  When a run of non-ideographic or numeric characters appears inside of
+ *  ideographic text, a certain amount of space is often preferred on both
+ *  sides of the non-ideographic text to separate it from the surrounding
+ *  ideographic glyphs. This property controls the creation of that space when
+ *  rendering the text. That added width does not correspond to the insertion
+ *  of additional space characters, but instead to the width increment of
+ *  existing glyphs.
+ */
+
+public class CssTextAutoSpace extends CssProperty {
+
+    CssValue textautospace;
+    ApplContext ac;
+
+    static CssIdent none = new CssIdent("none");
+
+    private static String[] values = {
+	"none", "ideograph-numeric", "ideograph-alpha",
+	"ideograph-space", "ideograph-parenthesis", "inherit"
+    };
+
+    /**
+     * Create a new CssTextAutoSpace
+     */
+    public CssTextAutoSpace() {
+	textautospace = none;
+    }
+
+    /**
+     * Create a new CssTextAutoSpace
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect values
+     */
+    public CssTextAutoSpace(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	setByUser();
+	CssValue val = expression.getValue();
+
+	int i = 0;
+	for (;i < values.length; i++) {
+	    if (val.toString().equals(values[i])) {
+		textautospace = val;
+		expression.next();
+		break;
+	    }
+	}
+	if (i == values.length) {
+	    throw new InvalidParamException("value",
+					    expression.getValue(),
+					    getPropertyName(), ac);
+	}
+
+    }
+
+    public CssTextAutoSpace(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssTextAutoSpace != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssTextAutoSpace = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getTextAutoSpace();
+	}
+	else {
+	    return ((Css3Style) style).cssTextAutoSpace;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssTextAutoSpace &&
+		textautospace.equals(((CssTextAutoSpace) property).textautospace));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "text-autospace";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return textautospace;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return textautospace.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return textautospace.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return textautospace == none;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssTextBlink.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,141 @@
+//
+// $Id: CssTextBlink.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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 CssTextBlink extends CssProperty {
+
+    CssValue blink;
+
+    static CssIdent none = new CssIdent("none");
+    static CssIdent blinkval = new CssIdent("blink");
+
+
+    /**
+     * Create a new CssBlink
+     */
+    public CssTextBlink() {
+	blink = none;
+    }
+
+    /**
+     * Create a new CssTextBlink
+     *
+     * @param expression The expression for this parameter
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssTextBlink(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val.equals(none)) {
+	    blink = none;
+	    expression.next();
+	}
+	else if (val.equals(blinkval)) {
+	    blink = blinkval;
+	    expression.next();
+	}
+	else if (val.equals(inherit)) {
+	    blink = inherit;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssTextBlink(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssTextBlink != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssTextBlink = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getTextBlink();
+	}
+	else {
+	    return ((Css3Style) style).cssTextBlink;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssTextBlink &&
+		blink.equals(((CssTextBlink) property).blink));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "text-blink";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return blink;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return blink.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return blink.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return blink == none;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssTextCombine.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,158 @@
+//
+// $Id: CssTextCombine.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> none || letters || lines || inherit<BR>
+ *  <EM>Initial:</EM>none<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  This property controls the creation of composite characters
+ *  (a.k.a. "kumimoji") or lines (a.k.a. "warichu").
+ */
+
+public class CssTextCombine extends CssProperty {
+
+    CssValue combine;
+
+    static CssIdent none = new CssIdent("none");
+    static CssIdent letters = new CssIdent("letters");
+    static CssIdent lines = new CssIdent("lines");
+
+    /**
+     * Create a new CssCombine
+     */
+    public CssTextCombine() {
+	combine = none;
+    }
+
+    /**
+     * Create a new CssTextCombine
+     *
+     * @param expression The expression for this parameter
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssTextCombine(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val.equals(none)) {
+	    combine = none;
+	    expression.next();
+	}
+	else if (val.equals(letters)) {
+	    combine = letters;
+	    expression.next();
+	}
+	else if (val.equals(lines)) {
+	    combine = lines;
+	    expression.next();
+	}
+	else if (val.equals(inherit)) {
+	    combine = inherit;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssTextCombine(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssTextCombine != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssTextCombine = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getTextCombine();
+	}
+	else {
+	    return ((Css3Style) style).cssTextCombine;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssTextCombine &&
+		combine.equals(((CssTextCombine) property).combine));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "text-combine";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return combine;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return combine.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return combine.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return combine == none;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssTextDecorationCSS3.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,223 @@
+//
+// $Id: CssTextDecorationCSS3.java,v 1.3 2005-09-14 15:15:04 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 org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'text-decoration'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> none | [ underline || overline || line-through || blink ]<BR>
+ *   <EM>Initial:</EM> none<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> no, but see clarification below<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P>
+ *   This property describes decorations that are added to the text of an element.
+ *   If the element has no text (e.g. the 'IMG' element in HTML) or is an empty
+ *   element (e.g. '&lt;EM&gt;&lt;/EM&gt;'), this property has no effect. A value
+ *   of 'blink' causes the text to blink.
+ *   <P>
+ *   The color(s) required for the text decoration should be derived from the
+ *   'color' property value.
+ *   <P>
+ *   This property is not inherited, but elements should match their parent. E.g.,
+ *   if an element is underlined, the line should span the child elements. The
+ *   color of the underlining will remain the same even if descendant elements
+ *   have different 'color' values.
+ *   <PRE>
+ *   A:link, A:visited, A:active { text-decoration: underline }
+ * </PRE>
+ *   <P>
+ *   The example above would underline the text of all links (i.e., all 'A' elements
+ *   with a 'HREF' attribute).
+ *   <P>
+ *   UAs must recognize the keyword 'blink', but are not required to support the
+ *   blink effect.
+ *
+ * @version $Revision: 1.3 $
+ */
+public class CssTextDecorationCSS3 extends CssProperty
+        implements CssTextPropertiesConstantsCSS3 {
+
+    CssValue value;
+
+    private boolean[] values = new boolean[TEXTDECORATION.length];
+
+    private static int[] hash_values;
+
+    private static CssIdent none = new CssIdent("none");
+
+    private static final int INVALID = -1;
+
+    /**
+     * Create a new CssTextDecoration
+     */
+    public CssTextDecorationCSS3() {
+    }
+
+    /**
+     * Create a new CssTextDecoration
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssTextDecorationCSS3(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = expression.getValue();
+	boolean find = true;
+	int computed = 0;
+	int index = INVALID;
+
+	setByUser();
+
+	if (val.equals(none)) {
+	    value = none;
+	    expression.next();
+	    return;
+	} else if (val.equals(inherit)) {
+	    value = inherit;
+	    expression.next();
+	    return;
+	}
+	val = null;
+
+	while (find) {
+	    find = false;
+	    val = expression.getValue();
+	    if (val instanceof CssIdent) {
+		index = getIndex((CssIdent) val, ac);
+		if (values[index] == true) {
+		    throw new InvalidParamException("same-value",
+			    TEXTDECORATION[index], ac);
+		} else {
+		    values[index] = true;
+		    find = true;
+		    expression.next();
+		}
+	    } else if (val != null) {
+		throw new InvalidParamException("value", val.toString(),
+			getPropertyName(), ac);
+	    }
+	}
+    }
+
+    public CssTextDecorationCSS3(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	if (value != null) {
+	    return value;
+	}
+	for (int i = 0; i < TEXTDECORATION.length; i++) {
+	    if (values[i] == true) {
+		return TEXTDECORATION[i];
+	    }
+	}
+	return null;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "text-decoration";
+    }
+
+    private int getIndex(CssIdent val, ApplContext ac) throws InvalidParamException {
+	int hash = val.hashCode();
+	for (int i = 0; i < TEXTDECORATION.length; i++) {
+	    if (hash_values[i] == hash) {
+		return i;
+	    }
+	}
+	throw new InvalidParamException("value", val.toString(),
+					getPropertyName(), ac);
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (value != null) {
+	    return value.toString();
+	} else {
+	    String ret = "";
+	    for (int i = 0; i < TEXTDECORATION.length; i++) {
+		if (values[i] == true) {
+		    ret += " " + TEXTDECORATION[i];
+		}
+	    }
+	    return ret.substring(1);
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css3Style style0 = (Css3Style) style;
+	if (style0.cssTextDecoration != null) {
+	    style0.addRedefinitionWarning(ac, this);
+	}
+	style0.cssTextDecoration = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getTextDecoration();
+	} else {
+	    return ((Css3Style) style).cssTextDecoration;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	// @@ FIXME
+	return false;
+    }
+
+    static {
+	hash_values = new int[TEXTDECORATION.length];
+	for (int i=0; i<TEXTDECORATION.length; i++) {
+	    hash_values[i] = TEXTDECORATION[i].hashCode();
+	}
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssTextEndOverflow.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,166 @@
+//
+// $Id: CssTextEndOverflow.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> clip || ellipsis || ellipsis-word || ellipsis-path || fade || inherit<BR>
+ *  <EM>Initial:</EM>clip<BR>
+ *  <EM>Applies to:</EM>all block-level elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  This property controls whether or not text wraps when it reaches the flow
+ *  edge of its containing block box.
+ */
+
+public class CssTextEndOverflow extends CssProperty {
+
+    CssValue overflow;
+    ApplContext ac;
+
+    static CssIdent clip = new CssIdent("clip");
+    static CssIdent ellipsis = new CssIdent("ellipsis");
+    static CssIdent ellipsisword = new CssIdent("ellipsis-word");
+    static CssIdent ellipsispath = new CssIdent("ellipsis-path");
+    static CssIdent fade = new CssIdent("fade");
+
+    /**
+     * Create a new CssTextEndOverflow
+     */
+    public CssTextEndOverflow() {
+	overflow = clip;
+    }
+
+    /**
+     * Create a new CssTextEndOverflow
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect values
+     */
+    public CssTextEndOverflow(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	setByUser();
+	CssValue val = expression.getValue();
+	if (val.equals(clip)) {
+	    overflow = clip;
+	    expression.next();
+	}
+	else if (val.equals(ellipsis)) {
+	    overflow = ellipsis;
+	    expression.next();
+	}
+	else if (val.equals(ellipsisword)) {
+	    overflow = ellipsisword;
+	    expression.next();
+	}
+	else if (val.equals(ellipsispath)) {
+	    overflow = ellipsispath;
+	    expression.next();
+	}
+        else if (val.equals(fade)) {
+            overflow = fade;
+            expression.next();
+        }
+	else if (val.equals(inherit)) {
+	    overflow = inherit;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+	}
+    }
+
+    public CssTextEndOverflow(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssTextEndOverflow != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssTextEndOverflow = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getTextEndOverflow();
+	}
+	else {
+	    return ((Css3Style) style).cssTextEndOverflow;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssTextEndOverflow &&
+		overflow.equals(((CssTextEndOverflow) property).overflow));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "text-end-overflow";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return overflow;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return overflow.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return overflow.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return overflow == clip;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssTextHeight.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,143 @@
+//
+// $Id: CssTextHeight.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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 CssTextHeight extends CssProperty {
+
+    CssValue textheight;
+
+    static CssIdent auto = new CssIdent("auto");
+
+    private static String[] values = {
+	"auto", "font-size", "text-size", "max-size", "inherit", "initial"
+    };
+
+    /**
+     * Create a new CssTextHeight
+     */
+    public CssTextHeight() {
+		textheight = auto;
+    }
+
+    /**
+     * Create a new CssTextHeight
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssTextHeight(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	int i = 0;
+	for (; i < values.length; i++) {
+	    if (val.toString().equals(values[i])) {
+		textheight = val;
+		expression.next();
+		break;
+	    }
+	}
+	if (i == values.length) {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssTextHeight(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssTextHeight != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssTextHeight = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getTextHeight();
+	}
+	else {
+	    return ((Css3Style) style).cssTextHeight;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssTextHeight &&
+		textheight.equals(((CssTextHeight) property).textheight));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "text-height";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return textheight;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return textheight.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return textheight.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return (textheight == auto);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssTextIndentCSS3.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,150 @@
+//
+// $Id: CssTextIndentCSS3.java,v 1.3 2005-09-14 15:15:04 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 org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'text-indent'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;length&gt; | &lt;percentage&gt;<BR>
+ *   <EM>Initial:</EM> 0<BR>
+ *   <EM>Applies to:</EM> block-level elements<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> refer to parent element's width<BR>
+ *   <P>
+ *   The property specifies the indentation that appears before the first formatted
+ *   line. The value of 'text-indent' may be negative, but there may be
+ *   implementation-specific limits. An indentation is not inserted in the middle
+ *   of an element that was broken by another (such as 'BR' in HTML).
+ *   <P>
+ *   Example:
+ *   <PRE>
+ *   P { text-indent: 3em }
+ * </PRE>
+ * @version $Revision: 1.3 $
+ */
+public class CssTextIndentCSS3 extends CssProperty  {
+
+    CssValue value = new CssLength();
+    CssIdent hanging = new CssIdent("hanging");
+
+    /**
+     * Create a new CssTextIndentCSS3
+     */
+    public CssTextIndentCSS3() {
+    }
+
+    /**
+     * Create a new CssTextIndentCSS3
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssTextIndentCSS3(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	} else if (val instanceof CssLength || val instanceof CssPercentage) {
+	    value = val;
+	} else if (val instanceof CssNumber) {
+	    value = ((CssNumber) val).getLength();
+	} else if (val.equals(hanging)) {
+	    value = hanging;
+	} else {
+	    throw new InvalidParamException("value", val.toString(),
+		    getPropertyName(), ac);
+	}
+
+	expression.next();
+    }
+
+    public CssTextIndentCSS3(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "text-indent";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css3Style style0 = (Css3Style) style;
+	if (style0.cssTextIndentCSS3 != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssTextIndentCSS3 = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getTextIndent();
+	} else {
+	    return ((Css3Style) style).cssTextIndentCSS3;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssTextIndentCSS3 &&
+		value.equals(((CssTextIndentCSS3) property).value));
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssTextJustify.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,158 @@
+//
+// $Id: CssTextJustify.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> auto || inter-word || inter-ideograph || distribute ||
+ *  newspaper || inter-cluster || kashida || inherit<BR>
+ *  <EM>Initial:</EM>auto<BR>
+ *  <EM>Applies to:</EM>block-level elements<BR>
+ *  <EM>Inherited:</EM>yes<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  This property selects the type of justify alignment. It affects the text
+ *  layout only if 'text-align' is set to 'justify'. That way, UA's that do
+ *  not support this property will still render the text as fully
+ *  justified, which most of the time is at least partially correct. Typically
+ *  the text-justify property does not affect the last line, unless the last
+ *  line itself is justified. Most of the text-justify values affects
+ *  writing systems in very specific ways.
+ */
+
+public class CssTextJustify extends CssProperty {
+
+    CssValue textjustify;
+    private CssIdent auto = new CssIdent("auto");
+
+    private static String[] values = {
+	"auto", "inter-word", "inter-ideograph", "distribute",
+	"newspaper", "inter-cluster", "kashida", "inherit"
+    };
+
+    /**
+     * Create a new CssTextJustify
+     */
+    public CssTextJustify() {
+	textjustify = auto;
+    }
+
+    /**
+     * Create a new CssTextJustify
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssTextJustify(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	int i = 0;
+	for (; i < values.length; i++) {
+	    if (val.toString().equals(values[i])) {
+		textjustify = val;
+		expression.next();
+		break;
+	    }
+	}
+	if (i == values.length) {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssTextJustify(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssTextJustify != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssTextJustify = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getTextJustify();
+	}
+	else {
+	    return ((Css3Style) style).cssTextJustify;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssTextJustify &&
+		textjustify.equals(((CssTextJustify) property).textjustify));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "text-justify";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return textjustify;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return textjustify.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return textjustify.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return (textjustify == auto);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssTextJustifyTrim.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,164 @@
+//
+// $Id: CssTextJustifyTrim.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> none || punctuation || punctuation-and-kana || inherit<BR>
+ *  <EM>Initial:</EM>punctuation<BR>
+ *  <EM>Applies to:</EM>block-level elements<BR>
+ *  <EM>Inherited:</EM>yes<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  This sets the individual font blank space compression permissions for
+ *  the text justification algorithm, when 'text-justify' is anything other
+ *  than 'inter-word'. This special type of space compression occurs on the
+ *  font level, i.e. the blank space within the character area itself may be
+ *  reduced without affecting the appearance of the glyph. This applies to
+ *  wide-cell glyphs only.
+ */
+
+public class CssTextJustifyTrim extends CssProperty {
+
+    CssValue trim;
+
+    static CssIdent none = new CssIdent("none");
+    static CssIdent punctuation = new CssIdent("punctuation");
+    static CssIdent punctkana = new CssIdent("punctuation-and-kana");
+
+    /**
+     * Create a new CssTextJustifyTrim
+     */
+    public CssTextJustifyTrim() {
+	trim = punctuation;
+    }
+
+    /**
+     * Create a new CssTextJustifyTrim
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssTextJustifyTrim(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val.equals(none)) {
+	    trim = none;
+	    expression.next();
+	}
+	else if (val.equals(punctuation)) {
+	    trim = punctuation;
+	    expression.next();
+	}
+	else if (val.equals(punctkana)) {
+	    trim = punctkana;
+	    expression.next();
+	}
+	else if (val.equals(inherit)) {
+	    trim = inherit;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssTextJustifyTrim(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssTextJustifyTrim != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssTextJustifyTrim = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getTextJustifyTrim();
+	}
+	else {
+	    return ((Css3Style) style).cssTextJustifyTrim;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssTextJustifyTrim &&
+		trim.equals(((CssTextJustifyTrim) property).trim));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "text-justify-trim";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return trim;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return trim.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return trim.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return trim == punctuation;
+    }
+
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssTextKashidaSpace.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,156 @@
+//
+// $Id: CssTextKashidaSpace.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> &lt;percentage&gt; || inherit<BR>
+ *  <EM>Initial:</EM>0%<BR>
+ *  <EM>Applies to:</EM>block-level elements<BR>
+ *  <EM>Inherited:</EM>yes<BR>
+ *  <EM>Percentages:</EM>as described<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  Kashida is a typographic effect used in Arabic writing systems that allows
+ *  character elongation at some carefully chosen points in Arabic. Each
+ *  elongation can be accomplished using a number of kashida glyphs, a single
+ *  graphic or character elongation on each side of the kashida point. (The UA
+ *  may use either mechanism based on font or system capability). The
+ *  text-kashida-space property expresses the ratio of the kashida expansion
+ *  size to the white space expansion size, 0% means no kashida expansion,
+ *  100% means kashida expansion only . This property can be used with any
+ *  justification style where kashida expansion is used (currently
+ *  text-justify: auto, kashida, distribute and newspaper).
+ */
+
+public class CssTextKashidaSpace extends CssProperty {
+
+    CssValue kashspace;
+
+    /**
+     * Create a new CssTextKashidaSpace
+     */
+    public CssTextKashidaSpace() {
+	CssPercentage perc = new CssPercentage(0);
+	kashspace = perc;
+    }
+
+    /**
+     * Create a new CssTextKashidaSpace
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssTextKashidaSpace(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val.equals(inherit)) {
+	    kashspace = inherit;
+	    expression.next();
+	}
+	else if (val instanceof CssPercentage) {
+	    kashspace = val;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("percentage", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssTextKashidaSpace(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssTextKashidaSpace != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssTextKashidaSpace = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getTextKashidaSpace();
+	}
+	else {
+	    return ((Css3Style) style).cssTextKashidaSpace;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssTextKashidaSpace &&
+		kashspace.equals(((CssTextKashidaSpace) property).kashspace));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "text-kashida-space";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return kashspace;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return kashspace.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return kashspace.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	CssPercentage perc = new CssPercentage(0);
+	return kashspace == perc;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssTextLTColor.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,159 @@
+//
+// $Id: CssTextLTColor.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM>  auto || &lt;color&gt; || inherit<BR>
+ *  <EM>Initial:</EM>auto<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  This property specifies the color for the line-through.
+ */
+
+public class CssTextLTColor extends CssProperty {
+
+    CssValue ltcolor;
+
+    static CssIdent auto = new CssIdent("auto");
+
+    /**
+     * Create a new CssTextLTColor
+     */
+    public CssTextLTColor() {
+	ltcolor = auto;
+    }
+
+    /**
+     * Create a new CssTextLTColor
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect values
+     */
+    public CssTextLTColor(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val instanceof org.w3c.css.values.CssColor) {
+	    ltcolor = val;
+	    expression.next();
+	}
+        else if (val instanceof CssIdent) {
+	    if (val.equals(inherit)) {
+		ltcolor = inherit;
+		expression.next();
+	    }
+	    else if (val.equals(auto)) {
+		ltcolor = auto;
+		expression.next();
+	    }
+	    else {
+		ltcolor = new org.w3c.css.values.CssColor(ac, (String) val.get());
+		expression.next();
+	    }
+	}
+	else {
+	    throw new InvalidParamException("value",
+					    expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssTextLTColor(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssTextLTColor != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssTextLTColor = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getTextLTColor();
+	}
+	else {
+	    return ((Css3Style) style).cssTextLTColor;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssTextLTColor &&
+		ltcolor.equals(((CssTextLTColor) property).ltcolor));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "text-line-through-color";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return ltcolor;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return ltcolor.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return ltcolor.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return ltcolor == auto;
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssTextLTMode.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,154 @@
+//
+// $Id: CssTextLTMode.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM>  continuous || skip-white-space || inherit<BR>
+ *  <EM>Initial:</EM>continuous<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  This property specifies the mode for the line-through, that is whether the
+ *  line-through is continuous or whether it appears only under words and not
+ *  whitespace.
+ */
+
+public class CssTextLTMode extends CssProperty {
+
+    CssValue ltmode;
+
+    static CssIdent continuous = new CssIdent("continuous");
+    static CssIdent skipwhitespace = new CssIdent("skip-white-space");
+
+    /**
+     * Create a new CssTextLTMode
+     */
+    public CssTextLTMode() {
+	ltmode = continuous;
+    }
+
+    /**
+     * Create a new CssTextLTMode
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect values
+     */
+    public CssTextLTMode(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val.equals(continuous)) {
+	    ltmode = continuous;
+	    expression.next();
+	}
+	else if (val.equals(skipwhitespace)) {
+	    ltmode = skipwhitespace;
+	    expression.next();
+	}
+	else if (val.equals(inherit)) {
+	    ltmode = inherit;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value",
+					    expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssTextLTMode(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssTextLTMode != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssTextLTMode = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getTextLTMode();
+	}
+	else {
+	    return ((Css3Style) style).cssTextLTMode;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssTextLTMode &&
+		ltmode.equals(((CssTextLTMode) property).ltmode));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "text-line-through-mode";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return ltmode;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return ltmode.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return ltmode.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return ltmode == continuous;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssTextLTStyle.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,153 @@
+//
+// $Id: CssTextLTStyle.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM>  none | solid | double | dotted | thick | dashed | dot-dash | dot-dot-dash | wave | inherit<BR>
+ *  <EM>Initial:</EM>solid<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  This property specifies the line-through style to use when
+ *  'text-decoration' is set to 'line-through'.
+ */
+
+public class CssTextLTStyle extends CssProperty {
+
+    CssValue ltstyle;
+
+    static CssIdent none = new CssIdent("none");
+
+    private static String[] values = {
+	"none", "solid", "double", "dotted", "thick", "dashed", "dot-dash",
+	"dot-dot-dash", "wave", "inherit"
+    };
+
+    /**
+     * Create a new CssTextLTStyle
+     */
+    public CssTextLTStyle() {
+	ltstyle = none;
+    }
+
+    /**
+     * Create a new CssTextLTStyle
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect values
+     */
+    public CssTextLTStyle(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	setByUser();
+	CssValue val = expression.getValue();
+
+	int i = 0;
+	for (;i < values.length; i++) {
+	    if (val.toString().equals(values[i])) {
+		ltstyle = val;
+		expression.next();
+		break;
+	    }
+	}
+	if (i == values.length) {
+	    throw new InvalidParamException("value",
+					    expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssTextLTStyle(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssTextLTStyle != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssTextLTStyle = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getTextLTStyle();
+	}
+	else {
+	    return ((Css3Style) style).cssTextLTStyle;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssTextLTStyle &&
+		ltstyle.equals(((CssTextLTStyle) property).ltstyle));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "text-line-through-style";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return ltstyle;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return ltstyle.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return ltstyle.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return ltstyle == none;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssTextLineThrough.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,185 @@
+//
+// $Id: CssTextLineThrough.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> &lt;style&gt; || &lt;color&gt; || &lt;mode&gt; ||
+ *  &lt;position&gt; || inherit<BR>
+ *  <EM>Initial:</EM>not defined for shorthand properties<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  This property is the shorthand for 'text-line-through-style',
+ *  'text-line-through-color' and 'text-line-through-mode'.
+ */
+
+public class CssTextLineThrough extends CssProperty
+implements CssOperator {
+
+    CssValue linethrough;
+    CssTextLTStyle tls;
+    CssTextLTColor tlc;
+    CssTextLTMode tlm;
+
+    /**
+     * Create a new CssTextLineThrough
+     */
+    public CssTextLineThrough() {
+    }
+
+    /**
+     * Create a new CssTextLineThrough
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect values
+     */
+    public CssTextLineThrough(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	CssValue val = expression.getValue();
+	int maxvalues = 3;
+	boolean correct = true;
+	char op = SPACE;
+
+	while (correct && (val != null) && (maxvalues -- > 0)) {
+
+	    correct = false;
+
+	    if (tls == null) {
+		try {
+		    tls = new CssTextLTStyle(ac, expression);
+		    correct = true;
+		}
+		catch (InvalidParamException e) {
+		}
+	    }
+	    if (!correct && tlc == null) {
+		try {
+		    tlc = new CssTextLTColor(ac, expression);
+		    correct = true;
+		}
+		catch (InvalidParamException e) {
+		}
+	    }
+	    if (!correct && tlm == null) {
+		try {
+		    tlm = new CssTextLTMode(ac, expression);
+		    correct = true;
+		}
+		catch (InvalidParamException e) {
+		}
+	    }
+	    if (!correct) {
+		throw new InvalidParamException("value",
+						expression.getValue(),
+						getPropertyName(), ac);
+	    }
+
+	val = expression.getValue();
+	op = expression.getOperator();
+
+	}
+
+	if (tls == null) {
+	    tls = new CssTextLTStyle();
+	}
+	if (tlc == null) {
+	    tlc = new CssTextLTColor();
+	}
+	if (tlm == null) {
+	    tlm = new CssTextLTMode();
+	}
+
+    }
+
+    public CssTextLineThrough(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssTextLineThrough != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssTextLineThrough = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getTextLineThrough();
+	}
+	else {
+	    return ((Css3Style) style).cssTextLineThrough;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return false;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "text-line-through";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return null;
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+
+	String ret = "";
+
+	if (tls.isByUser()) {
+	    ret += " " + tls;
+	}
+	if (tlc.isByUser()) {
+	    ret += " " + tlc;
+	}
+	if (tlm.isByUser()) {
+	    ret += " " + tlc;
+	}
+	return ret.substring(1);
+
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssTextOLColor.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,158 @@
+//
+// $Id: CssTextOLColor.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM>  auto || &lt;color&gt; || inherit<BR>
+ *  <EM>Initial:</EM>auto<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  This property specifies the color for the overline.
+ */
+
+public class CssTextOLColor extends CssProperty {
+
+    CssValue olcolor;
+
+    static CssIdent auto = new CssIdent("auto");
+
+    /**
+     * Create a new CssTextOLColor
+     */
+    public CssTextOLColor() {
+	olcolor = auto;
+    }
+
+    /**
+     * Create a new CssTextOLColor
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect values
+     */
+    public CssTextOLColor(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val instanceof org.w3c.css.values.CssColor) {
+	    olcolor = val;
+	    expression.next();
+	}
+        else if (val instanceof CssIdent) {
+	    if (val.equals(inherit)) {
+		olcolor = inherit;
+		expression.next();
+	    }
+	    else if (val.equals(auto)) {
+		olcolor = auto;
+		expression.next();
+	    }
+	    else {
+		olcolor = new org.w3c.css.values.CssColor(ac, (String) val.get());
+		expression.next();
+	    }
+	}
+	else {
+	    throw new InvalidParamException("value",
+					    expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssTextOLColor(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssTextOLColor != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssTextOLColor = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getTextOLColor();
+	}
+	else {
+	    return ((Css3Style) style).cssTextOLColor;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssTextOLColor &&
+		olcolor.equals(((CssTextOLColor) property).olcolor));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "text-overline-color";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return olcolor;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return olcolor.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return olcolor.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return olcolor == auto;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssTextOLMode.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,154 @@
+//
+// $Id: CssTextOLMode.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM>  continuous || skipwhitespace || inherit<BR>
+ *  <EM>Initial:</EM>continuous<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  This property specifies the mode for the overline, that is whether the
+ *  overline is continuous or whether it appears only under skipwhitespace and not
+ *  whitespace.
+ */
+
+public class CssTextOLMode extends CssProperty {
+
+    CssValue olmode;
+
+    static CssIdent continuous = new CssIdent("continuous");
+    static CssIdent skipwhitespace = new CssIdent("skip-white-space");
+
+    /**
+     * Create a new CssTextOLMode
+     */
+    public CssTextOLMode() {
+	olmode = continuous;
+    }
+
+    /**
+     * Create a new CssTextOLMode
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect values
+     */
+    public CssTextOLMode(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val.equals(continuous)) {
+	    olmode = continuous;
+	    expression.next();
+	}
+	else if (val.equals(skipwhitespace)) {
+	    olmode = skipwhitespace;
+	    expression.next();
+	}
+	else if (val.equals(inherit)) {
+	    olmode = inherit;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value",
+					    expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssTextOLMode(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssTextOLMode != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssTextOLMode = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getTextOLMode();
+	}
+	else {
+	    return ((Css3Style) style).cssTextOLMode;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssTextOLMode &&
+		olmode.equals(((CssTextOLMode) property).olmode));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "text-overline-mode";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return olmode;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return olmode.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return olmode.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return olmode == continuous;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssTextOLStyle.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,151 @@
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM>  none | solid | double | dotted | thick | dashed | dot-dash | dot-dot-dash | wave | inherit<BR>
+ *  <EM>Initial:</EM>solid<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  This property specifies the overline style to use when 'text-decoration'
+ *  is set to 'overline'.
+ */
+
+public class CssTextOLStyle extends CssProperty {
+
+    CssValue olstyle;
+
+    static CssIdent solid = new CssIdent("solid");
+
+    private static String[] values = {
+	"none", "solid", "double", "dotted", "thick", "dashed", "dot-dash",
+	"dot-dot-dash", "wave", "inherit"
+    };
+
+    /**
+     * Create a new CssTextOLStyle
+     */
+    public CssTextOLStyle() {
+	olstyle = solid;
+    }
+
+    /**
+     * Create a new CssTextOLStyle
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect values
+     */
+    public CssTextOLStyle(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	setByUser();
+	CssValue val = expression.getValue();
+
+	int i = 0;
+	for (;i < values.length; i++) {
+	    if (val.toString().equals(values[i])) {
+		olstyle = val;
+		expression.next();
+		break;
+	    }
+	}
+	if (i == values.length) {
+	    throw new InvalidParamException("value",
+					    expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssTextOLStyle(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssTextOLStyle != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssTextOLStyle = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getTextOLStyle();
+	}
+	else {
+	    return ((Css3Style) style).cssTextOLStyle;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssTextOLStyle &&
+		olstyle.equals(((CssTextOLStyle) property).olstyle));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "text-overline-style";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return olstyle;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return olstyle.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return olstyle.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return olstyle == solid;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssTextOverLine.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,182 @@
+//
+// $Id: CssTextOverLine.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> &lt;style&gt; || &lt;color&gt; || &lt;mode&gt; || inherit<BR>
+ *  <EM>Initial:</EM>not defined for shorthand properties<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  This property is the shorthand for 'text-overline-style',
+ *  'text-overline-color' and 'text-overline-mode'.
+ */
+
+public class CssTextOverLine extends CssProperty
+implements CssOperator {
+
+    CssValue overline;
+    CssTextOLStyle tos;
+    CssTextOLColor toc;
+    CssTextOLMode tom;
+
+    /**
+     * Create a new CssTextOverLine
+     */
+    public CssTextOverLine() {
+    }
+
+    /**
+     * Create a new CssTextOverLine
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect values
+     */
+    public CssTextOverLine(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	CssValue val = expression.getValue();
+	int maxvalues = 3;
+	boolean correct = true;
+	char op = SPACE;
+
+	while (correct && (val != null) && (maxvalues-- > 0)) {
+
+	    correct = false;
+
+	    if (tos == null) {
+		try {
+		    tos = new CssTextOLStyle(ac, expression);
+		    correct = true;
+		}
+		catch (InvalidParamException e) {
+		}
+	    }
+	    if (!correct && toc == null) {
+		try {
+		    toc = new CssTextOLColor(ac, expression);
+		    correct = true;
+		}
+		catch (InvalidParamException e) {
+		}
+	    }
+	    if (!correct && tom == null) {
+		try {
+		    tom = new CssTextOLMode(ac, expression);
+		    correct = true;
+		}
+		catch (InvalidParamException e) {
+		}
+	    }
+	    if (!correct) {
+		throw new InvalidParamException("value",
+						expression.getValue(),
+						getPropertyName(), ac);
+	    }
+
+	    val = expression.getValue();
+	    op = expression.getOperator();
+	}
+
+	if (tos == null) {
+	    tos = new CssTextOLStyle();
+	}
+	if (toc == null) {
+	    toc = new CssTextOLColor();
+	}
+	if (tom == null) {
+	    tom = new CssTextOLMode();
+	}
+    }
+
+    public CssTextOverLine(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssTextOverLine != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssTextOverLine = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getTextOverLine();
+	}
+	else {
+	    return ((Css3Style) style).cssTextOverLine;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return false;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "text-overline";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return null;
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+
+	String ret = "";
+
+	if (tos.isByUser()) {
+	    ret += " " + tos;
+	}
+	if (toc.isByUser()) {
+	    ret += " " + toc;
+	}
+	if (tom.isByUser()) {
+	    ret += " " + tom;
+	}
+	return ret.substring(1);
+
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssTextOverflow.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,157 @@
+//
+// $Id: CssTextOverflow.java,v 1.1 2005-08-23 16:24:20 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// COPYRIGHT (c) 1995-2000 World Wide Web Consortium, (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ *
+ */
+
+public class CssTextOverflow extends CssProperty
+implements CssOperator {
+
+    CssValue textoverflow;
+    CssTextOverflowMode tom;
+    CssTextOverflowEllipsis toe;
+
+    /**
+     * Creates a new CssTextOverflow
+     */
+    public CssTextOverflow() {
+    }
+
+    /**
+     * Creates a new CssTextOverflow
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssTextOverflow(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	CssValue val = expression.getValue();
+	int maxvalues = 2;
+	boolean correct = true;
+	char op = SPACE;
+
+	while (correct && (val != null) && (maxvalues-- > 0)) {
+
+	    correct = false;
+
+	    if (tom == null) {
+		try {
+		    tom = new CssTextOverflowMode(ac, expression);
+		    correct = true;
+		}
+		catch (InvalidParamException e) {
+		}
+	    }
+	    if (!correct && toe == null) {
+		try {
+		    toe = new CssTextOverflowEllipsis(ac, expression);
+		    correct = true;
+		}
+		catch (InvalidParamException e) {
+		}
+	    }
+	    if (!correct) {
+		throw new InvalidParamException("value", expression.getValue(),
+						getPropertyName(), ac);
+	    }
+
+	    val = expression.getValue();
+	    op = expression.getOperator();
+
+	}
+
+    }
+
+    public CssTextOverflow(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssTextOverflow != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssTextOverflow = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getTextOverflow();
+	}
+	else {
+	    return ((Css3Style) style).cssTextOverflow;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return false;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "text-overflow";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+		return null;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    //    public boolean isSoftlyInherited() {
+    //	return fontemph.equals(inherit);
+    //}
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	String ret = "";
+	if (tom != null) {
+	    ret += " " + tom.toString();
+	}
+	if (toe != null) {
+	    ret += " " + toe.toString();
+	}
+	return ret.substring(1);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssTextOverflowEllipsis.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,155 @@
+//
+// $Id: CssTextOverflowEllipsis.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// COPYRIGHT (c) 1995-2000 World Wide Web Consortium, (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssURL;
+import org.w3c.css.values.CssValue;
+
+/**
+ *
+ */
+
+    public class CssTextOverflowEllipsis extends CssProperty {
+
+	String overflowellipsis;
+
+	/**
+	 * Create a new CssTextOverflowEllipsis
+	 */
+	public CssTextOverflowEllipsis() {
+	    overflowellipsis = "...";
+	}
+
+	/**
+	 * Create a new CssTextOverflowEllipsis
+	 *
+	 *
+	 */
+	public CssTextOverflowEllipsis(ApplContext ac, CssExpression expression,
+		boolean check) throws InvalidParamException {
+	    setByUser();
+	    CssValue val = expression.getValue();
+	    CssValue val2 = null;
+
+	    if (val instanceof CssIdent) {
+		overflowellipsis = val.toString();
+		expression.next();
+	    }
+	    else if (val instanceof CssURL) {
+		overflowellipsis = val.toString();
+		expression.next();
+	    }
+	    else {
+		throw new InvalidParamException("value", val.toString(),
+			getPropertyName(), ac);
+	    }
+
+	    val2 = expression.getValue();
+
+	    if (val2 != null) {
+
+		if (val2 instanceof CssIdent) {
+		    overflowellipsis += " " + val2.toString();
+		    expression.next();
+		}
+		else if (val2 instanceof CssURL) {
+		    overflowellipsis += " " + val2.toString();
+		    expression.next();
+		}
+		else {
+		    throw new InvalidParamException("value",
+			    val2.toString(), getPropertyName(), ac);
+		}
+	    }
+	}
+
+	public CssTextOverflowEllipsis(ApplContext ac, CssExpression expression)
+		throws InvalidParamException {
+	    this(ac, expression, false);
+	}
+
+	/**
+	 * Add this property to the CssStyle.
+	 *
+	 * @param style The CssStyle
+	 */
+	public void addToStyle(ApplContext ac, CssStyle style) {
+	    if (((Css3Style) style).cssTextOverflowEllipsis != null)
+		style.addRedefinitionWarning(ac, this);
+	    ((Css3Style) style).cssTextOverflowEllipsis = this;
+
+	}
+
+	/**
+	 * Get this property in the style.
+	 *
+	 * @param style The style where the property is
+	 * @param resolve if true, resolve the style to find this property
+	 */
+        public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	    if (resolve) {
+		return ((Css3Style) style).getTextOverflowEllipsis();
+	    } else {
+		return ((Css3Style) style).cssTextOverflowEllipsis;
+	    }
+	}
+
+	/**
+	 * Compares two properties for equality.
+	 *
+	 * @param value The other property.
+	 */
+	public boolean equals(CssProperty property) {
+	    return (property instanceof CssTextOverflowEllipsis &&
+		    overflowellipsis.equals( ((CssTextOverflowEllipsis) property).overflowellipsis));
+	}
+
+	/**
+	 * Returns the name of this property
+	 */
+	public String getPropertyName() {
+	    return "text-overflow-ellipsis";
+	}
+
+	/**
+	 * Returns the value of this property
+	 */
+	public Object get() {
+	    return overflowellipsis;
+	}
+
+	/**
+	 * Returns true if this property is "softly" inherited
+	 */
+	public boolean isSoftlyInherited() {
+	    return overflowellipsis.equals(inherit);
+	}
+
+	/**
+	 * Returns a string representation of the object
+	 */
+	public String toString() {
+	    return overflowellipsis.toString();
+	}
+
+	/**
+	 * Is the value of this property a default value
+	 * It is used by all macro for the function <code>print</code>
+	 */
+	public boolean isDefault() {
+	    return overflowellipsis.equals("...");
+	}
+
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssTextOverflowMode.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,146 @@
+//
+// $Id: CssTextOverflowMode.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// COPYRIGHT (c) 1995-2000 World Wide Web Consortium, (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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 CssTextOverflowMode extends CssProperty {
+
+	CssValue overflowmode;
+
+	private static CssIdent clip = new CssIdent("clip");
+	private static CssIdent ellipsis = new CssIdent("ellipsis");
+	private static CssIdent ellipsisword = new CssIdent("ellipsis-word");
+
+	/**
+	 * Create a new CssTextOverflowMode
+	 */
+	public CssTextOverflowMode() {
+	    overflowmode = clip;
+	}
+
+	/**
+	 * Create a new CssTextOverflowMode
+	 *
+	 *
+	 */
+	public CssTextOverflowMode(ApplContext ac, CssExpression expression,
+		boolean check) throws InvalidParamException {
+	    setByUser();
+	    CssValue val = expression.getValue();
+	    if (val.equals(clip)) {
+			overflowmode = clip;
+			expression.next();
+	    }
+	    else if (val.equals(ellipsis)) {
+			overflowmode = ellipsis;
+			expression.next();
+	    }
+	    else if (val.equals(ellipsisword)) {
+			overflowmode = ellipsisword;
+			expression.next();
+	    }
+	    else if (val.equals(inherit)) {
+			overflowmode = inherit;
+			expression.next();
+	    }
+
+	    else {
+		throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+	    }
+	}
+
+	public CssTextOverflowMode(ApplContext ac, CssExpression expression)
+		throws InvalidParamException {
+	    this(ac, expression, false);
+	}
+
+	/**
+	 * Add this property to the CssStyle.
+	 *
+	 * @param style The CssStyle
+	 */
+	public void addToStyle(ApplContext ac, CssStyle style) {
+	    if (((Css3Style) style).cssTextOverflowMode != null)
+		style.addRedefinitionWarning(ac, this);
+	    ((Css3Style) style).cssTextOverflowMode = this;
+
+	}
+
+	/**
+	 * Get this property in the style.
+	 *
+	 * @param style The style where the property is
+	 * @param resolve if true, resolve the style to find this property
+	 */
+        public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	    if (resolve) {
+		return ((Css3Style) style).getTextOverflowMode();
+	    } else {
+		return ((Css3Style) style).cssTextOverflowMode;
+	    }
+	}
+
+	/**
+	 * Compares two properties for equality.
+	 *
+	 * @param value The other property.
+	 */
+	public boolean equals(CssProperty property) {
+	    return (property instanceof CssTextOverflowMode &&
+		    overflowmode.equals( ((CssTextOverflowMode) property).overflowmode));
+	}
+
+	/**
+	 * Returns the name of this property
+	 */
+	public String getPropertyName() {
+	    return "text-overflow-mode";
+	}
+
+	/**
+	 * Returns the value of this property
+	 */
+	public Object get() {
+	    return overflowmode;
+	}
+
+	/**
+	 * Returns true if this property is "softly" inherited
+	 */
+	public boolean isSoftlyInherited() {
+	    return overflowmode.equals(inherit);
+	}
+
+	/**
+	 * Returns a string representation of the object
+	 */
+	public String toString() {
+	    return overflowmode.toString();
+	}
+
+	/**
+	 * Is the value of this property a default value
+	 * It is used by all macro for the function <code>print</code>
+	 */
+	public boolean isDefault() {
+	    return overflowmode == clip;
+	}
+
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssTextPropertiesConstantsCSS3.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,32 @@
+//
+// $Id: CssTextPropertiesConstantsCSS3.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 org.w3c.css.properties.css3;
+
+/**
+ * @version $Revision: 1.2 $
+ */
+public interface CssTextPropertiesConstantsCSS3 {
+  public static String[] TEXTDECORATION = {
+    "none", "underline", "overline", "line-through", "blink", "inherit" };
+
+  public static String[] TEXTDECORATIONMOB = {
+    "underline", "inherit" };
+
+  public static String[] VERTICALALIGN = {
+    "baseline", "sub", "super", "top", "text-top", "middle",
+    "bottom", "text-bottom", "inherit" };
+
+  public static String[] VERTICALALIGNMOB = {
+    "baseline", "sub", "super", "inherit" };
+
+  public static String[] TEXTTRANSFORM = {
+    "none", "capitalize", "uppercase", "lowercase", "inherit" };
+
+  public static String[] TEXTALIGN = {
+    "left", "right", "center", "justify", "inherit", "start", "end" };
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssTextSpace.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,152 @@
+//
+// $Id: CssTextSpace.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> normal || honor || inherit<BR>
+ *  <EM>Initial:</EM>normal<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>yes<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  This property controls whether or not white space in text stream is
+ *  collapsed, or kept as is.
+ */
+
+public class CssTextSpace extends CssProperty {
+
+    CssValue textspace;
+    ApplContext ac;
+
+    static CssIdent normal = new CssIdent("normal");
+    static CssIdent honor = new CssIdent("honor");
+
+    /**
+     * Create a new CssTextSpace
+     */
+    public CssTextSpace() {
+	textspace = normal;
+    }
+
+    /**
+     * Create a new CssTextSpace
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect values
+     */
+    public CssTextSpace(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	setByUser();
+	CssValue val = expression.getValue();
+	if (val.equals(normal)) {
+	    textspace = normal;
+	    expression.next();
+	}
+	else if (val.equals(honor)) {
+	    textspace = honor;
+	    expression.next();
+	}
+	else if (val.equals(inherit)) {
+	    textspace = inherit;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", val.toString(),
+		    getPropertyName(), ac);
+	}
+    }
+
+    public CssTextSpace(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssTextSpace != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssTextSpace = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getTextSpace();
+	}
+	else {
+	    return ((Css3Style) style).cssTextSpace;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssTextSpace &&
+		textspace.equals(((CssTextSpace) property).textspace));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "text-space";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return textspace;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return textspace.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return textspace.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return textspace == normal;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssTextUlColor.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,158 @@
+//
+// $Id: CssTextUlColor.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM>  auto || &lt;color&gt; || inherit<BR>
+ *  <EM>Initial:</EM>auto<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  This property specifies the color for the underline.
+ */
+
+public class CssTextUlColor extends CssProperty {
+
+    CssValue ulcolor;
+
+    static CssIdent auto = new CssIdent("auto");
+
+    /**
+     * Create a new CssTextUlColor
+     */
+    public CssTextUlColor() {
+	ulcolor = auto;
+    }
+
+    /**
+     * Create a new CssTextUlColor
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect values
+     */
+    public CssTextUlColor(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	setByUser();
+	CssValue val = expression.getValue();
+	boolean correct = false;
+
+	if (val instanceof org.w3c.css.values.CssColor) {
+	    ulcolor = val;
+	    expression.next();
+	}
+        else if (val instanceof CssIdent) {
+	    if (val.equals(inherit)) {
+		ulcolor = inherit;
+		expression.next();
+	    }
+	    else if (val.equals(auto)) {
+		ulcolor = auto;
+		expression.next();
+	    }
+	    else {
+		ulcolor = new org.w3c.css.values.CssColor(ac, (String) val.get());
+		expression.next();
+	    }
+	}
+	else {
+	    throw new InvalidParamException("value",
+					    expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssTextUlColor(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssTextUlColor != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssTextUlColor = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getTextUlColor();
+	}
+	else {
+	    return ((Css3Style) style).cssTextUlColor;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssTextUlColor &&
+		ulcolor.equals(((CssTextUlColor) property).ulcolor));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "text-underline-color";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return ulcolor;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return ulcolor.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return ulcolor.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return ulcolor == auto;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssTextUlMode.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,154 @@
+//
+// $Id: CssTextUlMode.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM>  continuous || skip-white-space || inherit<BR>
+ *  <EM>Initial:</EM>continuous<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  This property specifies the mode for the underline, that is whether the
+ *  underline is continuous or whether it appears only under words and not
+ *  whitespace.
+ */
+
+public class CssTextUlMode extends CssProperty {
+
+    CssValue ulmode;
+
+    static CssIdent continuous = new CssIdent("continuous");
+    static CssIdent skipwhitespace = new CssIdent("skip-white-space");
+
+    /**
+     * Create a new CssTextUlMode
+     */
+    public CssTextUlMode() {
+	ulmode = continuous;
+    }
+
+    /**
+     * Create a new CssTextUlStyle
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect values
+     */
+    public CssTextUlMode(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val.equals(continuous)) {
+	    ulmode = continuous;
+	    expression.next();
+	}
+	else if (val.equals(skipwhitespace)) {
+	    ulmode = skipwhitespace;
+	    expression.next();
+	}
+	else if (val.equals(inherit)) {
+	    ulmode = inherit;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value",
+					    expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssTextUlMode(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssTextUlMode != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssTextUlMode = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getTextUlMode();
+	}
+	else {
+	    return ((Css3Style) style).cssTextUlMode;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssTextUlMode &&
+		ulmode.equals(((CssTextUlMode) property).ulmode));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "text-underline-mode";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return ulmode;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return ulmode.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return ulmode.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return ulmode == continuous;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssTextUlPos.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,164 @@
+//
+// $Id: CssTextUlPos.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> auto-pos || before || after || inherit<BR>
+ *  <EM>Initial:</EM>auto-pos<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  This property sets the position of the underline when set through the
+ *  text-decoration property.
+ */
+
+public class CssTextUlPos extends CssProperty {
+
+    CssValue ulpos;
+
+    static CssIdent autopos = new CssIdent("auto-pos");
+    static CssIdent beforeedge = new CssIdent("before-edge");
+    static CssIdent afterbaseline = new CssIdent("after-baseline");
+    static CssIdent afteredge = new CssIdent("after-edge");
+
+    /**
+     * Create a new CssTextUlPos
+     */
+    public CssTextUlPos() {
+	ulpos = autopos;
+    }
+
+    /**
+     * Create a new CssTextUlPos
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect values
+     */
+    public CssTextUlPos(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val.equals(autopos)) {
+	    ulpos = autopos;
+	    expression.next();
+	}
+	else if (val.equals(beforeedge)) {
+	    ulpos = beforeedge;
+	    expression.next();
+	}
+	else if (val.equals(afterbaseline)) {
+	    ulpos = afterbaseline;
+	    expression.next();
+	}
+	else if (val.equals(afteredge)) {
+	    ulpos = afteredge;
+	    expression.next();
+	}
+	else if (val.equals(inherit)) {
+	    ulpos = inherit;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value",
+					    expression.getValue(),
+					    getPropertyName(), ac);
+	}
+
+    }
+
+    public CssTextUlPos(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssTextUlPos != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssTextUlPos = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getTextUlPos();
+	}
+	else {
+	    return ((Css3Style) style).cssTextUlPos;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssTextUlPos &&
+		ulpos.equals(((CssTextUlPos) property).ulpos));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "text-underline-position";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return ulpos;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return ulpos.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return ulpos.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return ulpos == autopos;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssTextUlStyle.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,154 @@
+//
+// $Id: CssTextUlStyle.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM>  none | solid | double | dotted | thick | dashed | dot-dash | dot-dot-dash | wave | single-accounting | double-accounting | inherit<BR>
+ *  <EM>Initial:</EM>solid<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  This property specifies the underline style to use when 'text-decoration'
+ *  is set to 'underline'.
+ */
+
+public class CssTextUlStyle extends CssProperty {
+
+    CssValue ulstyle;
+
+    static CssIdent solid = new CssIdent("solid");
+
+    private static String[] values = {
+	"none", "solid", "double", "dotted", "thick", "dashed", "dot-dash",
+	"dot-dot-dash", "wave", "inherit"
+    };
+
+    /**
+     * Create a new CssTextUlStyle
+     */
+    public CssTextUlStyle() {
+	ulstyle = solid;
+    }
+
+    /**
+     * Create a new CssTextUlStyle
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect values
+     */
+    public CssTextUlStyle(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	setByUser();
+	CssValue val = expression.getValue();
+
+	int i = 0;
+	for (;i < values.length; i++) {
+	    if (val.toString().equals(values[i])) {
+		ulstyle = val;
+		expression.next();
+		break;
+	    }
+	}
+	if (i == values.length) {
+	    throw new InvalidParamException("value",
+					    expression.getValue(),
+					    getPropertyName(), ac);
+	}
+
+    }
+
+    public CssTextUlStyle(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssTextUlStyle != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssTextUlStyle = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getTextUlStyle();
+	}
+	else {
+	    return ((Css3Style) style).cssTextUlStyle;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssTextUlStyle &&
+		ulstyle.equals(((CssTextUlStyle) property).ulstyle));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "text-underline-style";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return ulstyle;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return ulstyle.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return ulstyle.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return ulstyle == solid;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssTextUnderLine.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,197 @@
+//
+// $Id: CssTextUnderLine.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> &lt;style&gt; || &lt;color&gt; || &lt;mode&gt; ||
+ *  &lt;position&gt; || inherit<BR>
+ *  <EM>Initial:</EM>not defined for shorthand properties<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  This property is the shorthand for 'text-underline-style',
+ *  'text-underline-color', 'text-underline-mode' and 'text-underline-position'.
+ */
+
+public class CssTextUnderLine extends CssProperty
+implements CssOperator  {
+
+    CssValue underline;
+    CssTextUlColor tuc;
+    CssTextUlMode tum;
+    CssTextUlPos tup;
+    CssTextUlStyle tus;
+
+    /**
+     * Create a new CssTextUnderLine
+     */
+    public CssTextUnderLine() {
+    }
+
+    /**
+     * Create a new CssTextUnderLine
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect values
+     */
+    public CssTextUnderLine(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	CssValue val = expression.getValue();
+	int maxvalues = 4;
+	boolean correct = true;
+	char op = SPACE;
+
+	while (correct && (val != null) && (maxvalues-- > 0)) {
+
+	    correct = false;
+
+	    if (tus == null) {
+		try {
+		    tus = new CssTextUlStyle(ac, expression);
+		    correct = true;
+		}
+		catch (InvalidParamException e) {
+		}
+	    }
+	    if (!correct && tuc == null) {
+		try {
+		    tuc = new CssTextUlColor(ac, expression);
+		    correct = true;
+		}
+		catch (InvalidParamException e) {
+		}
+	    }
+	    if (!correct && tum == null) {
+		try {
+		    tum = new CssTextUlMode(ac, expression);
+		    correct = true;
+		}
+		catch (InvalidParamException e) {
+		}
+	    }
+	    if (!correct && tup == null) {
+		try {
+		    tup = new CssTextUlPos(ac, expression);
+		    correct = true;
+		}
+		catch (InvalidParamException e) {
+		}
+	    }
+	    if (!correct) {
+		throw new InvalidParamException("value",
+						expression.getValue(),
+						getPropertyName(), ac);
+	    }
+
+	    val = expression.getValue();
+	    op = expression.getOperator();
+	}
+
+	if (tuc == null) {
+	    tuc = new CssTextUlColor();
+	}
+	if (tum == null) {
+	    tum = new CssTextUlMode();
+	}
+	if (tup == null) {
+	    tup = new CssTextUlPos();
+	}
+	if (tus == null) {
+	    tus = new CssTextUlStyle();
+	}
+
+    }
+
+    public CssTextUnderLine(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssTextUnderLine != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssTextUnderLine = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getTextUnderLine();
+	}
+	else {
+	    return ((Css3Style) style).cssTextUnderLine;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return false;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "text-underline";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return null;
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+
+	String ret = "";
+	if (tus.isByUser()) {
+	    ret += " " + tus;
+	}
+	if (tuc.isByUser()) {
+	    ret += " " + tuc;
+	}
+	if (tum.isByUser()) {
+	    ret += " " + tum;
+	}
+	if (tup.isByUser()) {
+	    ret += " " + tup;
+	}
+	return ret.substring(1);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssToggleGroup.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,177 @@
+//
+// $Id: CssToggleGroup.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> <identifier> || none || inherit<BR>
+ *  <EM>Initial:</EM>none<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:all
+ *  <P>
+ *  The 'toggle-group' property accepts the name of a group (identifier).
+ *  The property indicates which toggle group that the element is a member
+ *  of. Only one element belonging to any given toggle group can be :checked.
+ */
+
+public class CssToggleGroup extends CssProperty {
+
+    CssValue toggle;
+    public static Hashtable groups = new Hashtable();
+    public static String checkedel = new String();
+    String selector = new String();
+
+    CssIdent none = new CssIdent("none");
+
+    /**
+     * Create a new CssToggleGroup
+     */
+    public CssToggleGroup() {
+	toggle = none;
+    }
+
+    /**
+     * Create a new CssToggleGroup
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect values
+     */
+    public CssToggleGroup(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val.equals(none)) {
+	    toggle = none;
+	    expression.next();
+	}
+	else if (val.equals(inherit)) {
+	    toggle = inherit;
+	    expression.next();
+	}
+	else if (val instanceof CssIdent) {
+	    if (!groups.containsKey(val.toString())) { // add group + element
+		Vector elements = new Vector();
+		elements.addElement(selector);
+		groups.put(val.toString(), elements);
+		toggle = val;
+		expression.next();
+	    }
+	    else { // group already exists, only add element
+		Vector elements = new Vector();
+	        elements = (Vector) groups.get(val.toString());
+		if (!elements.contains(selector)) {
+		    groups.remove(val.toString());
+		    elements.addElement(selector);
+		    groups.put(val.toString(), elements);
+		    toggle = val;
+		    expression.next();
+		}
+		toggle = val;
+		expression.next();
+	    }
+	}
+	else {
+	    throw new InvalidParamException("groupname", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssToggleGroup(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssToggleGroup != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssToggleGroup = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	selector = ((Css3Style) style).getSelector();
+	if (resolve) {
+	    return ((Css3Style) style).getToggleGroup();
+	} else {
+	    return ((Css3Style) style).cssToggleGroup;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssToggleGroup &&
+                toggle.equals( ((CssToggleGroup) property).toggle));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "toggle-group";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return toggle;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return toggle.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return toggle.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return toggle == none;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssUserFocus.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,185 @@
+//
+// $Id: CssUserFocus.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> auto || normal || select-all || select-before ||
+ *  select-after || select-same || select-menu || inherit<BR>
+ *  <EM>Initial:</EM>auto<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>yes<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:interactive
+ *  <P>
+ *  The purpose of this property is to determine what happens to an element
+ *  when the user focusses it either by "tabbing" into it or clicking on it
+ *  with a pointing device. This property serves as both a shortcut property
+ *  that sets the values of the individual user-focus-key and
+ *  user-focus-pointer properties, and also serves to determine what
+ *  happens for any other input methods not covered by user-focus-key
+ *  and user-focus-pointer.
+ */
+
+public class CssUserFocus extends CssProperty {
+
+    CssValue userfocus;
+
+    static CssIdent auto = new CssIdent("auto");
+    static CssIdent normal = new CssIdent("normal");
+    static CssIdent selectall = new CssIdent("select-all");
+    static CssIdent selectbefore = new CssIdent("select-before");
+    static CssIdent selectafter = new CssIdent("select-after");
+    static CssIdent selectsame = new CssIdent("select-same");
+    static CssIdent selectmenu = new CssIdent("select-menu");
+
+    /**
+     * Create a new CssUserFocus
+     */
+    public CssUserFocus() {
+	userfocus = auto;
+    }
+
+    /**
+     * Create a new CssUserFocus
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssUserFocus(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val.equals(auto)) {
+	    userfocus = auto;
+	    expression.next();
+	}
+	else if (val.equals(normal)) {
+	    userfocus = normal;
+	    expression.next();
+	}
+	else if (val.equals(selectall)) {
+	    userfocus = selectall;
+	    expression.next();
+	}
+	else if (val.equals(selectbefore)) {
+	    userfocus = selectbefore;
+	    expression.next();
+	}
+	else if (val.equals(selectafter)) {
+	    userfocus = selectafter;
+	    expression.next();
+	}
+	else if (val.equals(selectsame)) {
+	    userfocus = selectsame;
+	    expression.next();
+	}
+	else if (val.equals(selectmenu)) {
+	    userfocus = selectmenu;
+	    expression.next();
+	}
+	else if (val.equals(inherit)) {
+	    userfocus = inherit;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssUserFocus(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssUserFocus != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssUserFocus = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getUserFocus();
+	}
+	else {
+	    return ((Css3Style) style).cssUserFocus;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssUserFocus &&
+		userfocus.equals(((CssUserFocus) property).userfocus));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "user-focus";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return userfocus;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return userfocus.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return userfocus.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return userfocus == auto;
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssUserFocusKey.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,182 @@
+//
+// $Id: CssUserFocusKey.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> auto || normal || select-all || select-before ||
+ *  select-after || select-same || select-menu || inherit<BR>
+ *  <EM>Initial:</EM>auto<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>yes<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:interactive
+ *  <P>
+ *  The purpose of this property is to determine what happens to an element
+ *  when the user focusses it specifically by clicking on it with a pointing
+ *  device.
+ */
+
+public class CssUserFocusKey extends CssProperty {
+
+    CssValue userfocuskey;
+
+    static CssIdent auto = new CssIdent("auto");
+    static CssIdent normal = new CssIdent("normal");
+    static CssIdent selectall = new CssIdent("select-all");
+    static CssIdent selectbefore = new CssIdent("select-before");
+    static CssIdent selectafter = new CssIdent("select-after");
+    static CssIdent selectsame = new CssIdent("select-same");
+    static CssIdent selectmenu = new CssIdent("select-menu");
+
+    /**
+     * Create a new CssUserFocusKey
+     */
+    public CssUserFocusKey() {
+	userfocuskey = auto;
+    }
+
+    /**
+     * Create a new CssUserFocusKey
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssUserFocusKey(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val.equals(auto)) {
+	    userfocuskey = auto;
+	    expression.next();
+	}
+	else if (val.equals(normal)) {
+	    userfocuskey = normal;
+	    expression.next();
+	}
+	else if (val.equals(selectall)) {
+	    userfocuskey = selectall;
+	    expression.next();
+	}
+	else if (val.equals(selectbefore)) {
+	    userfocuskey = selectbefore;
+	    expression.next();
+	}
+	else if (val.equals(selectafter)) {
+	    userfocuskey = selectafter;
+	    expression.next();
+	}
+	else if (val.equals(selectsame)) {
+	    userfocuskey = selectsame;
+	    expression.next();
+	}
+	else if (val.equals(selectmenu)) {
+	    userfocuskey = selectmenu;
+	    expression.next();
+	}
+	else if (val.equals(inherit)) {
+	    userfocuskey = inherit;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssUserFocusKey(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssUserFocusKey != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssUserFocusKey = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getUserFocusKey();
+	}
+	else {
+	    return ((Css3Style) style).cssUserFocusKey;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssUserFocusKey &&
+		userfocuskey.equals(((CssUserFocusKey) property).userfocuskey));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "user-focus-key";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return userfocuskey;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return userfocuskey.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return userfocuskey.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return userfocuskey == auto;
+    }
+
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssUserFocusPointer.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,181 @@
+//
+// $Id: CssUserFocusPointer.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> auto || normal || select-all || select-before ||
+ *  select-after || select-same || select-menu || inherit<BR>
+ *  <EM>Initial:</EM>auto<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>yes<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:interactive
+ *  <P>
+ *  The purpose of this property is to determine what happens to an element
+ *  when the user focusses it specifically by "tabbing" into it.
+ */
+
+public class CssUserFocusPointer extends CssProperty {
+
+    CssValue userfocuspointer;
+
+    static CssIdent auto = new CssIdent("auto");
+    static CssIdent normal = new CssIdent("normal");
+    static CssIdent selectall = new CssIdent("select-all");
+    static CssIdent selectbefore = new CssIdent("select-before");
+    static CssIdent selectafter = new CssIdent("select-after");
+    static CssIdent selectsame = new CssIdent("select-same");
+    static CssIdent selectmenu = new CssIdent("select-menu");
+
+    /**
+     * Create a new CssUserFocusPointer
+     */
+    public CssUserFocusPointer() {
+	userfocuspointer = auto;
+    }
+
+    /**
+     * Create a new CssUserFocusPointer
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssUserFocusPointer(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val.equals(auto)) {
+	    userfocuspointer = auto;
+	    expression.next();
+	}
+	else if (val.equals(normal)) {
+	    userfocuspointer = normal;
+	    expression.next();
+	}
+	else if (val.equals(selectall)) {
+	    userfocuspointer = selectall;
+	    expression.next();
+	}
+	else if (val.equals(selectbefore)) {
+	    userfocuspointer = selectbefore;
+	    expression.next();
+	}
+	else if (val.equals(selectafter)) {
+	    userfocuspointer = selectafter;
+	    expression.next();
+	}
+	else if (val.equals(selectsame)) {
+	    userfocuspointer = selectsame;
+	    expression.next();
+	}
+	else if (val.equals(selectmenu)) {
+	    userfocuspointer = selectmenu;
+	    expression.next();
+	}
+	else if (val.equals(inherit)) {
+	    userfocuspointer = inherit;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssUserFocusPointer(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssUserFocusPointer != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssUserFocusPointer = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getUserFocusPointer();
+	}
+	else {
+	    return ((Css3Style) style).cssUserFocusPointer;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssUserFocusPointer &&
+		userfocuspointer.equals(((CssUserFocusPointer) property).userfocuspointer));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "user-focus-pointer";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return userfocuspointer;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return userfocuspointer.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return userfocuspointer.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return userfocuspointer == auto;
+    }
+
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssUserInput.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,159 @@
+//
+// $Id: CssUserInput.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> none || enabled || disabled || inherit<BR>
+ *  <EM>Initial:</EM>none<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>yes<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:all
+ *  <P>
+ *  The purpose of this property is to allow the author to specify whether or
+ *  not a user interface element will currently accept user input. Typically
+ *  this will be used to enable or disable specific input elements in a form.
+ *  UAs may interpret none as disabled for user interface related elements.
+ */
+
+public class CssUserInput extends CssProperty {
+
+    CssValue userinput;
+    static CssIdent none = new CssIdent("none");
+    static CssIdent enabled = new CssIdent("enabled");
+    static CssIdent disabled = new CssIdent("disabled");
+
+    /**
+     * Create a new CssUserInput
+     */
+    public CssUserInput() {
+	userinput = none;
+    }
+
+    /**
+     * Create a new CssUserInput
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssUserInput(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val.equals(none)) {
+	    userinput = none;
+	    expression.next();
+	}
+	else if (val.equals(enabled)) {
+	    userinput = enabled;
+	    expression.next();
+	}
+	else if (val.equals(disabled)) {
+	    userinput = disabled;
+	    expression.next();
+	}
+	else if (val.equals(inherit)) {
+	    userinput = inherit;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssUserInput(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssUserInput != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssUserInput = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getUserInput();
+	}
+	else {
+	    return ((Css3Style) style).cssUserInput;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssUserInput &&
+		userinput.equals(((CssUserInput) property).userinput));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "user-input";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return userinput;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return userinput.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return userinput.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return userinput == none;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssUserModify.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,163 @@
+//
+// $Id: CssUserModify.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> read-only || read-write || write-only || inherit<BR>
+ *  <EM>Initial:</EM>read-only<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>yes<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:interactive
+ *  <P>
+ *  The purpose of this property is to allow finer control over which user
+ *  interface elements are user modifiable. Input elements can be pre-filled
+ *  in, with the user-modify property set to read-only so that the user cannot
+ *  change them. This is useful for templates, or for update forms. The user
+ *  can still activate a read-only element and copy content out of
+ *  it, if that is appropriate for the content model of the element.
+ *  This is different from making the element "user-input:disabled" because
+ *  that would prevent the user from activating the element.
+*/
+
+public class CssUserModify extends CssProperty {
+
+    CssValue um;
+    static CssIdent readonly = new CssIdent("read-only");
+    static CssIdent readwrite = new CssIdent("read-write");
+    static CssIdent writeonly = new CssIdent("write-only");
+
+    /**
+     * Create a new CssUserModify
+     */
+    public CssUserModify() {
+	um = readonly;
+    }
+
+    /**
+     * Create a new CssUserModify
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssUserModify(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val.equals(readonly)) {
+	    um = readonly;
+	    expression.next();
+	}
+	else if (val.equals(readwrite)) {
+	    um = readwrite;
+	    expression.next();
+	}
+	else if (val.equals(writeonly)) {
+	    um = writeonly;
+	    expression.next();
+	}
+	else if (val.equals(inherit)) {
+	    um = inherit;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssUserModify(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssUserModify != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssUserModify = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getUserModify();
+	}
+	else {
+	    return ((Css3Style) style).cssUserModify;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssUserModify &&
+		um.equals(((CssUserModify) property).um));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "user-modify";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return um;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return um.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return um.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return um == readonly;
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssUserSelect.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,170 @@
+//
+// $Id: CssUserSelect.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> none || text || toggle || element || elements || all ||
+ *  inherit<BR>
+ *  <EM>Initial:</EM>read-only<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>yes<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:interactive
+ *  <P>
+ *  This property controls the selection model and granularity of an element.
+ *  Additional selection models may be added in the future.
+ */
+
+public class CssUserSelect extends CssProperty {
+
+    CssValue userselect;
+
+    static CssIdent none = new CssIdent("none");
+    static CssIdent text = new CssIdent("text");
+    static CssIdent toggle = new CssIdent("toggle");
+    static CssIdent element = new CssIdent("element");
+    static CssIdent elements = new CssIdent("elements");
+    static CssIdent all = new CssIdent("all");
+
+    /**
+     * Create a new CssUserSelect
+     */
+    public CssUserSelect() {
+	userselect = text;
+    }
+
+    /**
+     * Create a new CssUserSelect
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssUserSelect(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val.equals(none)) {
+	    userselect = none;
+	    expression.next();
+	}
+	else if (val.equals(toggle)) {
+	    userselect = toggle;
+	    expression.next();
+	}
+	else if (val.equals(element)) {
+	    userselect = element;
+	    expression.next();
+	}
+	else if (val.equals(elements)) {
+	    userselect = element;
+	    expression.next();
+	}
+	else if (val.equals(all)) {
+	    userselect = all;
+	    expression.next();
+	}
+	else if (val.equals(inherit)) {
+	    userselect = inherit;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssUserSelect(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssUserSelect != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssUserSelect = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getUserSelect();
+	}
+	else {
+	    return ((Css3Style) style).cssUserSelect;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssUserSelect &&
+		userselect.equals(((CssUserSelect) property).userselect));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "user-select";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return userselect;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return userselect.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return userselect.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return userselect == text;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssVisibilityCSS3.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,148 @@
+//
+// $Id: CssVisibilityCSS3.java,v 1.2 2005-09-14 15:15:04 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 org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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 CssVisibilityCSS3 extends CssProperty {
+
+    CssValue value;
+
+    private static CssIdent visible = new CssIdent("visible");
+    private static CssIdent hidden = new CssIdent("hidden");
+    private static CssIdent collapse = new CssIdent("collapse");
+    private static CssIdent initial = new CssIdent("initial");
+
+    /**
+     * Create a new CssVisibilityCSS3
+     */
+    public CssVisibilityCSS3() {
+	value = visible;
+    }
+
+    /**
+     * Create a new CssVisibilityCSS3
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssVisibilityCSS3(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = expression.getValue();
+
+	setByUser();
+	if (val.equals(inherit)) {
+	    value = inherit;
+	    expression.next();
+	} else if (val.equals(visible)) {
+	    value = visible;
+	    expression.next();
+	} else if (val.equals(hidden)) {
+	    value = hidden;
+	    expression.next();
+	} else if (val.equals(collapse)) {
+	    value = collapse;
+	    expression.next();
+	} else if (val.equals(initial)) {
+		value = initial;
+		expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+
+    }
+
+    public CssVisibilityCSS3(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "visibility";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css3Style style0 = (Css3Style) style;
+	if (style0.cssVisibilityCSS3 != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssVisibilityCSS3 = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getVisibilityCSS3();
+	} else {
+	    return ((Css3Style) style).cssVisibilityCSS3;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssVisibilityCSS3 &&
+		value.equals(((CssVisibilityCSS3) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == visible;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssWhiteSpaceCSS3.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,160 @@
+//
+// $Id: CssWhiteSpaceCSS3.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 org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *   <H4>
+ *      &nbsp;&nbsp; 'white-space'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> normal | pre | nowrap<BR>
+ *   <EM>Initial:</EM> normal<BR>
+ *   <EM>Applies to:</EM> block-level elements<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *
+ *   <P> This property declares how whitespace inside the element is handled:
+ *   the 'normal' way (where whitespace is collapsed), as 'pre' (which behaves
+ *   like the 'PRE' element in HTML) or as 'nowrap' (where wrapping is done only
+ *   through BR elements):
+ *
+ *   <PRE>
+ *   PRE { white-space: pre }
+ *   P   { white-space: normal }
+ * </PRE>
+ *
+ *   <P> The initial value of 'white-space' is 'normal', but a UA will typically
+ *   have default values for all HTML elements according to the suggested
+ *   rendering of elements in the HTML specification.
+ *
+ * @version $Revision: 1.2 $
+ */
+public class CssWhiteSpaceCSS3 extends CssProperty {
+
+    int value;
+
+    private static String[] WHITESPACE = {
+	"normal", "pre", "nowrap", "pre-wrap", "pre-lines", "inherit" };
+    private static int[] hash_values;
+
+    /**
+     * Create a new CssWhiteSpace
+     */
+    public CssWhiteSpaceCSS3() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new CssWhiteSpace
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException values are incorrect
+     */
+    public CssWhiteSpaceCSS3(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	if ( val instanceof CssIdent) {
+	    int hash = val.hashCode();
+	    for (int i = 0; i < WHITESPACE.length; i++)
+		if (hash_values[i] == hash) {
+		    value = i;
+		    expression.next();
+		    return;
+		}
+	}
+
+	throw new InvalidParamException("value", expression.getValue(),
+					getPropertyName(), ac);
+    }
+
+    public CssWhiteSpaceCSS3(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return WHITESPACE[value];
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "white-space";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == (WHITESPACE.length - 1);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return WHITESPACE[value];
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css3Style style0 = (Css3Style) style;
+	if (style0.cssWhiteSpace != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssWhiteSpace = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getWhiteSpace();
+	} else {
+	    return ((Css3Style) style).cssWhiteSpace;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssWhiteSpaceCSS3 &&
+		value == ((CssWhiteSpaceCSS3) property).value);
+    }
+
+    static {
+	hash_values = new int[WHITESPACE.length];
+	for (int i = 0; i < WHITESPACE.length; i++)
+	    hash_values[i] = WHITESPACE[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssWhiteSpaceTreatment.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,156 @@
+//
+// $Id: CssWhiteSpaceTreatment.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// COPYRIGHT (c) 1995-2000 World Wide Web Consortium, (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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 CssWhiteSpaceTreatment extends CssProperty {
+
+	CssValue wstreat;
+
+	private static CssIdent ignore = new CssIdent("ignore");
+	private static CssIdent preserve = new CssIdent("preserve");
+	private static CssIdent ignoreifbeforelf = new CssIdent("ignore-if-before-linefeed");
+	private static CssIdent ignoreifafterlf = new CssIdent("ignore-if-after-linefeed");
+	private static CssIdent ignoreifsurroundinglf = new CssIdent("ignore-if-surrounding-linefeed");
+
+	/**
+	 * Create a new CssWhiteSpaceTreatment
+	 */
+	public CssWhiteSpaceTreatment() {
+	    wstreat = ignoreifsurroundinglf;
+	}
+
+	/**
+	 * Create a new CssWhiteSpaceTreatment
+	 *
+	 *
+	 */
+	public CssWhiteSpaceTreatment(ApplContext ac, CssExpression expression,
+		boolean check) throws InvalidParamException {
+	    setByUser();
+	    CssValue val = expression.getValue();
+	    if (val.equals(ignore)) {
+			wstreat = ignore;
+			expression.next();
+	    }
+	    else if (val.equals(preserve)) {
+			wstreat = preserve;
+			expression.next();
+	    }
+	    else if (val.equals(ignoreifbeforelf)) {
+			wstreat = ignoreifbeforelf;
+			expression.next();
+	    }
+	    else if (val.equals(ignoreifafterlf)) {
+			wstreat = ignoreifafterlf;
+			expression.next();
+	    }
+	    else if (val.equals(ignoreifsurroundinglf)) {
+			wstreat = ignoreifsurroundinglf;
+			expression.next();
+	    }
+	    else if (val.equals(inherit)) {
+			wstreat = inherit;
+			expression.next();
+	    }
+
+	    else {
+		throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+	    }
+	}
+
+	public CssWhiteSpaceTreatment(ApplContext ac, CssExpression expression)
+		throws InvalidParamException {
+	    this(ac, expression, false);
+	}
+
+	/**
+	 * Add this property to the CssStyle.
+	 *
+	 * @param style The CssStyle
+	 */
+	public void addToStyle(ApplContext ac, CssStyle style) {
+	    if (((Css3Style) style).cssWhiteSpaceTreatment != null)
+		style.addRedefinitionWarning(ac, this);
+	    ((Css3Style) style).cssWhiteSpaceTreatment = this;
+
+	}
+
+	/**
+	 * Get this property in the style.
+	 *
+	 * @param style The style where the property is
+	 * @param resolve if true, resolve the style to find this property
+	 */
+        public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	    if (resolve) {
+		return ((Css3Style) style).getWhiteSpaceTreatment();
+	    } else {
+		return ((Css3Style) style).cssWhiteSpaceTreatment;
+	    }
+	}
+
+	/**
+	 * Compares two properties for equality.
+	 *
+	 * @param value The other property.
+	 */
+	public boolean equals(CssProperty property) {
+	    return (property instanceof CssWhiteSpaceTreatment &&
+		    wstreat.equals( ((CssWhiteSpaceTreatment) property).wstreat));
+	}
+
+	/**
+	 * Returns the name of this property
+	 */
+	public String getPropertyName() {
+	    return "white-space-treatment";
+	}
+
+	/**
+	 * Returns the value of this property
+	 */
+	public Object get() {
+	    return wstreat;
+	}
+
+	/**
+	 * Returns true if this property is "softly" inherited
+	 */
+	public boolean isSoftlyInherited() {
+	    return wstreat.equals(inherit);
+	}
+
+	/**
+	 * Returns a string representation of the object
+	 */
+	public String toString() {
+	    return wstreat.toString();
+	}
+
+	/**
+	 * Is the value of this property a default value
+	 * It is used by all macro for the function <code>print</code>
+	 */
+	public boolean isDefault() {
+	    return wstreat == ignoreifsurroundinglf;
+	}
+
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssWidthCSS3.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,174 @@
+//
+// $Id: CssWidthCSS3.java,v 1.3 2005-09-14 15:15:04 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 org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *      &nbsp;&nbsp; 'width'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> &lt;length&gt; | &lt;percentage&gt; | auto <BR>
+ *   <EM>Initial:</EM> auto<BR>
+ *   <EM>Applies to:</EM> block-level and replaced elements<BR>
+ *   <EM>Inherited:</EM> no<BR>
+ *   <EM>Percentage values:</EM> refer to parent element's width<BR>
+ *   <P>
+ *   This property can be applied to text elements, but it is most useful with
+ *   replaced elements such as images. The width is to be enforced by scaling
+ *   the image if necessary. When scaling, the aspect ratio of the image is preserved
+ *   if the 'height' property is 'auto'.
+ *   <P>
+ *   Example:
+ *   <PRE>
+ *   IMG.icon { width: 100px }
+ * </PRE>
+ *   <P>
+ *   If the 'width' and 'height' of a replaced element are both 'auto', these
+ *   properties will be set to the intrinsic dimensions of the element.
+ *   <P>
+ *   Negative values are not allowed.
+ * @version $Revision: 1.3 $
+ */
+public class CssWidthCSS3 extends CssProperty {
+
+    CssValue value;
+
+    private static CssIdent auto = new CssIdent("auto");
+    private static CssIdent initial = new CssIdent("initial");
+
+    /**
+     * Create a new CssWidthCSS3
+     */
+    public CssWidthCSS3() {
+	value = auto;
+    }
+
+    /**
+     * Create a new CssWidthCSS3.
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public CssWidthCSS3(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	} else if (val.equals(initial)) {
+		value = initial;
+	} else if (val instanceof CssLength || val instanceof CssPercentage) {
+	    float f = ((Float) val.get()).floatValue();
+	    if (f < 0) {
+		throw new InvalidParamException("negative-value",
+						val.toString(), ac);
+	    }
+	    value = val;
+	} else if (val.equals(auto)) {
+	    value = auto;
+	} else if (val instanceof CssNumber) {
+	    value = ((CssNumber) val).getLength();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+
+	expression.next();
+    }
+
+    public CssWidthCSS3(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property.
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property.
+     */
+    public String getPropertyName() {
+	return "width";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css3Style style0 = (Css3Style) style;
+	if (style0.cssWidthCSS3 != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssWidthCSS3 = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getWidthCSS3();
+	} else {
+	    return ((Css3Style) style).cssWidthCSS3;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssWidthCSS3 && value.equals(((CssWidthCSS3) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == auto;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssWordBreak.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,178 @@
+//
+// $Id: CssWordBreak.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> normal || &lt;word-break-CJK&gt; || &lt;word-break-wrap&gt; ||
+ *  word-break-inside || inherit<BR>
+ *  <EM>Initial:</EM>normal<BR>
+ *  <EM>Applies to:</EM>block-level elements<BR>
+ *  <EM>Inherited:</EM>yes<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  The 'word-break' property is a shorthand property for setting
+ *  'word-break-CJK', 'word-break-wrap' and 'word-break-inside', at the same
+ *  place in the style sheet.
+ */
+
+public class CssWordBreak extends CssProperty
+implements CssOperator {
+
+    CssWordBreakCJK wbc;
+    CssWordBreakInside wbi;
+    CssValue wordbreak;
+
+    /**
+     * Create a new CssWordBreak
+     */
+    public CssWordBreak() {
+    }
+
+    /**
+     * Create a new CssWordBreak
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssWordBreak(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	CssValue val = expression.getValue();
+	int maxvalues = 3;
+	boolean correct = true;
+	char op = SPACE;
+
+	while (correct && (val != null) && (maxvalues-- > 0)) {
+
+	    correct = false;
+
+	    if (wbc == null) {
+		try {
+		    wbc = new CssWordBreakCJK(ac, expression);
+		    correct = true;
+		}
+		catch (InvalidParamException e) {
+		}
+	    }
+	    if (!correct && wbi == null) {
+		try {
+		    wbi = new CssWordBreakInside(ac, expression);
+		    correct = true;
+		}
+		catch (InvalidParamException e) {
+		}
+	    }
+	    if (!correct) {
+		throw new InvalidParamException("value", expression.getValue(),
+						getPropertyName(), ac);
+	    }
+
+	    val = expression.getValue();
+	    op = expression.getOperator();
+
+	}
+
+	if (wbc == null) {
+	    wbc = new CssWordBreakCJK();
+	}
+	if (wbi == null) {
+	    wbi = new CssWordBreakInside();
+	}
+
+    }
+
+    public CssWordBreak(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssWordBreak != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssWordBreak = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getWordBreak();
+	}
+	else {
+	    return ((Css3Style) style).cssWordBreak;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return false;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "word-break";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return null;
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+
+	String ret = "";
+	if (wbc.isByUser()) {
+	    ret += " " + wbc;
+	}
+	if (wbi.isByUser()) {
+	    ret += " " + wbi;
+	}
+	return ret.substring(1);
+
+    }
+
+    //    /**
+    // * Is the value of this property a default value
+    //* It is used by alle macro for the function <code>print</code>
+    //*/
+    //public boolean isDefault() {
+    //return wordbreak == normal;
+    //}
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssWordBreakCJK.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,159 @@
+//
+// $Id: CssWordBreakCJK.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> normal || break-all || keep-all || inherit<BR>
+ *  <EM>Initial:</EM>normal<BR>
+ *  <EM>Applies to:</EM>block-level elements<BR>
+ *  <EM>Inherited:</EM>yes<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  This property controls line-breaking behavior inside of words from a CJK
+ *  point of view.
+ */
+
+public class CssWordBreakCJK extends CssProperty {
+
+    CssValue wordbreak;
+
+    CssIdent normal = new CssIdent("normal");
+    CssIdent breakall = new CssIdent("break-all");
+    CssIdent keepall = new CssIdent("keep-all");
+
+    /**
+     * Create a new CssWordBreakCJK
+     */
+    public CssWordBreakCJK() {
+	wordbreak = normal;
+    }
+
+    /**
+     * Create a new CssWordBreakCJK
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssWordBreakCJK(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val.equals(normal)) {
+	    wordbreak = normal;
+	    expression.next();
+	}
+	else if (val.equals(keepall)) {
+	    wordbreak = keepall;
+    	    expression.next();
+	}
+	else if (val.equals(breakall)) {
+	    wordbreak = breakall;
+    	    expression.next();
+	}
+	else if (val.equals(inherit)) {
+	    wordbreak = inherit;
+     	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssWordBreakCJK(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssWordBreakCJK != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssWordBreakCJK = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getWordBreakCJK();
+	}
+	else {
+	    return ((Css3Style) style).cssWordBreakCJK;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssWordBreakCJK &&
+		wordbreak.equals(((CssWordBreakCJK) property).wordbreak));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "word-break-CJK";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return wordbreak;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return wordbreak.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return wordbreak.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return wordbreak == normal;
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssWordBreakInside.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,153 @@
+//
+// $Id: CssWordBreakInside.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> normal || hyphenate || inherit<BR>
+ *  <EM>Initial:</EM>normal<BR>
+ *  <EM>Applies to:</EM>block-level elements<BR>
+ *  <EM>Inherited:</EM>yes<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  This property controls the hyphenation behavior inside of words.
+ */
+
+public class CssWordBreakInside extends CssProperty {
+
+    CssValue wordbreak;
+
+    CssIdent normal = new CssIdent("normal");
+    CssIdent hyphenate = new CssIdent("hyphenate");
+
+    /**
+     * Create a new CssWordBreakInside
+     */
+    public CssWordBreakInside() {
+	wordbreak = normal;
+    }
+
+    /**
+     * Create a new CssWordBreakInside
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public CssWordBreakInside(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val.equals(normal)) {
+	    wordbreak = normal;
+	    expression.next();
+	}
+	else if (val.equals(hyphenate)) {
+	    wordbreak = hyphenate;
+    	    expression.next();
+	}
+	else if (val.equals(inherit)) {
+	    wordbreak = inherit;
+     	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssWordBreakInside(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssWordBreakInside != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssWordBreakInside = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getWordBreakInside();
+	}
+	else {
+	    return ((Css3Style) style).cssWordBreakInside;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssWordBreakInside &&
+		wordbreak.equals(((CssWordBreakInside) property).wordbreak));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "word-break-inside";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return wordbreak;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return wordbreak.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return wordbreak.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return wordbreak == normal;
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssWordSpacingCSS3.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,159 @@
+//
+// $Id: CssWordSpacingCSS3.java,v 1.3 2005-09-14 15:15:04 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 org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'word-spacing'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> normal | &lt;length&gt; <BR>
+ *   <EM>Initial:</EM> normal<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ *   <P> The length unit indicates an addition to the default space between
+ *   words.  Values can be negative, but there may be implementation-specific
+ *   limits.  The UA is free to select the exact spacing algorithm. The word
+ *   spacing may also be influenced by justification (which is a value of the
+ *   'align' property).
+ *   <PRE>
+ *   H1 { word-spacing: 0.4em }
+ * </PRE>
+ *   <P>
+ *   Here, the word-spacing between each word in 'H1' elements would be increased
+ *   by '1em'.
+ *
+ * @version $Revision: 1.3 $
+ */
+public class CssWordSpacingCSS3 extends CssProperty {
+
+    private CssValue length;
+    private static CssIdent normal = new CssIdent("normal");
+	private static CssIdent none = new CssIdent("none");
+
+    /**
+     * Create a new CssWordSpacing.
+     */
+    public CssWordSpacingCSS3() {
+	length = normal;
+    }
+
+    /**
+     * Create a new CssWordSpacing with an expression
+     *
+     * @param expression The expression
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public CssWordSpacingCSS3(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = expression.getValue();
+
+	setByUser();
+
+	if (val instanceof CssLength) {
+	    length = (CssLength) val;
+	    expression.next();
+	} else if (val instanceof CssNumber) {
+	    length = ((CssNumber) val).getLength();
+	    expression.next();
+	} else if (val.equals(inherit)) {
+	    length = inherit;
+	    expression.next();
+	} else if (val.equals(normal)) {
+	    length = normal;
+	    expression.next();
+	} else if (val.equals(none)) {
+		length = none;
+		expression.next();
+	} else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssWordSpacingCSS3(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return length;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "word-spacing";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return length == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return length.toString();
+    }
+
+    /**
+     * Adds this property to a style.
+     *
+     * @param style The style.
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css3Style style0 = (Css3Style) style;
+	if (style0.cssWordSpacing != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.cssWordSpacing = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getCssWordSpacing();
+	} else {
+	    return ((Css3Style) style).cssWordSpacing;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssWordSpacingCSS3 &&
+		length.equals(((CssWordSpacingCSS3) property).length));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssWrapOption.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,150 @@
+//
+// $Id: CssWrapOption.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// COPYRIGHT (c) 1995-2000 World Wide Web Consortium, (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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 CssWrapOption extends CssProperty {
+
+    CssValue wrapoption;
+
+    private static CssIdent wrap = new CssIdent("wrap");
+    private static CssIdent softwrap = new CssIdent("soft-wrap");
+    private static CssIdent hardwrap = new CssIdent("hard-wrap");
+    private static CssIdent emergency = new CssIdent("emergency");
+
+    /**
+     * Create a new CssWrapOption
+     */
+    public CssWrapOption() {
+	wrapoption = wrap;
+    }
+
+    /**
+     * Create a new CssWrapOption
+     *
+     *
+     */
+    public CssWrapOption(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	setByUser();
+	CssValue val = expression.getValue();
+	if (val.equals(wrap)) {
+	    wrapoption = wrap;
+	    expression.next();
+	}
+	else if (val.equals(softwrap)) {
+	    wrapoption = softwrap;
+	    expression.next();
+	}
+	else if (val.equals(hardwrap)) {
+	    wrapoption = hardwrap;
+	    expression.next();
+	}
+	else if (val.equals(emergency)) {
+	    wrapoption = emergency;
+	    expression.next();
+	}
+	else if (val.equals(inherit)) {
+	    wrapoption = inherit;
+	    expression.next();
+	}
+
+	else {
+	    throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+	}
+    }
+
+    public CssWrapOption(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssWrapOption != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssWrapOption = this;
+
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getWrapOption();
+	} else {
+	    return ((Css3Style) style).cssWrapOption;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssWrapOption &&
+		wrapoption.equals( ((CssWrapOption) property).wrapoption));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "wrap-option";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return wrapoption;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return wrapoption.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return wrapoption.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return wrapoption == wrap;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/CssWritingMode.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,185 @@
+//
+// $Id: CssWritingMode.java,v 1.2 2005-09-14 15:15:04 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> lr-tb || rl-tb || tb-rl || bt-rl || lr || rl || tb || inherit<BR>
+ *  <EM>Initial:</EM>lr-tb<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>yes<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  This property sets the primary text advance direction
+ */
+
+public class CssWritingMode extends CssProperty {
+
+    CssValue mode;
+
+    static CssIdent lrtb = new CssIdent("lr-tb");
+    static CssIdent rltb = new CssIdent("rl-tb");
+    static CssIdent tbrl = new CssIdent("tb-rl");
+    static CssIdent tblr = new CssIdent("tb-lr");
+    static CssIdent lr = new CssIdent("lr");
+    static CssIdent rl = new CssIdent("rl");
+    static CssIdent tb = new CssIdent("tb");
+    static CssIdent ltr = new CssIdent("ltr");
+    static CssIdent rtl = new CssIdent("rtl");
+
+
+    /**
+     * Create a new CssWritingMode
+     */
+    public CssWritingMode() {
+	mode = lrtb;
+    }
+
+    /**
+     * Create a new CssWritingMode
+     */
+    public CssWritingMode(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val.equals(lrtb)) {
+	    mode = lrtb;
+	    expression.next();
+	}
+	else if (val.equals(rltb)) {
+	    mode = rltb;
+	    expression.next();
+	}
+	else if (val.equals(tbrl)) {
+	    mode = tbrl;
+	    expression.next();
+	}
+	else if (val.equals(tblr)) {
+	    mode = tblr;
+	    expression.next();
+	}
+	else if (val.equals(lr)) {
+	    mode = lr;
+	    expression.next();
+	}
+	else if (val.equals(rl)) {
+	    mode = rl;
+	    expression.next();
+	}
+	else if (val.equals(tb)) {
+	    mode = tb;
+	    expression.next();
+	}
+	else if (val.equals(ltr)) {
+	    mode = ltr;
+	    expression.next();
+	}
+	else if (val.equals(rtl)) {
+	    mode = rtl;
+	    expression.next();
+	}
+	else if (val.equals(inherit)) {
+	    mode = inherit;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public CssWritingMode(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((Css3Style) style).cssWritingMode != null)
+	    style.addRedefinitionWarning(ac, this);
+	((Css3Style) style).cssWritingMode = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getWritingMode();
+	}
+	else {
+	    return ((Css3Style) style).cssWritingMode;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssWritingMode &&
+		mode.equals(((CssWritingMode) property).mode));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "writing-mode";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return mode;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return mode.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return mode.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return mode == lrtb;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/MediaColor.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,146 @@
+//
+// $Id: MediaColor.java,v 1.3 2005-09-14 15:15:04 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 org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public class MediaColor extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new MediaColor
+     */
+    public MediaColor() {
+	//empty
+    }
+
+    /**
+     * Create a new MediaColor.
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public MediaColor(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = null;
+
+	if (expression != null) {
+	    val = expression.getValue();
+	}
+
+	setByUser();
+
+	if (val != null) {
+	    if (val instanceof CssNumber) {
+		if (((CssNumber) val).isInteger()) {
+		    value = val;
+		} else {
+		    throw new InvalidParamException("value", expression.getValue(),
+			    getPropertyName(), ac);
+		}
+	    } else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+
+	    expression.next();
+	}
+    }
+
+    public MediaColor(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property.
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property.
+     */
+    public String getPropertyName() {
+	return "color";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+		if (value != null) {
+			return value.toString();
+		} else {
+			return null;
+		}
+    }
+
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css3Style style0 = (Css3Style) style;
+	if (style0.mediaColor != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.mediaColor = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getMediaColor();
+	} else {
+	    return ((Css3Style) style).mediaColor;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof MediaColor && value.equals(((MediaColor) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/MediaColorIndex.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,148 @@
+//
+// $Id: MediaColorIndex.java,v 1.3 2005-09-14 15:15:04 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 org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public class MediaColorIndex extends CssProperty implements CssOperator {
+
+    CssValue value;
+
+    /**
+     * Create a new MediaColorIndex
+     */
+    public MediaColorIndex() {
+		//empty
+    }
+
+    /**
+     * Create a new MediaColorIndex.
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public MediaColorIndex(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = null;
+
+	if (expression != null) {
+	    val = expression.getValue();
+	}
+
+	setByUser();
+	//char op = SPACE;
+
+	if (val != null) {
+	    if (val instanceof CssNumber) {
+		if (((CssNumber) val).isInteger()) {
+		    value = val;
+		} else {
+		    throw new InvalidParamException("value", expression.getValue(),
+			    getPropertyName(), ac);
+		}
+	    } else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+
+	    expression.next();
+	}
+    }
+
+    public MediaColorIndex(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property.
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property.
+     */
+    public String getPropertyName() {
+	return "color-index";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+		if (value != null) {
+			return value.toString();
+		} else {
+			return null;
+		}
+    }
+
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css3Style style0 = (Css3Style) style;
+	if (style0.mediaColorIndex != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.mediaColorIndex = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getMediaColorIndex();
+	} else {
+	    return ((Css3Style) style).mediaColorIndex;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof MediaColorIndex && value.equals(((MediaColorIndex) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/MediaDeviceAspectRatio.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,173 @@
+//
+// $Id: MediaDeviceAspectRatio.java,v 1.3 2005-09-14 15:15:04 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 org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public class MediaDeviceAspectRatio extends CssProperty implements CssOperator {
+
+    String value = "";
+
+    /**
+     * Create a new MediaDeviceAspectRatio
+     */
+    public MediaDeviceAspectRatio() {
+		//empty
+    }
+
+    /**
+     * Create a new MediaDeviceAspectRatio.
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public MediaDeviceAspectRatio(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = null;
+
+	if (expression != null) {
+	    val = expression.getValue();
+	}
+
+	setByUser();
+	char op = SPACE;
+
+	if (val != null) {
+	    if (val instanceof CssNumber) {
+		if (((CssNumber) val).isInteger()) {
+		    value = val.toString();
+		} else {
+		    throw new InvalidParamException("value", expression.getValue(),
+			    getPropertyName(), ac);
+		}
+	    } else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+
+	    op = expression.getOperator();
+	    expression.next();
+	    val = expression.getValue();
+
+	    if (op == SLASH && val != null) {
+
+		if (val instanceof CssNumber) {
+		    if (((CssNumber) val).isInteger()) {
+			value += "/" + val.toString();
+		    } else {
+			throw new InvalidParamException("value", expression.getValue(),
+				getPropertyName(), ac);
+		    }
+		} else {
+		    throw new InvalidParamException("value", expression.getValue(),
+			    getPropertyName(), ac);
+		}
+
+
+	    } else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+
+	    expression.next();
+
+	}
+    }
+
+    public MediaDeviceAspectRatio(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property.
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property.
+     */
+    public String getPropertyName() {
+	return "device-aspect-ratio";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+		return false;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+		if (value.equals("")) {
+			return null;
+		} else {
+			return value;
+		}
+    }
+
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css3Style style0 = (Css3Style) style;
+	if (style0.mediaDeviceAspectRatio != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.mediaDeviceAspectRatio = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getMediaDeviceAspectRatio();
+	} else {
+	    return ((Css3Style) style).mediaDeviceAspectRatio;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof MediaDeviceAspectRatio && value.equals(((MediaDeviceAspectRatio) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/MediaDeviceHeight.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,150 @@
+//
+// $Id: MediaDeviceHeight.java,v 1.3 2005-09-14 15:15:04 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 org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public class MediaDeviceHeight extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new MediaDeviceHeight
+     */
+    public MediaDeviceHeight() {
+		//empty
+    }
+
+    /**
+     * Create a new MediaDeviceHeight.
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public MediaDeviceHeight(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = null;
+
+	if (expression != null) {
+	    val = expression.getValue();
+	}
+
+	setByUser();
+
+	if (val != null) {
+	    if (val instanceof CssLength || val instanceof CssPercentage) {
+		float f = ((Float) val.get()).floatValue();
+		if (f < 0) {
+		    throw new InvalidParamException("negative-value",
+			    val.toString(), ac);
+		}
+		value = val;
+	    } else if (val instanceof CssNumber) {
+		value = ((CssNumber) val).getLength();
+	    } else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+
+	    expression.next();
+	}
+    }
+
+    public MediaDeviceHeight(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property.
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property.
+     */
+    public String getPropertyName() {
+	return "device-height";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+		if (value != null) {
+			return value.toString();
+		} else {
+			return null;
+		}
+    }
+
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css3Style style0 = (Css3Style) style;
+	if (style0.mediaDeviceHeight != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.mediaDeviceHeight = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getMediaDeviceHeight();
+	} else {
+	    return ((Css3Style) style).mediaDeviceHeight;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof MediaDeviceHeight && value.equals(((MediaDeviceHeight) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/MediaDeviceWidth.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,149 @@
+//
+// $Id: MediaDeviceWidth.java,v 1.3 2005-09-14 15:15:04 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 org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public class MediaDeviceWidth extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new MediaDeviceWidth
+     */
+    public MediaDeviceWidth() {
+		//empty
+    }
+
+    /**
+     * Create a new MediaDeviceWidth.
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public MediaDeviceWidth(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = null;
+
+	if (expression != null) {
+	    val = expression.getValue();
+	}
+	setByUser();
+
+	if (val != null) {
+	    if (val instanceof CssLength || val instanceof CssPercentage) {
+		float f = ((Float) val.get()).floatValue();
+		if (f < 0) {
+		    throw new InvalidParamException("negative-value",
+			    val.toString(), ac);
+		}
+		value = val;
+	    } else if (val instanceof CssNumber) {
+		value = ((CssNumber) val).getLength();
+	    } else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+
+	    expression.next();
+	}
+    }
+
+    public MediaDeviceWidth(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property.
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property.
+     */
+    public String getPropertyName() {
+	return "device-width";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+		if (value != null) {
+			return value.toString();
+		} else {
+			return null;
+		}
+    }
+
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css3Style style0 = (Css3Style) style;
+	if (style0.mediaDeviceWidth != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.mediaDeviceWidth = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getMediaDeviceWidth();
+	} else {
+	    return ((Css3Style) style).mediaDeviceWidth;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof MediaDeviceWidth && value.equals(((MediaDeviceWidth) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/MediaGrid.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,146 @@
+//
+// $Id: MediaGrid.java,v 1.3 2005-09-14 15:15:04 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 org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public class MediaGrid extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new MediaGrid
+     */
+    public MediaGrid() {
+		//empty
+    }
+
+    /**
+     * Create a new MediaGrid.
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public MediaGrid(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = null;
+
+	if (expression != null) {
+	    val = expression.getValue();
+	}
+
+	setByUser();
+
+	if (val != null) {
+	    if (val instanceof CssNumber) {
+		if (((CssNumber) val).isInteger()) {
+		    value = val;
+		} else {
+		    throw new InvalidParamException("value", expression.getValue(),
+			    getPropertyName(), ac);
+		}
+	    } else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+
+	    expression.next();
+	}
+    }
+
+    public MediaGrid(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property.
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property.
+     */
+    public String getPropertyName() {
+	return "grid";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+		if (value != null) {
+			return value.toString();
+		} else {
+			return null;
+		}
+    }
+
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css3Style style0 = (Css3Style) style;
+	if (style0.mediaGrid != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.mediaGrid = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getMediaGrid();
+	} else {
+	    return ((Css3Style) style).mediaGrid;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof MediaGrid && value.equals(((MediaGrid) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/MediaHeight.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,150 @@
+//
+// $Id: MediaHeight.java,v 1.3 2005-09-14 15:15:04 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 org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public class MediaHeight extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new MediaHeight
+     */
+    public MediaHeight() {
+		//empty
+    }
+
+    /**
+     * Create a new MediaHeight.
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public MediaHeight(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = null;
+
+	if (expression != null) {
+	    val = expression.getValue();
+	}
+
+	setByUser();
+
+	if (val != null) {
+	    if (val instanceof CssLength || val instanceof CssPercentage) {
+		float f = ((Float) val.get()).floatValue();
+		if (f < 0) {
+		    throw new InvalidParamException("negative-value",
+			    val.toString(), ac);
+		}
+		value = val;
+	    } else if (val instanceof CssNumber) {
+		value = ((CssNumber) val).getLength();
+	    } else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+
+	    expression.next();
+	}
+    }
+
+    public MediaHeight(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property.
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property.
+     */
+    public String getPropertyName() {
+	return "height";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+		if (value != null) {
+			return value.toString();
+		} else {
+			return null;
+		}
+    }
+
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css3Style style0 = (Css3Style) style;
+	if (style0.mediaHeight != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.mediaHeight = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getMediaHeight();
+	} else {
+	    return ((Css3Style) style).mediaHeight;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof MediaHeight && value.equals(((MediaHeight) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/MediaMaxColor.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,146 @@
+//
+// $Id: MediaMaxColor.java,v 1.3 2005-09-14 15:15:04 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 org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public class MediaMaxColor extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new MediaMaxColor
+     */
+    public MediaMaxColor() {
+	//empty
+    }
+
+    /**
+     * Create a new MediaMaxColor.
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public MediaMaxColor(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = null;
+
+	if (expression != null) {
+	    val = expression.getValue();
+	}
+
+	setByUser();
+
+	if (val != null) {
+	    if (val instanceof CssNumber) {
+		if (((CssNumber) val).isInteger()) {
+		    value = val;
+		} else {
+		    throw new InvalidParamException("value", expression.getValue(),
+			    getPropertyName(), ac);
+		}
+	    } else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+
+	    expression.next();
+	}
+    }
+
+    public MediaMaxColor(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property.
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property.
+     */
+    public String getPropertyName() {
+	return "max-color";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+		if (value != null) {
+			return value.toString();
+		} else {
+			return null;
+		}
+    }
+
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css3Style style0 = (Css3Style) style;
+	if (style0.mediaMaxColor != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.mediaMaxColor = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getMediaMaxColor();
+	} else {
+	    return ((Css3Style) style).mediaMaxColor;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof MediaMaxColor && value.equals(((MediaMaxColor) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/MediaMaxColorIndex.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,148 @@
+//
+// $Id: MediaMaxColorIndex.java,v 1.3 2005-09-14 15:15:04 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 org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public class MediaMaxColorIndex extends CssProperty implements CssOperator {
+
+    CssValue value;
+
+    /**
+     * Create a new MediaMaxColorIndex
+     */
+    public MediaMaxColorIndex() {
+		//empty
+    }
+
+    /**
+     * Create a new MediaMaxColorIndex.
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public MediaMaxColorIndex(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = null;
+
+	if (expression != null) {
+	    val = expression.getValue();
+	}
+
+	setByUser();
+	char op = SPACE;
+
+	if (val != null) {
+	    if (val instanceof CssNumber) {
+		if (((CssNumber) val).isInteger()) {
+		    value = val;
+		} else {
+		    throw new InvalidParamException("value", expression.getValue(),
+			    getPropertyName(), ac);
+		}
+	    } else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+
+	    expression.next();
+	}
+    }
+
+    public MediaMaxColorIndex(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property.
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property.
+     */
+    public String getPropertyName() {
+	return "max-color-index";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+		if (value != null) {
+			return value.toString();
+		} else {
+			return null;
+		}
+    }
+
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css3Style style0 = (Css3Style) style;
+	if (style0.mediaMaxColorIndex != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.mediaMaxColorIndex = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getMediaMaxColorIndex();
+	} else {
+	    return ((Css3Style) style).mediaMaxColorIndex;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof MediaMaxColorIndex && value.equals(((MediaMaxColorIndex) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/MediaMaxDeviceAspectRatio.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,173 @@
+//
+// $Id: MediaMaxDeviceAspectRatio.java,v 1.3 2005-09-14 15:15:04 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 org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public class MediaMaxDeviceAspectRatio extends CssProperty implements CssOperator {
+
+    String value = "";
+
+    /**
+     * Create a new MediaMaxDeviceAspectRatio
+     */
+    public MediaMaxDeviceAspectRatio() {
+		//empty
+    }
+
+    /**
+     * Create a new MediaMaxDeviceAspectRatio.
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public MediaMaxDeviceAspectRatio(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = null;
+
+	if (expression != null) {
+	    val = expression.getValue();
+	}
+
+	setByUser();
+	char op = SPACE;
+
+	if (val != null) {
+	    if (val instanceof CssNumber) {
+		if (((CssNumber) val).isInteger()) {
+		    value = val.toString();
+		} else {
+		    throw new InvalidParamException("value", expression.getValue(),
+			    getPropertyName(), ac);
+		}
+	    } else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+
+	    op = expression.getOperator();
+	    expression.next();
+	    val = expression.getValue();
+
+	    if (op == SLASH && val != null) {
+
+		if (val instanceof CssNumber) {
+		    if (((CssNumber) val).isInteger()) {
+			value += "/" + val.toString();
+		    } else {
+			throw new InvalidParamException("value", expression.getValue(),
+				getPropertyName(), ac);
+		    }
+		} else {
+		    throw new InvalidParamException("value", expression.getValue(),
+			    getPropertyName(), ac);
+		}
+
+
+	    } else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+
+	    expression.next();
+
+	}
+    }
+
+    public MediaMaxDeviceAspectRatio(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property.
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property.
+     */
+    public String getPropertyName() {
+	return "min-device-aspect-ratio";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+		return false;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+		if (value.equals("")) {
+			return null;
+		} else {
+			return value;
+		}
+    }
+
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css3Style style0 = (Css3Style) style;
+	if (style0.mediaMaxDeviceAspectRatio != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.mediaMaxDeviceAspectRatio = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getMediaMaxDeviceAspectRatio();
+	} else {
+	    return ((Css3Style) style).mediaMaxDeviceAspectRatio;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof MediaMaxDeviceAspectRatio && value.equals(((MediaMaxDeviceAspectRatio) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/MediaMaxDeviceHeight.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,150 @@
+//
+// $Id: MediaMaxDeviceHeight.java,v 1.3 2005-09-14 15:15:04 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 org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public class MediaMaxDeviceHeight extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new MediaMaxDeviceHeight
+     */
+    public MediaMaxDeviceHeight() {
+		//empty
+    }
+
+    /**
+     * Create a new MediaMaxDeviceHeight.
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public MediaMaxDeviceHeight(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = null;
+
+	if (expression != null) {
+	    val = expression.getValue();
+	}
+
+	setByUser();
+
+	if (val != null) {
+	    if (val instanceof CssLength || val instanceof CssPercentage) {
+		float f = ((Float) val.get()).floatValue();
+		if (f < 0) {
+		    throw new InvalidParamException("negative-value",
+			    val.toString(), ac);
+		}
+		value = val;
+	    } else if (val instanceof CssNumber) {
+		value = ((CssNumber) val).getLength();
+	    } else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+
+	    expression.next();
+	}
+    }
+
+    public MediaMaxDeviceHeight(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property.
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property.
+     */
+    public String getPropertyName() {
+	return "max-device-height";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+		if (value != null) {
+			return value.toString();
+		} else {
+			return null;
+		}
+    }
+
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css3Style style0 = (Css3Style) style;
+	if (style0.mediaMaxDeviceHeight != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.mediaMaxDeviceHeight = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getMediaMaxDeviceHeight();
+	} else {
+	    return ((Css3Style) style).mediaMaxDeviceHeight;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof MediaMaxDeviceHeight && value.equals(((MediaMaxDeviceHeight) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/MediaMaxDeviceWidth.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,150 @@
+//
+// $Id: MediaMaxDeviceWidth.java,v 1.3 2005-09-14 15:15:04 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 org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public class MediaMaxDeviceWidth extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new MediaMaxDeviceWidth
+     */
+    public MediaMaxDeviceWidth() {
+	//empty
+    }
+
+    /**
+     * Create a new MediaMaxDeviceWidth.
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public MediaMaxDeviceWidth(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = null;
+
+	if (expression != null) {
+	    val = expression.getValue();
+	}
+
+	setByUser();
+
+	if (val != null) {
+	    if (val instanceof CssLength || val instanceof CssPercentage) {
+		float f = ((Float) val.get()).floatValue();
+		if (f < 0) {
+		    throw new InvalidParamException("negative-value",
+			    val.toString(), ac);
+		}
+		value = val;
+	    } else if (val instanceof CssNumber) {
+		value = ((CssNumber) val).getLength();
+	    } else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+
+	    expression.next();
+	}
+    }
+
+    public MediaMaxDeviceWidth(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property.
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property.
+     */
+    public String getPropertyName() {
+	return "max-device-width";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+		if (value != null) {
+			return value.toString();
+		} else {
+			return null;
+		}
+    }
+
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css3Style style0 = (Css3Style) style;
+	if (style0.mediaMaxDeviceWidth != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.mediaMaxDeviceWidth = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getMediaMaxDeviceWidth();
+	} else {
+	    return ((Css3Style) style).mediaMaxDeviceWidth;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof MediaMaxDeviceWidth && value.equals(((MediaMaxDeviceWidth) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/MediaMaxHeight.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,150 @@
+//
+// $Id: MediaMaxHeight.java,v 1.3 2005-09-14 15:15:04 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 org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public class MediaMaxHeight extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new MediaMaxHeight
+     */
+    public MediaMaxHeight() {
+		//empty
+    }
+
+    /**
+     * Create a new MediaMaxHeight.
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public MediaMaxHeight(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = null;
+
+	if (expression != null) {
+	    val = expression.getValue();
+	}
+
+	setByUser();
+
+	if (val != null) {
+	    if (val instanceof CssLength || val instanceof CssPercentage) {
+		float f = ((Float) val.get()).floatValue();
+		if (f < 0) {
+		    throw new InvalidParamException("negative-value",
+			    val.toString(), ac);
+		}
+		value = val;
+	    } else if (val instanceof CssNumber) {
+		value = ((CssNumber) val).getLength();
+	    } else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+
+	    expression.next();
+	}
+    }
+
+    public MediaMaxHeight(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property.
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property.
+     */
+    public String getPropertyName() {
+	return "max-height";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+		if (value != null) {
+			return value.toString();
+		} else {
+			return null;
+		}
+    }
+
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css3Style style0 = (Css3Style) style;
+	if (style0.mediaMaxHeight != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.mediaMaxHeight = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getMediaMaxHeight();
+	} else {
+	    return ((Css3Style) style).mediaMaxHeight;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof MediaMaxHeight && value.equals(((MediaMaxHeight) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/MediaMaxMonochrome.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,148 @@
+//
+// $Id: MediaMaxMonochrome.java,v 1.3 2005-09-14 15:15:04 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 org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public class MediaMaxMonochrome extends CssProperty implements CssOperator {
+
+    CssValue value;
+
+    /**
+     * Create a new MediaMaxMonochrome
+     */
+    public MediaMaxMonochrome() {
+		//empty
+    }
+
+    /**
+     * Create a new MediaMaxMonochrome.
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public MediaMaxMonochrome(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = null;
+
+	if (expression != null) {
+	    val = expression.getValue();
+	}
+
+	setByUser();
+	char op = SPACE;
+
+	if (val != null) {
+	    if (val instanceof CssNumber) {
+		if (((CssNumber) val).isInteger()) {
+		    value = val;
+		} else {
+		    throw new InvalidParamException("value", expression.getValue(),
+			    getPropertyName(), ac);
+		}
+	    } else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+
+	    expression.next();
+	}
+    }
+
+    public MediaMaxMonochrome(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property.
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property.
+     */
+    public String getPropertyName() {
+	return "max-monochrome";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+		if (value != null) {
+			return value.toString();
+		} else {
+			return null;
+		}
+    }
+
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css3Style style0 = (Css3Style) style;
+	if (style0.mediaMaxMonochrome != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.mediaMaxMonochrome = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getMediaMaxMonochrome();
+	} else {
+	    return ((Css3Style) style).mediaMaxMonochrome;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof MediaMaxMonochrome && value.equals(((MediaMaxMonochrome) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/MediaMaxResolution.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,141 @@
+//
+// $Id: MediaMaxResolution.java,v 1.3 2005-09-14 15:15:04 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 org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssResolution;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public class MediaMaxResolution extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new MediaMaxResolution
+     */
+    public MediaMaxResolution() {
+		//empty
+    }
+
+    /**
+     * Create a new MediaMaxResolution.
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public MediaMaxResolution(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = null;
+
+	if (expression != null) {
+	    val = expression.getValue();
+	}
+
+	setByUser();
+
+	if (val != null) {
+	    if (val instanceof CssResolution) {
+		value = val;
+	    } else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+
+	    expression.next();
+	}
+    }
+
+    public MediaMaxResolution(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property.
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property.
+     */
+    public String getPropertyName() {
+	return "max-resolution";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+		if (value != null) {
+			return value.toString();
+		} else {
+			return null;
+		}
+    }
+
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css3Style style0 = (Css3Style) style;
+	if (style0.mediaMaxResolution != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.mediaMaxResolution = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getMediaMaxResolution();
+	} else {
+	    return ((Css3Style) style).mediaMaxResolution;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof MediaMaxResolution && value.equals(((MediaMaxResolution) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/MediaMaxWidth.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,150 @@
+//
+// $Id: MediaMaxWidth.java,v 1.3 2005-09-14 15:15:04 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 org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public class MediaMaxWidth extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new MediaMaxWidth
+     */
+    public MediaMaxWidth() {
+		//empty
+    }
+
+    /**
+     * Create a new MediaMaxWidth.
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public MediaMaxWidth(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = null;
+
+	if (expression != null) {
+	    val = expression.getValue();
+	}
+
+	setByUser();
+
+	if (val != null) {
+	    if (val instanceof CssLength || val instanceof CssPercentage) {
+		float f = ((Float) val.get()).floatValue();
+		if (f < 0) {
+		    throw new InvalidParamException("negative-value",
+			    val.toString(), ac);
+		}
+		value = val;
+	    } else if (val instanceof CssNumber) {
+		value = ((CssNumber) val).getLength();
+	    } else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+
+	    expression.next();
+	}
+    }
+
+    public MediaMaxWidth(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property.
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property.
+     */
+    public String getPropertyName() {
+	return "max-width";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+		if (value != null) {
+			return value.toString();
+		} else {
+			return null;
+		}
+    }
+
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css3Style style0 = (Css3Style) style;
+	if (style0.mediaMaxWidth != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.mediaMaxWidth = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getMediaMaxWidth();
+	} else {
+	    return ((Css3Style) style).mediaMaxWidth;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof MediaMaxWidth && value.equals(((MediaMaxWidth) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/MediaMinColor.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,146 @@
+//
+// $Id: MediaMinColor.java,v 1.3 2005-09-14 15:15:04 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 org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public class MediaMinColor extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new MediaMinColor
+     */
+    public MediaMinColor() {
+		//empty
+    }
+
+    /**
+     * Create a new MediaMinColor.
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public MediaMinColor(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = null;
+
+	if (expression != null) {
+	    val = expression.getValue();
+	}
+
+	setByUser();
+
+	if (val != null) {
+	    if (val instanceof CssNumber) {
+		if (((CssNumber) val).isInteger()) {
+		    value = val;
+		} else {
+		    throw new InvalidParamException("value", expression.getValue(),
+			    getPropertyName(), ac);
+		}
+	    } else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+
+	    expression.next();
+	}
+    }
+
+    public MediaMinColor(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property.
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property.
+     */
+    public String getPropertyName() {
+	return "min-color";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+		if (value != null) {
+			return value.toString();
+		} else {
+			return null;
+		}
+    }
+
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css3Style style0 = (Css3Style) style;
+	if (style0.mediaMinColor != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.mediaMinColor = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getMediaMinColor();
+	} else {
+	    return ((Css3Style) style).mediaMinColor;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof MediaMinColor && value.equals(((MediaMinColor) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/MediaMinColorIndex.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,148 @@
+//
+// $Id: MediaMinColorIndex.java,v 1.3 2005-09-14 15:15:04 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 org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public class MediaMinColorIndex extends CssProperty implements CssOperator {
+
+    CssValue value;
+
+    /**
+     * Create a new MediaMinColorIndex
+     */
+    public MediaMinColorIndex() {
+		//empty
+    }
+
+    /**
+     * Create a new MediaMinColorIndex.
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public MediaMinColorIndex(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	CssValue val = null;
+
+	if (expression != null) {
+	    val = expression.getValue();
+	}
+
+	setByUser();
+	char op = SPACE;
+
+	if (val != null) {
+	    if (val instanceof CssNumber) {
+		if (((CssNumber) val).isInteger()) {
+		    value = val;
+		} else {
+		    throw new InvalidParamException("value", expression.getValue(),
+			    getPropertyName(), ac);
+		}
+	    } else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+
+	    expression.next();
+	}
+    }
+
+    public MediaMinColorIndex(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property.
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property.
+     */
+    public String getPropertyName() {
+	return "min-color-index";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+		if (value != null) {
+			return value.toString();
+		} else {
+			return null;
+		}
+    }
+
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css3Style style0 = (Css3Style) style;
+	if (style0.mediaMinColorIndex != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.mediaMinColorIndex = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getMediaMinColorIndex();
+	} else {
+	    return ((Css3Style) style).mediaMinColorIndex;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof MediaMinColorIndex && value.equals(((MediaMinColorIndex) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/MediaMinDeviceAspectRatio.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,178 @@
+//
+// $Id: MediaMinDeviceAspectRatio.java,v 1.3 2005-09-14 15:15:04 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 org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public class MediaMinDeviceAspectRatio extends CssProperty implements CssOperator {
+
+    String value = "";
+
+    /**
+     * Create a new MediaMinDeviceAspectRatio
+     */
+    public MediaMinDeviceAspectRatio() {
+		//empty
+    }
+
+    /**
+     * Create a new MediaMinDeviceAspectRatio.
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public MediaMinDeviceAspectRatio(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 2) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = null;
+
+	if (expression != null) {
+	    val = expression.getValue();
+	}
+
+	setByUser();
+	char op = SPACE;
+
+	if (val != null) {
+	    if (val instanceof CssNumber) {
+		if (((CssNumber) val).isInteger()) {
+		    value = val.toString();
+		} else {
+		    throw new InvalidParamException("value", expression.getValue(),
+			    getPropertyName(), ac);
+		}
+	    } else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+
+	    op = expression.getOperator();
+	    expression.next();
+	    val = expression.getValue();
+
+	    if (op == SLASH && val != null) {
+
+		if (val instanceof CssNumber) {
+		    if (((CssNumber) val).isInteger()) {
+			value += "/" + val.toString();
+		    } else {
+			throw new InvalidParamException("value", expression.getValue(),
+				getPropertyName(), ac);
+		    }
+		} else {
+		    throw new InvalidParamException("value", expression.getValue(),
+			    getPropertyName(), ac);
+		}
+
+
+	    } else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+
+	    expression.next();
+
+	}
+    }
+
+    public MediaMinDeviceAspectRatio(ApplContext ac, CssExpression expression)
+    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property.
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property.
+     */
+    public String getPropertyName() {
+	return "min-device-aspect-ratio";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+		return false;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+		if (value.equals("")) {
+			return null;
+		} else {
+			return value;
+		}
+    }
+
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css3Style style0 = (Css3Style) style;
+	if (style0.mediaMinDeviceAspectRatio != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.mediaMinDeviceAspectRatio = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getMediaMinDeviceAspectRatio();
+	} else {
+	    return ((Css3Style) style).mediaMinDeviceAspectRatio;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof MediaMinDeviceAspectRatio && value.equals(((MediaMinDeviceAspectRatio) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/MediaMinDeviceHeight.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,155 @@
+//
+// $Id: MediaMinDeviceHeight.java,v 1.3 2005-09-14 15:15:04 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 org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public class MediaMinDeviceHeight extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new MediaMinDeviceHeight
+     */
+    public MediaMinDeviceHeight() {
+		//empty
+    }
+
+    /**
+     * Create a new MediaMinDeviceHeight.
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public MediaMinDeviceHeight(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = null;
+
+	if (expression != null) {
+	    val = expression.getValue();
+	}
+
+	setByUser();
+
+	if (val != null) {
+	    if (val instanceof CssLength || val instanceof CssPercentage) {
+		float f = ((Float) val.get()).floatValue();
+		if (f < 0) {
+		    throw new InvalidParamException("negative-value",
+			    val.toString(), ac);
+		}
+		value = val;
+	    } else if (val instanceof CssNumber) {
+		value = ((CssNumber) val).getLength();
+	    } else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+
+	    expression.next();
+	}
+    }
+
+    public MediaMinDeviceHeight(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property.
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property.
+     */
+    public String getPropertyName() {
+	return "min-device-height";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+		if (value != null) {
+			return value.toString();
+		} else {
+			return null;
+		}
+    }
+
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css3Style style0 = (Css3Style) style;
+	if (style0.mediaMinDeviceHeight != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.mediaMinDeviceHeight = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getMediaMinDeviceHeight();
+	} else {
+	    return ((Css3Style) style).mediaMinDeviceHeight;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof MediaMinDeviceHeight && value.equals(((MediaMinDeviceHeight) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/MediaMinDeviceWidth.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,155 @@
+//
+// $Id: MediaMinDeviceWidth.java,v 1.3 2005-09-14 15:15:04 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 org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public class MediaMinDeviceWidth extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new MediaMinDeviceWidth
+     */
+    public MediaMinDeviceWidth() {
+		//empty
+    }
+
+    /**
+     * Create a new MediaMinDeviceWidth.
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public MediaMinDeviceWidth(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = null;
+
+	if (expression != null) {
+	    val = expression.getValue();
+	}
+
+	setByUser();
+
+	if (val != null) {
+	    if (val instanceof CssLength || val instanceof CssPercentage) {
+		float f = ((Float) val.get()).floatValue();
+		if (f < 0) {
+		    throw new InvalidParamException("negative-value",
+			    val.toString(), ac);
+		}
+		value = val;
+	    } else if (val instanceof CssNumber) {
+		value = ((CssNumber) val).getLength();
+	    } else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+
+	    expression.next();
+	}
+    }
+
+    public MediaMinDeviceWidth(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property.
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property.
+     */
+    public String getPropertyName() {
+	return "min-device-width";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+		if (value != null) {
+			return value.toString();
+		} else {
+			return null;
+		}
+    }
+
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css3Style style0 = (Css3Style) style;
+	if (style0.mediaMinDeviceWidth != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.mediaMinDeviceWidth = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getMediaMinDeviceWidth();
+	} else {
+	    return ((Css3Style) style).mediaMinDeviceWidth;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof MediaMinDeviceWidth && value.equals(((MediaMinDeviceWidth) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/MediaMinHeight.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,155 @@
+//
+// $Id: MediaMinHeight.java,v 1.3 2005-09-14 15:15:04 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 org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public class MediaMinHeight extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new MediaMinHeight
+     */
+    public MediaMinHeight() {
+		//empty
+    }
+
+    /**
+     * Create a new MediaMinHeight.
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public MediaMinHeight(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = null;
+
+	if (expression != null) {
+	    val = expression.getValue();
+	}
+
+	setByUser();
+
+	if (val != null) {
+	    if (val instanceof CssLength || val instanceof CssPercentage) {
+		float f = ((Float) val.get()).floatValue();
+		if (f < 0) {
+		    throw new InvalidParamException("negative-value",
+			    val.toString(), ac);
+		}
+		value = val;
+	    } else if (val instanceof CssNumber) {
+		value = ((CssNumber) val).getLength();
+	    } else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+
+	    expression.next();
+	}
+    }
+
+    public MediaMinHeight(ApplContext ac, CssExpression expression)
+    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property.
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property.
+     */
+    public String getPropertyName() {
+	return "min-height";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+		if (value != null) {
+			return value.toString();
+		} else {
+			return null;
+		}
+    }
+
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css3Style style0 = (Css3Style) style;
+	if (style0.mediaMinHeight != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.mediaMinHeight = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getMediaMinHeight();
+	} else {
+	    return ((Css3Style) style).mediaMinHeight;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof MediaMinHeight && value.equals(((MediaMinHeight) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/MediaMinMonochrome.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,153 @@
+//
+// $Id: MediaMinMonochrome.java,v 1.3 2005-09-14 15:15:04 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 org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public class MediaMinMonochrome extends CssProperty implements CssOperator {
+
+    CssValue value;
+
+    /**
+     * Create a new MediaMinMonochrome
+     */
+    public MediaMinMonochrome() {
+		//empty
+    }
+
+    /**
+     * Create a new MediaMinMonochrome.
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public MediaMinMonochrome(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = null;
+
+	if (expression != null) {
+	    val = expression.getValue();
+	}
+
+	setByUser();
+	//char op = SPACE;
+
+	if (val != null) {
+	    if (val instanceof CssNumber) {
+		if (((CssNumber) val).isInteger()) {
+		    value = val;
+		} else {
+		    throw new InvalidParamException("value", expression.getValue(),
+			    getPropertyName(), ac);
+		}
+	    } else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+
+	    expression.next();
+	}
+    }
+
+    public MediaMinMonochrome(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property.
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property.
+     */
+    public String getPropertyName() {
+	return "min-monochrome";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+		if (value != null) {
+			return value.toString();
+		} else {
+			return null;
+		}
+    }
+
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css3Style style0 = (Css3Style) style;
+	if (style0.mediaMinMonochrome != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.mediaMinMonochrome = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getMediaMinMonochrome();
+	} else {
+	    return ((Css3Style) style).mediaMinMonochrome;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof MediaMinMonochrome && value.equals(((MediaMinMonochrome) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/MediaMinResolution.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,146 @@
+//
+// $Id: MediaMinResolution.java,v 1.3 2005-09-14 15:15:04 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 org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssResolution;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public class MediaMinResolution extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new MediaMinResolution
+     */
+    public MediaMinResolution() {
+		//empty
+    }
+
+    /**
+     * Create a new MediaMinResolution.
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public MediaMinResolution(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = null;
+
+	if (expression != null) {
+	    val = expression.getValue();
+	}
+
+	setByUser();
+
+	if (val != null) {
+	    if (val instanceof CssResolution) {
+		value = val;
+	    } else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+
+	    expression.next();
+	}
+    }
+
+    public MediaMinResolution(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property.
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property.
+     */
+    public String getPropertyName() {
+	return "min-resolution";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+		if (value != null) {
+			return value.toString();
+		} else {
+			return null;
+		}
+    }
+
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css3Style style0 = (Css3Style) style;
+	if (style0.mediaMinResolution != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.mediaMinResolution = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getMediaMinResolution();
+	} else {
+	    return ((Css3Style) style).mediaMinResolution;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof MediaMinResolution && value.equals(((MediaMinResolution) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/MediaMinWidth.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,155 @@
+//
+// $Id: MediaMinWidth.java,v 1.3 2005-09-14 15:15:04 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 org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public class MediaMinWidth extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new MediaMinWidth
+     */
+    public MediaMinWidth() {
+		//empty
+    }
+
+    /**
+     * Create a new MediaMinWidth.
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public MediaMinWidth(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = null;
+
+	if (expression != null) {
+	    val = expression.getValue();
+	}
+
+	setByUser();
+
+	if (val != null) {
+	    if (val instanceof CssLength || val instanceof CssPercentage) {
+		float f = ((Float) val.get()).floatValue();
+		if (f < 0) {
+		    throw new InvalidParamException("negative-value",
+			    val.toString(), ac);
+		}
+		value = val;
+	    } else if (val instanceof CssNumber) {
+		value = ((CssNumber) val).getLength();
+	    } else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+
+	    expression.next();
+	}
+    }
+
+    public MediaMinWidth(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property.
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property.
+     */
+    public String getPropertyName() {
+	return "min-width";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+		if (value != null) {
+			return value.toString();
+		} else {
+			return null;
+		}
+    }
+
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css3Style style0 = (Css3Style) style;
+	if (style0.mediaMinWidth != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.mediaMinWidth = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getMediaMinWidth();
+	} else {
+	    return ((Css3Style) style).mediaMinWidth;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof MediaMinWidth && value.equals(((MediaMinWidth) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/MediaMonochrome.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,153 @@
+//
+// $Id: MediaMonochrome.java,v 1.3 2005-09-14 15:15:04 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 org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public class MediaMonochrome extends CssProperty implements CssOperator {
+
+    CssValue value;
+
+    /**
+     * Create a new MediaMonochrome
+     */
+    public MediaMonochrome() {
+		//empty
+    }
+
+    /**
+     * Create a new MediaMonochrome.
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public MediaMonochrome(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = null;
+
+	if (expression != null) {
+	    val = expression.getValue();
+	}
+
+	setByUser();
+	//char op = SPACE;
+
+	if (val != null) {
+	    if (val instanceof CssNumber) {
+		if (((CssNumber) val).isInteger()) {
+		    value = val;
+		} else {
+		    throw new InvalidParamException("value", expression.getValue(),
+			    getPropertyName(), ac);
+		}
+	    } else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+
+	    expression.next();
+	}
+    }
+
+    public MediaMonochrome(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property.
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property.
+     */
+    public String getPropertyName() {
+	return "monochrome";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+		if (value != null) {
+			return value.toString();
+		} else {
+			return null;
+		}
+    }
+
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css3Style style0 = (Css3Style) style;
+	if (style0.mediaMonochrome != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.mediaMonochrome = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getMediaMonochrome();
+	} else {
+	    return ((Css3Style) style).mediaMonochrome;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof MediaMonochrome && value.equals(((MediaMonochrome) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/MediaResolution.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,146 @@
+//
+// $Id: MediaResolution.java,v 1.3 2005-09-14 15:15:04 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 org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssResolution;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public class MediaResolution extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new MediaResolution
+     */
+    public MediaResolution() {
+		//empty
+    }
+
+    /**
+     * Create a new MediaResolution.
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public MediaResolution(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = null;
+
+	if (expression != null) {
+	    val = expression.getValue();
+	}
+
+	setByUser();
+
+	if (val != null) {
+	    if (val instanceof CssResolution) {
+		value = val;
+	    } else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+
+	    expression.next();
+	}
+    }
+
+    public MediaResolution(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property.
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property.
+     */
+    public String getPropertyName() {
+	return "resolution";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+		if (value != null) {
+			return value.toString();
+		} else {
+			return null;
+		}
+    }
+
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css3Style style0 = (Css3Style) style;
+	if (style0.mediaResolution != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.mediaResolution = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getMediaResolution();
+	} else {
+	    return ((Css3Style) style).mediaResolution;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof MediaResolution && value.equals(((MediaResolution) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/MediaScan.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,153 @@
+//
+// $Id: MediaScan.java,v 1.3 2005-09-14 15:15:04 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 org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public class MediaScan extends CssProperty {
+
+    CssValue value;
+    CssIdent progressive = new CssIdent("progressive");
+    CssIdent interlace = new CssIdent("interlace");
+
+    /**
+     * Create a new MediaScan
+     */
+    public MediaScan() {
+		//empty
+    }
+
+    /**
+     * Create a new MediaScan.
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public MediaScan(ApplContext ac, CssExpression expression, boolean check)
+    	throws InvalidParamException {
+	CssValue val = null;
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	if (expression != null) {
+	    val = expression.getValue();
+	}
+
+	setByUser();
+
+	if (val != null) {
+	    if (val instanceof CssIdent) {
+		if (val.equals(progressive) || val.equals(interlace)) {
+		    value = val;
+		} else {
+		    throw new InvalidParamException("value", expression.getValue(),
+			    getPropertyName(), ac);
+		}
+
+	    } else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+
+	    expression.next();
+	}
+    }
+
+    public MediaScan(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property.
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property.
+     */
+    public String getPropertyName() {
+	return "scan";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+		if (value != null) {
+			return value.toString();
+		} else {
+			return null;
+		}
+    }
+
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css3Style style0 = (Css3Style) style;
+	if (style0.mediaScan != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.mediaScan = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getMediaScan();
+	} else {
+	    return ((Css3Style) style).mediaScan;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof MediaScan && value.equals(((MediaScan) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/css3/MediaWidth.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,155 @@
+//
+// $Id: MediaWidth.java,v 1.3 2005-09-14 15:15:04 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 org.w3c.css.properties.css3;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ * @version $Revision: 1.3 $
+ */
+public class MediaWidth extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new MediaWidth
+     */
+    public MediaWidth() {
+	//empty
+    }
+
+    /**
+     * Create a new MediaWidth.
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public MediaWidth(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = null;
+
+	if (expression != null) {
+	    val = expression.getValue();
+	}
+
+	setByUser();
+
+	if (val != null) {
+	    if (val instanceof CssLength || val instanceof CssPercentage) {
+		float f = ((Float) val.get()).floatValue();
+		if (f < 0) {
+		    throw new InvalidParamException("negative-value",
+			    val.toString(), ac);
+		}
+		value = val;
+	    } else if (val instanceof CssNumber) {
+		value = ((CssNumber) val).getLength();
+	    } else {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+
+	    expression.next();
+	}
+    }
+
+    public MediaWidth(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property.
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property.
+     */
+    public String getPropertyName() {
+	return "width";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (value != null) {
+	    return value.toString();
+	} else {
+	    return null;
+	}
+    }
+
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css3Style style0 = (Css3Style) style;
+	if (style0.mediaWidth != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.mediaWidth = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css3Style) style).getMediaWidth();
+	} else {
+	    return ((Css3Style) style).mediaWidth;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof MediaWidth && value.equals(((MediaWidth) property).value));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/paged/Css2Style.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,238 @@
+//
+// $Id: Css2Style.java,v 1.2 2005-09-14 15:15:26 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 org.w3c.css.properties.paged;
+
+import org.w3c.css.parser.CssPrinterStyle;
+
+
+/**
+ * @version $Revision: 1.2 $
+ */
+public class Css2Style extends org.w3c.css.properties.css2.user.Css2Style {
+
+    Size size;
+    Marks marks;
+
+    PageBreakBefore pageBreakBefore;
+    PageBreakBeforeATSC pageBreakBeforeATSC;
+    PageBreakAfter pageBreakAfter;
+    PageBreakAfterATSC pageBreakAfterATSC;
+    PageBreakInside pageBreakInside;
+    PageBreakInsideATSC pageBreakInsideATSC;
+
+    Page page;
+    PageATSC pageATSC;
+    Orphans orphans;
+    OrphansATSC orphansATSC;
+    Widows widows;
+    WidowsATSC widowsATSC;
+
+    /**
+     * Get the size property
+     */
+    public final Size getSize() {
+	if (size == null) {
+	    size = (Size) style.CascadingOrder(new Size(),
+						   style, selector);
+	}
+	return size;
+    }
+
+    /**
+     * Get the marks property
+     */
+    public final Marks getMarks() {
+	if (marks == null) {
+	    marks = (Marks) style.CascadingOrder(new Marks(),
+						   style, selector);
+	}
+	return marks;
+    }
+
+    /**
+     * Get the page-break-before property
+     */
+    public final PageBreakBefore getPageBreakBefore() {
+	if (pageBreakBefore == null) {
+	    pageBreakBefore =
+		(PageBreakBefore) style.CascadingOrder(new PageBreakBefore(),
+						       style, selector);
+	}
+	return pageBreakBefore;
+    }
+
+    public final PageBreakBeforeATSC getPageBreakBeforeATSC() {
+	if (pageBreakBeforeATSC == null) {
+	    pageBreakBeforeATSC =
+		(PageBreakBeforeATSC) style.CascadingOrder(new PageBreakBeforeATSC(),
+						       style, selector);
+	}
+	return pageBreakBeforeATSC;
+    }
+
+    /**
+     * Get the page-break-after property
+     */
+    public final PageBreakAfter getPageBreakAfter() {
+	if (pageBreakAfter == null) {
+	    pageBreakAfter =
+		(PageBreakAfter) style.CascadingOrder(new PageBreakAfter(),
+						       style, selector);
+	}
+	return pageBreakAfter;
+    }
+
+    public final PageBreakAfterATSC getPageBreakAfterATSC() {
+	if (pageBreakAfterATSC == null) {
+	    pageBreakAfterATSC =
+		(PageBreakAfterATSC) style.CascadingOrder(new PageBreakAfterATSC(),
+						       style, selector);
+	}
+	return pageBreakAfterATSC;
+    }
+
+    /**
+     * Get the page-break-inside property
+     */
+    public final PageBreakInside getPageBreakInside() {
+	if (pageBreakInside == null) {
+	    pageBreakInside =
+		(PageBreakInside) style.CascadingOrder(new PageBreakInside(),
+						       style, selector);
+	}
+	return pageBreakInside;
+    }
+
+    public final PageBreakInsideATSC getPageBreakInsideATSC() {
+	if (pageBreakInsideATSC == null) {
+	    pageBreakInsideATSC =
+		(PageBreakInsideATSC) style.CascadingOrder(new PageBreakInsideATSC(),
+						       style, selector);
+	}
+	return pageBreakInsideATSC;
+    }
+
+
+    /**
+     * Get the page property
+     */
+    public final Page getPage() {
+	if (page == null) {
+	    page =
+		(Page) style.CascadingOrder(new Page(),
+						       style, selector);
+	}
+	return page;
+    }
+
+    public final PageATSC getPageATSC() {
+	if (pageATSC == null) {
+	    pageATSC =
+		(PageATSC) style.CascadingOrder(new PageATSC(),
+						       style, selector);
+	}
+	return pageATSC;
+    }
+
+    /**
+     * Get the orphans property
+     */
+    public final Orphans getOrphans() {
+	if (orphans == null) {
+	    orphans =
+		(Orphans) style.CascadingOrder(new Orphans(),
+						       style, selector);
+	}
+	return orphans;
+    }
+
+    public final OrphansATSC getOrphansATSC() {
+	if (orphansATSC == null) {
+	    orphansATSC =
+		(OrphansATSC) style.CascadingOrder(new OrphansATSC(),
+						       style, selector);
+	}
+	return orphansATSC;
+    }
+
+    /**
+     * Get the widows property
+     */
+    public final Widows getWidows() {
+	if (widows == null) {
+	    widows =
+		(Widows) style.CascadingOrder(new Widows(),
+						       style, selector);
+	}
+	return widows;
+    }
+
+    public final WidowsATSC getWidowsATSC() {
+	if (widowsATSC == null) {
+	    widowsATSC =
+		(WidowsATSC) style.CascadingOrder(new WidowsATSC(),
+						       style, selector);
+	}
+	return widowsATSC;
+    }
+
+    /**
+     * Print this style.
+     *
+     * @param printer The printer interface.
+     */
+    public void print(CssPrinterStyle printer) {
+	super.print(printer);
+
+	if (size != null) {
+	    size.print(printer);
+	}
+	if (marks != null) {
+	    marks.print(printer);
+	}
+ 	if (pageBreakBefore != null) {
+	    pageBreakBefore.print(printer);
+	}
+	if (pageBreakBeforeATSC != null) {
+	    pageBreakBeforeATSC.print(printer);
+	}
+
+ 	if (pageBreakAfter != null) {
+	    pageBreakAfter.print(printer);
+	}
+	if (pageBreakAfterATSC != null) {
+	    pageBreakAfterATSC.print(printer);
+	}
+ 	if (pageBreakInside != null) {
+	    pageBreakInside.print(printer);
+	}
+	if (pageBreakInsideATSC != null) {
+	    pageBreakInsideATSC.print(printer);
+	}
+  	if (page != null) {
+	    page.print(printer);
+	}
+	if (pageATSC != null) {
+	    pageATSC.print(printer);
+	}
+  	if (orphans != null) {
+	    orphans.print(printer);
+	}
+	if (orphansATSC != null) {
+	    orphansATSC.print(printer);
+	}
+  	if (widows != null) {
+	    widows.print(printer);
+	}
+	if (widowsATSC != null) {
+	    widowsATSC.print(printer);
+	}
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/paged/Makefile	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,33 @@
+SRCS = Css2Properties.java Css2Property.java Css2Style.java
+
+OBJS = $(SRCS:.java=.class)
+
+PACKAGE = org.w3c.css.properties2
+JAVAC = /usr/local/java11/bin/javac
+JAVADOC = javadoc
+JAVADOCFLAGS = -version -d docs -protected
+JAVACFLAGS = 
+MAKEDEPEND = jmakedepend
+
+.SUFFIXES: .class .java
+.java.class:; $(JAVAC) $(JAVACFLAGS) $<
+
+all: $(OBJS)
+
+javadoc:; $(JAVADOC) $(JAVADOCFLAGS) $(PACKAGE)
+
+clean:; -rm -f $(OBJS) *~ core
+
+depend:; $(MAKEDEPEND) $(SRCS)
+
+# DO NOT DELETE THIS LINE -- make depend depends on it.
+Css2Style.class:: Css2Style.java\
+	/usr/local/java11/lib/classes.zip\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.util/Warnings.class\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.parser/CssPrinterStyle.class\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.aural/ACssStyle.class
+Css2Properties.class:: Css2Properties.java\
+	/usr/local/java11/lib/classes.zip\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.properties/CssProperty.class
+Css2Property.class:: Css2Property.java\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.aural/ACssProperty.class
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/paged/Marks.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,203 @@
+//
+// $Id: Marks.java,v 1.2 2005-09-14 15:15:26 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 org.w3c.css.properties.paged;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.2 $
+ */
+public class Marks extends CssProperty
+        implements CssOperator {
+
+    CssValue l1, l2;
+
+    private static CssIdent none = new CssIdent("none");
+    private static CssIdent crop = new CssIdent("crop");
+    private static CssIdent cross = new CssIdent("cross");
+
+    /**
+     * Create a new CssMarks
+     */
+    public Marks() {
+	l1 = none;
+    }
+
+    /**
+     * Create a new CssMarks
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public Marks(ApplContext ac, CssExpression expression, boolean check)
+	    throws InvalidParamException {
+
+	if(check && expression.getCount() > 2) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	char op = expression.getOperator();
+
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    if(expression.getCount() > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    l1 = inherit;
+	    expression.next();
+	    return;
+	} else if (val.equals(none)) {
+	    if(expression.getCount() > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    l1 = none;
+	    expression.next();
+	    return;
+	} else if (val.equals(crop)) {
+	    l1 = crop;
+	    expression.next();
+	    if (!expression.end()) {
+		val = expression.getValue();
+		if ((op == SPACE) && (val.equals(cross))) {
+		    l2 = cross;
+		    expression.next();
+		    return;
+		} else {
+		    throw new InvalidParamException("value",
+						    val.toString(),
+						    getPropertyName(), ac);
+		}
+	    }
+	    return;
+	} else if (val.equals(cross)) {
+	    l1 = cross;
+	    expression.next();
+	    if (!expression.end()) {
+		val = expression.getValue();
+		if ((op == SPACE) && (val.equals(crop))) {
+		    l2 = crop;
+		    expression.next();
+		    return;
+		} else {
+		    throw new InvalidParamException("value",
+						    val.toString(),
+						    getPropertyName(), ac);
+		}
+	    }
+	    return;
+	}
+
+	throw new InvalidParamException("value",
+					val.toString(), getPropertyName(), ac);
+    }
+
+    public Marks(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return null;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "marks";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return l1 == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (l2 != null) {
+	    return l1.toString() + " " + l2.toString();
+	} else {
+	    return l1.toString();
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.marks != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.marks = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getMarks();
+	} else {
+	    return ((Css2Style) style).marks;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof Marks
+		&& l1.equals(((Marks) property).l1)
+		    || l2.equals(((Marks) property).l2));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return l1 == none;
+    }
+
+    CssLength getLength(CssValue val) throws InvalidParamException {
+        if (val instanceof CssLength) {
+            return (CssLength) val;
+        } else if (val instanceof CssNumber) {
+            return ((CssNumber) val).getLength();
+        } else {
+            return null;
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/paged/Orphans.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,148 @@
+//
+// $Id: Orphans.java,v 1.2 2005-09-14 15:15:26 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 org.w3c.css.properties.paged;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+
+/**
+ */
+public class Orphans extends PagedProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new Orphans
+     */
+    public Orphans() {
+	value = new CssNumber(null, 2);
+    }
+
+    /**
+     * Creates a new CssOrphans
+     *
+     * @param expression the expression of the size
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public Orphans(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	    expression.next();
+	    return;
+	} else if (val instanceof CssNumber) {
+	    if (((CssNumber) val).isInteger()) {
+		value = val;
+		expression.next();
+		return;
+	    } else {
+		throw new InvalidParamException("integer",
+						val.toString(),
+						getPropertyName(), ac);
+	    }
+	}
+
+	throw new InvalidParamException("value",
+					    val.toString(),
+					    getPropertyName(), ac);
+    }
+
+    public Orphans(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "orphans";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.orphans != null) {
+	    style.addRedefinitionWarning(ac, this);
+	}
+	style0.orphans = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getOrphans();
+	} else {
+	    return ((Css2Style) style).orphans;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	if (value == null) {
+	    return (property instanceof Orphans &&
+		    ((Orphans) property).value == value);
+	} else {
+	    return (property instanceof Orphans &&
+		    ((Orphans) property).value.equals(value));
+	}
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/paged/OrphansATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,150 @@
+//
+// $Id: OrphansATSC.java,v 1.2 2005-09-14 15:15:26 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 org.w3c.css.properties.paged;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+
+/**
+ */
+public class OrphansATSC extends PagedProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new OrphansATSC
+     */
+    public OrphansATSC() {
+	value = new CssNumber(null, 2);
+    }
+
+    /**
+     * Creates a new CssOrphansATSC
+     *
+     * @param expression the expression of the size
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public OrphansATSC(ApplContext ac, CssExpression expression,boolean check)
+    	throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	setByUser();
+
+	ac.getFrame().addWarning("atsc", val.toString());
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	    expression.next();
+	    return;
+	} else if (val instanceof CssNumber) {
+	    if (((CssNumber) val).isInteger()) {
+		value = val;
+		expression.next();
+		return;
+	    } else {
+		throw new InvalidParamException("integer",
+						val.toString(),
+						getPropertyName(), ac);
+	    }
+	}
+
+	throw new InvalidParamException("value",
+					    val.toString(),
+					    getPropertyName(), ac);
+    }
+
+    public OrphansATSC(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "orphans";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.orphansATSC != null) {
+	    style.addRedefinitionWarning(ac, this);
+	}
+	style0.orphansATSC = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getOrphansATSC();
+	} else {
+	    return ((Css2Style) style).orphansATSC;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	if (value == null) {
+	    return (property instanceof OrphansATSC &&
+		    ((OrphansATSC) property).value == value);
+	} else {
+	    return (property instanceof OrphansATSC &&
+		    ((OrphansATSC) property).value.equals(value));
+	}
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/paged/Page.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,159 @@
+//
+// $Id: Page.java,v 1.2 2005-09-14 15:15:26 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 org.w3c.css.properties.paged;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.2 $
+ */
+public class Page extends CssProperty
+    implements CssOperator {
+
+    CssValue value;
+    CssValue pseudo;
+
+    private static CssIdent auto = new CssIdent("auto");
+
+
+    /**
+     * Create a new CssPage
+     */
+    public Page() {
+	value = auto;
+    }
+
+    /**
+     * Create a new CssPage
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public Page(ApplContext ac, CssExpression expression, boolean check)
+	throws InvalidParamException {
+
+	if(check && expression.getCount() > 2) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	char op = expression.getOperator();
+
+	setByUser();
+
+	if (val.equals(auto)) {
+	    if(expression.getCount() > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    value = val;
+	    expression.next();
+	} else if (val instanceof CssIdent) {
+	    value = val;
+	    expression.next();
+	    if (!expression.end()) {
+		val = expression.getValue();
+		if ((op == SPACE) && (val instanceof CssIdent)) {
+		    pseudo = val;
+		    expression.next();
+		    return;
+		} else {
+		    throw new InvalidParamException("value",
+			    val.toString(),
+			    getPropertyName(), ac);
+		}
+	    }
+	} else {
+	    throw new InvalidParamException("value",
+		    val.toString(), getPropertyName(), ac);
+	}
+    }
+
+    public Page(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return null;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "page";
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (pseudo != null) {
+	    return value + " " + pseudo;
+	} else {
+	    return value.toString();
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.page != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.page = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getPage();
+	} else {
+	    return ((Css2Style) style).page;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof Page
+		&& value == ((Page) property).value
+		&& ((pseudo == null)
+		    || pseudo.equals(((Page) property).pseudo)));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == auto;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/paged/PageATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,161 @@
+//
+// $Id: PageATSC.java,v 1.2 2005-09-14 15:15:26 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 org.w3c.css.properties.paged;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.2 $
+ */
+public class PageATSC extends CssProperty
+    implements CssOperator {
+
+    CssValue value;
+    CssValue pseudo;
+
+    private static CssIdent auto = new CssIdent("auto");
+
+
+    /**
+     * Create a new CssPageATSC
+     */
+    public PageATSC() {
+	value = auto;
+    }
+
+    /**
+     * Create a new CssPageATSC
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public PageATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 2) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	char op = expression.getOperator();
+
+	setByUser();
+
+	ac.getFrame().addWarning("atsc", val.toString());
+
+	if (val.equals(auto)) {
+	    if(expression.getCount() > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    value = val;
+	    expression.next();
+	} else if (val instanceof CssIdent) {
+	    value = val;
+	    expression.next();
+	    if (!expression.end()) {
+		val = expression.getValue();
+		if ((op == SPACE) && (val instanceof CssIdent)) {
+		    pseudo = val;
+		    expression.next();
+		    return;
+		} else {
+		    throw new InvalidParamException("value",
+						    val.toString(),
+						    getPropertyName(), ac);
+		}
+	    }
+	} else {
+	    throw new InvalidParamException("value",
+					    val.toString(), getPropertyName(), ac);
+	}
+    }
+
+    public PageATSC(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return null;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "page";
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (pseudo != null) {
+	    return value + " " + pseudo;
+	} else {
+	    return value.toString();
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.pageATSC != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.pageATSC = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getPageATSC();
+	} else {
+	    return ((Css2Style) style).pageATSC;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof PageATSC
+		&& value == ((PageATSC) property).value
+		&& ((pseudo == null)
+		    || pseudo.equals(((PageATSC) property).pseudo)));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == auto;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/paged/PageBreakAfter.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,157 @@
+//
+// $Id: PageBreakAfter.java,v 1.2 2005-09-14 15:15:26 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 org.w3c.css.properties.paged;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.2 $
+ */
+public class PageBreakAfter extends CssProperty
+    implements CssOperator {
+
+    int value;
+
+    private static String PAGEBREAKAFTER[] = {
+	"auto", "always", "avoid", "left", "right", "inherit" };
+
+    private static int[] hash_values;
+
+
+    /**
+     * Create a new CssPageBreakAfter
+     */
+    public PageBreakAfter() {
+	value = 0;
+    }
+
+    /**
+     * Create a new CssPageBreakAfter
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public PageBreakAfter(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+//	char op = expression.getOperator();
+
+	setByUser();
+
+	if (val instanceof CssIdent) {
+	    int hash = val.hashCode();
+
+	    for (int i = 0; i < PAGEBREAKAFTER.length; i++) {
+		if (hash_values[i] == hash) {
+		    value = i;
+		    expression.next();
+		    return;
+		}
+	    }
+	}
+
+	throw new InvalidParamException("value",
+					val.toString(), getPropertyName(), ac);
+    }
+
+    public PageBreakAfter(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return null;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "page-break-after";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == PAGEBREAKAFTER.length - 1;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return PAGEBREAKAFTER[value];
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.pageBreakAfter != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.pageBreakAfter = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getPageBreakAfter();
+	} else {
+	    return ((Css2Style) style).pageBreakAfter;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof PageBreakAfter
+		&& value == ((PageBreakAfter) property).value);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == 0;
+    }
+
+    static {
+	hash_values = new int[PAGEBREAKAFTER.length];
+	for (int i=0; i<PAGEBREAKAFTER.length; i++)
+	    hash_values[i] = PAGEBREAKAFTER[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/paged/PageBreakAfterATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,159 @@
+//
+// $Id: PageBreakAfterATSC.java,v 1.2 2005-09-14 15:15:26 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 org.w3c.css.properties.paged;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.2 $
+ */
+public class PageBreakAfterATSC extends CssProperty
+    implements CssOperator {
+
+    int value;
+
+    private static String PAGEBREAKAFTER[] = {
+	"auto", "always", "avoid", "left", "right", "inherit" };
+
+    private static int[] hash_values;
+
+
+    /**
+     * Create a new CssPageBreakAfterATSC
+     */
+    public PageBreakAfterATSC() {
+	value = 0;
+    }
+
+    /**
+     * Create a new CssPageBreakAfterATSC
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public PageBreakAfterATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+//	char op = expression.getOperator();
+
+	setByUser();
+
+	ac.getFrame().addWarning("atsc", val.toString());
+
+	if (val instanceof CssIdent) {
+	    int hash = val.hashCode();
+
+	    for (int i = 0; i < PAGEBREAKAFTER.length; i++) {
+		if (hash_values[i] == hash) {
+		    value = i;
+		    expression.next();
+		    return;
+		}
+	    }
+	}
+
+	throw new InvalidParamException("value",
+					val.toString(), getPropertyName(), ac);
+    }
+
+    public PageBreakAfterATSC(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return null;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "page-break-after";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == PAGEBREAKAFTER.length - 1;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return PAGEBREAKAFTER[value];
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.pageBreakAfterATSC != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.pageBreakAfterATSC = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getPageBreakAfterATSC();
+	} else {
+	    return ((Css2Style) style).pageBreakAfterATSC;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof PageBreakAfterATSC
+		&& value == ((PageBreakAfterATSC) property).value);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == 0;
+    }
+
+    static {
+	hash_values = new int[PAGEBREAKAFTER.length];
+	for (int i=0; i<PAGEBREAKAFTER.length; i++)
+	    hash_values[i] = PAGEBREAKAFTER[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/paged/PageBreakBefore.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,157 @@
+//
+// $Id: PageBreakBefore.java,v 1.2 2005-09-14 15:15:26 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 org.w3c.css.properties.paged;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.2 $
+ */
+public class PageBreakBefore extends CssProperty
+    implements CssOperator {
+
+    int value;
+
+    private static String PAGEBREAKBEFORE[] = {
+	"auto", "always", "avoid", "left", "right", "inherit" };
+
+    private static int[] hash_values;
+
+
+    /**
+     * Create a new CssPageBreakBefore
+     */
+    public PageBreakBefore() {
+	value = 0;
+    }
+
+    /**
+     * Create a new CssPageBreakBefore
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public PageBreakBefore(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+//	char op = expression.getOperator();
+
+	setByUser();
+
+	if (val instanceof CssIdent) {
+	    int hash = val.hashCode();
+
+	    for (int i = 0; i < PAGEBREAKBEFORE.length; i++) {
+		if (hash_values[i] == hash) {
+		    value = i;
+		    expression.next();
+		    return;
+		}
+	    }
+	}
+
+	throw new InvalidParamException("value",
+					val.toString(), getPropertyName(), ac);
+    }
+
+    public PageBreakBefore(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return null;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "page-break-before";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == PAGEBREAKBEFORE.length - 1;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return PAGEBREAKBEFORE[value];
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.pageBreakBefore != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.pageBreakBefore = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getPageBreakBefore();
+	} else {
+	    return ((Css2Style) style).pageBreakBefore;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof PageBreakBefore
+		&& value == ((PageBreakBefore) property).value);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == 0;
+    }
+
+    static {
+	hash_values = new int[PAGEBREAKBEFORE.length];
+	for (int i=0; i<PAGEBREAKBEFORE.length; i++)
+	    hash_values[i] = PAGEBREAKBEFORE[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/paged/PageBreakBeforeATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,159 @@
+//
+// $Id: PageBreakBeforeATSC.java,v 1.2 2005-09-14 15:15:26 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 org.w3c.css.properties.paged;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.2 $
+ */
+public class PageBreakBeforeATSC extends CssProperty
+    implements CssOperator {
+
+    int value;
+
+    private static String PAGEBREAKBEFORE[] = {
+	"auto", "always", "avoid", "left", "right", "inherit" };
+
+    private static int[] hash_values;
+
+
+    /**
+     * Create a new CssPageBreakBeforeATSC
+     */
+    public PageBreakBeforeATSC() {
+	value = 0;
+    }
+
+    /**
+     * Create a new CssPageBreakBeforeATSC
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public PageBreakBeforeATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+//	char op = expression.getOperator();
+
+	setByUser();
+
+	ac.getFrame().addWarning("atsc", val.toString());
+
+	if (val instanceof CssIdent) {
+	    int hash = val.hashCode();
+
+	    for (int i = 0; i < PAGEBREAKBEFORE.length; i++) {
+		if (hash_values[i] == hash) {
+		    value = i;
+		    expression.next();
+		    return;
+		}
+	    }
+	}
+
+	throw new InvalidParamException("value",
+					val.toString(), getPropertyName(), ac);
+    }
+
+    public PageBreakBeforeATSC(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return null;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "page-break-before";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == PAGEBREAKBEFORE.length - 1;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return PAGEBREAKBEFORE[value];
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.pageBreakBeforeATSC != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.pageBreakBeforeATSC = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getPageBreakBeforeATSC();
+	} else {
+	    return ((Css2Style) style).pageBreakBeforeATSC;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof PageBreakBeforeATSC
+		&& value == ((PageBreakBeforeATSC) property).value);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == 0;
+    }
+
+    static {
+	hash_values = new int[PAGEBREAKBEFORE.length];
+	for (int i=0; i<PAGEBREAKBEFORE.length; i++)
+	    hash_values[i] = PAGEBREAKBEFORE[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/paged/PageBreakInside.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,157 @@
+//
+// $Id: PageBreakInside.java,v 1.2 2005-09-14 15:15:26 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 org.w3c.css.properties.paged;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.2 $
+ */
+public class PageBreakInside extends CssProperty
+    implements CssOperator {
+
+    int value;
+
+    private static String PAGEBREAKINSIDE[] = {
+	"auto", "avoid", "inherit" };
+
+    private static int[] hash_values;
+
+
+    /**
+     * Create a new CssPageBreakInside
+     */
+    public PageBreakInside() {
+	value = 0;
+    }
+
+    /**
+     * Create a new CssPageBreakInside
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public PageBreakInside(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+//	char op = expression.getOperator();
+
+	setByUser();
+
+	if (val instanceof CssIdent) {
+	    int hash = val.hashCode();
+
+	    for (int i = 0; i < PAGEBREAKINSIDE.length; i++) {
+		if (hash_values[i] == hash) {
+		    value = i;
+		    expression.next();
+		    return;
+		}
+	    }
+	}
+
+	throw new InvalidParamException("value",
+					val.toString(), getPropertyName(), ac);
+    }
+
+    public PageBreakInside(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return null;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "page-break-inside";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == PAGEBREAKINSIDE.length - 1;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return PAGEBREAKINSIDE[value];
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.pageBreakInside != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.pageBreakInside = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getPageBreakInside();
+	} else {
+	    return ((Css2Style) style).pageBreakInside;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof PageBreakInside
+		&& value == ((PageBreakInside) property).value);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == 0;
+    }
+
+    static {
+	hash_values = new int[PAGEBREAKINSIDE.length];
+	for (int i=0; i<PAGEBREAKINSIDE.length; i++)
+	    hash_values[i] = PAGEBREAKINSIDE[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/paged/PageBreakInsideATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,159 @@
+//
+// $Id: PageBreakInsideATSC.java,v 1.2 2005-09-14 15:15:26 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 org.w3c.css.properties.paged;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.2 $
+ */
+public class PageBreakInsideATSC extends CssProperty
+    implements CssOperator {
+
+    int value;
+
+    private static String PAGEBREAKINSIDE[] = {
+	"auto", "avoid", "inherit" };
+
+    private static int[] hash_values;
+
+
+    /**
+     * Create a new CssPageBreakInsideATSC
+     */
+    public PageBreakInsideATSC() {
+	value = 0;
+    }
+
+    /**
+     * Create a new CssPageBreakInsideATSC
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public PageBreakInsideATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	//char op = expression.getOperator();
+
+	setByUser();
+
+	ac.getFrame().addWarning("atsc", val.toString());
+
+	if (val instanceof CssIdent) {
+	    int hash = val.hashCode();
+
+	    for (int i = 0; i < PAGEBREAKINSIDE.length; i++) {
+		if (hash_values[i] == hash) {
+		    value = i;
+		    expression.next();
+		    return;
+		}
+	    }
+	}
+
+	throw new InvalidParamException("value",
+					val.toString(), getPropertyName(), ac);
+    }
+
+    public PageBreakInsideATSC(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return null;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "page-break-inside";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == PAGEBREAKINSIDE.length - 1;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return PAGEBREAKINSIDE[value];
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.pageBreakInsideATSC != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.pageBreakInsideATSC = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getPageBreakInsideATSC();
+	} else {
+	    return ((Css2Style) style).pageBreakInsideATSC;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof PageBreakInsideATSC
+		&& value == ((PageBreakInsideATSC) property).value);
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == 0;
+    }
+
+    static {
+	hash_values = new int[PAGEBREAKINSIDE.length];
+	for (int i=0; i<PAGEBREAKINSIDE.length; i++)
+	    hash_values[i] = PAGEBREAKINSIDE[i].hashCode();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/paged/PagedDefault.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,6 @@
+size.inherited:  false
+marks.inherited:  false
+page-break-before.inherited:  true
+page-break-after.inherited:  true
+page-break-inside.inherited:  true
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/paged/PagedProperties.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,40 @@
+//
+// $Id: PagedProperties.java,v 1.2 2005-09-14 15:15:26 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 org.w3c.css.properties.paged;
+
+import java.net.URL;
+
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.Utf8Properties;
+
+/**
+ * @version $Revision: 1.2 $
+ */
+public class PagedProperties {
+	public static Utf8Properties properties;
+
+  public static String getString(CssProperty property, String prop) {
+		return properties.getProperty(property.getPropertyName() + "." + prop);
+  }
+
+  public static boolean getInheritance(CssProperty property) {
+    return getString(property, "inherited").equals("true");
+  }
+
+  static {
+		Utf8Properties properties = new Utf8Properties();
+    try {
+			URL url = PagedProperties.class
+					.getResource("PagedDefault.properties");
+      properties.load(url.openStream());
+    } catch (Exception e) {
+			System.err
+					.println("org.w3c.css.properties.paged.PagedProperties: couldn't load properties ");
+			System.err.println("  " + e.toString());
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/paged/PagedProperty.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,26 @@
+//
+// $Id: PagedProperty.java,v 1.1 2005-08-23 16:25:02 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 org.w3c.css.properties.paged;
+
+import org.w3c.css.properties.css1.CssProperty;
+
+/**
+ * @version $Revision: 1.1 $
+ */
+public abstract class PagedProperty extends CssProperty {
+
+  /**
+   * Returns true if the property is inherited
+   */
+  public boolean Inherited() {
+    return PagedProperties.getInheritance(this);
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/paged/Size.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,211 @@
+//
+// $Id: Size.java,v 1.2 2005-09-14 15:15:26 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 org.w3c.css.properties.paged;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @version $Revision: 1.2 $
+ */
+public class Size extends CssProperty
+        implements CssOperator {
+
+    CssValue l1, l2;
+
+    private static CssIdent auto = new CssIdent("auto");
+    private static CssIdent portrait = new CssIdent("portrait");
+    private static CssIdent landscape = new CssIdent("landscape");
+
+    /**
+     * Create a new CssSize
+     */
+    public Size() {
+	l1 = auto;
+    }
+
+    /**
+     * Create a new CssSize
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public Size(ApplContext ac, CssExpression expression, boolean check)
+	    throws InvalidParamException {
+
+	if(check && expression.getCount() > 2) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	char op = expression.getOperator();
+
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    if(expression.getCount() > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    l1 = inherit;
+	    expression.next();
+	    return;
+	} else if (val.equals(auto)) {
+	    if(expression.getCount() > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    l1 = auto;
+	    expression.next();
+	    return;
+	} else if (val.equals(portrait)) {
+	    if(expression.getCount() > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    l1 = portrait;
+	    expression.next();
+	    return;
+	} else if (val.equals(landscape)) {
+	    if(expression.getCount() > 1) {
+		throw new InvalidParamException("unrecognize", ac);
+	    }
+	    l1 = landscape;
+	    expression.next();
+	    return;
+	}
+
+	val = getLength(val);
+	if (val != null) {
+	    l1 = val;
+	    expression.next();
+	    if (!expression.end()) {
+		if(expression.getValue().equals(inherit)) {
+		    throw new InvalidParamException("unrecognize", ac);
+		}
+		val = getLength(expression.getValue());
+		if ((val == null)
+		    || (op != SPACE)) {
+		    throw new InvalidParamException("value",
+						    val.toString(),
+						    getPropertyName(), ac);
+		} else {
+		    l2 = val;
+		    expression.next();
+		    return;
+		}
+	    } else {
+		expression.next();
+		return;
+	    }
+	} else {
+	    throw new InvalidParamException("value",
+					    val.toString(), getPropertyName(), ac);
+	}
+    }
+
+    public Size(ApplContext ac, CssExpression expression)
+    	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return null;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "size";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return l1 == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (l2 != null) {
+	    return l1.toString() + " " + l2.toString();
+	} else {
+	    return l1.toString();
+	}
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.size != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.size = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getSize();
+	} else {
+	    return ((Css2Style) style).size;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof Size
+		&& l1.equals(((Size) property).l1)
+		&& ((l2 == null)
+		    || l2.equals(((Size) property).l2)));
+    }
+
+    /**
+     * Is the value of this property is a default value.
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return l1 == auto;
+    }
+
+    CssLength getLength(CssValue val) throws InvalidParamException {
+        if (val instanceof CssLength) {
+            return (CssLength) val;
+        } else if (val instanceof CssNumber) {
+            return ((CssNumber) val).getLength();
+        } else {
+            return null;
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/paged/Widows.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,148 @@
+//
+// $Id: Widows.java,v 1.2 2005-09-14 15:15:26 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 org.w3c.css.properties.paged;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+
+/**
+ */
+public class Widows extends PagedProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new Widows
+     */
+    public Widows() {
+	value = new CssNumber(null, 2);
+    }
+
+    /**
+     * Creates a new CssWidows
+     *
+     * @param expression the expression of the size
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public Widows(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	setByUser();
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	    expression.next();
+	    return;
+	} else if (val instanceof CssNumber) {
+	    if (((CssNumber) val).isInteger()) {
+		value = val;
+		expression.next();
+		return;
+	    } else {
+		throw new InvalidParamException("integer",
+						val.toString(),
+						getPropertyName(), ac);
+	    }
+	}
+
+	throw new InvalidParamException("value",
+					    val.toString(),
+					    getPropertyName(), ac);
+    }
+
+    public Widows(ApplContext ac, CssExpression expression)
+	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "widows";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.widows != null) {
+	    style.addRedefinitionWarning(ac, this);
+	}
+	style0.widows = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getWidows();
+	} else {
+	    return ((Css2Style) style).widows;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	if (value == null) {
+	    return (property instanceof Widows &&
+		    ((Widows) property).value == value);
+	} else {
+	    return (property instanceof Widows &&
+		    ((Widows) property).value.equals(value));
+	}
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/paged/WidowsATSC.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,150 @@
+//
+// $Id: WidowsATSC.java,v 1.2 2005-09-14 15:15:26 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 org.w3c.css.properties.paged;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+
+/**
+ */
+public class WidowsATSC extends PagedProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new WidowsATSC
+     */
+    public WidowsATSC() {
+	value = new CssNumber(null, 2);
+    }
+
+    /**
+     * Creates a new CssWidowsATSC
+     *
+     * @param expression the expression of the size
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public WidowsATSC(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	if(check && expression.getCount() > 1) {
+	    throw new InvalidParamException("unrecognize", ac);
+	}
+
+	CssValue val = expression.getValue();
+	setByUser();
+
+	ac.getFrame().addWarning("atsc", val.toString());
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	    expression.next();
+	    return;
+	} else if (val instanceof CssNumber) {
+	    if (((CssNumber) val).isInteger()) {
+		value = val;
+		expression.next();
+		return;
+	    } else {
+		throw new InvalidParamException("integer",
+						val.toString(),
+						getPropertyName(), ac);
+	    }
+	}
+
+	throw new InvalidParamException("value",
+					    val.toString(),
+					    getPropertyName(), ac);
+    }
+
+    public WidowsATSC(ApplContext ac, CssExpression expression)
+    	throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "widows";
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	Css2Style style0 = (Css2Style) style;
+	if (style0.widowsATSC != null) {
+	    style.addRedefinitionWarning(ac, this);
+	}
+	style0.widowsATSC = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((Css2Style) style).getWidowsATSC();
+	} else {
+	    return ((Css2Style) style).widowsATSC;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	if (value == null) {
+	    return (property instanceof WidowsATSC &&
+		    ((WidowsATSC) property).value == value);
+	} else {
+	    return (property instanceof WidowsATSC &&
+		    ((WidowsATSC) property).value.equals(value));
+	}
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/svg/AlignmentBaseline.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,151 @@
+//
+// $Id: AlignmentBaseline.java,v 1.3 2008-04-07 14:16:23 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.svg;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> auto | baseline | before-edge |
+ *  text-before-edge | middle | after-edge |
+ *  text-after-edge | ideographic | alphabetic | lower | hanging | mathematical
+ *  | inherit <BR>
+ *  <EM>Initial:</EM>see property description<BR>
+ *  <EM>Applies to:</EM>text, tspan, tref, altGlyph, textPath elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ */
+public class AlignmentBaseline extends CssProperty {
+
+    CssValue albaseline;
+
+    private static String[] values = {
+	"auto", "baseline", "before-edge",
+	"text-before-edge", "middle", "after-edge",
+	"text-after-edge", "ideographic", "alphabetic", "hanging", "mathematical",
+	"inherit"
+    };
+
+    /**
+     * Create a new CssAlignmentBaseline
+     */
+    public AlignmentBaseline() {
+	//nothing to do
+    }
+
+    /**
+     * Create a new CssAlignmentBaseline
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public AlignmentBaseline(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	int i = 0;
+	for (; i < values.length; i++) {
+	    if (val.toString().equals(values[i])) {
+		albaseline = val;
+		expression.next();
+		break;
+	    }
+	}
+	if (i == values.length) {
+	    throw new InvalidParamException("value", expression.getValue(),
+		    getPropertyName(), ac);
+	}
+    }
+
+    public AlignmentBaseline(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((SVGBasicStyle) style).alignmentBaseline != null)
+	    style.addRedefinitionWarning(ac, this);
+	((SVGBasicStyle) style).alignmentBaseline = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((SVGBasicStyle) style).getAlignmentBaseline();
+	}
+	else {
+	    return ((SVGBasicStyle) style).alignmentBaseline;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof AlignmentBaseline &&
+		albaseline.equals(((AlignmentBaseline) property).albaseline));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "alignment-baseline";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return albaseline;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return albaseline.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return albaseline.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/svg/AtRuleColorProfile.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,64 @@
+//
+// $Id: AtRuleColorProfile.java,v 1.1 2005-08-23 16:25:02 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+package org.w3c.css.properties.svg;
+
+import org.w3c.css.parser.AtRule;
+
+
+public class AtRuleColorProfile extends AtRule {
+
+    static int internal = 0;
+    int hash;
+
+    /**
+     * Create a new AtRuleColorProfile
+     */
+    public AtRuleColorProfile() {
+	hash = ++internal;
+    }
+
+    /**
+     * Returns the at rule keyword
+     */
+    public String keyword() {
+	return "color-profile";
+    }
+
+    /**
+     * The second must be exactly the same as this one
+     */
+    public boolean canApply(AtRule atRule) {
+	return (atRule instanceof AtRuleColorProfile);
+    }
+
+    /**
+     * Return true if other is an instance of AtRuleColorProfile
+     */
+    public boolean equals(Object other) {
+	return (other instanceof AtRuleColorProfile);
+    }
+
+    /**
+     * The second must only match this one
+     */
+    public boolean canMatched(AtRule atRule) {
+	return (atRule instanceof AtRuleColorProfile);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return "@" + keyword();
+    }
+
+    public int hashCode() {
+	return hash;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/svg/ClipPath.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,149 @@
+//
+// $Id: ClipPath.java,v 1.3 2008-04-07 14:16:23 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.svg;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssURL;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> &lt;uri&gt; || none || inherit<BR>
+ *  <EM>Initial:</EM>none<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ */
+
+public class ClipPath extends CssProperty {
+
+    CssValue clippath;
+    ApplContext ac;
+
+    CssIdent none = new CssIdent("none");
+
+    /**
+     * Create a new ClipPath
+     */
+    public ClipPath() {
+	//nothing to do
+    }
+
+    /**
+     * Create a new ClipPath
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public ClipPath(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	this.ac = ac;
+	setByUser(); // tell this property is set by the user
+	CssValue val = expression.getValue();
+	if (val instanceof CssURL) {
+	    clippath = val;
+	    expression.next();
+	}
+	else if (val instanceof CssIdent) {
+	    if (val.equals(inherit)) {
+		clippath = inherit;
+		expression.next();
+	    } else if (val.equals(none)) {
+		clippath = none;
+		expression.next();
+	    }
+	}
+	else {
+	    throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+	}
+    }
+
+    public ClipPath(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((SVGBasicStyle) style).clipPath != null)
+	    style.addRedefinitionWarning(ac, this);
+	((SVGBasicStyle) style).clipPath = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((SVGBasicStyle) style).getClipPath();
+	} else {
+	    return ((SVGBasicStyle) style).clipPath;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof ClipPath &&
+		clippath.equals( ((ClipPath) property).clippath));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "clip-path";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return clippath;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return clippath.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return clippath.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return (clippath == none);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/svg/ClipRule.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,147 @@
+//
+// $Id: ClipRule.java,v 1.3 2008-04-07 14:16:23 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.svg;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> nonzero || evenodd || inherit<BR>
+ *  <EM>Initial:</EM>nonzero<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ */
+
+public class ClipRule extends CssProperty {
+
+    CssValue cliprule;
+    ApplContext ac;
+
+    CssIdent nonzero = new CssIdent("nonzero");
+    CssIdent evenodd = new CssIdent("evenodd");
+
+    /**
+     * Create a new Cliprule
+     */
+    public ClipRule() {
+	//nothing to do
+    }
+
+    /**
+     * Create a new Cliprule
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public ClipRule(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	this.ac = ac;
+	setByUser(); // tell this property is set by the user
+	CssValue val = expression.getValue();
+
+	if (val.equals(inherit)) {
+	    cliprule = inherit;
+	    expression.next();
+	} else if (val.equals(nonzero)) {
+	    cliprule = nonzero;
+	    expression.next();
+	} else if (val.equals(evenodd)) {
+	    cliprule = evenodd;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+	}
+    }
+
+    public ClipRule(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((SVGBasicStyle) style).clipRule != null)
+	    style.addRedefinitionWarning(ac, this);
+	((SVGBasicStyle) style).clipRule = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((SVGBasicStyle) style).getClipRule();
+	} else {
+	    return ((SVGBasicStyle) style).clipRule;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof ClipRule &&
+		cliprule.equals( ((ClipRule) property).cliprule));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "clip-rule";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return cliprule;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return cliprule.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return cliprule.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return (cliprule == nonzero);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/svg/ColorInterpolation.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,152 @@
+//
+// $Id: ColorInterpolation.java,v 1.3 2008-04-07 14:16:23 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.svg;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> auto || sRGB || linearRGB || inherit<BR>
+ *  <EM>Initial:</EM>sRGB<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>yes<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ */
+
+public class ColorInterpolation extends CssProperty {
+
+    CssValue interp;
+    ApplContext ac;
+
+    CssIdent auto = new CssIdent("auto");
+    CssIdent sRGB = new CssIdent("sRGB");
+    CssIdent linearRGB = new CssIdent("linearRGB");
+
+    /**
+     * Create a new Interp
+     */
+    public ColorInterpolation() {
+	//nothing to do
+    }
+
+    /**
+     * Create a new ColorInterpolation
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public ColorInterpolation(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	this.ac = ac;
+	setByUser(); // tell this property is set by the user
+	CssValue val = expression.getValue();
+
+	if (val.equals(inherit)) {
+	    interp = inherit;
+	    expression.next();
+	} else if (val.equals(sRGB)) {
+	    interp = sRGB;
+	    expression.next();
+	} else if (val.equals(linearRGB)) {
+	    interp = linearRGB;
+	    expression.next();
+	} else if (val.equals(auto)) {
+	    interp = auto;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", val.toString(),
+		    getPropertyName(), ac);
+	}
+    }
+
+    public ColorInterpolation(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((SVGBasicStyle) style).colorInterpolation != null)
+	    style.addRedefinitionWarning(ac, this);
+	((SVGBasicStyle) style).colorInterpolation = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((SVGBasicStyle) style).getColorInterpolation();
+	} else {
+	    return ((SVGBasicStyle) style).colorInterpolation;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof ColorInterpolation &&
+		interp.equals( ((ColorInterpolation) property).interp));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "color-interpolation";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return interp;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return interp.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return interp.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return (interp == sRGB);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/svg/ColorInterpolationFilters.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,152 @@
+//
+// $Id: ColorInterpolationFilters.java,v 1.3 2008-04-07 14:16:23 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.svg;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> auto || sRGB || linearRGB || inherit<BR>
+ *  <EM>Initial:</EM>sRGB<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>yes<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ */
+
+public class ColorInterpolationFilters extends CssProperty {
+
+    CssValue interp;
+    ApplContext ac;
+
+    CssIdent auto = new CssIdent("auto");
+    CssIdent sRGB = new CssIdent("sRGB");
+    CssIdent linearRGB = new CssIdent("linearRGB");
+
+    /**
+     * Create a new InterpolationFilters
+     */
+    public ColorInterpolationFilters() {
+	//nothing to do
+    }
+
+    /**
+     * Create a new ColorInterpolationFilters
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public ColorInterpolationFilters(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	this.ac = ac;
+	setByUser(); // tell this property is set by the user
+	CssValue val = expression.getValue();
+
+	if (val.equals(inherit)) {
+	    interp = inherit;
+	    expression.next();
+	} else if (val.equals(sRGB)) {
+	    interp = sRGB;
+	    expression.next();
+	} else if (val.equals(linearRGB)) {
+	    interp = linearRGB;
+	    expression.next();
+	} else if (val.equals(auto)) {
+	    interp = auto;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", val.toString(),
+		    getPropertyName(), ac);
+	}
+    }
+
+    public ColorInterpolationFilters(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((SVGBasicStyle) style).colorInterpolationFilters != null)
+	    style.addRedefinitionWarning(ac, this);
+	((SVGBasicStyle) style).colorInterpolationFilters = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((SVGBasicStyle) style).getColorInterpolationFilters();
+	} else {
+	    return ((SVGBasicStyle) style).colorInterpolationFilters;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof ColorInterpolationFilters &&
+		interp.equals( ((ColorInterpolationFilters) property).interp));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "color-interpolation-filters";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return interp;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return interp.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return interp.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return (interp == linearRGB);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/svg/ColorProfile.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,202 @@
+//
+// $Id: ColorProfile.java,v 1.3 2008-04-07 14:16:23 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.svg;
+
+import java.util.Vector;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssFunction;
+import org.w3c.css.values.CssIdent;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssURL;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <PRE>
+ *  Value:      auto | sRGB | (<uri> | <local-profile>)+ | inherit
+ *  Initial:    auto
+ *  Applies to: 'image' elements that refer to raster images
+ *  Inherited:  yes
+ *  Percentages: N/A
+ *  Media:      visual
+ * </PRE>
+ */
+
+public class ColorProfile extends CssProperty implements CssOperator {
+
+    CssValue value;
+    Vector values = new Vector();
+
+    CssIdent auto = new CssIdent("auto");
+    CssIdent sRGB = new CssIdent("sRGB");
+    CssIdent none = new CssIdent("none");
+
+    /**
+     * Create a new ColorProfile
+     */
+    public ColorProfile() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new ColorProfile
+     */
+    public ColorProfile(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	//setByUser();
+	char op = SPACE;
+	CssValue val = expression.getValue();
+	int counter = 0;
+	boolean correct = true;
+	String errorval = new String();
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	    expression.next();
+	} else if (val.equals(auto)) {
+	    value = none;
+	    expression.next();
+	} else if (val.equals(sRGB)) {
+	    value = sRGB;
+	    expression.next();
+	} else {
+	    while ((op == SPACE)
+		    && (counter < expression.getCount() && correct == true)) {
+
+		if (val instanceof CssURL) {
+		    values.addElement(val);
+		}
+		else if (val instanceof CssFunction) {
+		    if (((CssFunction) val).getName().equals("local")) {
+			if ((((CssFunction) val).getParameters().getCount() == 1) &&
+				(((CssFunction) val).getParameters().getValue() instanceof CssURL)) {
+			    values.addElement(val);
+			} else {
+			    correct = false;
+			    errorval = val.toString();
+			}
+		    } else {
+			correct = false;
+			errorval = val.toString();
+		    }
+		} else {
+		    correct = false;
+		    errorval = val.toString();
+		}
+
+		expression.next();
+		counter++;
+		val = expression.getValue();
+		op = expression.getOperator();
+	    }
+
+	    if (!correct) {
+		throw new InvalidParamException("value", val.toString(),
+			getPropertyName(), ac);
+	    }
+	}
+    }
+
+    public ColorProfile(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((SVGBasicStyle) style).colorProfile != null)
+	    style.addRedefinitionWarning(ac, this);
+	((SVGBasicStyle) style).colorProfile = this;
+
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((SVGBasicStyle) style).getColorProfileSVG();
+	} else {
+	    return ((SVGBasicStyle) style).colorProfile;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return false;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "color-profile";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	if (value != null) {
+	    return value;
+	}
+	else {
+	    return values;
+	}
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * This property can't be inherited, it's only for @preference
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	if (value != null) {
+	    return value.toString();
+	}
+	else {
+	    String ret = "";
+	    for (int i = 0; i < values.size(); i++) {
+		ret += " " + values.elementAt(i).toString();
+	    }
+	    return ret;
+	}
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == auto;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/svg/ColorProfileName.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,128 @@
+//
+// $Id: ColorProfileName.java,v 1.2 2005-09-14 15:15:27 ylafon Exp $
+// From Sijtsche Smeman (sijtsche@wisdom.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.svg;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ * This property sets the preferred media for this stylesheet
+ */
+
+public class ColorProfileName extends CssProperty implements CssOperator {
+
+    CssValue cpName;
+
+    /**
+     * Create a new ColorProfileName
+     */
+    public ColorProfileName() {
+	// no initial value
+    }
+
+    /**
+     * Create a new ColorProfileName
+     */
+    public ColorProfileName(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	CssValue val = expression.getValue();
+
+	if (val instanceof CssIdent) {
+	    cpName = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value",
+		    val, getPropertyName(), ac);
+	}
+    }
+
+    public ColorProfileName(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((SVGStyle) style).cpName != null)
+	    style.addRedefinitionWarning(ac, this);
+	((SVGStyle) style).cpName = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((SVGStyle) style).getColorProfileName();
+	} else {
+	    return ((SVGStyle) style).cpName;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param cpName The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof ColorProfileName &&
+		cpName.equals( ((ColorProfileName) property).cpName));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "name";
+    }
+
+    /**
+     * Returns the cpName of this property
+     */
+    public Object get() {
+	return cpName;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return false;
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return cpName.toString();
+    }
+
+    /**
+     * Is the cpName of this property a default cpName
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/svg/ColorProfileSrc.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,185 @@
+//
+// $Id: ColorProfileSrc.java,v 1.2 2005-09-14 15:15:27 ylafon Exp $
+// From Sijtsche Smeman (sijtsche@wisdom.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.svg;
+
+import java.util.Vector;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssFunction;
+import org.w3c.css.values.CssIdent;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssURL;
+import org.w3c.css.values.CssValue;
+
+/**
+ * This property sets the preferred media for this stylesheet
+ */
+
+public class ColorProfileSrc extends CssProperty implements CssOperator {
+
+    CssValue cpSrc;
+    Vector cpSrcs = new Vector();
+
+    CssIdent sRGB = new CssIdent("sRGB");
+
+    /**
+     * Create a new ColorProfileSrc
+     */
+    public ColorProfileSrc() {
+	cpSrc = sRGB;
+    }
+
+    /**
+     * Create a new ColorProfileSrc
+     */
+    public ColorProfileSrc(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	//setByUser();
+	char op = expression.getOperator();
+	CssValue val = expression.getValue();
+
+	if ((val.toString().toLowerCase()).equals("srgb")) {
+	    cpSrc = sRGB;
+	    expression.next();
+	} else if (val instanceof CssFunction) {
+	    CssFunction fun = (CssFunction) val;
+	    CssExpression params = fun.getParameters();
+	    if (fun.getName().equals("local")) {
+		if ((params.getCount() == 1)) {
+		    cpSrc = val;
+		    expression.next();
+		} else {
+		    throw new InvalidParamException("value",
+			    params.getValue(), getPropertyName(), ac);
+		}
+	    } else {
+		throw new InvalidParamException("value",
+			val, getPropertyName(), ac);
+	    }
+
+	    val = expression.getValue();
+
+	    if (val != null) {
+
+		if (op != SPACE) {
+		    throw new InvalidParamException("operator",
+			    new Character(op), getPropertyName(), ac);
+		}
+
+		if (val instanceof CssURL) {
+		    cpSrcs.addElement(cpSrc);
+		    cpSrcs.addElement(val);
+		    cpSrc = null;
+		    expression.next();
+		}
+	    }
+
+	} else if (val instanceof CssURL) {
+	    cpSrc = val;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("cpSrc",expression.getValue(),
+		    getPropertyName(), ac);
+	}
+
+    }
+
+    public ColorProfileSrc(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((SVGStyle) style).cpSrc != null)
+	    style.addRedefinitionWarning(ac, this);
+	((SVGStyle) style).cpSrc = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((SVGStyle) style).getColorProfileSrc();
+	} else {
+	    return ((SVGStyle) style).cpSrc;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param cpSrc The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof ColorProfileSrc &&
+		cpSrc.equals( ((ColorProfileSrc) property).cpSrc));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "src";
+    }
+
+    /**
+     * Returns the cpSrc of this property
+     */
+    public Object get() {
+	if (cpSrc != null)
+	    return cpSrc;
+	else
+	    return cpSrcs;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return cpSrc.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	if (cpSrc != null) {
+	    return cpSrc.toString();
+	} else {
+	    String ret = "";
+	    for (int i = 0; i < cpSrcs.size(); i++) {
+		ret += " " + cpSrcs.elementAt(i).toString();
+	    }
+	    return ret;
+	}
+    }
+
+    /**
+     * Is the cpSrc of this property a default cpSrc
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return cpSrc == sRGB;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/svg/ColorRendering.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,151 @@
+//
+// $Id: ColorRendering.java,v 1.3 2008-04-07 14:16:23 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.svg;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> auto || optimizeSpeed || optimizeQuality || inherit<BR>
+ *  <EM>Initial:</EM>auto<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>yes<BR>
+ *  <EM>Percentages:</EM>image elements that refer to raster images<BR>
+ *  <EM>Media:</EM>:visual
+ */
+
+public class ColorRendering extends CssProperty {
+
+    CssValue rendering;
+    ApplContext ac;
+
+    CssIdent auto = new CssIdent("auto");
+    CssIdent optimizeSpeed = new CssIdent("optimizeSpeed");
+    CssIdent optimizeQuality = new CssIdent("optimizeQuality");
+
+    /**
+     * Create a new Rendering
+     */
+    public ColorRendering() {
+	//nothing to do
+    }
+
+    /**
+     * Create a new ColorRendering
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public ColorRendering(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	this.ac = ac;
+	setByUser(); // tell this property is set by the user
+	CssValue val = expression.getValue();
+
+	if (val.equals(inherit)) {
+	    rendering = inherit;
+	    expression.next();
+	} else if (val.equals(optimizeSpeed)) {
+	    rendering = val;
+	    expression.next();
+	} else if (val.equals(optimizeQuality)) {
+	    rendering = val;
+	    expression.next();
+	} else if (val.equals(auto)) {
+	    rendering = auto;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+	}
+    }
+
+    public ColorRendering(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((SVGBasicStyle) style).colorRendering != null)
+	    style.addRedefinitionWarning(ac, this);
+	((SVGBasicStyle) style).colorRendering = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((SVGBasicStyle) style).getColorRendering();
+	} else {
+	    return ((SVGBasicStyle) style).colorRendering;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof ColorRendering &&
+		rendering.equals( ((ColorRendering) property).rendering));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "color-rendering";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return rendering;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return rendering.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return rendering.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return (rendering == auto);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/svg/CssRenderIntent.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,160 @@
+//
+// $Id: CssRenderIntent.java,v 1.2 2005-09-14 15:15:27 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// COPYRIGHT (c) 1995-2000 World Wide Web Consortium, (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.svg;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ * <P>
+ * <EM>Value:</EM> auto || perceptual || relative-colorimetric ||
+ * saturation || absolute-colorimetric || inherit<BR>
+ * <EM>Initial:</EM>auto<BR>
+ * <EM>Applies to:</EM>all elements<BR>
+ * <EM>Inherited</EM>yes<BR>
+ * <EM>Percentages:</EM>no<BR>
+ * <EM>Media:</EM>visual
+ * <P>
+ * This property permits the specification of a color profile rendering intent other than the default.
+ * The behavior of values other than auto and inherent are defined by the International Color Consortium standard.
+ */
+public class CssRenderIntent extends CssProperty {
+
+    CssValue renderintent;
+
+    static CssIdent auto = new CssIdent("auto");
+    static CssIdent abscolorimetric = new CssIdent("absolute-colorimetric");
+    static CssIdent relcolorimetric = new CssIdent("relative-colorimetric");
+    static CssIdent saturation = new CssIdent("saturation");
+    static CssIdent perceptual = new CssIdent("perceptual");
+
+    /**
+     * Create a new CssRenderIntent
+     */
+    public CssRenderIntent() {
+	renderintent = auto;
+    }
+
+    /**
+     * Create a new CssRenderIntent
+     *
+     *
+     */
+    public CssRenderIntent(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	setByUser();
+	CssValue val = expression.getValue();
+	if (val.equals(auto)) {
+	    renderintent = auto;
+	    expression.next();
+	}
+	else if (val.equals(perceptual)) {
+	    renderintent = perceptual;
+	    expression.next();
+	}
+	else if (val.equals(relcolorimetric)) {
+	    renderintent = relcolorimetric;
+	    expression.next();
+	}
+	else if (val.equals(saturation)) {
+	    renderintent = saturation;
+	    expression.next();
+	}
+	else if (val.equals(abscolorimetric)) {
+	    renderintent = abscolorimetric;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+	}
+    }
+
+    public CssRenderIntent(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((SVGStyle) style).cssRenderIntent != null)
+	    style.addRedefinitionWarning(ac, this);
+	((SVGStyle) style).cssRenderIntent = this;
+
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((SVGStyle) style).getRenderIntent();
+	} else {
+	    return ((SVGStyle) style).cssRenderIntent;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof CssRenderIntent &&
+		renderintent.equals( ((CssRenderIntent) property).renderintent));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "rendering-intent";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return renderintent;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return renderintent.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return renderintent.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return renderintent == auto;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/svg/DominantBaseLine.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,164 @@
+//
+// $Id: DominantBaseLine.java,v 1.3 2008-04-07 14:16:23 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.svg;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> auto || use-script || no-change || reset-size ||
+ *  ideographic || alphabetic || hanging || mathematical ||
+ *  central || middle || text-after-edge || text-before-edge || text-top ||
+ * text-bottom || inherit <BR>
+ *  <EM>Initial:</EM>auto<BR>
+ *  <EM>Applies to:</EM>inline-level elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  The 'dominant-baseline' property is used:
+ *   <UL>
+ *     <LI>to determine the dominant baseline
+ *     <LI>to select the baseline-table
+ *     <LI>to establish the font-size used with the baseline-table
+ *   </UL>
+ */
+
+public class DominantBaseLine extends CssProperty {
+
+    CssValue dombaseline;
+
+    static CssIdent auto = new CssIdent("auto");
+
+    private static String[] values = {
+	"auto", "use-script", "no-change", "reset-size",
+	"ideographic", "alphabetic", "hanging", "mathematical",
+	"central", "middle", "text-after-edge", "text-before-edge",
+	"text-top", "text-bottom", "inherit"
+    };
+
+    /**
+     * Create a new DominantBaseLine
+     */
+    public DominantBaseLine() {
+	dombaseline = auto;
+    }
+
+    /**
+     * Create a new DominantBaseLine
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public DominantBaseLine(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	int i = 0;
+	for (; i < values.length; i++) {
+	    if (val.toString().equals(values[i])) {
+		dombaseline = val;
+		expression.next();
+		break;
+	    }
+	}
+	if (i == values.length) {
+	    throw new InvalidParamException("value", expression.getValue(),
+		    getPropertyName(), ac);
+	}
+    }
+
+    public DominantBaseLine(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((SVGBasicStyle) style).dominantBaseLine != null)
+	    style.addRedefinitionWarning(ac, this);
+	((SVGBasicStyle) style).dominantBaseLine = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((SVGBasicStyle) style).getDominantBaseLineSVG();
+	}
+	else {
+	    return ((SVGBasicStyle) style).dominantBaseLine;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof DominantBaseLine &&
+		dombaseline.equals(((DominantBaseLine) property).dombaseline));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "dominant-baseline";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return dombaseline;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return dombaseline.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return dombaseline.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return (dombaseline == auto);
+    }
+
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/svg/EnableBackground.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,217 @@
+//
+// $Id: EnableBackground.java,v 1.3 2008-04-07 14:16:23 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.svg;
+
+import java.util.Vector;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.properties.css1.CssWidth;
+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.CssNumber;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> accumulate || new [ &lt;x&gt; &lt;y&gt;
+ *  &lt;width&gt; &lt;height&gt; || inherit<BR>
+ *  <EM>Initial:</EM>accumulate<BR>
+ *  <EM>Applies to:</EM>container elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ */
+
+public class EnableBackground extends CssProperty implements CssOperator {
+
+    CssValue value;
+    Vector values = new Vector();
+    ApplContext ac;
+
+    CssIdent accumulate = new CssIdent("accumulate");
+
+    /**
+     * Create a new Value
+     */
+    public EnableBackground() {
+	//nothing to do
+    }
+
+    /**
+     * Create a new Value
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public EnableBackground(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	this.ac = ac;
+	setByUser(); // tell this property is set by the user
+	CssValue val = expression.getValue();
+	char op = SPACE;
+
+	if (val instanceof CssIdent) {
+	    if (val.equals(inherit)) {
+		value = inherit;
+		expression.next();
+	    } else if (val.equals(accumulate)) {
+		value = accumulate;
+		expression.next();
+	    } else {
+		throw new InvalidParamException("value", val.toString(),
+			getPropertyName(), ac);
+	    }
+	}
+	else if (val instanceof CssNumber) {
+	    // first value
+	    values.addElement(val);
+	    expression.next();
+	    val = expression.getValue();
+	    op = expression.getOperator();
+
+	    // second value
+	    if (val instanceof CssNumber) {
+		values.addElement(val);
+		expression.next();
+	    } else {
+		throw new InvalidParamException("value", val.toString(),
+			getPropertyName(), ac);
+	    }
+	    val = expression.getValue();
+	    op = expression.getOperator();
+
+	    // third value
+	    try {
+		CssWidth width = new CssWidth(ac, expression);
+		values.addElement(width);
+		//expression.next();
+	    } catch (InvalidParamException e) {
+		throw new InvalidParamException("value", val.toString(),
+			getPropertyName(), ac);
+	    }
+
+	    val = expression.getValue();
+	    op = expression.getOperator();
+
+	    // fourth value
+	    try {
+		CssWidth width = new CssWidth(ac, expression);
+		values.addElement(width);
+		expression.next();
+	    } catch (InvalidParamException e) {
+		throw new InvalidParamException("value", val.toString(),
+			getPropertyName(), ac);
+	    }
+
+	}
+	else {
+	    throw new InvalidParamException("value", val.toString(),
+		    getPropertyName(), ac);
+	}
+    }
+
+    public EnableBackground(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((SVGBasicStyle) style).enableBackground != null)
+	    style.addRedefinitionWarning(ac, this);
+	((SVGBasicStyle) style).enableBackground = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((SVGBasicStyle) style).getEnableBackground();
+	} else {
+	    return ((SVGBasicStyle) style).enableBackground;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof EnableBackground &&
+		value.equals( ((EnableBackground) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "enable-background";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	if (value != null) {
+	    return value;
+	} else {
+	    return values;
+	}
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	if (value != null) {
+	    return value.equals(inherit);
+	} else {
+	    return false;
+	}
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	if (value != null) {
+	    return value.toString();
+	} else {
+	    String ret = "";
+	    for (int i = 0; i < values.size(); i++) {
+		ret += " " + values.elementAt(i).toString();
+	    }
+	    return ret;
+	}
+
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return (value == accumulate);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/svg/Fill.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,319 @@
+//
+// $Id: Fill.java,v 1.3 2008-04-07 14:16:23 ylafon Exp $
+// From Sijtsche de Jong
+//
+// (c) COPYRIGHT 1995-2002  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.svg;
+
+import java.util.Vector;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssColor;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssFunction;
+import org.w3c.css.values.CssIdent;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssURL;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> &lt;paint&gt; | inherit<BR>
+ *  <EM>Initial:</EM>none<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ */
+
+public class Fill extends CssProperty implements CssOperator {
+
+    CssValue fill;
+    ApplContext ac;
+    Vector values = new Vector();
+
+    CssIdent currentColor = new CssIdent("currentColor");
+    CssIdent none = new CssIdent("none");
+
+    /**
+     * Create a new Fill
+     */
+    public Fill() {
+	//nothing to do
+    }
+
+    /**
+     * Create a new Fill
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public Fill(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	this.ac = ac;
+	setByUser(); // tell this property is set by the user
+	CssValue val = expression.getValue();
+	boolean correct = true;
+	String errorval = "";
+	char op = expression.getOperator();
+
+	if (val.equals(inherit)) {
+	    fill = inherit;
+	    expression.next();
+	} else if (val.equals(currentColor)) {
+	    fill = currentColor;
+	    expression.next();
+	} else if (val.equals(none)) {
+	    fill = none;
+	    expression.next();
+	} else {
+	    try {
+		CssColor color = new CssColor(ac, expression);
+		values.addElement(val);
+		//expression.next();
+
+		op = expression.getOperator();
+		val = expression.getValue();
+
+
+		if (val instanceof CssFunction) { // icc-color(<name>[,<icccolorvalue>]*)]
+		    CssValue function = val;
+		    if (!((CssFunction) val).getName().equals("icc-color")) {
+			correct = false;
+			errorval = val.toString();
+		    } else {
+			CssExpression params = ((CssFunction) val).getParameters();
+
+			op = params.getOperator();
+			val = params.getValue();
+
+			if (!(val instanceof CssIdent)) {
+			    correct = false;
+			    errorval = val.toString();
+			}
+
+			params.next();
+			op = params.getOperator();
+			val = params.getValue();
+
+			if (!params.end()) { // there are more parameters left
+			    int counter = 0;
+
+			    while ((op == COMMA || op == SPACE)
+				    && (counter < (params.getCount() - 1) && correct == true)) {
+
+				if ((!(val instanceof CssNumber)) || (((CssNumber) val).getValue() < 0)) {
+				    correct = false;
+				    errorval = val.toString();
+				}
+
+				params.next();
+				counter++;
+				val = params.getValue();
+				op = params.getOperator();
+			    }
+			}
+
+			if (correct) {
+			    params.starts();
+			    values.addElement(function);
+			}
+			else {
+			    correct = false;
+			    errorval = val.toString();
+			}
+		    }
+		}
+	    } catch (InvalidParamException e) {
+		correct = false;
+		errorval = val.toString();
+	    }
+
+	    if (val instanceof CssURL) {
+		values.addElement(val);
+		correct = true;
+		errorval = null;
+
+		expression.next();
+		op = expression.getOperator();
+		val = expression.getValue();
+
+		if (val.equals(none) || val.equals(currentColor)) {
+		    values.addElement(val);
+		    expression.next();
+		} else {
+		    //-------------
+
+		    try {
+			CssColor color = new CssColor(ac, expression);
+			values.addElement(val);
+			//expression.next();
+
+			op = expression.getOperator();
+			val = expression.getValue();
+
+
+			if (val instanceof CssFunction) { // icc-color(<name>[,<icccolorvalue>]*)]
+			    CssValue function = val;
+			    if (!((CssFunction) val).getName().equals("icc-color")) {
+				correct = false;
+				errorval = val.toString();
+			    } else {
+				CssExpression params = ((CssFunction) val).getParameters();
+
+				op = params.getOperator();
+				val = params.getValue();
+
+				if (!(val instanceof CssIdent)) {
+				    correct = false;
+				    errorval = val.toString();
+				}
+
+				params.next();
+				op = params.getOperator();
+				val = params.getValue();
+
+				if (!params.end()) { // there are more parameters left
+				    int counter = 0;
+
+				    while ((op == COMMA || op == SPACE)
+					    && (counter < (params.getCount() - 1) && correct == true)) {
+
+					if ((!(val instanceof CssNumber)) || (((CssNumber) val).getValue() < 0)) {
+					    correct = false;
+					    errorval = val.toString();
+					}
+
+					params.next();
+					counter++;
+					val = params.getValue();
+					op = params.getOperator();
+				    }
+				}
+
+				if (correct) {
+				    params.starts();
+				    values.addElement(function);
+				}
+				else {
+				    correct = false;
+				    errorval = val.toString();
+				}
+			    }
+			}
+		    } catch (InvalidParamException e) {
+			correct = false;
+			errorval = val.toString();
+		    }
+
+		    //-----------------
+		}
+	    } else {
+		correct = false;
+		errorval = val.toString();
+	    }
+
+	}
+
+	expression.next();
+
+	if (!correct) {
+	    throw new InvalidParamException("value", errorval, getPropertyName(), ac);
+	}
+    }
+
+    public Fill(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((SVGTinyStyle) style).fill != null)
+	    style.addRedefinitionWarning(ac, this);
+	((SVGTinyStyle) style).fill = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((SVGTinyStyle) style).getFill();
+	} else {
+	    return ((SVGTinyStyle) style).fill;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof Fill &&
+		fill.equals( ((Fill) property).fill));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "fill";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	if (fill != null)
+	    return fill;
+	else
+	    return values;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return fill.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	if (fill != null) {
+	    return fill.toString();
+	} else {
+	    String ret = "";
+	    for (int i = 0; i < values.size(); i++) {
+		ret += " " + values.elementAt(i).toString();
+	    }
+	    return ret;
+	}
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return fill == none;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/svg/FillOpacity.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,150 @@
+//
+// $Id: FillOpacity.java,v 1.3 2008-04-07 14:16:23 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.svg;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.properties.css3.CssOpacity;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> &lt;opacityvalue&gt; || inherit<BR>
+ *  <EM>Initial:</EM>1<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ */
+
+public class FillOpacity extends CssProperty {
+
+    CssValue value;
+    ApplContext ac;
+
+    /**
+     * Create a new Value
+     */
+    public FillOpacity() {
+	//nothing to do
+    }
+
+    /**
+     * Create a new Value
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public FillOpacity(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	this.ac = ac;
+	setByUser(); // tell this property is set by the user
+	CssValue val = expression.getValue();
+	boolean correct = false;
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	    expression.next();
+	    correct = true;
+	} else {
+	    try {
+		CssOpacity opac = new CssOpacity(ac, expression);
+		value = val;
+		expression.next();
+		correct = true;
+	    } catch (InvalidParamException e) {
+		correct = false;
+	    }
+	}
+	if (!correct) {
+	    throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+	}
+    }
+
+    public FillOpacity(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((SVGBasicStyle) style).fillOpacity != null)
+	    style.addRedefinitionWarning(ac, this);
+	((SVGBasicStyle) style).fillOpacity = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((SVGBasicStyle) style).getFillOpacity();
+	} else {
+	    return ((SVGBasicStyle) style).fillOpacity;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof FillOpacity &&
+		value.equals( ((FillOpacity) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "fill-opacity";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	CssNumber cssnum = new CssNumber(ac, (float) 1.0);
+	return value == cssnum;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/svg/FillRule.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,147 @@
+//
+// $Id: FillRule.java,v 1.3 2008-04-07 14:16:23 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.svg;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> nonzero || evenodd || inherit<BR>
+ *  <EM>Initial:</EM>nonzero<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>yes<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ */
+
+public class FillRule extends CssProperty {
+
+    CssValue fillrule;
+    ApplContext ac;
+
+    CssIdent nonzero = new CssIdent("nonzero");
+    CssIdent evenodd = new CssIdent("evenodd");
+
+    /**
+     * Create a new Fillrule
+     */
+    public FillRule() {
+	//nothing to do
+    }
+
+    /**
+     * Create a new Fillrule
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public FillRule(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	this.ac = ac;
+	setByUser(); // tell this property is set by the user
+	CssValue val = expression.getValue();
+
+	if (val.equals(inherit)) {
+	    fillrule = inherit;
+	    expression.next();
+	} else if (val.equals(nonzero)) {
+	    fillrule = nonzero;
+	    expression.next();
+	} else if (val.equals(evenodd)) {
+	    fillrule = evenodd;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+	}
+    }
+
+    public FillRule(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((SVGTinyStyle) style).fillRule != null)
+	    style.addRedefinitionWarning(ac, this);
+	((SVGTinyStyle) style).fillRule = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((SVGTinyStyle) style).getFillRule();
+	} else {
+	    return ((SVGTinyStyle) style).fillRule;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof FillRule &&
+		fillrule.equals( ((FillRule) property).fillrule));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "fill-rule";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return fillrule;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return fillrule.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return fillrule.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return (fillrule == nonzero);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/svg/Filter.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,150 @@
+//
+// $Id: Filter.java,v 1.3 2008-04-07 14:16:23 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.svg;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssURL;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> &lt;uri&gt; || none || inherit<BR>
+ *  <EM>Initial:</EM>none<BR>
+ *  <EM>Applies to:</EM>graphics and container elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ */
+
+public class Filter extends CssProperty {
+
+    CssValue value;
+    ApplContext ac;
+
+    CssIdent none = new CssIdent("none");
+
+    /**
+     * Create a new Filter
+     */
+    public Filter() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new Filter
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public Filter(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	this.ac = ac;
+	setByUser(); // tell this property is set by the user
+	CssValue val = expression.getValue();
+	if (val instanceof CssURL) {
+	    value = val;
+	    expression.next();
+	}
+	else if (val instanceof CssIdent) {
+	    if (val.equals(inherit)) {
+		value = inherit;
+		expression.next();
+	    } else if (val.equals(none)) {
+		value = none;
+		expression.next();
+	    }
+	}
+	else {
+	    throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+	}
+    }
+
+    public Filter(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((SVGBasicStyle) style).filter != null)
+	    style.addRedefinitionWarning(ac, this);
+	((SVGBasicStyle) style).filter = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((SVGBasicStyle) style).getFilter();
+	} else {
+	    return ((SVGBasicStyle) style).filter;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof Filter &&
+		value.equals( ((Filter) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "filter";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == none;
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/svg/FloodColor.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,235 @@
+//
+// $Id: FloodColor.java,v 1.3 2008-04-07 14:16:23 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.svg;
+
+import java.util.Vector;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssColor;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssFunction;
+import org.w3c.css.values.CssIdent;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> currentColor |
+                    <color> [icc-color(<name>[,<icccolorvalue>]*)] | inherit<BR>
+ *  <EM>Initial:</EM>none<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ */
+
+public class FloodColor extends CssProperty implements CssOperator {
+
+    CssValue floodColor;
+    ApplContext ac;
+    Vector values = new Vector();
+
+    CssIdent currentColor = new CssIdent("currentColor");
+
+    /**
+     * Create a new FloodColor
+     */
+    public FloodColor() {
+	//nothing to do
+    }
+
+    /**
+     * Create a new FloodColor
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public FloodColor(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	this.ac = ac;
+	setByUser(); // tell this property is set by the user
+	CssValue val = expression.getValue();
+	boolean correct = true;
+	String errorval = "";
+	char op = expression.getOperator();
+
+	if (val.equals(inherit)) {
+	    floodColor = inherit;
+	    expression.next();
+	} else if (val.equals(currentColor)) {
+	    floodColor = currentColor;
+	    expression.next();
+	} else {
+	    try {
+		CssColor color = new CssColor(ac, expression);
+		values.addElement(val);
+		//expression.next();
+	    } catch (InvalidParamException e) {
+		correct = false;
+		errorval = val.toString();
+	    }
+
+	    op = expression.getOperator();
+	    val = expression.getValue();
+
+	    if (val != null) {
+
+		if (val instanceof CssFunction) { // icc-color(<name>[,<icccolorvalue>]*)]
+		    CssValue function = val;
+		    if (!((CssFunction) val).getName().equals("icc-color")) {
+			correct = false;
+			errorval = val.toString();
+		    } else {
+			CssExpression params = ((CssFunction) val).getParameters();
+
+			op = params.getOperator();
+			val = params.getValue();
+
+			if (!(val instanceof CssIdent)) {
+			    correct = false;
+			    errorval = val.toString();
+			}
+
+			params.next();
+			op = params.getOperator();
+			val = params.getValue();
+
+			if (!params.end()) { // there are more parameters left
+			    int counter = 0;
+
+			    while ((op == COMMA || op == SPACE)
+				    && (counter < (params.getCount() - 1) && correct == true)) {
+
+				if ((!(val instanceof CssNumber)) || (((CssNumber) val).getValue() < 0)) {
+				    correct = false;
+				    errorval = val.toString();
+				}
+
+				params.next();
+				counter++;
+				val = params.getValue();
+				op = params.getOperator();
+			    }
+			}
+
+			if (correct) {
+			    params.starts();
+			    values.addElement(function);
+			}
+		    }
+		} else {
+		    correct = false;
+		    errorval = val.toString();
+		}
+	    } else {
+		correct = false;
+		errorval = new String("");
+	    }
+
+	    expression.next();
+
+	}
+
+	if (!correct) {
+	    throw new InvalidParamException("value", errorval, getPropertyName(), ac);
+	}
+    }
+
+    public FloodColor(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((SVGBasicStyle) style).floodColor != null)
+	    style.addRedefinitionWarning(ac, this);
+	((SVGBasicStyle) style).floodColor = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((SVGBasicStyle) style).getFloodColor();
+	} else {
+	    return ((SVGBasicStyle) style).floodColor;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof FloodColor &&
+		floodColor.equals( ((FloodColor) property).floodColor));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "flood-color";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	if (floodColor != null)
+	    return floodColor;
+	else
+	    return values;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return floodColor.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	if (floodColor != null) {
+	    return floodColor.toString();
+	} else {
+	    String ret = "";
+	    for (int i = 0; i < values.size(); i++) {
+		ret += " " + values.elementAt(i).toString();
+	    }
+	    return ret;
+	}
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/svg/FloodOpacity.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,163 @@
+//
+// $Id: FloodOpacity.java,v 1.3 2008-04-07 14:16:23 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.svg;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.util.Util;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssIdent;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> &lt; alphavalue&gt; || inherit<BR>
+ *  <EM>Initial:</EM>1<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual<BR>
+ */
+
+public class FloodOpacity extends CssProperty {
+
+    CssValue opaclevel;
+    ApplContext ac;
+
+    /**
+     * Create a new FloodOpacity
+     */
+    public FloodOpacity() {
+	CssNumber cssnum =  new CssNumber((float) 1.0);
+	opaclevel = cssnum;
+    }
+
+    /**
+     * Create a new FloodOpacity
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public FloodOpacity(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	this.ac = ac;
+	setByUser(); // tell this property is set by the user
+	CssValue val = expression.getValue();
+	if (val instanceof CssNumber) {
+
+	    CssNumber cssnum = new CssNumber(clampedValue(ac, ((CssNumber) val).getValue()));
+	    opaclevel = cssnum;
+	    expression.next();
+	}
+	else if (val instanceof CssIdent) {
+	    if (val.equals(inherit)) {
+		opaclevel = inherit;
+		expression.next();
+	    }
+	}
+	else {
+	    throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+	}
+    }
+
+    public FloodOpacity(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Brings all values back between 0 and 1
+     *
+     * @param opac The value to be modified if necessary
+     */
+    private float clampedValue(ApplContext ac, float opac) {
+	if (opac < 0 || opac > 1) {
+	    ac.getFrame().addWarning("out-of-range", Util.displayFloat(opac));
+	    return ((opac<0)?0:1);
+	}
+	else return(opac);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((SVGBasicStyle) style).floodOpacity != null)
+	    style.addRedefinitionWarning(ac, this);
+	((SVGBasicStyle) style).floodOpacity = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((SVGBasicStyle) style).getFloodOpacity();
+	} else {
+	    return ((SVGBasicStyle) style).floodOpacity;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof FloodOpacity &&
+		opaclevel.equals( ((FloodOpacity) property).opaclevel));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "flood-opacity";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return opaclevel;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return opaclevel.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return opaclevel.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	CssNumber cssnum = new CssNumber(ac, (float) 1.0);
+	return opaclevel == cssnum;
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/svg/ImageRendering.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,151 @@
+//
+// $Id: ImageRendering.java,v 1.3 2008-04-07 14:16:23 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.svg;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> auto || optimizeSpeed || optimizeQuality || inherit<BR>
+ *  <EM>Initial:</EM>auto<BR>
+ *  <EM>Applies to:</EM>images<BR>
+ *  <EM>Inherited:</EM>yes<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ */
+
+public class ImageRendering extends CssProperty {
+
+    CssValue rendering;
+    ApplContext ac;
+
+    CssIdent auto = new CssIdent("auto");
+    CssIdent optimizeSpeed = new CssIdent("optimizeSpeed");
+    CssIdent optimizeQuality = new CssIdent("optimizeQuality");
+
+    /**
+     * Create a new Rendering
+     */
+    public ImageRendering() {
+	//nothing to do
+    }
+
+    /**
+     * Create a new ImageRendering
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public ImageRendering(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	this.ac = ac;
+	setByUser(); // tell this property is set by the user
+	CssValue val = expression.getValue();
+
+	if (val.equals(inherit)) {
+	    rendering = inherit;
+	    expression.next();
+	} else if (val.equals(optimizeSpeed)) {
+	    rendering = val;
+	    expression.next();
+	} else if (val.equals(optimizeQuality)) {
+	    rendering = val;
+	    expression.next();
+	} else if (val.equals(auto)) {
+	    rendering = auto;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+	}
+    }
+
+    public ImageRendering(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((SVGBasicStyle) style).imageRendering != null)
+	    style.addRedefinitionWarning(ac, this);
+	((SVGBasicStyle) style).imageRendering = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((SVGBasicStyle) style).getImageRendering();
+	} else {
+	    return ((SVGBasicStyle) style).imageRendering;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof ImageRendering &&
+		rendering.equals( ((ImageRendering) property).rendering));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "image-rendering";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return rendering;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return rendering.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return rendering.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return (rendering == auto);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/svg/Kerning.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,142 @@
+//
+// $Id: Kerning.java,v 1.3 2008-04-07 14:16:23 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.svg;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssLength;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'kerning'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> auto | &lt;length&gt; <BR>
+ *   <EM>Initial:</EM> auto<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ */
+public class Kerning extends CssProperty {
+
+    CssValue value;
+    static CssIdent auto = new CssIdent("auto");
+
+    /**
+     * Create a new Kerning
+     */
+    public Kerning() {
+	//nothing to do
+    }
+
+    /**
+     * Create a new Kerning
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public Kerning(ApplContext ac, CssExpression expression,
+	    boolean check)
+	throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val instanceof CssLength) {
+	    value = val;
+	    expression.next();
+	} else if (val.equals(inherit)) {
+	    value = inherit;
+	    expression.next();
+	} else if (val.equals(auto)) {
+	    value = auto;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value",
+					    expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public Kerning(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "kerning";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	SVGBasicStyle style0 = (SVGBasicStyle) style;
+	if (style0.kerning != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.kerning = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((SVGBasicStyle) style).getKerning();
+	} else {
+	    return ((SVGBasicStyle) style).kerning;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof Kerning &&
+		value.equals(((Kerning) property).value));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/svg/LightingColor.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,236 @@
+//
+// $Id: LightingColor.java,v 1.2 2005-09-14 15:15:27 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.svg;
+
+import java.util.Vector;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssColor;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssFunction;
+import org.w3c.css.values.CssIdent;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> currentColor |
+                    <color> [icc-color(<name>[,<icccolorvalue>]*)] | inherit<BR>
+ *  <EM>Initial:</EM>none<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ */
+
+public class LightingColor extends CssProperty implements CssOperator {
+
+    CssValue lightingColor;
+    ApplContext ac;
+    Vector values = new Vector();
+
+    CssIdent currentColor = new CssIdent("currentColor");
+
+    /**
+     * Create a new LightingColor
+     */
+    public LightingColor() {
+	//nothing to do
+    }
+
+    /**
+     * Create a new LightingColor
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public LightingColor(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	this.ac = ac;
+	setByUser(); // tell this property is set by the user
+	CssValue val = expression.getValue();
+
+	boolean correct = true;
+	String errorval = "";
+	char op = expression.getOperator();
+	CssColor color;
+
+	if (val.equals(inherit)) {
+	    lightingColor = inherit;
+	    expression.next();
+	} else if (val.equals(currentColor)) {
+	    lightingColor = currentColor;
+	    expression.next();
+	} else {
+	    try {
+		color = new CssColor(ac, expression);
+		values.addElement(val);
+		//expression.next();
+	    } catch (InvalidParamException e) {
+		correct = false;
+		errorval = val.toString();
+	    }
+
+	    op = expression.getOperator();
+	    val = expression.getValue();
+
+	    if (val != null) {
+		if (val instanceof CssFunction) { // icc-color(<name>[,<icccolorvalue>]*)]
+		    CssValue function = val;
+		    if (!((CssFunction) val).getName().equals("icc-color")) {
+			correct = false;
+			errorval = val.toString();
+		    } else {
+			CssExpression params = ((CssFunction) val).getParameters();
+
+			op = params.getOperator();
+			val = params.getValue();
+
+			if (!(val instanceof CssIdent)) {
+			    correct = false;
+			    errorval = val.toString();
+			}
+
+			params.next();
+			op = params.getOperator();
+			val = params.getValue();
+
+			if (!params.end()) { // there are more parameters left
+			    int counter = 0;
+
+			    while ((op == COMMA || op == SPACE)
+				    && (counter < (params.getCount() - 1) && correct == true)) {
+
+				if ((!(val instanceof CssNumber)) || (((CssNumber) val).getValue() < 0)) {
+				    correct = false;
+				    errorval = val.toString();
+				}
+
+				params.next();
+				counter++;
+				val = params.getValue();
+				op = params.getOperator();
+			    }
+			}
+
+			if (correct) {
+			    params.starts();
+			    values.addElement(function);
+			}
+		    }
+		} else {
+		    correct = false;
+		    errorval = val.toString();
+		}
+	    } else {
+		correct = false;
+		errorval = new String("");
+	    }
+
+	    expression.next();
+
+	}
+
+	if (!correct) {
+	    throw new InvalidParamException("value", errorval, getPropertyName(), ac);
+	}
+    }
+
+    public LightingColor(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((SVGStyle) style).lightingColor != null)
+	    style.addRedefinitionWarning(ac, this);
+	((SVGStyle) style).lightingColor = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((SVGStyle) style).getLightingColor();
+	} else {
+	    return ((SVGStyle) style).lightingColor;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof LightingColor &&
+		lightingColor.equals( ((LightingColor) property).lightingColor));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "lighting-color";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	if (lightingColor != null)
+	    return lightingColor;
+	else
+	    return values;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return lightingColor.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	if (lightingColor != null) {
+	    return lightingColor.toString();
+	} else {
+	    String ret = "";
+	    for (int i = 0; i < values.size(); i++) {
+		ret += " " + values.elementAt(i).toString();
+	    }
+	    return ret;
+	}
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/svg/Marker.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,180 @@
+//
+// $Id: Marker.java,v 1.2 2005-09-14 15:15:27 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// COPYRIGHT (c) 1995-2000 World Wide Web Consortium, (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.svg;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ * <P>
+ * <EM>Value:</EM> &lt;marker-end&gt; || &lt;marker-mid&gt; ||
+ *  &lt;marker-start&gt; || inherit<BR>
+ * <EM>Initial:</EM>see individual properties<BR>
+ * <EM>Applies to:</EM>path, line, polyline and polygon elements<BR>
+ * <EM>Inherited</EM>see Inheritance of Painting Properties<BR>
+ * <EM>Percentages:</EM>no<BR>
+ * <EM>Media:</EM>visual
+ */
+
+public class Marker extends CssProperty
+implements CssOperator {
+
+    CssValue value;
+    MarkerEnd markerEnd;
+    MarkerMid markerMid;
+    MarkerStart markerStart;
+
+    /**
+     * Creates a new Marker
+     */
+    public Marker() {
+	// nothing to do
+    }
+
+    /**
+     * Creates a new Marker
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException The expression is incorrect
+     */
+    public Marker(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	CssValue val = expression.getValue();
+	int maxvalues = 3;
+	boolean correct = true;
+	char op = SPACE;
+
+	while (correct && (val != null) && (maxvalues-- > 0)) {
+
+	    correct = false;
+
+	    if (markerStart == null) {
+		try {
+		    markerStart = new MarkerStart(ac, expression);
+		    correct = true;
+		} catch (InvalidParamException e) { }
+	    } else if (markerEnd == null) {
+		try {
+		    markerEnd = new MarkerEnd(ac, expression);
+		    correct = true;
+		} catch (InvalidParamException e) { }
+	    } else if (markerMid == null) {
+		try {
+		    markerMid = new MarkerMid(ac, expression);
+		    correct = true;
+		} catch (InvalidParamException e) { }
+	    }
+	    if (!correct) {
+		throw new InvalidParamException("value", expression.getValue(),
+			getPropertyName(), ac);
+	    }
+
+	    val = expression.getValue();
+	    op = expression.getOperator();
+
+	}
+
+    }
+
+    public Marker(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((SVGStyle) style).marker != null)
+	    style.addRedefinitionWarning(ac, this);
+	((SVGStyle) style).marker = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((SVGStyle) style).getMarker();
+	}
+	else {
+	    return ((SVGStyle) style).marker;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return false;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "marker";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return null;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    //    public boolean isSoftlyInherited() {
+    //	return value.equals(inherit);
+    //}
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	String ret = "";
+
+	if (markerStart != null) {
+	    if (markerStart.isByUser()) {
+		ret += " " + markerStart;
+	    }
+	}
+
+	if (markerEnd != null) {
+	    if (markerEnd.isByUser()) {
+		ret += " " + markerEnd;
+	    }
+	}
+
+	if (markerMid != null) {
+	    if (markerMid.isByUser()) {
+		ret += " " + markerMid;
+	    }
+	}
+
+	return ret.substring(1);
+
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/svg/MarkerEnd.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,149 @@
+//
+// $Id: MarkerEnd.java,v 1.2 2005-09-14 15:15:27 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.svg;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssURL;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> &lt;uri&gt; || none || inherit<BR>
+ *  <EM>Initial:</EM>none<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ */
+
+public class MarkerEnd extends CssProperty {
+
+    CssValue markerEnd;
+    ApplContext ac;
+
+    CssIdent none = new CssIdent("none");
+
+    /**
+     * Create a new MarkerEnd
+     */
+    public MarkerEnd() {
+	//nothing to do
+    }
+
+    /**
+     * Create a new MarkerEnd
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public MarkerEnd(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	this.ac = ac;
+	setByUser(); // tell this property is set by the user
+	CssValue val = expression.getValue();
+	if (val instanceof CssURL) {
+	    markerEnd = val;
+	    expression.next();
+	}
+	else if (val instanceof CssIdent) {
+	    if (val.equals(inherit)) {
+		markerEnd = inherit;
+		expression.next();
+	    } else if (val.equals(none)) {
+		markerEnd = none;
+		expression.next();
+	    }
+	}
+	else {
+	    throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+	}
+    }
+
+    public MarkerEnd(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((SVGStyle) style).markerEnd != null)
+	    style.addRedefinitionWarning(ac, this);
+	((SVGStyle) style).markerEnd = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((SVGStyle) style).getMarkerEnd();
+	} else {
+	    return ((SVGStyle) style).markerEnd;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof MarkerEnd &&
+		markerEnd.equals( ((MarkerEnd) property).markerEnd));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "marker-end";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return markerEnd;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return markerEnd.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return markerEnd.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return (markerEnd == none);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/svg/MarkerMid.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,149 @@
+//
+// $Id: MarkerMid.java,v 1.2 2005-09-14 15:15:27 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.svg;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssURL;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> &lt;uri&gt; || none || inherit<BR>
+ *  <EM>Initial:</EM>none<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ */
+
+public class MarkerMid extends CssProperty {
+
+    CssValue markerMid;
+    ApplContext ac;
+
+    CssIdent none = new CssIdent("none");
+
+    /**
+     * Create a new MarkerMid
+     */
+    public MarkerMid() {
+	//nothing to do
+    }
+
+    /**
+     * Create a new MarkerMid
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public MarkerMid(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	this.ac = ac;
+	setByUser(); // tell this property is set by the user
+	CssValue val = expression.getValue();
+	if (val instanceof CssURL) {
+	    markerMid = val;
+	    expression.next();
+	}
+	else if (val instanceof CssIdent) {
+	    if (val.equals(inherit)) {
+		markerMid = inherit;
+		expression.next();
+	    } else if (val.equals(none)) {
+		markerMid = none;
+		expression.next();
+	    }
+	}
+	else {
+	    throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+	}
+    }
+
+    public MarkerMid(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((SVGStyle) style).markerMid != null)
+	    style.addRedefinitionWarning(ac, this);
+	((SVGStyle) style).markerMid = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((SVGStyle) style).getMarkerMid();
+	} else {
+	    return ((SVGStyle) style).markerMid;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof MarkerMid &&
+		markerMid.equals( ((MarkerMid) property).markerMid));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "marker-mid";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return markerMid;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return markerMid.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return markerMid.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return (markerMid == none);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/svg/MarkerStart.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,149 @@
+//
+// $Id: MarkerStart.java,v 1.2 2005-09-14 15:15:27 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.svg;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssURL;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> &lt;uri&gt; || none || inherit<BR>
+ *  <EM>Initial:</EM>none<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ */
+
+public class MarkerStart extends CssProperty {
+
+    CssValue markerStart;
+    ApplContext ac;
+
+    CssIdent none = new CssIdent("none");
+
+    /**
+     * Create a new MarkerStart
+     */
+    public MarkerStart() {
+	//nothing to do
+    }
+
+    /**
+     * Create a new MarkerStart
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public MarkerStart(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	this.ac = ac;
+	setByUser(); // tell this property is set by the user
+	CssValue val = expression.getValue();
+	if (val instanceof CssURL) {
+	    markerStart = val;
+	    expression.next();
+	}
+	else if (val instanceof CssIdent) {
+	    if (val.equals(inherit)) {
+		markerStart = inherit;
+		expression.next();
+	    } else if (val.equals(none)) {
+		markerStart = none;
+		expression.next();
+	    }
+	}
+	else {
+	    throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+	}
+    }
+
+    public MarkerStart(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((SVGStyle) style).markerStart != null)
+	    style.addRedefinitionWarning(ac, this);
+	((SVGStyle) style).markerStart = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((SVGStyle) style).getMarkerStart();
+	} else {
+	    return ((SVGStyle) style).markerStart;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof MarkerStart &&
+		markerStart.equals( ((MarkerStart) property).markerStart));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "marker-start";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return markerStart;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return markerStart.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return markerStart.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return (markerStart == none);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/svg/Mask.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,149 @@
+//
+// $Id: Mask.java,v 1.3 2008-04-07 14:16:23 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.svg;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssURL;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> &lt;uri&gt; || none || inherit<BR>
+ *  <EM>Initial:</EM>none<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ */
+
+public class Mask extends CssProperty {
+
+    CssValue mask;
+    ApplContext ac;
+
+    CssIdent none = new CssIdent("none");
+
+    /**
+     * Create a new Mask
+     */
+    public Mask() {
+	//nothing to do
+    }
+
+    /**
+     * Create a new Mask
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public Mask(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	this.ac = ac;
+	setByUser(); // tell this property is set by the user
+	CssValue val = expression.getValue();
+	if (val instanceof CssURL) {
+	    mask = val;
+	    expression.next();
+	}
+	else if (val instanceof CssIdent) {
+	    if (val.equals(inherit)) {
+		mask = inherit;
+		expression.next();
+	    } else if (val.equals(none)) {
+		mask = none;
+		expression.next();
+	    }
+	}
+	else {
+	    throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+	}
+    }
+
+    public Mask(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((SVGBasicStyle) style).mask != null)
+	    style.addRedefinitionWarning(ac, this);
+	((SVGBasicStyle) style).mask = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((SVGBasicStyle) style).getMask();
+	} else {
+	    return ((SVGBasicStyle) style).mask;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof Mask &&
+		mask.equals( ((Mask) property).mask));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "mask";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return mask;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return mask.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return mask.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return (mask == none);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/svg/PointerEvents.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,151 @@
+//
+// $Id: PointerEvents.java,v 1.3 2008-04-07 14:16:24 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.svg;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> visiblePainted | visibleFill | visibleStroke |
+ *  visible | painted | fill | stroke | all | none | inherit <BR>
+ *  <EM>Initial:</EM>visiblePainted<BR>
+ *  <EM>Applies to:</EM>container and graphics elements<BR>
+ *  <EM>Inherited:</EM>yes<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ */
+
+public class PointerEvents extends CssProperty {
+
+    CssValue events;
+
+    static CssIdent visiblePainted = new CssIdent("visiblePainted");
+
+    private static String[] values = {
+	"visiblePainted", "visibleFill", "visibleStroke",
+	"visible", "painted", "fill", "stroke", "all", "none", "inherit"
+    };
+
+    /**
+     * Create a new PointerEvents
+     */
+    public PointerEvents() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new PointerEvents
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public PointerEvents(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	int i = 0;
+	for (; i < values.length; i++) {
+	    if (val.toString().equals(values[i])) {
+		events = val;
+		expression.next();
+		break;
+	    }
+	}
+	if (i == values.length) {
+	    throw new InvalidParamException("value", expression.getValue(),
+		    getPropertyName(), ac);
+	}
+    }
+
+    public PointerEvents(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((SVGBasicStyle) style).pointerEvents != null)
+	    style.addRedefinitionWarning(ac, this);
+	((SVGBasicStyle) style).pointerEvents = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((SVGBasicStyle) style).getPointerEvents();
+	}
+	else {
+	    return ((SVGBasicStyle) style).pointerEvents;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof PointerEvents &&
+		events.equals(((PointerEvents) property).events));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "pointer-events";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return events;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return events.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return events.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return (events == visiblePainted);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/svg/SVGBasicStyle.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,363 @@
+//
+// $Id: SVGBasicStyle.java,v 1.3 2008-04-07 14:32:41 ylafon Exp $
+// From Sijtsche de Jong
+//
+// COPYRIGHT (c) 1995-2002 World Wide Web Consortium, (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.svg;
+
+import org.w3c.css.parser.CssPrinterStyle;
+
+public class SVGBasicStyle extends SVGTinyStyle {
+
+    AlignmentBaseline alignmentBaseline;
+    ClipPath clipPath;
+    ClipRule clipRule;
+    ColorInterpolation colorInterpolation;
+    ColorInterpolationFilters colorInterpolationFilters;
+    ColorRendering colorRendering;
+    EnableBackground enableBackground;
+    WritingModeSVG writingModeSVG;
+    FloodOpacity floodOpacity;
+    Filter filter;
+    FillOpacity fillOpacity;
+    ImageRendering imageRendering;
+    Mask mask;
+    StopOpacity stopOpacity;
+    Kerning kerning;
+    PointerEvents pointerEvents;
+    ShapeRendering shapeRendering;
+    TextRendering textRendering;
+    TextAnchor textAnchor;
+    StrokeOpacity strokeOpacity;
+    StopColor stopColor;
+    SolidColor solidColor;
+    FloodColor floodColor;
+    ColorProfile colorProfile;
+    DominantBaseLine dominantBaseLine;
+    SolidOpacity solidOpacity;
+
+    public AlignmentBaseline getAlignmentBaseline() {
+	if (alignmentBaseline == null) {
+	    alignmentBaseline =
+		(AlignmentBaseline) style.CascadingOrder (
+		    new AlignmentBaseline(), style, selector);
+	}
+	return alignmentBaseline;
+    }
+
+    public DominantBaseLine getDominantBaseLineSVG() {
+	if (dominantBaseLine == null) {
+	    dominantBaseLine =
+		(DominantBaseLine) style.CascadingOrder (
+		    new DominantBaseLine(), style, selector);
+	}
+	return dominantBaseLine;
+    }
+
+    public ClipPath getClipPath() {
+	if (clipPath == null) {
+	    clipPath =
+		(ClipPath) style.CascadingOrder (
+		    new ClipPath(), style, selector);
+	}
+	return clipPath;
+    }
+
+    public ClipRule getClipRule() {
+	if (clipRule == null) {
+	    clipRule =
+		(ClipRule) style.CascadingOrder (
+		    new ClipRule(), style, selector);
+	}
+	return clipRule;
+    }
+
+    public ColorInterpolation getColorInterpolation() {
+	if (colorInterpolation == null) {
+	    colorInterpolation =
+		(ColorInterpolation) style.CascadingOrder (
+		    new ColorInterpolation(), style, selector);
+	}
+	return colorInterpolation;
+    }
+
+    public ColorInterpolationFilters getColorInterpolationFilters() {
+	if (colorInterpolationFilters == null) {
+	    colorInterpolationFilters =
+		(ColorInterpolationFilters) style.CascadingOrder (
+		    new ColorInterpolationFilters(), style, selector);
+	}
+	return colorInterpolationFilters;
+    }
+
+    public ColorRendering getColorRendering() {
+	if (colorRendering == null) {
+	    colorRendering =
+		(ColorRendering) style.CascadingOrder (
+		    new ColorRendering(), style, selector);
+	}
+	return colorRendering;
+    }
+
+    public EnableBackground getEnableBackground() {
+	if (enableBackground == null) {
+	    enableBackground =
+		(EnableBackground) style.CascadingOrder (
+		    new EnableBackground(), style, selector);
+	}
+	return enableBackground;
+    }
+
+    public WritingModeSVG getWritingModeSVG() {
+	if (writingModeSVG == null) {
+	    writingModeSVG =
+		(WritingModeSVG) style.CascadingOrder (
+		    new WritingModeSVG(), style, selector);
+	}
+	return writingModeSVG;
+    }
+
+    public FloodOpacity getFloodOpacity() {
+	if (floodOpacity == null) {
+	    floodOpacity =
+		(FloodOpacity) style.CascadingOrder (
+		    new FloodOpacity(), style, selector);
+	}
+	return floodOpacity;
+    }
+
+    public Filter getFilter() {
+	if (filter == null) {
+	    filter =
+		(Filter) style.CascadingOrder (
+		    new Filter(), style, selector);
+	}
+	return filter;
+    }
+
+    public FillOpacity getFillOpacity() {
+	if (fillOpacity == null) {
+	    fillOpacity =
+		(FillOpacity) style.CascadingOrder (
+		    new FillOpacity(), style, selector);
+	}
+	return fillOpacity;
+    }
+
+    public ImageRendering getImageRendering() {
+	if (imageRendering == null) {
+	    imageRendering =
+		(ImageRendering) style.CascadingOrder (
+		    new ImageRendering(), style, selector);
+	}
+	return imageRendering;
+    }
+
+    public Mask getMask() {
+	if (mask == null) {
+	    mask =
+		(Mask) style.CascadingOrder (
+		    new Mask(), style, selector);
+	}
+	return mask;
+    }
+
+    public StopOpacity getStopOpacity() {
+	if (stopOpacity == null) {
+	    stopOpacity =
+		(StopOpacity) style.CascadingOrder (
+		    new StopOpacity(), style, selector);
+	}
+	return stopOpacity;
+    }
+
+    public Kerning getKerning() {
+	if (kerning == null) {
+	    kerning =
+		(Kerning) style.CascadingOrder (
+		    new Kerning(), style, selector);
+	}
+	return kerning;
+    }
+
+    public PointerEvents getPointerEvents() {
+	if (pointerEvents == null) {
+	    pointerEvents =
+		(PointerEvents) style.CascadingOrder (
+		    new PointerEvents(), style, selector);
+	}
+	return pointerEvents;
+    }
+
+    public ShapeRendering getShapeRendering() {
+	if (shapeRendering == null) {
+	    shapeRendering =
+		(ShapeRendering) style.CascadingOrder (
+		    new ShapeRendering(), style, selector);
+	}
+	return shapeRendering;
+    }
+
+    public TextRendering getTextRendering() {
+	if (textRendering == null) {
+	    textRendering =
+		(TextRendering) style.CascadingOrder (
+		    new TextRendering(), style, selector);
+	}
+	return textRendering;
+    }
+
+    public TextAnchor getTextAnchor() {
+	if (textAnchor == null) {
+	    textAnchor =
+		(TextAnchor) style.CascadingOrder (
+		    new TextAnchor(), style, selector);
+	}
+	return textAnchor;
+    }
+
+    public StrokeOpacity getStrokeOpacity() {
+	if (strokeOpacity == null) {
+	    strokeOpacity =
+		(StrokeOpacity) style.CascadingOrder (
+		    new StrokeOpacity(), style, selector);
+	}
+	return strokeOpacity;
+    }
+
+    public StopColor getStopColor() {
+	if (stopColor == null) {
+	    stopColor =
+		(StopColor) style.CascadingOrder (
+		    new StopColor(), style, selector);
+	}
+	return stopColor;
+    }
+
+    public SolidColor getSolidColor() {
+	if (solidColor == null) {
+	    solidColor =
+		(SolidColor) style.CascadingOrder (
+		    new SolidColor(), style, selector);
+	}
+	return solidColor;
+    }
+
+    public FloodColor getFloodColor() {
+	if (floodColor == null) {
+	    floodColor =
+		(FloodColor) style.CascadingOrder (
+		    new FloodColor(), style, selector);
+	}
+	return floodColor;
+    }
+
+    public ColorProfile getColorProfileSVG() {
+	if (colorProfile == null) {
+	    colorProfile =
+		(ColorProfile) style.CascadingOrder (
+		    new ColorProfile(), style, selector);
+	}
+	return colorProfile;
+    }
+
+    public SolidOpacity getSolidOpacity() {
+	if (solidOpacity == null) {
+	    solidOpacity =
+		(SolidOpacity) style.CascadingOrder (
+		    new SolidOpacity(), style, selector);
+	}
+	return solidOpacity;
+    }
+    
+    /**
+     * Print this style
+     *
+     * @param printer The printer interface
+     */
+    public void print(CssPrinterStyle printer) {
+	super.print(printer);
+
+	if (alignmentBaseline != null) {
+	    alignmentBaseline.print(printer);
+	}
+	if (dominantBaseLine != null) {
+	    dominantBaseLine.print(printer);
+	}
+	if (clipPath != null) {
+	    clipPath.print(printer);
+	}
+	if (clipRule != null) {
+	    clipRule.print(printer);
+	}
+	if (colorInterpolation != null) {
+	    colorInterpolation.print(printer);
+	}
+	if (colorInterpolationFilters != null) {
+	    colorInterpolationFilters.print(printer);
+	}
+	if (colorRendering != null) {
+	    colorRendering.print(printer);
+	}
+	if (enableBackground != null) {
+	    enableBackground.print(printer);
+	}
+	if (writingModeSVG != null) {
+	    writingModeSVG.print(printer);
+	}
+	if (floodOpacity != null) {
+	    floodOpacity.print(printer);
+	}
+	if (filter != null) {
+	    filter.print(printer);
+	}
+	if (fillOpacity != null) {
+	    fillOpacity.print(printer);
+	}
+	if (imageRendering != null) {
+	    imageRendering.print(printer);
+	}
+	if (mask != null) {
+	    mask.print(printer);
+	}
+	if (stopOpacity != null) {
+	    stopOpacity.print(printer);
+	}
+	if (kerning != null) {
+	    kerning.print(printer);
+	}
+	if (pointerEvents != null) {
+	    pointerEvents.print(printer);
+	}
+	if (shapeRendering != null) {
+	    shapeRendering.print(printer);
+	}
+	if (textRendering != null) {
+	    textRendering.print(printer);
+	}
+	if (textAnchor != null) {
+	    textAnchor.print(printer);
+	}
+	if (strokeOpacity != null) {
+	    strokeOpacity.print(printer);
+	}
+	if (stopColor != null) {
+	    stopColor.print(printer);
+	}
+	if (solidColor != null) {
+	    solidColor.print(printer);
+	}
+	if (floodColor != null) {
+	    floodColor.print(printer);
+	}
+	if (colorProfile != null) {
+	    colorProfile.print(printer);
+	}
+	if (solidOpacity != null) {
+	    solidOpacity.print(printer);
+	}
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/svg/SVGStyle.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,129 @@
+//
+// $Id: SVGStyle.java,v 1.3 2008-04-07 14:16:24 ylafon Exp $
+// From Sijtsche de Jong
+//
+// COPYRIGHT (c) 1995-2002 World Wide Web Consortium, (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.svg;
+
+import org.w3c.css.parser.CssPrinterStyle;
+
+public class SVGStyle extends SVGBasicStyle {
+
+    Marker marker;
+    MarkerStart markerStart;
+    MarkerEnd markerEnd;
+    MarkerMid markerMid;
+    LightingColor lightingColor;
+    ColorProfileSrc cpSrc;
+    ColorProfileName cpName;
+    CssRenderIntent cssRenderIntent;
+
+    public Marker getMarker() {
+	if (marker == null) {
+	    marker =
+		(Marker) style.CascadingOrder (
+			new Marker(), style, selector);
+	}
+	return marker;
+    }
+
+    public MarkerStart getMarkerStart() {
+	if (markerStart == null) {
+	    markerStart =
+		(MarkerStart) style.CascadingOrder (
+			new MarkerStart(), style, selector);
+	}
+	return markerStart;
+    }
+
+    public MarkerEnd getMarkerEnd() {
+	if (markerEnd == null) {
+	    markerEnd =
+		(MarkerEnd) style.CascadingOrder (
+			new MarkerEnd(), style, selector);
+	}
+	return markerEnd;
+    }
+
+    public MarkerMid getMarkerMid() {
+	if (markerMid == null) {
+	    markerMid =
+		(MarkerMid) style.CascadingOrder (
+			new MarkerMid(), style, selector);
+	}
+	return markerMid;
+    }
+
+    public LightingColor getLightingColor() {
+	if (lightingColor == null) {
+	    lightingColor =
+		(LightingColor) style.CascadingOrder(
+			new LightingColor(), style, selector);
+	}
+	return lightingColor;
+    }
+
+    public ColorProfileSrc getColorProfileSrc() {
+	if (cpSrc == null) {
+	    cpSrc =
+		(ColorProfileSrc) style.CascadingOrder (
+			new ColorProfileSrc(), style, selector);
+	}
+	return cpSrc;
+    }
+
+    public ColorProfileName getColorProfileName() {
+	if (cpName == null) {
+	    cpName =
+		(ColorProfileName) style.CascadingOrder (
+			new ColorProfileName(), style, selector);
+	}
+	return cpName;
+    }
+
+    public CssRenderIntent getCssRenderIntent() {
+	if (cssRenderIntent == null) {
+	    cssRenderIntent =
+		(CssRenderIntent) style.CascadingOrder (
+			new CssRenderIntent(), style, selector);
+	}
+	return cssRenderIntent;
+    }
+
+    /**
+     * Print this style
+     *
+     * @param printer The printer interface
+     */
+    public void print(CssPrinterStyle printer) {
+	super.print(printer);
+
+	if (marker != null) {
+	    marker.print(printer);
+	}
+	if (markerStart != null) {
+	    markerStart.print(printer);
+	}
+	if (markerEnd != null) {
+	    markerEnd.print(printer);
+	}
+	if (markerMid != null) {
+	    markerMid.print(printer);
+	}
+	if (lightingColor != null) {
+	    lightingColor.print(printer);
+	}
+	if (cpSrc != null) {
+	    cpSrc.print(printer);
+	}
+	if (cpName != null) {
+	    cpName.print(printer);
+	}
+	if (cssRenderIntent != null) {
+	    cssRenderIntent.print(printer);
+	}
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/svg/SVGTinyStyle.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,153 @@
+//
+// $Id: SVGTinyStyle.java,v 1.3 2008-04-07 14:16:24 ylafon Exp $
+// From Sijtsche de Jong
+//
+// COPYRIGHT (c) 1995-2002 World Wide Web Consortium, (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.svg;
+
+import org.w3c.css.properties.css3.Css3Style;
+
+import org.w3c.css.parser.CssPrinterStyle;
+
+public class SVGTinyStyle extends Css3Style {
+
+    FillRule fillRule;
+    StrokeLinejoin strokeLinejoin;
+    StrokeLineCap strokeLineCap;
+    StrokeMiterLimit strokeMiterLimit;
+    StrokeWidth strokeWidth;
+    StrokeDashOffset strokeDashOffset;
+    StrokeDashArray strokeDashArray;
+    Stroke stroke;
+    Fill fill;
+
+    public FillRule getFillRule() {
+	if (fillRule == null) {
+	    fillRule =
+		(FillRule) style.CascadingOrder (
+		    new FillRule(), style, selector);
+	}
+	return fillRule;
+    }
+    
+    public StrokeLinejoin getStrokeLinejoin() {
+	if (strokeLinejoin == null) {
+	    strokeLinejoin =
+		(StrokeLinejoin) style.CascadingOrder (
+		    new StrokeLinejoin(), style, selector);
+	}
+	return strokeLinejoin;
+    }
+
+    public StrokeLineCap getStrokeLineCap() {
+	if (strokeLineCap == null) {
+	    strokeLineCap =
+		(StrokeLineCap) style.CascadingOrder (
+		    new StrokeLineCap(), style, selector);
+	}
+	return strokeLineCap;
+    }
+
+    public StrokeMiterLimit getStrokeMiterLimit() {
+	if (strokeMiterLimit == null) {
+	    strokeMiterLimit =
+		(StrokeMiterLimit) style.CascadingOrder (
+		    new StrokeMiterLimit(), style, selector);
+	}
+	return strokeMiterLimit;
+    }
+
+    public StrokeWidth getStrokeWidth() {
+	if (strokeWidth == null) {
+	    strokeWidth =
+		(StrokeWidth) style.CascadingOrder (
+		    new StrokeWidth(), style, selector);
+	}
+	return strokeWidth;
+    }
+
+    public StrokeDashOffset getStrokeDashOffset() {
+	if (strokeDashOffset == null) {
+	    strokeDashOffset =
+		(StrokeDashOffset) style.CascadingOrder (
+		    new StrokeDashOffset(), style, selector);
+	}
+	return strokeDashOffset;
+    }
+
+    public StrokeDashArray getStrokeDashArray() {
+	if (strokeDashArray == null) {
+	    strokeDashArray =
+		(StrokeDashArray) style.CascadingOrder (
+		    new StrokeDashArray(), style, selector);
+	}
+	return strokeDashArray;
+    }
+
+    public Stroke getStroke() {
+	if (stroke == null) {
+	    stroke =
+		(Stroke) style.CascadingOrder (
+		    new Stroke(), style, selector);
+	}
+	return stroke;
+    }
+
+    public Fill getFill() {
+	if (fill == null) {
+	    fill =
+		(Fill) style.CascadingOrder (
+		    new Fill(), style, selector);
+	}
+	return fill;
+    }
+
+    /**
+     * Print this style
+     *
+     * @param printer The printer interface
+     */
+    public void print(CssPrinterStyle printer) {
+	super.print(printer);
+
+	if (fillRule != null) {
+	    fillRule.print(printer);
+	}
+	if (strokeLinejoin != null) {
+	    strokeLinejoin.print(printer);
+	}
+	if (strokeLineCap != null) {
+	    strokeLineCap.print(printer);
+	}
+	if (strokeMiterLimit != null) {
+	    strokeMiterLimit.print(printer);
+	}
+	if (strokeWidth != null) {
+	    strokeWidth.print(printer);
+	}
+	if (strokeDashOffset != null) {
+	    strokeDashOffset.print(printer);
+	}
+	if (strokeDashArray != null) {
+	    strokeDashArray.print(printer);
+	}
+	if (stroke != null) {
+	    stroke.print(printer);
+	}
+	if (fill != null) {
+	    fill.print(printer);
+	}
+    }
+
+    /**
+     * Returns the name of the actual selector
+     */
+    public String getSelector()
+    {
+	return (selector.getElement().toLowerCase());
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/svg/ShapeRendering.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,150 @@
+//
+// $Id: ShapeRendering.java,v 1.3 2008-04-07 14:16:24 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.svg;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> auto | optimizeSpeed | crispEdges |
+ *  geometricPrecision | inherit  <BR>
+ *  <EM>Initial:</EM>auto<BR>
+ *  <EM>Applies to:</EM><BR>
+ *  <EM>Inherited:</EM>yes<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ */
+
+public class ShapeRendering extends CssProperty {
+
+    CssValue value;
+
+    static CssIdent auto = new CssIdent("auto");
+
+    private static String[] values = {
+	"auto", "optimizeSpeed", "crispEdges", "geometricPrecision", "inherit"
+    };
+
+    /**
+     * Create a new ShapeRendering
+     */
+    public ShapeRendering() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new ShapeRendering
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public ShapeRendering(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	int i = 0;
+	for (; i < values.length; i++) {
+	    if (val.toString().equals(values[i])) {
+		value = val;
+		expression.next();
+		break;
+	    }
+	}
+	if (i == values.length) {
+	    throw new InvalidParamException("value", expression.getValue(),
+		    getPropertyName(), ac);
+	}
+    }
+
+    public ShapeRendering(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((SVGBasicStyle) style).shapeRendering != null)
+	    style.addRedefinitionWarning(ac, this);
+	((SVGBasicStyle) style).shapeRendering = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((SVGBasicStyle) style).getShapeRendering();
+	}
+	else {
+	    return ((SVGBasicStyle) style).shapeRendering;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof ShapeRendering &&
+		value.equals(((ShapeRendering) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "shape-rendering";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return (value == auto);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/svg/SolidColor.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,236 @@
+//
+// $Id: SolidColor.java,v 1.3 2008-04-07 14:16:24 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.svg;
+
+import java.util.Vector;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssColor;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssFunction;
+import org.w3c.css.values.CssIdent;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> currentColor || &lt;color&gt;[icc-color(
+ *   &lt;name&gt;[&lt;icccolorvalue&gt;]*)] || inherit<BR>
+ *  <EM>Initial:</EM>none<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ */
+
+public class SolidColor extends CssProperty implements CssOperator {
+
+    CssValue solidColor;
+    ApplContext ac;
+    Vector values = new Vector();
+
+    CssIdent currentColor = new CssIdent("currentColor");
+
+    /**
+     * Create a new SolidColor
+     */
+    public SolidColor() {
+	//nothing to do
+    }
+
+    /**
+     * Create a new SolidColor
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public SolidColor(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	this.ac = ac;
+	setByUser(); // tell this property is set by the user
+	CssValue val = expression.getValue();
+	boolean correct = true;
+	String errorval = "";
+	char op = expression.getOperator();
+
+	if (val.equals(inherit)) {
+	    solidColor = inherit;
+	    expression.next();
+	} else if (val.equals(currentColor)) {
+	    solidColor = currentColor;
+	    expression.next();
+	} else {
+	    try {
+		CssColor color = new CssColor(ac, expression);
+		values.addElement(val);
+		//expression.next();
+	    } catch (InvalidParamException e) {
+		correct = false;
+		errorval = val.toString();
+	    }
+
+	    op = expression.getOperator();
+	    val = expression.getValue();
+
+	    if (val != null) {
+
+		if (val instanceof CssFunction) { // icc-color(<name>[,<icccolorvalue>]*)]
+		    CssValue function = val;
+		    if (!((CssFunction) val).getName().equals("icc-color")) {
+			correct = false;
+			errorval = val.toString();
+		    } else {
+			CssExpression params = ((CssFunction) val).getParameters();
+
+			op = params.getOperator();
+			val = params.getValue();
+
+			if (!(val instanceof CssIdent)) {
+			    correct = false;
+			    errorval = val.toString();
+			}
+
+			params.next();
+			op = params.getOperator();
+			val = params.getValue();
+
+			if (!params.end()) { // there are more parameters left
+			    int counter = 0;
+
+			    while ((op == COMMA || op == SPACE)
+				    && (counter < (params.getCount() - 1) && correct == true)) {
+
+				if ((!(val instanceof CssNumber)) || (((CssNumber) val).getValue() < 0)) {
+				    correct = false;
+				    errorval = val.toString();
+				}
+
+				params.next();
+				counter++;
+				val = params.getValue();
+				op = params.getOperator();
+			    }
+			}
+
+			if (correct) {
+			    params.starts();
+			    values.addElement(function);
+			}
+		    }
+		} else {
+		    correct = false;
+		    errorval = val.toString();
+		}
+	    } else {
+		correct = false;
+		errorval = new String("");
+	    }
+
+
+	    expression.next();
+
+	}
+
+	if (!correct) {
+	    throw new InvalidParamException("value", errorval, getPropertyName(), ac);
+	}
+    }
+
+    public SolidColor(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((SVGBasicStyle) style).solidColor != null)
+	    style.addRedefinitionWarning(ac, this);
+	((SVGBasicStyle) style).solidColor = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((SVGBasicStyle) style).getSolidColor();
+	} else {
+	    return ((SVGBasicStyle) style).solidColor;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof SolidColor &&
+		solidColor.equals( ((SolidColor) property).solidColor));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "solid-color";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	if (solidColor != null)
+	    return solidColor;
+	else
+	    return values;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return solidColor.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	if (solidColor != null) {
+	    return solidColor.toString();
+	} else {
+	    String ret = "";
+	    for (int i = 0; i < values.size(); i++) {
+		ret += " " + values.elementAt(i).toString();
+	    }
+	    return ret;
+	}
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/svg/SolidOpacity.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,170 @@
+//
+// $Id: SolidOpacity.java,v 1.3 2008-04-07 14:16:24 ylafon Exp $
+// From Sijtsche de Jong
+//
+// (c) COPYRIGHT 1995-2002  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.svg;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.util.Util;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssIdent;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> &lt; alphavalue&gt; || inherit<BR>
+ *  <EM>Initial:</EM>1<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  This property sets the opacity of an element.
+ *  <PRE>
+ *  H1 { opacity: 0}
+ *  </PRE>
+ */
+
+public class SolidOpacity extends CssProperty {
+
+    CssValue opaclevel;
+    ApplContext ac;
+
+    /**
+     * Create a new SolidOpacity
+     */
+    public SolidOpacity() {
+	CssNumber cssnum =  new CssNumber((float) 1.0);
+	opaclevel = cssnum;
+    }
+
+    /**
+     * Create a new SolidOpacity
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public SolidOpacity(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	this.ac = ac;
+	setByUser(); // tell this property is set by the user
+	CssValue val = expression.getValue();
+	if (val instanceof CssNumber) {
+
+	    CssNumber cssnum = new CssNumber(clampedValue(ac,
+		    ((CssNumber) val).getValue()));
+	    opaclevel = cssnum;
+	    expression.next();
+	}
+	else if (val instanceof CssIdent) {
+	    if (val.equals(inherit)) {
+		opaclevel = inherit;
+		expression.next();
+	    }
+	}
+	else {
+	    throw new InvalidParamException("value", val.toString(),
+		    getPropertyName(), ac);
+	}
+    }
+
+    public SolidOpacity(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Brings all values back between 0 and 1
+     *
+     * @param opac The value to be modified if necessary
+     */
+    private float clampedValue(ApplContext ac, float opac) {
+	if (opac < 0 || opac > 1) {
+	    ac.getFrame().addWarning("out-of-range", Util.displayFloat(opac));
+	    return ((opac<0)?0:1);
+	}
+	else return(opac);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((SVGBasicStyle) style).solidOpacity != null)
+	    style.addRedefinitionWarning(ac, this);
+	((SVGBasicStyle) style).solidOpacity = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((SVGBasicStyle) style).getSolidOpacity();
+	} else {
+	    return ((SVGBasicStyle) style).solidOpacity;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof SolidOpacity &&
+		opaclevel.equals( ((SolidOpacity) property).opaclevel));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "solid-opacity";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return opaclevel;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return opaclevel.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return opaclevel.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	CssNumber cssnum = new CssNumber(ac, (float) 1.0);
+	return opaclevel == cssnum;
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/svg/StopColor.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,235 @@
+//
+// $Id: StopColor.java,v 1.3 2008-04-07 14:16:24 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.svg;
+
+import java.util.Vector;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssColor;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssFunction;
+import org.w3c.css.values.CssIdent;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> currentColor || &lt;color&gt;[icc-color(
+ *   &lt;name&gt;[&lt;icccolorvalue&gt;]*)] || inherit<BR>
+ *  <EM>Initial:</EM>none<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ */
+
+public class StopColor extends CssProperty implements CssOperator {
+
+    CssValue stopColor;
+    ApplContext ac;
+    Vector values = new Vector();
+
+    CssIdent currentColor = new CssIdent("currentColor");
+
+    /**
+     * Create a new StopColor
+     */
+    public StopColor() {
+	//nothing to do
+    }
+
+    /**
+     * Create a new StopColor
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public StopColor(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	this.ac = ac;
+	setByUser(); // tell this property is set by the user
+	CssValue val = expression.getValue();
+	boolean correct = true;
+	String errorval = "";
+	char op = expression.getOperator();
+
+	if (val.equals(inherit)) {
+	    stopColor = inherit;
+	    expression.next();
+	} else if (val.equals(currentColor)) {
+	    stopColor = currentColor;
+	    expression.next();
+	} else {
+	    try {
+		CssColor color = new CssColor(ac, expression);
+		values.addElement(val);
+		//expression.next();
+	    } catch (InvalidParamException e) {
+		correct = false;
+		errorval = val.toString();
+	    }
+
+	    op = expression.getOperator();
+	    val = expression.getValue();
+
+	    if (val != null) {
+
+		if (val instanceof CssFunction) { // icc-color(<name>[,<icccolorvalue>]*)]
+		    CssValue function = val;
+		    if (!((CssFunction) val).getName().equals("icc-color")) {
+			correct = false;
+			errorval = val.toString();
+		    } else {
+			CssExpression params = ((CssFunction) val).getParameters();
+
+			op = params.getOperator();
+			val = params.getValue();
+
+			if (!(val instanceof CssIdent)) {
+			    correct = false;
+			    errorval = val.toString();
+			}
+
+			params.next();
+			op = params.getOperator();
+			val = params.getValue();
+
+			if (!params.end()) { // there are more parameters left
+			    int counter = 0;
+
+			    while ((op == COMMA || op == SPACE)
+				    && (counter < (params.getCount() - 1) && correct == true)) {
+
+				if ((!(val instanceof CssNumber)) || (((CssNumber) val).getValue() < 0)) {
+				    correct = false;
+				    errorval = val.toString();
+				}
+
+				params.next();
+				counter++;
+				val = params.getValue();
+				op = params.getOperator();
+			    }
+			}
+
+			if (correct) {
+			    params.starts();
+			    values.addElement(function);
+			}
+		    }
+		} else {
+		    correct = false;
+		    errorval = val.toString();
+		}
+	    } else {
+		correct = false;
+		errorval = new String("");
+	    }
+
+	    expression.next();
+
+	}
+
+	if (!correct) {
+	    throw new InvalidParamException("value", errorval, getPropertyName(), ac);
+	}
+    }
+
+    public StopColor(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((SVGBasicStyle) style).stopColor != null)
+	    style.addRedefinitionWarning(ac, this);
+	((SVGBasicStyle) style).stopColor = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((SVGBasicStyle) style).getStopColor();
+	} else {
+	    return ((SVGBasicStyle) style).stopColor;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof StopColor &&
+		stopColor.equals( ((StopColor) property).stopColor));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "stop-color";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	if (stopColor != null)
+	    return stopColor;
+	else
+	    return values;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return stopColor.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	if (stopColor != null) {
+	    return stopColor.toString();
+	} else {
+	    String ret = "";
+	    for (int i = 0; i < values.size(); i++) {
+		ret += " " + values.elementAt(i).toString();
+	    }
+	    return ret;
+	}
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/svg/StopOpacity.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,149 @@
+//
+// $Id: StopOpacity.java,v 1.3 2008-04-07 14:16:24 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.svg;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.properties.css3.CssOpacity;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> &lt;opacityvalue&gt; || inherit<BR>
+ *  <EM>Initial:</EM>1<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ */
+public class StopOpacity extends CssProperty {
+
+    CssValue value;
+    ApplContext ac;
+
+    /**
+     * Create a new Value
+     */
+    public StopOpacity() {
+	//nothing to do
+    }
+
+    /**
+     * Create a new Value
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public StopOpacity(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	this.ac = ac;
+	setByUser(); // tell this property is set by the user
+	CssValue val = expression.getValue();
+	boolean correct = false;
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	    expression.next();
+	    correct = true;
+	} else {
+	    try {
+		CssOpacity opac = new CssOpacity(ac, expression);
+		value = val;
+		expression.next();
+		correct = true;
+	    } catch (InvalidParamException e) {
+		correct = false;
+	    }
+	}
+	if (!correct) {
+	    throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+	}
+    }
+
+    public StopOpacity(ApplContext ac, CssExpression expression)
+    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((SVGBasicStyle) style).stopOpacity != null)
+	    style.addRedefinitionWarning(ac, this);
+	((SVGBasicStyle) style).stopOpacity = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((SVGBasicStyle) style).getStopOpacity();
+	} else {
+	    return ((SVGBasicStyle) style).stopOpacity;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof StopOpacity &&
+		value.equals( ((StopOpacity) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "stop-opacity";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	CssNumber cssnum = new CssNumber(ac, (float) 1.0);
+	return value == cssnum;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/svg/Stroke.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,318 @@
+//
+// $Id: Stroke.java,v 1.3 2008-04-07 14:16:24 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.svg;
+
+import java.util.Vector;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssColor;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssFunction;
+import org.w3c.css.values.CssIdent;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssURL;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> &lt;paint&gt; | inherit<BR>
+ *  <EM>Initial:</EM>none<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ */
+public class Stroke extends CssProperty implements CssOperator {
+
+    CssValue stroke;
+    ApplContext ac;
+    Vector values = new Vector();
+
+    CssIdent currentColor = new CssIdent("currentColor");
+    CssIdent none = new CssIdent("none");
+
+    /**
+     * Create a new Stroke
+     */
+    public Stroke() {
+	//nothing to do
+    }
+
+    /**
+     * Create a new Stroke
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public Stroke(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	this.ac = ac;
+	setByUser(); // tell this property is set by the user
+	CssValue val = expression.getValue();
+	boolean correct = true;
+	String errorval = "";
+	char op = expression.getOperator();
+
+	if (val.equals(inherit)) {
+	    stroke = inherit;
+	    expression.next();
+	} else if (val.equals(currentColor)) {
+	    stroke = currentColor;
+	    expression.next();
+	} else if (val.equals(none)) {
+	    stroke = none;
+	    expression.next();
+	} else {
+	    try {
+		CssColor color = new CssColor(ac, expression);
+		values.addElement(val);
+		//expression.next();
+
+		op = expression.getOperator();
+		val = expression.getValue();
+
+
+		if (val instanceof CssFunction) { // icc-color(<name>[,<icccolorvalue>]*)]
+		    CssValue function = val;
+		    if (!((CssFunction) val).getName().equals("icc-color")) {
+			correct = false;
+			errorval = val.toString();
+		    } else {
+			CssExpression params = ((CssFunction) val).getParameters();
+
+			op = params.getOperator();
+			val = params.getValue();
+
+			if (!(val instanceof CssIdent)) {
+			    correct = false;
+			    errorval = val.toString();
+			}
+
+			params.next();
+			op = params.getOperator();
+			val = params.getValue();
+
+			if (!params.end()) { // there are more parameters left
+			    int counter = 0;
+
+			    while ((op == COMMA || op == SPACE)
+				    && (counter < (params.getCount() - 1) && correct == true)) {
+
+				if ((!(val instanceof CssNumber)) || (((CssNumber) val).getValue() < 0)) {
+				    correct = false;
+				    errorval = val.toString();
+				}
+
+				params.next();
+				counter++;
+				val = params.getValue();
+				op = params.getOperator();
+			    }
+			}
+
+			if (correct) {
+			    params.starts();
+			    values.addElement(function);
+			}
+			else {
+			    correct = false;
+			    errorval = val.toString();
+			}
+		    }
+		}
+	    } catch (InvalidParamException e) {
+		correct = false;
+		errorval = val.toString();
+	    }
+
+	    if (val instanceof CssURL) {
+		values.addElement(val);
+		correct = true;
+		errorval = null;
+
+		expression.next();
+		op = expression.getOperator();
+		val = expression.getValue();
+
+		if (val.equals(none) || val.equals(currentColor)) {
+		    values.addElement(val);
+		    expression.next();
+		} else {
+		    //-------------
+
+		    try {
+			CssColor color = new CssColor(ac, expression);
+			values.addElement(val);
+			//expression.next();
+
+			op = expression.getOperator();
+			val = expression.getValue();
+
+
+			if (val instanceof CssFunction) { // icc-color(<name>[,<icccolorvalue>]*)]
+			    CssValue function = val;
+			    if (!((CssFunction) val).getName().equals("icc-color")) {
+				correct = false;
+				errorval = val.toString();
+			    } else {
+				CssExpression params = ((CssFunction) val).getParameters();
+
+				op = params.getOperator();
+				val = params.getValue();
+
+				if (!(val instanceof CssIdent)) {
+				    correct = false;
+				    errorval = val.toString();
+				}
+
+				params.next();
+				op = params.getOperator();
+				val = params.getValue();
+
+				if (!params.end()) { // there are more parameters left
+				    int counter = 0;
+
+				    while ((op == COMMA || op == SPACE)
+					    && (counter < (params.getCount() - 1) && correct == true)) {
+
+					if ((!(val instanceof CssNumber)) || (((CssNumber) val).getValue() < 0)) {
+					    correct = false;
+					    errorval = val.toString();
+					}
+
+					params.next();
+					counter++;
+					val = params.getValue();
+					op = params.getOperator();
+				    }
+				}
+
+				if (correct) {
+				    params.starts();
+				    values.addElement(function);
+				}
+				else {
+				    correct = false;
+				    errorval = val.toString();
+				}
+			    }
+			}
+		    } catch (InvalidParamException e) {
+			correct = false;
+			errorval = val.toString();
+		    }
+
+		    //-----------------
+		}
+	    } else {
+		correct = false;
+		errorval = val.toString();
+	    }
+
+	}
+
+	expression.next();
+
+	if (!correct) {
+	    throw new InvalidParamException("value", errorval, getPropertyName(), ac);
+	}
+    }
+
+    public Stroke(ApplContext ac, CssExpression expression)
+    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((SVGTinyStyle) style).stroke != null)
+	    style.addRedefinitionWarning(ac, this);
+	((SVGTinyStyle) style).stroke = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((SVGTinyStyle) style).getStroke();
+	} else {
+	    return ((SVGTinyStyle) style).stroke;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof Stroke &&
+		stroke.equals( ((Stroke) property).stroke));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "stroke";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	if (stroke != null)
+	    return stroke;
+	else
+	    return values;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return stroke.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	if (stroke != null) {
+	    return stroke.toString();
+	} else {
+	    String ret = "";
+	    for (int i = 0; i < values.size(); i++) {
+		ret += " " + values.elementAt(i).toString();
+	    }
+	    return ret;
+	}
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return stroke == none;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/svg/StrokeDashArray.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,174 @@
+//
+// $Id: StrokeDashArray.java,v 1.3 2008-04-07 14:16:24 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.svg;
+
+import java.util.Vector;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssNumber;
+import org.w3c.css.values.CssOperator;
+import org.w3c.css.values.CssValue;
+
+
+/**
+ * This is the stroke-dasharray property for SVG
+ */
+
+public class StrokeDashArray extends CssProperty implements CssOperator {
+
+    CssValue value;
+    Vector values = new Vector();
+
+    CssIdent none = new CssIdent("none");
+
+    /**
+     * Create a new StrokeDashArray
+     */
+    public StrokeDashArray() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new StrokeDashArray
+     */
+    public StrokeDashArray(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	//setByUser();
+	char op = COMMA;
+	CssValue val = expression.getValue();
+	int counter = 0;
+	boolean correct = true;
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	    expression.next();
+	} else if (val.equals(none)) {
+	    value = none;
+	    expression.next();
+	} else if (val instanceof CssNumber) {
+	    while ((op == COMMA || op == SPACE)
+		   && (counter < expression.getCount() && correct == true)) {
+
+		if ((!(val instanceof CssNumber)) || (((CssNumber) val).getValue() < 0))
+		    correct = false;
+
+		values.addElement(val);
+		expression.next();
+		counter++;
+		val = expression.getValue();
+		op = expression.getOperator();
+	    }
+	} else {
+	    correct = false;
+	}
+
+	if (!correct) {
+	    throw new InvalidParamException("value", val.toString(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public StrokeDashArray(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((SVGTinyStyle) style).strokeDashArray != null)
+	    style.addRedefinitionWarning(ac, this);
+	((SVGTinyStyle) style).strokeDashArray = this;
+
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((SVGTinyStyle) style).getStrokeDashArray();
+	} else {
+	    return ((SVGTinyStyle) style).strokeDashArray;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return false;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "stroke-dasharray";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	if (value != null) {
+	    return value;
+	}
+	else {
+	    return values;
+	}
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * This property can't be inherited, it's only for @preference
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	if (value != null) {
+	    return value.toString();
+	}
+	else {
+	    String ret = "";
+	    for (int i = 0; i < values.size(); i++) {
+		ret += " " + values.elementAt(i).toString();
+	    }
+	    return ret;
+	}
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return value == none;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/svg/StrokeDashOffset.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,136 @@
+//
+// $Id: StrokeDashOffset.java,v 1.3 2008-04-07 14:16:24 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.svg;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'stroke-dashoffset'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> inherit | &lt;dashoffset&gt; <BR>
+ *   <EM>Initial:</EM>0<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ */
+public class StrokeDashOffset extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new StrokeDashOffset
+     */
+    public StrokeDashOffset() {
+	//nothing to do
+    }
+
+    /**
+     * Create a new StrokeDashOffset
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public StrokeDashOffset(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val instanceof CssLength) {
+	    value = val;
+	    expression.next();
+	} else if (val.equals(inherit)) {
+	    value = inherit;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value",
+					    expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public StrokeDashOffset(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "stroke-dashoffset";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	SVGTinyStyle style0 = (SVGTinyStyle) style;
+	if (style0.strokeDashOffset != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.strokeDashOffset = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((SVGTinyStyle) style).getStrokeDashOffset();
+	} else {
+	    return ((SVGTinyStyle) style).strokeDashOffset;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof StrokeDashOffset &&
+		value.equals(((StrokeDashOffset) property).value));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/svg/StrokeLineCap.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,149 @@
+//
+// $Id: StrokeLineCap.java,v 1.3 2008-04-07 14:16:24 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.svg;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> butt | round | square | inherit<BR>
+ *  <EM>Initial:</EM>butt<BR>
+ *  <EM>Applies to:</EM><BR>
+ *  <EM>Inherited:</EM>yes<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ */
+
+public class StrokeLineCap extends CssProperty {
+
+    CssValue value;
+
+    static CssIdent butt = new CssIdent("butt");
+
+    private static String[] values = {
+	"butt", "round", "square", "inherit"
+    };
+
+    /**
+     * Create a new StrokeLineCap
+     */
+    public StrokeLineCap() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new StrokeLineCap
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public StrokeLineCap(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	int i = 0;
+	for (; i < values.length; i++) {
+	    if (val.toString().equals(values[i])) {
+		value = val;
+		expression.next();
+		break;
+	    }
+	}
+	if (i == values.length) {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public StrokeLineCap(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((SVGTinyStyle) style).strokeLineCap != null)
+	    style.addRedefinitionWarning(ac, this);
+	((SVGTinyStyle) style).strokeLineCap = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((SVGTinyStyle) style).getStrokeLineCap();
+	}
+	else {
+	    return ((SVGTinyStyle) style).strokeLineCap;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof StrokeLineCap &&
+		value.equals(((StrokeLineCap) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "stroke-linecap";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return (value == butt);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/svg/StrokeLinejoin.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,149 @@
+//
+// $Id: StrokeLinejoin.java,v 1.3 2008-04-07 14:16:24 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.svg;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> miter | round | bevel | inherit<BR>
+ *  <EM>Initial:</EM>miter<BR>
+ *  <EM>Applies to:</EM><BR>
+ *  <EM>Inherited:</EM>yes<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ */
+
+public class StrokeLinejoin extends CssProperty {
+
+    CssValue value;
+
+    static CssIdent miter = new CssIdent("miter");
+
+    private static String[] values = {
+	"miter", "round", "bevel", "inherit"
+    };
+
+    /**
+     * Create a new StrokeLinejoin
+     */
+    public StrokeLinejoin() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new StrokeLinejoin
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public StrokeLinejoin(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	int i = 0;
+	for (; i < values.length; i++) {
+	    if (val.toString().equals(values[i])) {
+		value = val;
+		expression.next();
+		break;
+	    }
+	}
+	if (i == values.length) {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public StrokeLinejoin(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((SVGTinyStyle) style).strokeLinejoin != null)
+	    style.addRedefinitionWarning(ac, this);
+	((SVGTinyStyle) style).strokeLinejoin = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((SVGTinyStyle) style).getStrokeLinejoin();
+	}
+	else {
+	    return ((SVGTinyStyle) style).strokeLinejoin;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof StrokeLinejoin &&
+		value.equals(((StrokeLinejoin) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "stroke-linejoin";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return (value == miter);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/svg/StrokeMiterLimit.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,142 @@
+//
+// $Id: StrokeMiterLimit.java,v 1.3 2008-04-07 14:16:24 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.svg;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ *   <H4>
+ *     &nbsp;&nbsp; 'stroke-miterlimit'
+ *   </H4>
+ *   <P>
+ *   <EM>Value:</EM> inherit | &lt;miterlimit&gt; <BR>
+ *   <EM>Initial:</EM>4<BR>
+ *   <EM>Applies to:</EM> all elements<BR>
+ *   <EM>Inherited:</EM> yes<BR>
+ *   <EM>Percentage values:</EM> N/A<BR>
+ */
+public class StrokeMiterLimit extends CssProperty {
+
+    CssValue value;
+
+    /**
+     * Create a new StrokeMiterLimit
+     */
+    public StrokeMiterLimit() {
+	//nothing to do
+    }
+
+    /**
+     * Create a new StrokeMiterLimit
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public StrokeMiterLimit(ApplContext ac, CssExpression expression,
+	    boolean check)
+	throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val instanceof CssNumber) {
+	    if (((CssNumber) val).getValue() >= 1) {
+		value = val;
+		expression.next();
+	    } else {
+		throw new InvalidParamException("out-of-range", expression.getValue(),
+						getPropertyName(), ac);
+	    }
+	} else if (val.equals(inherit)) {
+	    value = inherit;
+	    expression.next();
+	} else {
+	    throw new InvalidParamException("value",
+					    expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public StrokeMiterLimit(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "stroke-miterlimit";
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     * e.g. his value equals inherit
+     */
+    public boolean isSoftlyInherited() {
+	return value == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	SVGTinyStyle style0 = (SVGTinyStyle) style;
+	if (style0.strokeMiterLimit != null)
+	    style0.addRedefinitionWarning(ac, this);
+	style0.strokeMiterLimit = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((SVGTinyStyle) style).getStrokeMiterLimit();
+	} else {
+	    return ((SVGTinyStyle) style).strokeMiterLimit;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof StrokeMiterLimit &&
+		value.equals(((StrokeMiterLimit) property).value));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/svg/StrokeOpacity.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,150 @@
+//
+// $Id: StrokeOpacity.java,v 1.3 2008-04-07 14:16:24 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.svg;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.properties.css3.CssOpacity;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> &lt;opacityvalue&gt; || inherit<BR>
+ *  <EM>Initial:</EM>1<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ */
+
+public class StrokeOpacity extends CssProperty {
+
+    CssValue value;
+    ApplContext ac;
+
+    /**
+     * Create a new Value
+     */
+    public StrokeOpacity() {
+	//nothing to do
+    }
+
+    /**
+     * Create a new Value
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public StrokeOpacity(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	this.ac = ac;
+	setByUser(); // tell this property is set by the user
+	CssValue val = expression.getValue();
+	boolean correct = false;
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	    expression.next();
+	    correct = true;
+	} else {
+	    try {
+		CssOpacity opac = new CssOpacity(ac, expression);
+		value = val;
+		expression.next();
+		correct = true;
+	    } catch (InvalidParamException e) {
+		correct = false;
+	    }
+	}
+	if (!correct) {
+	    throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+	}
+    }
+
+    public StrokeOpacity(ApplContext ac, CssExpression expression)
+    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((SVGBasicStyle) style).strokeOpacity != null)
+	    style.addRedefinitionWarning(ac, this);
+	((SVGBasicStyle) style).strokeOpacity = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((SVGBasicStyle) style).getStrokeOpacity();
+	} else {
+	    return ((SVGBasicStyle) style).strokeOpacity;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof StrokeOpacity &&
+		value.equals( ((StrokeOpacity) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "stroke-opacity";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	CssNumber cssnum = new CssNumber(ac, (float) 1.0);
+	return value == cssnum;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/svg/StrokeWidth.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,149 @@
+//
+// $Id: StrokeWidth.java,v 1.3 2008-04-07 14:16:24 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.svg;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.properties.css1.CssWidth;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssValue;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> &lt;opacityvalue&gt; || inherit<BR>
+ *  <EM>Initial:</EM>1<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>no<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ */
+public class StrokeWidth extends CssProperty {
+
+    CssValue value;
+    ApplContext ac;
+
+    /**
+     * Create a new Value
+     */
+    public StrokeWidth() {
+	//nothing to do
+    }
+
+    /**
+     * Create a new Value
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Values are incorrect
+     */
+    public StrokeWidth(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+	this.ac = ac;
+	setByUser(); // tell this property is set by the user
+	CssValue val = expression.getValue();
+	boolean correct = false;
+
+	if (val.equals(inherit)) {
+	    value = inherit;
+	    expression.next();
+	    correct = true;
+	} else {
+	    try {
+		CssWidth width = new CssWidth(ac, expression);
+		value = val;
+		expression.next();
+		correct = true;
+	    } catch (InvalidParamException e) {
+		correct = false;
+	    }
+	}
+	if (!correct) {
+	    throw new InvalidParamException("value", val.toString(), getPropertyName(), ac);
+	}
+    }
+
+    public StrokeWidth(ApplContext ac, CssExpression expression)
+    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle.
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((SVGTinyStyle) style).strokeWidth != null)
+	    style.addRedefinitionWarning(ac, this);
+	((SVGTinyStyle) style).strokeWidth = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((SVGTinyStyle) style).getStrokeWidth();
+	} else {
+	    return ((SVGTinyStyle) style).strokeWidth;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof StrokeWidth &&
+		value.equals( ((StrokeWidth) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "stroke-width";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by all macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	CssNumber cssnum = new CssNumber(ac, (float) 1.0);
+	return value == cssnum;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/svg/TextAnchor.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,149 @@
+//
+// $Id: TextAnchor.java,v 1.3 2008-04-07 14:16:24 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.svg;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> start | middle | end | inherit<BR>
+ *  <EM>Initial:</EM>start<BR>
+ *  <EM>Applies to:</EM>'text', 'tspan', 'tref', 'altGlyph', 'textPath' elements<BR>
+ *  <EM>Inherited:</EM>yes<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ */
+
+public class TextAnchor extends CssProperty {
+
+    CssValue value;
+
+    static CssIdent start = new CssIdent("start");
+
+    private static String[] values = {
+	"start", "middle", "end", "inherit"
+    };
+
+    /**
+     * Create a new TextAnchor
+     */
+    public TextAnchor() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new TextAnchor
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public TextAnchor(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	int i = 0;
+	for (; i < values.length; i++) {
+	    if (val.toString().equals(values[i])) {
+		value = val;
+		expression.next();
+		break;
+	    }
+	}
+	if (i == values.length) {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public TextAnchor(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((SVGBasicStyle) style).textAnchor != null)
+	    style.addRedefinitionWarning(ac, this);
+	((SVGBasicStyle) style).textAnchor = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((SVGBasicStyle) style).getTextAnchor();
+	}
+	else {
+	    return ((SVGBasicStyle) style).textAnchor;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof TextAnchor &&
+		value.equals(((TextAnchor) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "text-rendering";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return (value == start);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/svg/TextRendering.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,150 @@
+//
+// $Id: TextRendering.java,v 1.3 2008-04-07 14:16:24 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.svg;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> auto | optimizeSpeed | optimizeLegibility |
+ *  geometricPrecision | inherit  <BR>
+ *  <EM>Initial:</EM>auto<BR>
+ *  <EM>Applies to:</EM>text elements<BR>
+ *  <EM>Inherited:</EM>yes<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ */
+
+public class TextRendering extends CssProperty {
+
+    CssValue value;
+
+    static CssIdent auto = new CssIdent("auto");
+
+    private static String[] values = {
+	"auto", "optimizeSpeed", "optimizeLegibility", "geometricPrecision", "inherit"
+    };
+
+    /**
+     * Create a new TextRendering
+     */
+    public TextRendering() {
+	// nothing to do
+    }
+
+    /**
+     * Create a new TextRendering
+     *
+     * @param expression The expression for this property
+     * @exception InvalidParamException Incorrect value
+     */
+    public TextRendering(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	int i = 0;
+	for (; i < values.length; i++) {
+	    if (val.toString().equals(values[i])) {
+		value = val;
+		expression.next();
+		break;
+	    }
+	}
+	if (i == values.length) {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public TextRendering(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((SVGBasicStyle) style).textRendering != null)
+	    style.addRedefinitionWarning(ac, this);
+	((SVGBasicStyle) style).textRendering = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((SVGBasicStyle) style).getTextRendering();
+	}
+	else {
+	    return ((SVGBasicStyle) style).textRendering;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof TextRendering &&
+		value.equals(((TextRendering) property).value));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "text-rendering";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return value.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return value.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return (value == auto);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/properties/svg/WritingModeSVG.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,169 @@
+//
+// $Id: WritingModeSVG.java,v 1.3 2008-04-07 14:16:24 ylafon Exp $
+// From Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT 1995-2000  World Wide Web Consortium (MIT, INRIA, Keio University)
+// Please first read the full copyright statement at
+// http://www.w3.org/Consortium/Legal/copyright-software-19980720
+
+package org.w3c.css.properties.svg;
+
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.css1.CssProperty;
+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;
+
+/**
+ *  <P>
+ *  <EM>Value:</EM> lr-tb || rl-tb || tb-rl || bt-rl || lr || rl || tb || inherit<BR>
+ *  <EM>Initial:</EM>lr-tb<BR>
+ *  <EM>Applies to:</EM>all elements<BR>
+ *  <EM>Inherited:</EM>yes<BR>
+ *  <EM>Percentages:</EM>no<BR>
+ *  <EM>Media:</EM>:visual
+ *  <P>
+ *  This property sets the primary text advance direction
+ */
+
+public class WritingModeSVG extends CssProperty {
+
+    CssValue mode;
+
+    static CssIdent lrtb = new CssIdent("lr-tb");
+    static CssIdent rltb = new CssIdent("rl-tb");
+    static CssIdent tbrl = new CssIdent("tb-rl");
+    static CssIdent lr = new CssIdent("lr");
+    static CssIdent rl = new CssIdent("rl");
+    static CssIdent tb = new CssIdent("tb");
+
+    /**
+     * Create a new WritingModeSVG
+     */
+    public WritingModeSVG() {
+	mode = lrtb;
+    }
+
+    /**
+     * Create a new CssWritingModeSVG
+     */
+    public WritingModeSVG(ApplContext ac, CssExpression expression,
+	    boolean check) throws InvalidParamException {
+
+	setByUser();
+	CssValue val = expression.getValue();
+
+	if (val.equals(lrtb)) {
+	    mode = lrtb;
+	    expression.next();
+	}
+	else if (val.equals(rltb)) {
+	    mode = rltb;
+	    expression.next();
+	}
+	else if (val.equals(tbrl)) {
+	    mode = tbrl;
+	    expression.next();
+	}
+	else if (val.equals(lr)) {
+	    mode = lr;
+	    expression.next();
+	}
+	else if (val.equals(rl)) {
+	    mode = rl;
+	    expression.next();
+	}
+	else if (val.equals(tb)) {
+	    mode = tb;
+	    expression.next();
+	}
+	else if (val.equals(inherit)) {
+	    mode = inherit;
+	    expression.next();
+	}
+	else {
+	    throw new InvalidParamException("value", expression.getValue(),
+					    getPropertyName(), ac);
+	}
+    }
+
+    public WritingModeSVG(ApplContext ac, CssExpression expression)
+	    throws InvalidParamException {
+	this(ac, expression, false);
+    }
+
+    /**
+     * Add this property to the CssStyle
+     *
+     * @param style The CssStyle
+     */
+    public void addToStyle(ApplContext ac, CssStyle style) {
+	if (((SVGBasicStyle) style).writingModeSVG != null)
+	    style.addRedefinitionWarning(ac, this);
+	((SVGBasicStyle) style).writingModeSVG = this;
+    }
+
+    /**
+     * Get this property in the style.
+     *
+     * @param style The style where the property is
+     * @param resolve if true, resolve the style to find this property
+     */
+    public CssProperty getPropertyInStyle(CssStyle style, boolean resolve) {
+	if (resolve) {
+	    return ((SVGBasicStyle) style).getWritingModeSVG();
+	}
+	else {
+	    return ((SVGBasicStyle) style).writingModeSVG;
+	}
+    }
+
+    /**
+     * Compares two properties for equality.
+     *
+     * @param value The other property.
+     */
+    public boolean equals(CssProperty property) {
+	return (property instanceof WritingModeSVG &&
+		mode.equals(((WritingModeSVG) property).mode));
+    }
+
+    /**
+     * Returns the name of this property
+     */
+    public String getPropertyName() {
+	return "writing-mode";
+    }
+
+    /**
+     * Returns the value of this property
+     */
+    public Object get() {
+	return mode;
+    }
+
+    /**
+     * Returns true if this property is "softly" inherited
+     */
+    public boolean isSoftlyInherited() {
+	return mode.equals(inherit);
+    }
+
+    /**
+     * Returns a string representation of the object
+     */
+    public String toString() {
+	return mode.toString();
+    }
+
+    /**
+     * Is the value of this property a default value
+     * It is used by alle macro for the function <code>print</code>
+     */
+    public boolean isDefault() {
+	return mode == lrtb;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/selectors/AdjacentSiblingSelector.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,34 @@
+// $Id: AdjacentSiblingSelector.java,v 1.1 2009-02-12 10:55:34 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.selectors;
+
+/**
+ * Adjacent<br />
+ * Created: Sep 1, 2005 3:59:08 PM<br />
+ */
+public class AdjacentSiblingSelector implements Selector {
+
+    /**
+     * @see Selector#toString()
+     */
+    public String toString() {
+	return " + ";
+    }
+
+    /**
+     * @see Selector#getName()
+     */
+    public String getName() {
+	return "+";
+    }
+
+    /**
+     * @see Selector#canApply(Selector)
+     */
+    public boolean canApply(Selector other) {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/selectors/AttributeSelector.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,55 @@
+// $Id: AttributeSelector.java,v 1.3 2006-04-19 11:28:06 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.selectors;
+
+import org.w3c.css.util.ApplContext;
+
+/**
+ * Attribute<br />
+ * Created: Sep 1, 2005 3:39:15 PM<br />
+ */
+public abstract class AttributeSelector implements Selector {
+
+    private String name;
+
+    /**
+     * Creates a new empty attribute selector
+     */
+    public AttributeSelector() {
+    }
+
+    /**
+     * Creates a new attribute selector given its name
+     * @param name the name of this attribute
+     */
+    public AttributeSelector(String name) {        
+	this.name = name;
+    }
+
+    /**
+     * Sets the name of this attribute selector
+     * @param name the name of this attribute
+     */
+    public void setName(String name) {
+	this.name = name;
+    }
+
+    /**
+     * @see Selector#getName()
+     */
+    public String getName() {
+	return name;
+    }
+
+    public abstract void applyAttribute(ApplContext ac, AttributeSelector attr);
+
+    /**
+     * @see Selector#toString()
+     */
+    public String toString() {
+	return "[" + name + "]";
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/selectors/ChildSelector.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,34 @@
+// $Id: ChildSelector.java,v 1.3 2005-09-16 13:33:52 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.selectors;
+
+/**
+ * Child<br />
+ * Created: Sep 1, 2005 3:58:00 PM<br />
+ */
+public class ChildSelector implements Selector {
+
+    /**
+     * @see Selector#toString()
+     */
+    public String toString() {
+	return " > ";
+    }
+
+    /**
+     * @see Selector#getName()
+     */
+    public String getName() {
+	return ">";
+    }
+
+    /**
+     * @see Selector#canApply(Selector)
+     */
+    public boolean canApply(Selector other) {
+	return true;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/selectors/ClassSelector.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,52 @@
+// $Id: ClassSelector.java,v 1.2 2005-09-14 15:15:32 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.selectors;
+
+/**
+ * ClassSelector<br />
+ * Created: Sep 1, 2005 3:59:42 PM<br />
+ */
+public class ClassSelector implements Selector {
+
+    String name;
+
+    /**
+     * Creates a new class selector given its name
+     * @param name the name of this class selector
+     */
+    public ClassSelector(String name) {
+	this.name = name;
+    }
+
+    /**
+     * @see Selector#getName()
+     */
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * Sets the name of this class selector
+     * @param name The name to set.
+     */
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    /**
+     * @see Selector#toString()
+     */
+    public String toString() {
+	return "." + name;
+    }
+
+    /**
+     * @see Selector#canApply(Selector)
+     */
+    public boolean canApply(Selector other) {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/selectors/DescendantSelector.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,34 @@
+// $Id: DescendantSelector.java,v 1.2 2005-09-14 15:15:32 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.selectors;
+
+/**
+ * Descendant<br />
+ * Created: Sep 1, 2005 3:57:40 PM<br />
+ */
+public class DescendantSelector implements Selector {
+
+    /**
+     * @see Selector#toString()
+     */
+    public String toString() {
+	return " ";
+    }
+
+    /**
+     * @see Selector#getName()
+     */
+    public String getName() {
+	return " ";
+    }
+
+    /**
+     * @see Selector#canApply(Selector)
+     */
+    public boolean canApply(Selector other) {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/selectors/GeneralSiblingSelector.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,32 @@
+// $Id: GeneralSiblingSelector.java,v 1.1 2009-02-12 10:32:52 ylafon Exp $
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2009.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.selectors;
+
+/**
+ * GeneralSibling<br />
+ */
+public class GeneralSiblingSelector implements Selector {
+
+    /**
+     * @see Selector#toString()
+     */
+    public String toString() {
+	return " ~ ";
+    }
+
+    /**
+     * @see Selector#getName()
+     */
+    public String getName() {
+	return "~";
+    }
+
+    /**
+     * @see Selector#canApply(Selector)
+     */
+    public boolean canApply(Selector other) {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/selectors/IdSelector.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,52 @@
+// $Id: IdSelector.java,v 1.2 2005-09-14 15:15:32 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.selectors;
+
+/**
+ * IdSelector<br />
+ * Created: Sep 1, 2005 4:45:00 PM<br />
+ */
+public class IdSelector implements Selector {
+
+    String name;
+
+    /**
+     * Creates a new id selector given its name
+     * @param name
+     */
+    public IdSelector(String name) {
+	this.name = name;
+    }
+
+    /**
+     * @see Selector#getName()
+     */
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * Sets the name of this id selector
+     * @param name The name to set.
+     */
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    /**
+     * @see Selector#toString()
+     */
+    public String toString() {
+	return "#" + name;
+    }
+
+    /**
+     * @see Selector#canApply(Selector)
+     */
+    public boolean canApply(Selector other) {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/selectors/PseudoClassSelector.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,52 @@
+// $Id: PseudoClassSelector.java,v 1.3 2006-04-19 11:28:06 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.selectors;
+
+/**
+ * PseudoClass<br />
+ * Created: Sep 1, 2005 3:58:43 PM<br />
+ */
+public class PseudoClassSelector implements Selector {
+    
+    String name;
+
+    /**
+     * Creates a new pseudo-class given its name
+     * @param name the name of this pseudo-class
+     */
+    public PseudoClassSelector(String name) {
+	this.name = name;
+    }
+
+    /**
+     * @see Selector#getName()
+     */
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * Sets the name of this pseudo-class
+     * @param name The name to set.
+     */
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    /**
+     * @see Selector#toString()
+     */
+    public String toString() {
+	return ":" + name;
+    }
+
+    /**
+     * @see Selector#canApply(Selector)
+     */
+    public boolean canApply(Selector other) {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/selectors/PseudoElementSelector.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,52 @@
+// $Id: PseudoElementSelector.java,v 1.3 2009-02-12 10:32:53 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.selectors;
+
+/**
+ * PseudoElement<br />
+ * Created: Sep 1, 2005 3:54:07 PM<br />
+ */
+public class PseudoElementSelector implements Selector {
+
+    String name;
+
+    /**
+     * Creates a new pseudo-element given it's name
+     * @param name the name of this pseudo-element
+     */
+    public PseudoElementSelector(String name) {
+	this.name = name;
+    }
+
+    /**
+     * @see Selector#getName()
+     */
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * Sets the name of this pseudo-element
+     * @param name The name to set.
+     */
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    /**
+     * @see Selector#toString()
+     */
+    public String toString() {
+	return "::" + name;
+    }
+
+    /**
+     * @see Selector#canApply(Selector)
+     */
+    public boolean canApply(Selector other) {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/selectors/PseudoFactory.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,196 @@
+// $Id: PseudoFactory.java,v 1.7 2009-02-12 21:26:35 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.selectors;
+
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+
+import org.w3c.css.selectors.pseudofunctions.PseudoFunctionContains;
+import org.w3c.css.selectors.pseudofunctions.PseudoFunctionLang;
+import org.w3c.css.selectors.pseudofunctions.PseudoFunctionNot;
+import org.w3c.css.selectors.pseudofunctions.PseudoFunctionNthChild;
+import org.w3c.css.selectors.pseudofunctions.PseudoFunctionNthLastChild;
+import org.w3c.css.selectors.pseudofunctions.PseudoFunctionNthOfType;
+import org.w3c.css.selectors.pseudofunctions.PseudoFunctionNthLastOfType;
+
+/**
+ * PseudoFactory<br />
+ * Created: Sep 2, 2005 2:41:09 PM<br />
+ */
+public class PseudoFactory {
+
+    private static final String[] PSEUDOCLASS_CONSTANTSCSS3 =
+    { "link", "visited", "active", "focus", "target",
+	"hover", "first-child", "enabled", "disabled",
+	"checked", "indeterminate", "root", "last-child",
+	"first-of-type", "last-of-type", "only-of-type",
+	"only-child", "empty", "valid", "invalid", "required",
+	"optional", "read-only", "read-write",
+	"default", "in-range", "out-of-range"
+    };
+
+    private static final String[] PSEUDOCLASS_CONSTANTSCSS2 =
+    {
+	"link", "visited", "active", "target", "focus",
+	"hover", "first-child"
+    };
+
+    private static final String[] PSEUDOCLASS_CONSTANTSTV =
+    {
+	"link", "visited", "active", "focus", "first-child"
+    };
+
+    private static final String[] PSEUDOCLASS_CONSTANTSCSS1 =
+    {
+	"link", "visited", "active", "target"
+    };
+
+    private static final String[] PSEUDOCLASS_CONSTANTS_MOBILE =
+    {
+	"link", "visited", "active", "focus"
+    };
+
+    private static final String[] PSEUDOELEMENT_CONSTANTSCSS3 =
+    {
+	"first-line", "first-letter", "before", "after",
+	"selection", "marker", "value", "choices", "repeat-item",
+	"repeat-index"
+    };
+
+    private static final String[] PSEUDOELEMENT_CONSTANTSCSS2 =
+    {
+	"first-line", "first-letter", "before", "after"
+    };
+
+    private static final String[] PSEUDOELEMENT_CONSTANTSCSS1 =
+    {
+	"first-line", "first-letter"
+    };
+
+    private static final String[] PSEUDOFUNCTION_CONSTANTSCSS3 =
+    {
+	"nth-child", "nth-last-child", "nth-of-type", "nth-last-of-type",
+	"lang", "contains", "not"
+    };
+
+    private static final String[] PSEUDOFUNCTION_CONSTANTSCSS2 =
+    {
+	"lang"
+    };
+
+    /**
+     * Returns the possible pseudo-classes for a profile
+     * @param profile the profile to get associated pseudo-classes
+     * @return the possible pseudo-classes for the profile
+     */
+    public static String[] getPseudoClass(String profile) {
+	if(profile == null || profile.equals("css2")|| profile.equals("css21")) {
+	    return PSEUDOCLASS_CONSTANTSCSS2;
+	}
+	if(profile.equals("css1")) {
+	    return PSEUDOCLASS_CONSTANTSCSS1;
+	}
+	if(profile.equals("css3")) {
+	    return PSEUDOCLASS_CONSTANTSCSS3;
+	}
+	if(profile.equals("tv")) {
+	    return PSEUDOCLASS_CONSTANTSTV;
+	}
+	if(profile.equals("mobile")) {
+	    return PSEUDOCLASS_CONSTANTS_MOBILE;
+	}
+	return null;
+    }
+
+    /**
+     * Returns the possible pseudo-elements for a profile
+     * @param profile the profile to get associated pseudo-elements
+     * @return the possible pseudo-elements for the profile
+     */
+    public static String[] getPseudoElement(String profile) {
+	if(profile == null || profile.equals("css2") || profile.equals("css21")
+	    || profile.equals("tv")) {
+	    return PSEUDOELEMENT_CONSTANTSCSS2;
+	}
+	if(profile.equals("css1")) {
+	    return PSEUDOELEMENT_CONSTANTSCSS1;
+	}
+	if(profile.equals("css3")) {
+	    return PSEUDOELEMENT_CONSTANTSCSS3;
+	}
+	return null;
+    }
+
+    /**
+     * Returns the possible pseudo-functions for a profile
+     * @param profile the profile to get associated pseudo-functions
+     * @return the possible pseudo-functions for the profile
+     */
+    public static String[] getPseudoFunction(String profile) {
+	if(profile == null || profile.equals("css2") || profile.equals("css21") ||
+		profile.equals("mobile") || profile.equals("tv")) {
+	    return PSEUDOFUNCTION_CONSTANTSCSS2;
+	}
+	if(profile.equals("css3")) {
+	    return PSEUDOFUNCTION_CONSTANTSCSS3;
+	}
+	return null;
+    }
+
+    /**
+     * Returns the possible pseudo-elements written as pseudo-classes
+     * for a specific profile
+     * @param profile the profile to get associated exceptions to the rule
+     * @return the possible pseudo-elements/classes for the profile
+     */  
+    public static String[] getPseudoElementExceptions(String profile) {
+	if(profile == null || profile.equals("css2") ||
+	   profile.equals("css21") || profile.equals("css3") ||
+	   profile.equals("mobile") || profile.equals("tv")) {
+	    return PSEUDOELEMENT_CONSTANTSCSS2;
+	}
+	return null;
+    }
+
+    /**
+     * Returns a PseudoFunctionSelector based on the name of the 
+     * selector
+     * @param name, the name of the pseudofun selector
+     * @param value, its value
+     * @throws InvalidParamException
+     */
+    public static PseudoFunctionSelector newPseudoFunction(String name, 
+					       String value, ApplContext ac) 
+	throws InvalidParamException
+    {
+	if (name == null) {
+	    throw new InvalidParamException("pseudo", 
+					    "null pseudofunction", ac);
+	}
+	if (name.equals("lang")) {
+	    return new PseudoFunctionLang(name, value);
+	}
+	if (name.equals("not")) {
+	    return new PseudoFunctionNot(name, value);
+	}
+	if (name.equals("contains")) {
+	    return new PseudoFunctionContains(name, value);
+	}
+	if (name.equals("nth-child")) {
+	    return new PseudoFunctionNthChild(name, value);
+	}
+	if (name.equals("nth-last-child")) {
+	    return new PseudoFunctionNthLastChild(name, value);
+	}
+	if (name.equals("nth-of-type")) {
+	    return new PseudoFunctionNthOfType(name, value);
+	}
+	if (name.equals("nth-last-of-type")) {
+	    return new PseudoFunctionNthLastOfType(name, value);
+	}
+	throw new InvalidParamException("pseudo", 
+					":"+name, ac);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/selectors/PseudoFunctionSelector.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,84 @@
+// $Id: PseudoFunctionSelector.java,v 1.4 2009-02-24 21:45:14 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.selectors;
+
+/**
+ * PseudoFunction<br />
+ * Created: Sep 2, 2005 4:04:45 PM<br />
+ */
+public class PseudoFunctionSelector implements Selector {
+
+    private String name;
+    private Object param;
+    private String representation = null;
+    /**
+     * Creates a new empty function selector
+     */
+    public PseudoFunctionSelector() {
+
+    }
+
+    /**
+     * @see Selector#getName()
+     */
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * Sets the name of this pseudo-function
+     * @param name The name to set.
+     */
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    /**
+     * Returns the parameter of this pseudo-function.
+     * @return the parameter of this pseudo-function.
+     */
+    public Object getParam() {
+        return param;
+    }
+
+    /**
+     * Sets the parameter of this pseudo-function
+     * @param param The param to set.
+     */
+    public void setParam(Object param) {
+        this.param = param;
+    }
+
+    /**
+     * Returns the specifictiy of this pseudo-function
+     * @return
+     */
+    public int getSpecificity() {
+	return 0;
+    }
+
+    /**
+     * @see Selector#canApply(Selector)
+     */
+    public boolean canApply(Selector other) {
+	return false;
+    }
+
+    /**
+     * @see Selector#toString()
+     */
+    public String toString() {
+	if (representation == null) {
+	    StringBuilder sb = new StringBuilder();
+	    sb.append(':');
+	    sb.append(name);
+	    sb.append('(');
+	    sb.append(param);
+	    sb.append(')');
+	    representation = sb.toString();
+	}
+	return representation;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/selectors/Selector.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,32 @@
+// $Id: Selector.java,v 1.2 2005-09-14 15:15:32 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.selectors;
+
+/**
+ * Selector<br />
+ * Basic class for all the selectors
+ * Created: Sep 1, 2005 3:31:35 PM<br />
+ */
+public interface Selector {
+
+    /**
+     * Returns a String representation of this Selector
+     * @return  the String representation of this Selector
+     */
+    public String toString();
+
+    /**
+     * Returns the name of this selector
+     * @return
+     */
+    public String getName();
+
+    /**
+     * Returns <code>true</code> if a selector can be applied to this selector
+     * @param other
+     * @return
+     */
+    public boolean canApply(Selector other);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/selectors/SelectorsList.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,340 @@
+// $Id: SelectorsList.java,v 1.6 2009-02-25 20:44:50 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.selectors;
+
+import java.util.ArrayList;
+
+import org.w3c.css.selectors.attributes.AttributeAny;
+import org.w3c.css.selectors.attributes.AttributeBegin;
+import org.w3c.css.selectors.attributes.AttributeExact;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.util.Messages;
+
+/**
+ * SelectorsList<br />
+ * A class to manage a list of selectors. The following selectors exists:
+ * <ul>
+ * <li>Universal: *</li>
+ * <li>Type: E</li>
+ * <li>Descendant: E F</li>
+ * <li>Child: E > F</li>
+ * <li>Adjacent: E + F</li>
+ * <li>Attribute:
+ *   <ul>
+ *   <li>Any: E[foo]</li>
+ *   <li>Begin: E[lang|=en]</li>
+ *   <li>Exact: E[lang=en]</li>
+ *   <li>One Of: E[lang~=en]</li>
+ *   <li>Start: E[foo^=bar]</li>
+ *   <li>Substring: E[foo*=bar]</li>
+ *   <li>Suffix: E[foo$=bar]</li>
+ *   </ul></li>
+ * <li>ID: E#myid</li>
+ * <li>Class: E.myclass</li>
+ * <li>Pseudo-class: E:first-child, ...</li>
+ * <li>Pseudo-element: E:first-line, ...</li>
+ * <li>Pseudo-function:
+ *   <ul>
+ *   <li>contains</li>
+ *   <li>lang</li>
+ *   <li>not</li>
+ *   <li>nth-child</li>
+ *   <li>nth-last-child</li>
+ *   <li>nth-of-type</li>
+ *   <li>nth-last-of-type</li>
+ *   <li>...</li>
+ *   </ul></li>
+ * </ul>
+ *
+ * Created: Sep 1, 2005 3:34:47 PM<br />
+ */
+public class SelectorsList {
+
+    // the list of selectors
+    private ArrayList<Selector> selectors;
+
+    private ApplContext ac;
+
+    private int specificity;
+
+    private String stringrep = null;
+
+    /**
+     * Creates a new empty SelectorsList
+     */
+    public SelectorsList() {
+	selectors = new ArrayList<Selector>();
+    }
+
+    /**
+     * Creates a new SelectorsList given an context
+     * @param ac the context in which the selectors appear
+     */
+    public SelectorsList(ApplContext ac) {
+	this.ac = ac;
+	selectors = new ArrayList<Selector>();
+    }
+
+    /**
+     * Returns the selectors list
+     * @return Returns the selectors list.
+     */
+    public ArrayList<Selector> getSelectors() {
+        return selectors;
+    }
+
+    /**
+     * Sets the selectors list
+     * @param selectors The selectors list to set.
+     */
+    public void setSelectors(ArrayList<Selector> selectors) {
+        this.selectors = selectors;
+	stringrep = null;
+    }
+
+    /**
+     * Return the nth selector in this SelectorsList
+     * @param index the index of the selector to retreive
+     * @return the nth selector
+     */
+    public Selector getSelector(int index) {
+	return selectors.get(index);
+    }
+
+    /**
+     * The number of selectors in this SelectorsList
+     * @return the number of selectors in this SelectorsList
+     */
+    public int size() {
+	return selectors.size();
+    }
+
+    /**
+     * Adds a selector to this SelectorsList
+     * @param selector the selector to add
+     * @throws InvalidParamException when trying to add a selector after a pseudo-element
+     */
+    public void addSelector(Selector selector) throws InvalidParamException {
+	if(selectors.size() > 0) {
+	    Selector last = selectors.get(selectors.size() - 1);
+	    if(last instanceof PseudoElementSelector) {
+		throw new InvalidParamException("pseudo-element", selector, 
+						ac.getMsg().getString(ac.getCssVersion()), ac);
+	    }
+	}
+	selectors.add(selector);
+	stringrep = null;
+    }
+
+    /**
+     * Adds an attribute selector
+     * @param attribute the attribute selector to add
+     * @throws InvalidParamException when trying to add a selector after a pseudo-element
+     */
+    public void addAttribute(AttributeSelector attribute)
+    throws InvalidParamException {
+	addSelector(attribute);
+    }
+
+    /**
+     * Adds an universal selector
+     * @param universal the universal selector to add
+     * @throws InvalidParamException when trying to add a selector after a pseudo-element
+     */
+    public void addUniversal(UniversalSelector universal)
+    throws InvalidParamException {
+	addSelector(universal);
+    }
+
+    /**
+     * Adds a type selector
+     * @param type the type selector to add
+     * @throws InvalidParamException when trying to add a selector after a pseudo-element
+     */
+    public void addType(TypeSelector type) throws InvalidParamException {
+	addSelector(type);
+    }
+
+    /**
+     * Adds a descendant selector
+     * @param descendant the descendant selector to add
+     * @throws InvalidParamException when trying to add a selector after a pseudo-element
+     */
+    public void addDescendant(DescendantSelector descendant)
+    throws InvalidParamException {
+	addSelector(descendant);
+    }
+
+    /**
+     * Adds a child selector
+     * @param child the child selector to add
+     * @throws InvalidParamException when trying to add a selector after a pseudo-element
+     */
+    public void addChild(ChildSelector child) throws InvalidParamException {
+	addSelector(child);
+    }
+
+    /**
+     * Adds a pseudo-class selector
+     * @param pc the pseudo-class to add
+     * @throws InvalidParamException when trying to add a selector after a pseudo-element
+     */
+    public void addPseudoClass(PseudoClassSelector pc)
+    throws InvalidParamException {
+	addSelector(pc);
+    }
+
+    /**
+     * Adds a pseudo-element selector
+     * No other selector can be added after a pseudo-element
+     * @param pe the pseudo-element to add
+     * @throws InvalidParamException when trying to add a selector after a pseudo-element
+     */
+    public void addPseudoElement(PseudoElementSelector pe)
+    throws InvalidParamException {
+	addSelector(pe);
+    }
+
+    /**
+     * Adds a pseudo-function selector
+     * @param pf the pseudo-function to add
+     * @throws InvalidParamException when trying to add a selector after a pseudo-element
+     */
+    public void addPseudoFunction(PseudoFunctionSelector pf)
+    throws InvalidParamException {
+	addSelector(pf);
+    }
+
+    /**
+     * Adds an adjacent sibling selector
+     * @param adjacent the adjacent selector to add
+     * @throws InvalidParamException when trying to add a selector after a pseudo-element
+     */
+    public void addAdjacentSibling(AdjacentSiblingSelector adjacent)
+    throws InvalidParamException {
+	addSelector(adjacent);
+    }
+
+    /**
+     * Adds an adjacent sibling selector
+     * @param adjacent the adjacent selector to add
+     * @throws InvalidParamException when trying to add a selector after a pseudo-element
+     */
+    public void addGeneralSibling(GeneralSiblingSelector sibling)
+    throws InvalidParamException {
+	addSelector(sibling);
+    }
+
+    /**
+     * Adds a class selector
+     * @param cs the class selector to add
+     * @throws InvalidParamException when trying to add a selector after a pseudo-element
+     */
+    public void addClass(ClassSelector cs) throws InvalidParamException {
+	addSelector(cs);
+    }
+
+    /**
+     * Adds an id selector
+     * @param id the id selector to add
+     * @throws InvalidParamException when trying to add a selector after a pseudo-element
+     */
+    public void addId(IdSelector id) throws InvalidParamException {
+	addSelector(id);
+    }
+
+    /**
+     * Returns a String representation of this SelectorsList
+     * @return  the String representation of this SelectorsList
+     */
+    public String toString() {
+	if (stringrep != null ) {
+	    return stringrep;
+	}
+	StringBuilder res = new StringBuilder();
+	int selsize = selectors.size();
+	for(int i = 0; i < selsize; i++) {
+	    res.append(selectors.get(i));
+	}
+	stringrep = res.toString();
+	return stringrep;
+    }
+    
+    public boolean isToStringCached() {
+	return (stringrep != null);
+    }
+
+    public String toStringEscaped() {
+	return Messages.escapeString(toString());
+    }
+
+    /**
+     * Sets the specificity of this SelectorsList
+     * @param specificity the specificity yo set
+     */
+    public void setSpecificity(int specificity) {
+	this.specificity = specificity;
+    }
+
+    /**
+     * Gets (and computes) the specificity of this selector.
+     */
+    public int getSpecificity() {
+	int a = 0;
+	int b = 0;
+	int c = 0;
+
+	for(int i = 0; i < size(); i++) {
+	    Selector s = getSelector(i);
+	    if(s instanceof IdSelector) {
+		a++;
+	    }
+	    else if(s instanceof ClassSelector ||
+		    s instanceof PseudoClassSelector) {
+		b++;
+	    }
+	    else if(s instanceof TypeSelector ||
+		    s instanceof AttributeSelector) {
+		c++;
+	    }
+	    // some pseudo-functions might influence the specificity
+	    else if(s instanceof PseudoFunctionSelector) {
+		specificity += ((PseudoFunctionSelector)s).getSpecificity();
+	    }
+	}
+	specificity += a * 100 + b * 10 + c;
+
+	return specificity;
+    }
+
+    /**
+     * Testing method
+     * @param args unused
+     */
+    public static void main(String[] args) {
+	SelectorsList s = new SelectorsList();
+	try {
+	    s.addType(new TypeSelector("E"));
+	    s.addAttribute(new AttributeExact("foo", "warning"));
+	    s.addChild(new ChildSelector());
+	    s.addType(new TypeSelector("F"));
+	    s.addAttribute(new AttributeBegin("lang", "en"));
+	    s.addAttribute(new AttributeAny("bar"));
+	    s.addAdjacentSibling(new AdjacentSiblingSelector());
+	    s.addType(new TypeSelector("G"));
+	    s.addId(new IdSelector("id"));
+	    s.addAttribute(new AttributeAny("blop"));
+	    s.addDescendant(new DescendantSelector());
+	    s.addType(new TypeSelector("H"));
+
+	    System.out.println(s);
+	}
+	catch(InvalidParamException e) {
+	    System.err.println(e.getMessage());
+	}
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/selectors/TypeSelector.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,63 @@
+// $Id: TypeSelector.java,v 1.4 2009-02-24 21:45:12 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.selectors;
+
+/**
+ * Type<br />
+ * Created: Sep 1, 2005 3:57:05 PM<br />
+ */
+public class TypeSelector implements Selector {
+
+    String prefix;
+    String name;
+
+    public TypeSelector(String prefix, String type) {
+	this.prefix = prefix;
+	this.name = type;
+    }
+    /**
+     * Creates a new TypeSelector which name name is type
+     * @param type the name of this type selector
+     */
+    public TypeSelector(String type) {
+	this(null, type);
+    }
+
+    /**
+     * @see Selector#getName()
+     */
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * Sets the name of this selector
+     * @param type The name to set.
+     */
+    public void setName(String type) {
+        this.name = type;
+    }
+
+    /**
+     * @see Selector#canApply(Selector)
+     */
+    public boolean canApply(Selector other) {
+	return false;
+    }
+
+    /**
+     * @see Selector#toString()
+     */
+    public String toString() {
+	if (prefix != null) {
+	    StringBuilder sb = new StringBuilder(prefix);
+	    sb.append('|');
+	    sb.append(name);
+	    return sb.toString();
+	}
+	return name;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/selectors/UniversalSelector.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,43 @@
+// $Id: UniversalSelector.java,v 1.4 2009-02-16 17:53:40 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.selectors;
+
+/**
+ * Universal<br />
+ * Created: Sep 1, 2005 3:45:13 PM<br />
+ */
+public class UniversalSelector implements Selector {
+
+    String prefix = null;
+
+    public UniversalSelector(String prefix) {
+	this.prefix = prefix;
+    }
+
+    /**
+     * @see Selector#toString()
+     */
+    public String toString() {
+	if (prefix != null) {
+	    return prefix+"|*";
+	}
+	return "*";
+    }
+
+    /**
+     * @see Selector#canApply(Selector)
+     */
+    public boolean canApply(Selector other) {
+	return true;
+    }
+
+    /**
+     * @see Selector#getName()
+     */
+    public String getName() {
+	return "*";
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/selectors/attributes/AttributeAny.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,29 @@
+// $Id: AttributeAny.java,v 1.2 2005-09-14 15:15:32 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.selectors.attributes;
+
+import org.w3c.css.selectors.AttributeSelector;
+import org.w3c.css.selectors.Selector;
+import org.w3c.css.util.ApplContext;
+
+/**
+ * AttributeAny<br />
+ * Created: Sep 1, 2005 4:20:49 PM<br />
+ */
+public class AttributeAny extends AttributeSelector {
+
+    public AttributeAny(String name) {
+	super(name);
+    }
+
+    public boolean canApply(Selector other) {
+	return true;
+    }
+
+    public void applyAttribute(ApplContext ac, AttributeSelector attr) {
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/selectors/attributes/AttributeBegin.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,100 @@
+// $Id: AttributeBegin.java,v 1.4 2008-05-14 10:13:09 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.selectors.attributes;
+
+import org.w3c.css.selectors.AttributeSelector;
+import org.w3c.css.selectors.Selector;
+import org.w3c.css.util.ApplContext;
+
+/**
+ * AttributeBegin<br />
+ * Created: Sep 1, 2005 4:26:18 PM<br />
+ */
+public class AttributeBegin extends AttributeSelector {
+
+    private String value;
+
+    public AttributeBegin(String name, String value) {
+	setName(name);
+	this.value = value;
+    }
+
+    /**
+     * @return Returns the value.
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * @param value The value to set.
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    public boolean canApply(Selector other) {
+	if (other instanceof AttributeAny) {
+	    // [lang|=fr][lang]
+	    return true;
+	} else if (other instanceof AttributeExact) {
+	    String v = ((AttributeExact) other).getValue();
+	    int index = v.indexOf('-');
+	    if (index > 0) {
+		v = v.substring(0, index);
+	    }
+	    if (!value.equals(v)) {
+		// [lang|=fr][lang=en-US]
+		return false;
+	    } else {
+		// [lang|=en][lang=en-US]
+		return true;
+	    }
+	} else if (other instanceof AttributeOneOf) {
+	    return true;
+	} else if (other instanceof AttributeBegin) {
+	    if (!value.equals(((AttributeBegin) other).value)) {
+		// [lang|=fr][lang|=en]
+		return false;
+	    } else {
+		// [lang|=en][lang|=en]
+		return true;
+	    }
+	}
+	return false;
+    }
+
+    public void applyAttribute(ApplContext ac, AttributeSelector attr) {
+	String name = getName();
+	if (name.equals(attr.getName())) {
+	    // attribute exact knows how to match, delegate...
+	    if (attr instanceof AttributeExact) {
+		((AttributeExact) attr).applyAttribute(ac, this);
+	    } else if (attr instanceof AttributeBegin) {
+		String val = ((AttributeBegin) attr).getValue();
+		// check if one start with the other or not
+		if (!val.equals(value) && !value.startsWith(val+'-')
+		    && !val.startsWith(value+'-')) {
+		    ac.getFrame().addWarning("incompatible", 
+				  new String[] { toString(), attr.toString() });
+		}
+	    } else if (attr instanceof AttributeStart) {
+		String val = ((AttributeStart) attr).getValue();
+		if (!val.equals(value) && !value.startsWith(val)
+		    && !val.startsWith(value+'-')) {
+		    ac.getFrame().addWarning("incompatible", 
+				  new String[] { toString(), attr.toString() });
+		}
+	    } else if (attr instanceof AttributeOneOf) {
+		((AttributeOneOf) attr).applyAttribute(ac, this);
+	    }
+	}
+    }
+
+    public String toString() {
+	return "[" + getName() + "|=\"" + value + "\"]";
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/selectors/attributes/AttributeExact.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,112 @@
+// $Id: AttributeExact.java,v 1.10 2008-05-14 10:13:09 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.selectors.attributes;
+
+import org.w3c.css.selectors.AttributeSelector;
+import org.w3c.css.selectors.Selector;
+import org.w3c.css.util.ApplContext;
+
+/**
+ * AttributeExact<br />
+ * Created: Sep 1, 2005 4:22:42 PM<br />
+ */
+public class AttributeExact extends AttributeSelector {
+
+    private String value;
+
+    public AttributeExact(String name, String value) {        
+	setName(name);
+	this.value = value;
+    }
+
+    /**
+     * @return Returns the value.
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * @param value The value to set.
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    public boolean canApply(Selector other) {
+	if (getName().equals(other.getName())) {
+	    if (other instanceof AttributeAny) {
+		// [lang=fr][lang]
+		return true;
+	    } else if (other instanceof AttributeExact ||
+		       other instanceof AttributeOneOf ||
+		       other instanceof AttributeBegin) {
+		// FIXME sounds like canApply is not used anyway
+		// + the comparison function is not right and doesn't
+		// take into account all kind the selector attributes
+		if (!value.equals(((AttributeExact) other).getValue())) {
+		    // [lang=fr][lang=en]
+		    return false;
+		} else {
+		    // [lang=en][lang=en]
+		    return true;
+		}
+	    }
+	    return false;
+	}
+	return true;
+    }
+
+    public void applyAttribute(ApplContext ac, AttributeSelector attr) {
+	String name = getName();
+	// if same name... check if they are incompatible or not
+	if (name.equals(attr.getName())) {
+	    if (attr instanceof AttributeExact) {
+		// and not the same value, raise a warning
+		if (!value.equals(((AttributeExact) attr).getValue())) {
+		    ac.getFrame().addWarning("incompatible", 
+				  new String[] { toString(), attr.toString() });
+		}
+	    } else if(attr instanceof AttributeOneOf) {
+		// delegate the match to OneOf
+		((AttributeOneOf)attr).applyAttribute(ac, this);
+	    } else if(attr instanceof AttributeBegin) {
+		String othervalue = ((AttributeBegin) attr).getValue();
+		// check if [lang|=en][lang=fr-FR] are incompatible 
+		// form CSS3 selectors about AttributeBegin
+		// [[ its value either being exactly "val" or beginning 
+		//    with "val" immediately followed by "-" (U+002D).  ]]
+		if (!value.equals(othervalue) && 
+		    !value.startsWith(othervalue+"-")) {
+		    ac.getFrame().addWarning("incompatible", 
+				  new String[] { toString(), attr.toString() });
+		}
+	    } else if (attr instanceof AttributeSubstr) {
+		String othervalue = ((AttributeSubstr) attr).getValue();
+		if (value.indexOf(othervalue) < 0) {
+		    ac.getFrame().addWarning("incompatible", 
+				  new String[] { toString(), attr.toString() });
+		}
+	    } else if (attr instanceof AttributeStart) {
+		String othervalue = ((AttributeStart) attr).getValue();
+		if (!value.startsWith(othervalue)) {
+		     ac.getFrame().addWarning("incompatible", 
+				  new String[] { toString(), attr.toString() });
+		}
+	    } else if (attr instanceof AttributeSuffix) {
+		String othervalue = ((AttributeSuffix) attr).getValue();
+		if (!value.endsWith(othervalue)) {
+		     ac.getFrame().addWarning("incompatible", 
+				  new String[] { toString(), attr.toString() });
+		}
+	    }
+	}
+    }
+
+    public String toString() {
+	return "[" + getName() + "=\"" + value + "\"]";
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/selectors/attributes/AttributeOneOf.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,155 @@
+// $Id: AttributeOneOf.java,v 1.5 2008-05-14 10:13:09 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.selectors.attributes;
+
+import org.w3c.css.selectors.AttributeSelector;
+import org.w3c.css.selectors.Selector;
+import org.w3c.css.util.ApplContext;
+
+/**
+ * AttributeOneOf<br />
+ * Created: Sep 1, 2005 4:30:13 PM<br />
+ */
+public class AttributeOneOf extends AttributeSelector {
+
+    String   value;
+    String[] values;
+
+    public AttributeOneOf(String name, String value) {
+	setName(name);
+	this.value = value;
+	this.values = null;
+    }
+
+    /**
+     * @return Returns the value.
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * @param value The value to set.
+     */
+    public void setValue(String value) {
+        this.value = value;
+	values = null;
+    }
+
+    public boolean canApply(Selector other) {
+	if (other instanceof AttributeAny) {
+	    // [lang~=fr][lang]
+	    // return [lang~=fr]
+	    return true;
+	} else if (other instanceof AttributeExact) {
+	    String exact = ((AttributeExact) other).getValue();
+	    // [lang~=fr][lang=fr]
+	    if(value.equals(exact)) {
+		// [lang~=fr][lang=fr]
+		return true;
+	    }
+	    // [lang~=en][lang=fr]
+	    return false;
+	} else if (other instanceof AttributeOneOf) {
+	    return true;
+	} else if (other instanceof AttributeBegin) {
+	    // [lang=~fr][lang|=fr]
+	    return true;
+	}
+	return false;
+    }
+
+    public String toString() {
+	return "[" + getName() + "~=\"" + value + "\"]";
+    }
+
+    private String[] computeValues() {
+	values = value.split("\\s");
+	return values;
+    }
+
+    public void applyAttribute(ApplContext ac, AttributeSelector attr) {
+	String name = getName();
+	int i;
+	String val;
+	boolean ok;
+
+	if (name.equals(attr.getName())) {
+	    if (values == null) {
+		computeValues();
+	    }
+	    if (attr instanceof AttributeExact) {
+		val = ((AttributeExact) attr).getValue();
+		ok = false;
+		for (i=0;!ok && i<values.length; i++) {
+		    ok = val.equals(values[i]);
+		}
+		if (!ok) {
+		    ac.getFrame().addWarning("incompatible", 
+				  new String[] { toString(), attr.toString() });
+		}
+	    } else if (attr instanceof AttributeBegin) {
+		val = ((AttributeBegin) attr).getValue();
+		ok = false;
+		String pval = val + '-';
+		for (i=0;!ok && i<values.length; i++) {
+		    ok = values[i].equals(val) || values[i].startsWith(pval);
+		}
+		if (!ok) {
+		    ac.getFrame().addWarning("incompatible", 
+				  new String[] { toString(), attr.toString() });
+		}
+	    } else if (attr instanceof AttributeStart) {
+		val = ((AttributeStart) attr).getValue();
+		ok = false;
+		for (i=0;!ok && i<values.length; i++) {
+		    ok = values[i].startsWith(val);
+		}
+		if (!ok) {
+		    ac.getFrame().addWarning("incompatible", 
+				  new String[] { toString(), attr.toString() });
+		}
+	    } else if (attr instanceof AttributeSubstr) {
+		val = ((AttributeSubstr) attr).getValue();
+		ok = false;
+		for (i=0;!ok && i<values.length; i++) {
+		    ok = (values[i].indexOf(val) >= 0);
+		}
+		if (!ok) {
+		    ac.getFrame().addWarning("incompatible", 
+				  new String[] { toString(), attr.toString() });
+		}
+	    } else if (attr instanceof AttributeSuffix) {
+		val = ((AttributeSuffix) attr).getValue();
+		ok = false;
+		for (i=0;!ok && i<values.length; i++) {
+		    ok = values[i].endsWith(val);
+		}
+		if (!ok) {
+		    ac.getFrame().addWarning("incompatible", 
+				  new String[] { toString(), attr.toString() });
+		}
+	    } else if (attr instanceof AttributeOneOf) {
+		AttributeOneOf otherattr = (AttributeOneOf) attr;
+		String[] othervalues = otherattr.values;
+		int j;
+		if (othervalues == null) {
+		    othervalues = otherattr.computeValues();
+		}
+		ok = false;
+		for (i=0;!ok && i<values.length; i++) {
+		    for(j=0;!ok && j<othervalues.length; j++) {
+			ok = values[i].equals(othervalues[j]);
+		    }
+		}
+		if (!ok) {
+		    ac.getFrame().addWarning("incompatible", 
+				  new String[] { toString(), attr.toString() });
+		}
+	    }
+	}
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/selectors/attributes/AttributeStart.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,60 @@
+// $Id: AttributeStart.java,v 1.3 2008-05-14 10:13:09 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.selectors.attributes;
+
+import org.w3c.css.selectors.AttributeSelector;
+import org.w3c.css.selectors.Selector;
+import org.w3c.css.util.ApplContext;
+
+/**
+ * AttributeStart<br />
+ * Created: Sep 1, 2005 4:32:57 PM<br />
+ */
+public class AttributeStart extends AttributeSelector {
+
+private String value;
+
+    public AttributeStart(String name, String value) {
+	setName(name);
+	this.value = value;
+    }
+
+    /**
+     * @return Returns the value.
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * @param value The value to set.
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    public boolean canApply(Selector other) {
+	return true;
+    }
+
+    public String toString() {
+	return "[" + getName() + "^=\"" + value + "\"]";
+    }
+
+    public void applyAttribute(ApplContext ac, AttributeSelector attr) {
+	String name = getName();
+	if (name.equals(attr.getName())) {
+	    // attribute exact knows how to match, delegate...
+	    if (attr instanceof AttributeExact) {
+		((AttributeExact) attr).applyAttribute(ac, this);
+	    } else if (attr instanceof AttributeBegin) {
+		((AttributeBegin) attr).applyAttribute(ac, this);
+	    } else if (attr instanceof AttributeOneOf) {
+		((AttributeOneOf) attr).applyAttribute(ac, this);
+	    }
+	}
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/selectors/attributes/AttributeSubstr.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,58 @@
+// $Id: AttributeSubstr.java,v 1.3 2008-05-14 10:13:09 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.selectors.attributes;
+
+import org.w3c.css.selectors.AttributeSelector;
+import org.w3c.css.selectors.Selector;
+import org.w3c.css.util.ApplContext;
+
+/**
+ * AttributeSubstr<br />
+ * Created: Sep 1, 2005 4:35:13 PM<br />
+ */
+public class AttributeSubstr extends AttributeSelector {
+
+private String value;
+
+    public AttributeSubstr(String name, String value) {
+	setName(name);
+	this.value = value;
+    }
+
+    /**
+     * @return Returns the value.
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * @param value The value to set.
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    public boolean canApply(Selector other) {
+	return true;
+    }
+
+    public String toString() {
+	return "[" + getName() + "*=\"" + value + "\"]";
+    }
+
+    public void applyAttribute(ApplContext ac, AttributeSelector attr) {
+	String name = getName();
+	if (name.equals(attr.getName())) {
+	    // attribute exact knows how to match, delegate...
+	    if (attr instanceof AttributeExact) {
+		((AttributeExact) attr).applyAttribute(ac, this);
+	    } else if (attr instanceof AttributeOneOf) {
+		((AttributeOneOf) attr).applyAttribute(ac, this);
+	    }
+	}
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/selectors/attributes/AttributeSuffix.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,58 @@
+// $Id: AttributeSuffix.java,v 1.3 2008-05-14 10:13:09 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.selectors.attributes;
+
+import org.w3c.css.selectors.AttributeSelector;
+import org.w3c.css.selectors.Selector;
+import org.w3c.css.util.ApplContext;
+
+/**
+ * AttributeSuffix<br />
+ * Created: Sep 1, 2005 4:34:31 PM<br />
+ */
+public class AttributeSuffix extends AttributeSelector {
+
+private String value;
+
+    public AttributeSuffix(String name, String value) {
+	setName(name);
+	this.value = value;
+    }
+
+    /**
+     * @return Returns the value.
+     */
+    public String getValue() {
+        return value;
+    }
+
+    /**
+     * @param value The value to set.
+     */
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    public boolean canApply(Selector other) {
+	return true;
+    }
+
+    public String toString() {
+	return "[" + getName() + "$=\"" + value + "\"]";
+    }
+
+    public void applyAttribute(ApplContext ac, AttributeSelector attr) {
+	String name = getName();
+	if (name.equals(attr.getName())) {
+	    // attribute exact knows how to match, delegate...
+	    if (attr instanceof AttributeExact) {
+		((AttributeExact) attr).applyAttribute(ac, this);
+	    } else if (attr instanceof AttributeOneOf) {
+		((AttributeOneOf) attr).applyAttribute(ac, this);
+	    }
+	}
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/selectors/pseudofunctions/PseudoFunctionContains.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,20 @@
+// $Id: PseudoFunctionContains.java,v 1.2 2005-09-14 15:15:32 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.selectors.pseudofunctions;
+
+import org.w3c.css.selectors.PseudoFunctionSelector;
+
+/**
+ * PseudoFunctionContains<br />
+ * Created: Sep 2, 2005 4:25:06 PM<br />
+ */
+public class PseudoFunctionContains extends PseudoFunctionSelector {
+
+    public PseudoFunctionContains(String name, String text) {
+	setName(name);
+	setParam(text);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/selectors/pseudofunctions/PseudoFunctionLang.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,20 @@
+// $Id: PseudoFunctionLang.java,v 1.2 2005-09-14 15:15:32 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.selectors.pseudofunctions;
+
+import org.w3c.css.selectors.PseudoFunctionSelector;
+
+/**
+ * PseudoFunctionLang<br />
+ * Created: Sep 2, 2005 4:24:48 PM<br />
+ */
+public class PseudoFunctionLang extends PseudoFunctionSelector {
+
+    public PseudoFunctionLang(String name, String lang) {
+	setName(name);
+	setParam(lang);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/selectors/pseudofunctions/PseudoFunctionNot.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,20 @@
+// $Id: PseudoFunctionNot.java,v 1.2 2005-09-14 15:15:32 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.selectors.pseudofunctions;
+
+import org.w3c.css.selectors.PseudoFunctionSelector;
+
+/**
+ * PseudoFunctionNot<br />
+ * Created: Sep 2, 2005 4:25:20 PM<br />
+ */
+public class PseudoFunctionNot extends PseudoFunctionSelector {
+
+    public PseudoFunctionNot(String name, String value) {
+	setName(name);
+	setParam(value);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/selectors/pseudofunctions/PseudoFunctionNthChild.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,20 @@
+// $Id: PseudoFunctionNthChild.java,v 1.3 2009-02-12 21:26:36 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.selectors.pseudofunctions;
+
+import org.w3c.css.selectors.PseudoFunctionSelector;
+
+/**
+ * PseudoFunctionNthChild<br />
+ * Created: Sep 2, 2005 4:22:54 PM<br />
+ */
+public class PseudoFunctionNthChild extends PseudoFunctionSelector {
+
+    public PseudoFunctionNthChild(String name, String value) {
+	setName(name);
+	setParam(value);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/selectors/pseudofunctions/PseudoFunctionNthLastChild.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,19 @@
+// $Id: PseudoFunctionNthLastChild.java,v 1.3 2009-02-12 21:26:36 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.selectors.pseudofunctions;
+
+import org.w3c.css.selectors.PseudoFunctionSelector;
+
+/**
+ * PseudoFunctionNthLastChild<br />
+ * Created: Sep 2, 2005 4:23:30 PM<br />
+ */
+public class PseudoFunctionNthLastChild extends PseudoFunctionSelector {
+
+    public PseudoFunctionNthLastChild(String name, String value) {
+	setName(name);
+	setParam(value);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/selectors/pseudofunctions/PseudoFunctionNthLastOfType.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,20 @@
+// $Id: PseudoFunctionNthLastOfType.java,v 1.3 2009-02-12 21:26:36 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.selectors.pseudofunctions;
+
+import org.w3c.css.selectors.PseudoFunctionSelector;
+
+/**
+ * PseudoFunctionNthLastOfType<br />
+ * Created: Sep 2, 2005 4:24:17 PM<br />
+ */
+public class PseudoFunctionNthLastOfType extends PseudoFunctionSelector {
+
+    public PseudoFunctionNthLastOfType(String name, String value) {
+	setName(name);
+	setParam(value);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/selectors/pseudofunctions/PseudoFunctionNthOfType.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,20 @@
+// $Id: PseudoFunctionNthOfType.java,v 1.3 2009-02-12 21:26:36 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.selectors.pseudofunctions;
+
+import org.w3c.css.selectors.PseudoFunctionSelector;
+
+/**
+ * PseudoFunctionNthOfType<br />
+ * Created: Sep 2, 2005 4:23:48 PM<br />
+ */
+public class PseudoFunctionNthOfType extends PseudoFunctionSelector {
+
+    public PseudoFunctionNthOfType(String name, String value) {
+	setName(name);
+	setParam(value);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/.cvsignore	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,1 @@
+variables.test
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/Codecs.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,427 @@
+//
+// $Id: Codecs.java,v 1.6 2007-09-20 12:07:32 julien 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
+/*
+ * Be Careful this version is not the original version.
+ * I modified some sources.          Philippe Le Hegaret
+ *
+ * @(#)Codecs.java					0.2-2 23/03/1997
+ *
+ *  This file is part of the HTTPClient package
+ *  Copyright (C) 1996,1997  Ronald Tschalaer
+ *
+ *  This library is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Library General Public
+ *  License as published by the Free Software Foundation; either
+ *  version 2 of the License, or (at your option) any later version.
+ *
+ *  This library is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Library General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Library General Public
+ *  License along with this library; if not, write to the Free
+ *  Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ *  MA 02111-1307, USA
+ *
+ *  For questions, suggestions, bug-reports, enhancement-requests etc.
+ *  I may be contacted at:
+ *
+ *  ronald@innovation.ch
+ *  Ronald.Tschalaer@psi.ch
+ *
+ */
+
+package org.w3c.css.util;
+
+import java.io.IOException;
+
+/**
+ * This class collects various encoders and decoders.
+ *
+ * @version	0.2 (bug fix 2)  23/03/1997
+ * @author	Ronald Tschal&auml;r
+ */
+
+public class Codecs {
+
+    /**
+     * I have problems with multipart/form-data so I integrated auto-debug here
+     */
+    private static boolean debugMode = false;
+
+    // Constructors
+
+    /**
+     * This class isn't meant to be instantiated.
+     */
+    private Codecs() {}
+
+
+    // Methods
+
+    /**
+     * This method decodes a multipart/form-data encoded string. The boundary
+     * is parsed from the <var>cont_type</var> parameter, which must be of the
+     * form 'multipart/form-data; boundary=...'.
+     * <BR>Any encoded files are created in the directory specified by
+     * <var>dir</var> using the encoded filename.
+     * <BR>Note: Does not handle nested encodings (yet).
+     * <BR>Example:
+     * <PRE>
+     *     NVPair[] opts = Codecs.mpFormDataDecode(resp.getData(),
+     *                                      resp.getHeader("Content-length"),
+     *                                      ".");
+     * </PRE>
+     * Assuming the data received looked something like:
+     * <PRE>
+     * -----------------------------114975832116442893661388290519
+     * Content-Disposition: form-data; name="option"
+     *                                                         &nbsp;
+     * doit
+     * -----------------------------114975832116442893661388290519
+     * Content-Disposition: form-data; name="comment"; filename="comment.txt"
+     *                                                         &nbsp;
+     * Gnus and Gnats are not Gnomes.
+     * -----------------------------114975832116442893661388290519--
+     * </PRE>
+     * you would get one file called <VAR>comment.txt</VAR> in the current
+     * directory, and opts would contain two elements: {"option", "doit"}
+     * and {"comment", "comment.txt"}
+     *
+     * @param     data        the form-data to decode.
+     * @param     cont_type   the content type header (must contain the
+     *			      boundary string).
+     * @return                an array of name/value pairs, one for each part;
+     *                        the name is the 'name' attribute given in the
+     *                        Content-Disposition header; the value is either
+     *                        the name of the file if a filename attribute was
+     *                        found, or the contents of the part.
+     * @exception IOException If any file operation fails.
+     */
+    public final static synchronized NVPair[] mpFormDataDecode(byte[] data,
+							       String cont_type)
+	    throws IOException {
+
+	// Find and extract boundary string
+	String bndstr = getParameter("boundary", cont_type);
+	if (bndstr == null) {
+	    throw new IOException("\'boundary\' parameter " +
+				  "not found in Content-type: " + cont_type);
+	}
+
+	byte[] srtbndry = new byte[bndstr.length()+4],
+	    boundary = new byte[bndstr.length()+6],
+	    endbndry = new byte[bndstr.length()+6];
+
+	srtbndry = (    "--" + bndstr + "\n").getBytes();
+	boundary = ("\n--" + bndstr + "\n").getBytes();
+	endbndry = ("\n--" + bndstr + "--"  ).getBytes();
+
+	if (debugMode) {
+	    System.err.println("[START OF DATA]");
+	    printData(data);
+	    System.err.println("[END OF DATA]");
+	    System.err.print( "boundary : " );
+	    printData(srtbndry);
+	    System.err.println();
+	    printData(boundary);
+	    System.err.println();
+	    printData(endbndry);
+	    System.err.println();
+	}
+
+
+
+	// slurp
+
+	// setup search routines
+
+	int[] bs = Util.compile_search(srtbndry);
+	int[] bc = Util.compile_search(boundary);
+	int[] be = Util.compile_search(endbndry);
+
+
+	// let's start parsing the actual data
+
+	int start = Util.findStr(srtbndry, bs, data, 0, data.length);
+	if (start == -1) {	// didn't even find the start
+	    if (!debugMode) {
+		debugMode = true;
+		mpFormDataDecode(data, cont_type);
+		return null;
+	    } else {
+		debugMode = false;
+		throw new IOException("Starting boundary not found: " +
+				      new String(srtbndry));
+	    }
+	}
+
+	start += srtbndry.length;
+
+	NVPair[] res  = new NVPair[10];
+	boolean  done = false;
+	int      idx;
+
+	for (idx=0; !done; idx++) {
+	    // find end of this part
+
+	    int end = Util.findStr(boundary, bc, data, start, data.length);
+	    if (end == -1) {		// must be the last part
+		end = Util.findStr(endbndry, be, data, start, data.length);
+		if (end == -1) {
+		    /*		    if (!debugMode) {
+			debugMode = true;
+			mpFormDataDecode(data, cont_type);
+			return null;
+		    } else {
+                        debugMode = false;
+			System.err.println( "[Ending boundary not found in]" );
+			printData(data, start);
+			System.err.println( "[END DATA BOUNDARY SEARCH]");
+			throw new IOException("Ending boundary not found: " +
+					      new String(endbndry));
+		    */
+		    end = data.length -1;
+		    while (end >= 0 && (data[end] == '\n' || data[end] == ' ')) {
+			end--;
+		    }
+		    end++;
+			/* } */
+		}
+		done = true;
+	    }
+
+	    // parse header(s)
+
+	    String hdr, lchdr, name=null, filename=null, cont_disp = null, mimeType=null;
+	    Object value;
+
+	    while (true) {
+		int next = findEOL(data, start) + 1;
+
+		if (next-1 <= start)  break;	// empty line -> end of headers
+		hdr      = new String(data, start, next-1-start);
+
+		if (debugMode) {
+		    System.err.println( " start = " + start +
+					" end = " + next );
+		}
+
+		// handle line continuation
+		byte ch;
+		while (next < data.length-1  &&
+		       ((ch = data[next]) == ' '  ||  ch == '\t')) {
+		    next   = findEOL(data, start) + 1;
+		    String result = new String(data, start, next-1-start);
+		    hdr += result;
+		    start  = next;
+		}
+		start = next;
+
+		if (debugMode) {
+		    System.err.println( "hdr=" + hdr );
+		    System.err.println( "(New) start = " + start +
+					" end = " + next );
+		}
+
+		lchdr = hdr.toLowerCase();
+
+		if (lchdr.startsWith("content-type")) {
+			mimeType = lchdr.substring("content-type: ".length());
+			continue;
+		}else if (!lchdr.startsWith("content-disposition")) continue;
+
+		int off = lchdr.indexOf("form-data", 20);
+
+		if (off == -1) {
+		    if (!debugMode) {
+			debugMode = true;
+			mpFormDataDecode(data, cont_type);
+			return null;
+		    } else {
+			debugMode = false;
+			throw new IOException("Expected \'Content-Disposition: form-data\' in line: "+hdr);
+		    }
+		}
+
+		name = getParameter("name", hdr);
+
+		if (debugMode) {
+		    System.err.println( "[ADD name is " + filename + ']');
+		}
+
+		if (name == null) {
+		    if (!debugMode) {
+			debugMode = true;
+			mpFormDataDecode(data, cont_type);
+			return null;
+		    } else {
+			debugMode = false;
+			throw new IOException("\'name\' parameter not found in header: "+hdr);
+		    }
+		}
+
+		filename = getParameter("filename", hdr);
+		if (debugMode) {
+		    System.err.println( "[ADD filename is " + filename + ']');
+		}
+		cont_disp = hdr;
+	    }
+
+	    start += 1;
+
+	    if (debugMode) {
+		System.err.println( "(End) start = " + start +
+				    " end = " + end );
+	    }
+
+	    if (start > end) {
+		if (!debugMode) {
+		    debugMode = true;
+		    mpFormDataDecode(data, cont_type);
+		    return null;
+		} else {
+		    debugMode = false;
+		    throw new IOException("End of header not found at offset "+end);
+		}
+	    }
+
+	    if (cont_disp == null) {
+		if (!debugMode) {
+		    debugMode = true;
+		    mpFormDataDecode(data, cont_type);
+		    return null;
+		} else {
+		    debugMode = false;
+		    throw new IOException("Missing \'Content-Disposition\' header at offset "+start);
+		}
+	    }
+
+	    // handle data for this part
+
+	    if (filename != null) {			// It's a file
+		FakeFile file = new FakeFile(filename);
+
+		file.write(data, start, end-start);
+		file.setContentType(mimeType);
+
+		value = file;
+	    } else {					// It's simple data
+		value = new String(data, start, end-start);
+	    }
+
+	    if (idx >= res.length) {
+		res = Util.resizeArray(res, idx+10);
+	    }
+
+	    res[idx] = new NVPair(name, value);
+	    if(debugMode) {
+		System.err.println( "[ADD " + name + ',' + value + ','
+				    + value.getClass() + ']');
+	    }
+	    start = end + boundary.length;
+	}
+
+	return Util.resizeArray(res, idx);
+    }
+
+
+    /**
+     * retrieves the value associated with the parameter <var>param</var> in
+     * a given header string. This is used especially in headers like
+     * 'Content-type' and 'Content-Disposition'. Here is the syntax it
+     * expects:<BR>
+     * ";" <var>param</var> "=" ( token | quoted-string )
+     *
+     * @param  param  the parameter name
+     * @param  hdr    the header value
+     * @return the value for this parameter, or null if not found.
+     */
+    public final static String getParameter(String param, String hdr) {
+	int  pbeg,	// parameter name begin
+	    pend,	// parameter name end
+	    vbeg,	// parameter value begin
+	    vend = -1,	// parameter value end
+	    len = hdr.length();
+
+	param = param.trim();
+
+	while (true) {
+	    // mark parameter name
+	    if (debugMode) {
+		System.err.println( "[DEBUG] looks for " + param + " in " );
+		System.err.println( "[" + hdr.substring(vend+1) + ']');
+	    }
+	    pbeg = hdr.indexOf(';', vend+1);	// get ';'
+	    if (pbeg == -1)  return null;
+
+	    while (pbeg < len-1
+		   && (Util.isWhiteSpace(hdr.charAt(pbeg)) || (hdr.charAt(pbeg) == ';'))) {
+		pbeg++;
+	    }
+	    if (pbeg == len-1)  return null;
+	    pend = hdr.indexOf('=', pbeg+1);	// get '='
+	    if (pend == -1)  return null;
+	    vbeg = pend + 1;
+	    while (Util.isWhiteSpace(hdr.charAt(--pend)));
+	    pend++;
+
+	    // mark parameter value
+
+	    while (vbeg < len  &&  Util.isWhiteSpace(hdr.charAt(vbeg))) vbeg++;
+	    if (vbeg == len)  return null;
+
+	    vend = vbeg;
+	    if (hdr.charAt(vbeg) == '\"') {		// is a quoted-string
+		vbeg++;
+		vend = hdr.indexOf('\"', vbeg);
+		if (vend == -1)  return null;
+	    } else {					// is a simple token
+		vend = hdr.indexOf(';', vbeg);
+		if (vend == -1)  vend = hdr.length();
+		while (Util.isWhiteSpace(hdr.charAt(--vend))) ;
+		vend++;
+	    }
+
+	    if (hdr.regionMatches(true, pbeg, param, 0, pend-pbeg))
+		break;					// found it
+	}
+
+	return hdr.substring(vbeg, vend);
+    }
+
+
+    private static void printData(byte[] data) {
+    	printData(data, 0);
+    }
+
+    private static void printData(byte[] data, int offset) {
+	for (int i = offset; i < data.length; i++) {
+	    if (data[i] == '\n' || data[i] == '\r') {
+		System.err.print( "&" + ((int) data[i]) );
+		System.err.println();
+	    } else {
+		System.err.print( (char) data[i] );
+	    }
+	}
+    }
+
+    /**
+     * Searches for the next LF in an array.
+     *
+     * @param  arr the byte array to search.
+     * @param  off the offset at which to start the search.
+     * @return the position of the CR or (arr.length-2) if not found
+     */
+    private final static int findEOL(byte[] arr, int off) {
+	while (off < arr.length-1  &&
+	       !(arr[off++] == '\n'));
+	return off-1;
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/CompareFunction.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,17 @@
+//
+// $Id: CompareFunction.java,v 1.4 2008-07-01 13:42:38 ot 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 org.w3c.css.util;
+
+/**
+ * The comparaison function for the SortAlgorithm class
+ *
+ * @version $Revision: 1.4 $
+ * @author  Philippe Le Hegaret
+ */
+public abstract class CompareFunction {
+    public abstract boolean compare(Object obj1, Object obj2);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/Date.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,133 @@
+//
+// $Id: Date.java,v 1.5 2009-02-22 15:16:18 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
+// DateThread.java
+// $Id: Date.java,v 1.5 2009-02-22 15:16:18 ylafon Exp $
+// From Yves Lafon (ylafon@w3.org)
+//
+// (c) COPYRIGHT MIT and INRIA, 1997.
+// Please first read the full copyright statement in file COPYRIGHT.html
+
+package org.w3c.css.util;
+
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+import java.util.Locale;
+import java.util.TimeZone;
+
+public class Date {
+  protected static String days[] = { "Sun", "Mon", "Tue", "Wed",
+				     "Thu" , "Fri", "Sat" };
+  protected static String months[] = { "Jan", "Feb", "Mar", "Apr",
+				       "May", "Jun", "Jul", "Aug",
+				       "Sep", "Oct", "Nov", "Dec" };
+  String date = "";
+  String logDate = "";
+  private TimeZone tz;
+
+  /**
+   * Create a new Date
+   */
+  public Date() {
+    tz = TimeZone.getTimeZone("GMT"); // should be UTC
+  }
+
+  /**
+   * Give the Date in HTTP/1.1 preferred format
+   *
+   * @return A String giving the date in the right format
+   */
+  public synchronized String getDate() {
+    computeDate();
+    return date;
+  }
+
+  public synchronized String getLogDate() {
+    computeDate();
+    return logDate;
+  }
+
+  /**
+   * Returns a string representation of the object.
+   */
+  public String toString() {
+    computeDate();
+    return date;
+  }
+
+  /**
+   * The main loop which calculate the date every second
+   */
+
+  private void computeDate () {
+    int day;
+    int hr,mn,sec;
+    StringBuilder sbdate, ldate;
+    Calendar cal;
+
+    sbdate = new StringBuilder(30);
+    ldate = new StringBuilder(30);
+
+    cal = new GregorianCalendar(tz, Locale.getDefault());
+    day = cal.get(Calendar.DAY_OF_MONTH);
+    hr = cal.get(Calendar.HOUR_OF_DAY);
+    mn = cal.get(Calendar.MINUTE);
+    sec = cal.get(Calendar.SECOND);
+
+    // construct date according to the http/1.1 format
+    sbdate.append(days[cal.get(Calendar.DAY_OF_WEEK)-1]);
+    sbdate.append(", ");
+    if (day < 10)
+      sbdate.append('0');
+    sbdate.append(day);
+    sbdate.append(' ');
+    sbdate.append(months[cal.get(Calendar.MONTH)]);
+    sbdate.append(' ');
+    sbdate.append(cal.get(Calendar.YEAR));
+    sbdate.append(' ');
+    if (hr < 10)
+      sbdate.append('0');
+    sbdate.append(hr);
+    sbdate.append(':');
+    if (mn < 10)
+      sbdate.append('0');
+    sbdate.append(mn);
+    sbdate.append(':');
+    if (sec < 10)
+      sbdate.append('0');
+    sbdate.append(sec);
+    sbdate.append(" GMT");
+
+    // construct date according to the log date format
+    if (day < 10)
+      ldate.append('0');
+    ldate.append(day);
+    ldate.append('/');
+    ldate.append(months[cal.get(Calendar.MONTH)]);
+    ldate.append('/');
+    ldate.append(cal.get(Calendar.YEAR));
+    ldate.append(':');
+    if (hr < 10)
+      ldate.append('0');
+    ldate.append(hr);
+    ldate.append(':');
+    if (mn < 10)
+      ldate.append('0');
+    ldate.append(mn);
+    ldate.append(':');
+    if (sec < 10)
+      ldate.append('0');
+    ldate.append(sec);
+    ldate.append(" +0");
+
+
+    synchronized(this) {
+      date = sbdate.toString();
+      logDate = ldate.toString();
+    }
+  }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/FakeFile.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,132 @@
+//
+// $Id: FakeFile.java,v 1.7 2009-02-15 18:23:48 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 org.w3c.css.util;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ * @version $Revision: 1.7 $
+ */
+public class FakeFile {
+
+  protected String fileName, contentType;
+
+  /**
+   * The array buffer into which the components of this object are
+   * stored. The capacity of this object is the length of this array buffer.
+   */
+  protected byte[] data;
+
+  /**
+   * The number of valid components in the vector.
+   */
+  protected int    count;
+
+  /**
+   * Create a new FakeFile.
+   *
+   * @param   name   the file name.
+   */
+  public FakeFile(String fileName) {
+    this.fileName = fileName;
+    this.contentType = "none";
+    data = new byte[255];
+  }
+
+  /**
+   * Returns the name of the file represented by this object.
+   *
+   * @return  the name of the file represented by this <code>File</code>
+   *          object.
+   */
+  public String getName() {
+    return fileName;
+  }
+
+  /**
+   * Gets an InputStream for this fake file.
+   *
+   * @return  the input stream of this fake file or <code>null</code> if no
+   *          data are available.
+   */
+  public synchronized InputStream getInputStream() throws IOException {
+    if (count > 0) {
+      trimToSize();
+      return new ByteArrayInputStream(data);
+    } else {
+      return null;
+    }
+  }
+
+  /**
+   * Get the data size of this fake file
+   */
+  public synchronized int getSize() {
+    return count;
+  }
+
+  /**
+   * Trims the capacity of this object to be this object's current
+   * size. An application can use this operation to minimize the
+   * storage of a fake file.
+   */
+  public final synchronized void trimToSize() {
+    int oldCapacity = data.length;
+    if (count < oldCapacity) {
+      byte oldData[] = data;
+      data = new byte[count];
+      System.arraycopy(oldData, 0, data, 0, count);
+    }
+  }
+
+  /**
+   * Increases the capacity of this object, if necessary, to ensure
+   * that it can hold at least the number of components specified by
+   * the minimum capacity argument.
+   *
+   * @param   minCapacity   the desired minimum capacity.
+   */
+  private final synchronized void ensureCapacity(int minCapacity) {
+    int oldCapacity = data.length;
+    if (minCapacity > oldCapacity) {
+      byte oldData[] = data;
+      data = new byte[minCapacity];
+      System.arraycopy(oldData, 0, data, 0, count);
+    }
+  }
+
+  /**
+   * Writes <code>len</code> bytes from the specified byte array
+   * starting at offset <code>off</code> to this fake file.
+   *
+   * @param      b     the data.
+   * @param      off   the start offset in the data.
+   * @param      len   the number of bytes to write.
+   *
+   * @exception  IOException  if an I/O error occurs.
+   */
+  public void write(byte[] data, int start, int len) {
+    if (len <= 0)
+      return;
+    ensureCapacity(count + len);
+    for (int i = 0; i < len; i++) {
+      this.data[count+i] = data[i+start];
+    }
+    count += len;
+  }
+
+    public void setContentType(String mimeType) {
+	contentType = mimeType;
+    }
+    
+    public String getContentType() {
+	return contentType;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/HTTP.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,184 @@
+/*
+ * Copyright (c) 2000 World Wide Web Consortium,
+ * (Massachusetts Institute of Technology, Institut National de
+ * Recherche en Informatique et en Automatique, Keio University). All
+ * Rights Reserved. This program is distributed under the W3C's Software
+ * Intellectual Property License. This program is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+ * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ * See W3C License http://www.w3.org/Consortium/Legal/ for more details.
+ *
+ * $Id: HTTP.java,v 1.3 2005-09-14 15:15:32 ylafon Exp $
+ */
+
+/**
+ * @version $Revision: 1.3 $
+ * @author  Philippe Le Hegaret
+ */
+
+package org.w3c.css.util;
+
+public interface HTTP {
+
+    public static final String msgs[] = {
+	null, null, null, null, null, null, null, null, null, null,
+	null, null, null, null, null, null, null, null, null, null,
+	null, null, null, null, null, null, null, null, null, null,
+	null, null, null, null, null, null, null, null, null, null,
+	null, null, null, null, null, null, null, null, null, null,
+	null, null, null, null, null, null, null, null, null, null,
+	null, null, null, null, null, null, null, null, null, null,
+	null, null, null, null, null, null, null, null, null, null,
+	null, null, null, null, null, null, null, null, null, null,
+	null, null, null, null, null, null, null, null, null, null,
+
+        "Continue",                             // 100
+        "Switching Protocols",                  // 101
+	null, null, null, null, null, null, null, null,
+	null, null, null, null, null, null, null, null, null, null,
+	null, null, null, null, null, null, null, null, null, null,
+	null, null, null, null, null, null, null, null, null, null,
+	null, null, null, null, null, null, null, null, null, null,
+	null, null, null, null, null, null, null, null, null, null,
+	null, null, null, null, null, null, null, null, null, null,
+	null, null, null, null, null, null, null, null, null, null,
+	null, null, null, null, null, null, null, null, null, null,
+	null, null, null, null, null, null, null, null, null, null,
+
+        "OK",                                   // 200
+        "Created",                              // 201
+        "Accepted",                             // 202
+        "Non-Authoritative information",        // 203
+        "No Content",                           // 204
+        "Reset Content",                        // 205
+        "Partial Content",                      // 206
+	null, null, null,
+	null, null, null, null, null, null, null, null, null, null,
+	null, null, null, null, null, null, null, null, null, null,
+	null, null, null, null, null, null, null, null, null, null,
+	null, null, null, null, null, null, null, null, null, null,
+	null, null, null, null, null, null, null, null, null, null,
+	null, null, null, null, null, null, null, null, null, null,
+	null, null, null, null, null, null, null, null, null, null,
+	null, null, null, null, null, null, null, null, null, null,
+	null, null, null, null, null, null, null, null, null, null,
+
+        "Multiple Choices",                     // 300
+        "Moved Permanently",                    // 301
+        "Found",                                // 302
+        "See Other",                            // 303
+        "Not Modified",                         // 304
+        "Use Proxy",                            // 305
+        null,                                   // no 306 def
+        "Temporary Redirect",                   // 307
+	null, null,
+	null, null, null, null, null, null, null, null, null, null,
+	null, null, null, null, null, null, null, null, null, null,
+	null, null, null, null, null, null, null, null, null, null,
+	null, null, null, null, null, null, null, null, null, null,
+	null, null, null, null, null, null, null, null, null, null,
+	null, null, null, null, null, null, null, null, null, null,
+	null, null, null, null, null, null, null, null, null, null,
+	null, null, null, null, null, null, null, null, null, null,
+	null, null, null, null, null, null, null, null, null, null,
+
+        "Bad Request",                          // 400
+        "Unauthorized",                         // 401
+        "Payment Required",                     // 402
+        "Forbidden",                            // 403
+        "Not Found",                            // 404
+        "Method Not Allowed",                   // 405
+        "Not Acceptable",                       // 406
+        "Proxy Authentication Required",        // 407
+        "Request Timeout",                      // 408
+        "Conflict",                             // 409
+        "Gone",                                 // 410
+        "Length Required",                      // 411
+        "Precondition Failed",                  // 412
+        "Request Entity Too Large",             // 413
+        "Request-URI Too Long",                 // 414
+        "Unsupported Media Type",               // 415
+        "Requested Range Not Satisfiable",      // 416
+        "Expectation Failed",                   // 417
+	null, null,
+	null, null, null, null, null, null, null, null, null, null,
+	null, null, null, null, null, null, null, null, null, null,
+	null, null, null, null, null, null, null, null, null, null,
+	null, null, null, null, null, null, null, null, null, null,
+	null, null, null, null, null, null, null, null, null, null,
+	null, null, null, null, null, null, null, null, null, null,
+	null, null, null, null, null, null, null, null, null, null,
+	null, null, null, null, null, null, null, null, null, null,
+
+        "Internal Server Error",                // 500
+        "Not Implemented",                      // 501
+        "Bad Gateway",                          // 502
+        "Service Unavailable",                  // 503
+        "Gateway Timeout",                      // 504
+        "HTTP Version Not Supported",           // 505
+        null,                                   // no 506 def
+        null,                                   // no 507 def
+        null,                                   // no 508 def
+        null,                                   // no 509 def
+        "Not Extended",                         // 510
+	null, null, null, null, null, null, null, null, null,
+	null, null, null, null, null, null, null, null, null, null,
+	null, null, null, null, null, null, null, null, null, null,
+	null, null, null, null, null, null, null, null, null, null,
+	null, null, null, null, null, null, null, null, null, null,
+	null, null, null, null, null, null, null, null, null, null,
+	null, null, null, null, null, null, null, null, null, null,
+	null, null, null, null, null, null, null, null, null, null,
+	null, null, null, null, null, null, null, null, null, null
+    };
+
+    // HTTP status codes
+    public static final int CONTINUE = 100;
+    public static final int SWITCHING = 101;
+
+    public static final int OK                              = 200;
+    public static final int CREATED                         = 201;
+    public static final int ACCEPTED                        = 202;
+    public static final int NON_AUTHORITATIVE_INFORMATION   = 203;
+    public static final int NO_CONTENT                      = 204;
+    public static final int RESET_CONTENT                   = 205;
+    public static final int PARTIAL_CONTENT                 = 206;
+
+    public static final int MULTIPLE_CHOICE                 = 300;
+    public static final int MOVED_PERMANENTLY               = 301;
+    public static final int FOUND                           = 302;
+    public static final int SEE_OTHER                       = 303;
+    public static final int NOT_MODIFIED                    = 304;
+    public static final int USE_PROXY                       = 305;
+    public static final int TEMPORARY_REDIRECT              = 307;
+
+    public static final int BAD_REQUEST                     = 400;
+    public static final int UNAUTHORIZED                    = 401;
+    public static final int PAYMENT_REQUIRED                = 402;
+    public static final int FORBIDDEN                       = 403;
+    public static final int NOT_FOUND                       = 404;
+    public static final int NOT_ALLOWED                     = 405;
+    public static final int NOT_ACCEPTABLE                  = 406;
+    public static final int PROXY_AUTH_REQUIRED             = 407;
+    public static final int REQUEST_TIMEOUT                 = 408;
+    public static final int CONFLICT                        = 409;
+    public static final int GONE                            = 410;
+    public static final int LENGTH_REQUIRED                 = 411;
+    public static final int PRECONDITION_FAILED             = 412;
+    public static final int REQUEST_ENTITY_TOO_LARGE        = 413;
+    public static final int REQUEST_URI_TOO_LONG            = 414;
+    public static final int UNSUPPORTED_MEDIA_TYPE          = 415;
+    public static final int REQUESTED_RANGE_NOT_SATISFIABLE = 416;
+    public static final int EXPECTATION_FAILED              = 417;
+
+    public static final int INTERNAL_SERVER_ERROR           = 500;
+    public static final int NOT_IMPLEMENTED                 = 501;
+    public static final int BAD_GATEWAY                     = 502;
+    public static final int SERVICE_UNAVAILABLE             = 503;
+    public static final int GATEWAY_TIMEOUT                 = 504;
+    public static final int HTTP_VERSION_NOT_SUPPORTED      = 505;
+    public static final int NOT_EXTENDED                    = 510;
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/HTTPURL.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,339 @@
+/*
+ * (c) COPYRIGHT 1995-1999 MIT, INRIA and Keio University. All Rights reserved.
+ * W3C Intellectual Property Notice and Legal Disclaimers:
+ *  http://www.w3.org/Consortium/Legal/
+ *
+ * HTTPURL.java
+ * $Id: HTTPURL.java,v 1.22 2009-02-15 18:23:48 ylafon Exp $
+ */
+package org.w3c.css.util;
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.HttpURLConnection;
+import java.net.MalformedURLException;
+import java.net.ProtocolException;
+import java.net.URL;
+import java.net.URLConnection;
+
+import java.util.zip.GZIPInputStream;
+
+import org.w3c.www.mime.MimeType;
+import org.w3c.www.mime.MimeTypeFormatException;
+
+import org.apache.velocity.io.UnicodeInputStream;
+
+/**
+ * @version $Revision: 1.22 $
+ * @author  Philippe Le Hegaret
+ */
+public class HTTPURL {
+
+    /**
+     * Don't create this class
+     */
+    private HTTPURL() {
+    }
+
+
+    public static String getHTTPStatusCode(int status) {
+	switch (status) {
+	case 100:
+	    return "Continue";
+	case 101:
+	    return "Switching Protocols";
+	case 200:
+	    return "OK";
+	case 201:
+	    return "Created";
+	case 202:
+	    return "Accepted";
+	case 203:
+	    return "Non-Authoritative Information";
+	case 204:
+	    return "No Content";
+	case 205:
+	    return "Reset Content";
+	case 206:
+	    return "Partial Content";
+	case 300:
+	    return "Multiple Choices";
+	case 301:
+	    return "Moved Permanently";
+	case 302:
+	    return "Found";
+	case 303:
+	    return "See Other";
+	case 304:
+	    return "Not Modified";
+	case 305:
+	    return "Use Proxy";
+	case 306:
+	    return "(Unused)";
+	case 307:
+	    return "Temporary Redirect";
+	case 400:
+	    return "Bad Request";
+	case 401:
+	    return "Unauthorized";
+	case 402:
+	    return "Payment Required";
+	case 403:
+	    return "Forbidden";
+	case 404:
+	    return "Not Found";
+	case 405:
+	    return "Method Not Allowed";
+	case 406:
+	    return "Not Acceptable";
+	case 407:
+	    return "Proxy Authentication Required";
+	case 408:
+	    return "Request Timeout";
+	case 409:
+	    return "Conflict";
+	case 410:
+	    return "Gone";
+	case 411:
+	    return "Length Required";
+	case 412:
+	    return "Precondition Failed";
+	case 413:
+	    return "Request Entity Too Large";
+	case 414:
+	    return "Request-URI Too Long";
+	case 415:
+	    return "Unsupported Media Type";
+	case 416:
+	    return "Requested Range Not Satisfiable";
+	case 417:
+	    return "Expectation Failed";
+	case 500:
+	    return "Internal Server Error";
+	case 501:
+	    return "Not Implemented";
+	case 502:
+	    return "Bad Gateway";
+	case 503:
+	    return "Service Unavailable";
+	case 504:
+	    return "Gateway Timeout";
+	case 505:
+	    return "HTTP Version Not Supported";
+	default:
+	    return Integer.toString(status, 10);
+	}
+    }
+
+    public static URL getURL(String url) throws IOException {
+	// url = URLEncoder.encode(url);
+	try {
+	    return new URL(url);
+	} catch (MalformedURLException e) {
+	    //if (!url.startsWith("http:")) { // ook!? dkfj://wwww.3.org -> http://dkfj://www.w3.org
+	    if(url.indexOf("://") == -1) { // the protocol is missing
+	    	return new URL("http://" + url);
+	    } else {
+		throw (IOException) e.fillInStackTrace();
+	    }
+	}
+    }
+
+    public static URL getURL(URL base, String url)
+	throws MalformedURLException
+    {
+	//	url = URLEncoder.encode(url);
+
+	return new URL(base, url);
+    }
+
+    private static URLConnection getConnection(URL url, int count)
+	throws IOException
+    {
+	return getConnection(url, count, null);
+    }
+
+    private static URLConnection getConnection(URL url, int count,
+					       ApplContext ac)
+	throws IOException
+    {
+	if (count > 5) {
+	    throw new ProtocolException("Server redirected too many "+
+					"times (5)");
+	}
+
+	if (Util.servlet) {
+	    String protocol = url.getProtocol();
+	if (! (
+		("https".equalsIgnoreCase(protocol)) || ("http".equalsIgnoreCase(protocol))
+	   )  ) {
+ 		System.err.println( "[WARNING] : someone is trying to get the file: "
+ 				    + url );
+ 		throw new FileNotFoundException("import " + url +
+ 						": Operation not permitted");
+ 	    }
+
+
+	}
+
+	URLConnection urlC = url.openConnection();
+
+	if (Util.onDebug) {
+	    System.err.println( "Accessing " + url);
+	    if (ac.getCredential() != null) {
+		System.err.println( "with [" + ac.getCredential() + ']');
+	    }
+	}
+	// avoid all kind of caches
+	urlC.setRequestProperty("Pragma", "no-cache");
+	urlC.setRequestProperty("Cache-Control", "no-cache, no-store");
+	// for the fun
+	urlC.setRequestProperty("User-Agent",
+				"Jigsaw/2.2.5 W3C_CSS_Validator_JFouffa/2.0");
+	// relay authorization information
+	if (ac.getCredential() != null) {
+	    urlC.setRequestProperty("Authorization",ac.getCredential());
+	}
+	// relay languages
+	if (ac.getLang() != null) {
+	    if (ac.getLang().indexOf('*') == -1) {
+		urlC.setRequestProperty("Accept-Language", ac.getLang() + ",*");
+	    } else {
+		urlC.setRequestProperty("Accept-Language",ac.getLang());
+	    }
+	}
+	// should I put an Accept header?
+	urlC.setRequestProperty("Accept",
+				"text/css,text/html,text/xml,"
+				+"application/xhtml+xml,application/xml,"
+				+"image/svg+xml,*/*;q=0.1");
+
+	urlC.connect();
+
+	if (urlC instanceof HttpURLConnection) {
+	    HttpURLConnection httpURL = (HttpURLConnection) urlC;
+	    int status;
+	    try {
+		status = httpURL.getResponseCode();
+	    } catch (FileNotFoundException e) {
+		e.printStackTrace();
+		throw new FileNotFoundException(url + ": " +
+						getHTTPStatusCode(404));
+	    }
+
+	    switch (status) {
+	    case HttpURLConnection.HTTP_OK:
+		// nothing to do
+		break;
+	    case HttpURLConnection.HTTP_MOVED_PERM:
+	    case HttpURLConnection.HTTP_MOVED_TEMP:
+		try {
+		    URL u = getURL(httpURL.getHeaderField("Location"));
+		    return getConnection(u, count+1, ac);
+		} finally {
+		    httpURL.disconnect();
+		}
+	    case HttpURLConnection.HTTP_UNAUTHORIZED:
+		String realm = httpURL.getHeaderField("WWW-Authenticate");
+		httpURL.disconnect();
+		if (realm != null) {
+		    throw new ProtocolException (realm);
+		}
+	    default:
+		try {
+		    if (httpURL.getResponseMessage() != null) {
+			throw new FileNotFoundException(url + ": " +
+						 httpURL.getResponseMessage());
+		    } else {
+			throw new FileNotFoundException(url + ": " +
+						   getHTTPStatusCode(status));
+		    }
+		} finally {
+		    httpURL.disconnect();
+		}
+	    }
+	}
+	return urlC;
+    }
+
+    public static URLConnection getConnection(URL url)
+	throws IOException
+    {
+	return getConnection(url, 0);
+    }
+
+    public static URLConnection getConnection(URL url, ApplContext ac)
+	throws IOException
+    {
+	return getConnection(url, 0, ac);
+    }
+
+    /* more madness */
+    public static InputStream getInputStream(ApplContext ac, URLConnection uco) 
+	throws IOException 
+    {
+	InputStream orig_stream = uco.getInputStream();
+	String charset;
+	String encoding;
+	if (orig_stream == null) {
+	    return orig_stream; // let it fail elsewhere
+	}
+	encoding = uco.getContentEncoding();
+	// not set -> return
+	if (encoding != null) {
+	    if (encoding.equalsIgnoreCase("gzip")) {
+		orig_stream = new GZIPInputStream(orig_stream);
+	    }
+	}
+	charset = getCharacterEncoding(ac, uco);
+	if ((charset == null) || (charset.regionMatches(true, 0, "utf", 0, 3))) {
+	    UnicodeInputStream is = new UnicodeInputStream(orig_stream);
+	    charset =  is.getEncodingFromStream();
+	    if (charset != null) {
+		ac.setCharsetForURL(uco.getURL(), charset);
+	    }
+	    return is;
+	}
+	return orig_stream;
+    }
+
+    public static String getCharacterEncoding(ApplContext ac, 
+					      URLConnection uco) 
+    {
+	String charset = ac.getCharsetForURL(uco.getURL());
+	if (charset != null) {
+	    return charset;
+	}
+	String mtypestr = uco.getContentType();
+	if (mtypestr == null) {
+	    return mtypestr;
+	}
+	MimeType mt;
+	try { 
+	    mt = new MimeType(mtypestr);
+	} catch (MimeTypeFormatException mex) {
+	    return null;
+	}
+        charset =  mt.getParameterValue("charset");
+	if (charset != null) {
+	    ac.setCharsetForURL(uco.getURL(), charset);
+	}
+	return charset;
+    }
+    /**
+     *
+     */
+    public static void main(String[] args)
+	throws Exception
+    {
+        int c;
+	InputStream in = HTTPURL.getConnection(
+	                                     getURL(args[0])).getInputStream();
+
+	while ((c = in.read()) != -1) {
+	    System.err.print((char) c);
+	}
+	System.exit(0);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/InterruptedGetException.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,24 @@
+// InterruptedGetException.java
+// $Id: InterruptedGetException.java,v 1.5 2007-11-26 05:07:17 ot Exp $
+// (c) COPYRIGHT MIT, INRIA and Keio, 1999.
+// Please first read the full copyright statement in file COPYRIGHT.html
+
+package org.w3c.css.util;
+
+import java.io.IOException;
+
+/**
+ * Thrown when a HTTP Get is interrupted
+ * @version $Revision: 1.5 $
+ * @author  Benoit Mahe (bmahe@w3.org)
+ */
+public class InterruptedGetException extends IOException {
+
+    public long bytesTransferred = 0;
+    public long bytesExpected    = 0;
+
+    public InterruptedGetException(String message) {
+	super(message);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/InvalidAccesException.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2000 World Wide Web Consortium,
+ * (Massachusetts Institute of Technology, Institut National de
+ * Recherche en Informatique et en Automatique, Keio University). All
+ * Rights Reserved. This program is distributed under the W3C's Software
+ * Intellectual Property License. This program is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+ * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ * See W3C License http://www.w3.org/Consortium/Legal/ for more details.
+ *
+ * $Id: InvalidAccesException.java,v 1.3 2005-09-14 15:15:32 ylafon Exp $
+ */
+
+/**
+ * InvalidAccesException is a runtime exception throwed when an acces is
+ * impossible to a ressource.
+ *
+ * @version $Revision: 1.3 $
+ * @author  Philippe Le Hegaret
+ */
+
+package org.w3c.css.util;
+
+public class InvalidAccesException extends RuntimeException {
+
+    /**
+     * Creates a new InvalidAccesException
+     */
+    public InvalidAccesException() {
+        super();
+    }
+
+    /**
+     * Creates a new InvalidAccesException with a specified string
+     */
+    public InvalidAccesException(String s) {
+	super(s);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/InvalidHTTPAccesException.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,89 @@
+/*
+ * Copyright (c) 2000 World Wide Web Consortium,
+ * (Massachusetts Institute of Technology, Institut National de
+ * Recherche en Informatique et en Automatique, Keio University). All
+ * Rights Reserved. This program is distributed under the W3C's Software
+ * Intellectual Property License. This program is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+ * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ * See W3C License http://www.w3.org/Consortium/Legal/ for more details.
+ *
+ * $Id: InvalidHTTPAccesException.java,v 1.4 2005-09-14 15:15:32 ylafon Exp $
+ */
+
+package org.w3c.css.util;
+
+
+/**
+ * InvalidAccesException is a runtime exception throwed when an acces is
+ * impossible to a HTTP ressource.
+ *
+ * @version $Revision: 1.4 $
+ * @author  Philippe Le Hegaret
+ */
+public class InvalidHTTPAccesException extends InvalidAccesException {
+
+    // HTTP reason
+    int status;
+
+    // HTTP requested uri
+    String uri;
+
+    // message
+    String message;
+
+    // additional informations
+	Utf8Properties informations;
+
+    /**
+     * Creates a new InvalidHTTPAccesException
+     */
+	public InvalidHTTPAccesException(int status, String uri, String message,
+			Utf8Properties informations) {
+	super(message);
+	this.status = status;
+	this.uri = uri;
+	this.message = message;
+	this.informations = informations;
+    }
+
+    /**
+     * Creates a new InvalidHTTPAccesException
+     */
+	public InvalidHTTPAccesException(int status, String uri, String message) {
+	this(status, uri, message, null);
+    }
+
+    /**
+	 * Returns the HTTP reason of the failure NOT_FOUND, UNAUTHORIZED, ...
+     */
+    public int getHTTPReason() {
+	return status;
+    }
+
+    /**
+     * Get the requested URI
+     */
+    public String getURI() {
+	return uri;
+    }
+
+    /**
+	 * Get the error message The message can come from the server or from the
+	 * application.
+     */
+    public String getMessage() {
+	return message;
+    }
+
+    /**
+	 * Returns some additionals HTTP information. These informations are useful
+	 * if you want to reply to the client For example, if the HTTP reason is
+	 * UNAUTHORIZED, it will contain the header WWW-Authenticate and
+	 * Authentication-Info.
+     */
+	public Utf8Properties getInformations() {
+	return informations;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/InvalidParamException.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,108 @@
+//
+// $Id: InvalidParamException.java,v 1.9 2009-02-24 23:25:58 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 org.w3c.css.util;
+
+
+import org.w3c.css.parser.analyzer.ParseException;
+
+/**
+ * @version $Revision: 1.9 $
+ */
+public class InvalidParamException extends ParseException {
+
+    /**
+     * Create a new InvalidParamException.
+     */
+    public InvalidParamException() {
+	super();
+    }
+
+    /**
+     * Create a new InvalidParamException with an error message.
+     *
+     * @param message the error message
+     */
+    public InvalidParamException(String message, ApplContext ac) {
+	super(ac.getMsg().getErrorString((message != null)? message : ""));
+    }
+
+    /**
+     * Create a new InvalidParamException with an error message class.
+     *
+     * @param error the error message class.
+     * @param message a message to add
+     */
+    public InvalidParamException(String error, Object message, ApplContext ac) {
+    	super(processError(error, (message != null)?message:null, ac));
+    }
+
+    /**
+     * Create a new InvalidParamException.
+     *
+     * @param error the error message class
+     * @param message1 the first message to add
+     * @param message1 the second message to add
+     */
+    public InvalidParamException(String error, Object message1,
+				 Object message2, ApplContext ac) {
+	super(processError(error,
+			   (message1 != null)?message1.toString():null,
+			   (message2 != null)?message2.toString():null,
+			   ac));
+    }
+    
+    private static String processError(String error, Object args, ApplContext ac) {
+    	if (args instanceof String[]) {
+	    String[] s_args = (String[]) args;
+	    StringBuilder sb = new StringBuilder();
+	    String str = null;
+
+	    if (error != null) {
+		str = ac.getMsg().getErrorString(error);
+	    }
+	    if (str == null) {
+		return "can't find the error message for " + error;
+	    } else {
+		// replace all parameters
+		String[] msg_parts = str.split("%s");
+		int j = 0;
+		sb.append(msg_parts[0]);
+		for (int i = 1; i< msg_parts.length; i++) {
+		    if (j < s_args.length) {
+			sb.append(s_args[j++]);
+		    }
+		    sb.append(msg_parts[i]);
+		}
+		return sb.toString();
+	    }
+    	} else {
+	    return processError(error, args.toString(), "", ac);
+    	}
+    }
+    
+    
+
+    private static String processError(String error, String arg1,
+				       String arg2, ApplContext ac) {
+	String str = null;
+
+	if (error != null) {
+	    str = ac.getMsg().getErrorString(error);
+	}
+	if (str == null) {
+	    return "can't find the error message for " + error;
+	} else {
+	    // replace all parameters
+	    for (int i = 0; (i = str.indexOf("%s")) >= 0 ; ) {
+		str = str.substring(0, i) + arg1 + str.substring(i+2);
+		arg1 = arg2;
+	    }
+	    return str;
+	}
+    }
+
+} // InvalidParamException
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/Makefile	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,49 @@
+SRCS = Messages.java Warning.java\
+Codecs.java NVPair.java Warnings.java\
+InvalidParamException.java Util.java\
+FakeFile.java Date.java SortedHashtable.java
+
+OBJS = $(SRCS:.java=.class)
+
+PACKAGE = org.w3c.css.util
+JAVAC = /usr/local/java11/bin/javac
+JAVADOC = javadoc
+JAVADOCFLAGS = -version -d docs -protected
+JAVACFLAGS =
+MAKEDEPEND = jmakedepend
+
+.SUFFIXES: .class .java
+.java.class:; $(JAVAC) $(JAVACFLAGS) $<
+
+all: $(OBJS) Messages.properties.ja Messages.properties.zh-cn
+
+javadoc:; $(JAVADOC) $(JAVADOCFLAGS) $(PACKAGE)
+
+clean:; -rm -f $(OBJS) *~ core
+
+depend:; $(MAKEDEPEND) $(SRCS)
+
+# DO NOT DELETE THIS LINE -- make depend depends on it.
+InvalidParamException.class:: InvalidParamException.java\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.parser.analyzer/ParseException.class
+Warning.class:: Warning.java\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.parser/CssSelectors.class\
+	/u/www43/0/w3c/plehegar/Work/Java/org.w3c.css.properties/CssProperty.class
+Util.class:: Util.java
+Codecs.class:: Codecs.java\
+	/usr/local/java11/lib/classes.zip
+SortedHashtable.class:: SortedHashtable.java\
+	/usr/local/java11/lib/classes.zip
+FakeFile.class:: FakeFile.java\
+	/usr/local/java11/lib/classes.zip
+Warnings.class:: Warnings.java
+Date.class:: Date.java\
+	/usr/local/java11/lib/classes.zip
+Messages.class:: Messages.java\
+	/usr/local/java11/lib/classes.zip
+NVPair.class:: NVPair.java
+
+#Messages.properties.ja: Messages.properties.ja.EUCJIS
+#	native2ascii -encoding EUCJIS Messages.properties.ja.EUCJIS Messages.properties.ja 
+#Messages.properties.zh-cn: Messages.properties.zh-cn.GB
+#	native2ascii -encoding euc-cn Messages.properties.zh-cn.GB Messages.properties.zh-cn
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/Messages.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,486 @@
+//
+// $Id: Messages.java,v 1.35 2009-10-22 22:24:48 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 org.w3c.css.util;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.Hashtable;
+import java.util.StringTokenizer;
+import java.util.Vector;
+
+/**
+ * @version $Revision: 1.35 $
+ */
+public class Messages {
+
+    /**
+     * Message properties
+     */
+    public Utf8Properties<String,String> properties;
+    
+    public static Hashtable<String, Utf8Properties<String,String>> languages = new Hashtable<String, Utf8Properties<String,String>>();
+    public static ArrayList<String> languages_name = new ArrayList<String>();
+	
+    /**
+     * Creates a new Messages
+     */
+    public Messages(String lang) {
+	if (lang != null) {
+	    StringTokenizer lanTok = new StringTokenizer(lang, ",");
+	    int maxTok = lanTok.countTokens();
+
+	    String slang[] = new String[maxTok];
+	    float qlang[] = new float[maxTok];
+
+	    // quick and dirty, it would be better to use Jigsaw's classes
+	    while (lanTok.hasMoreTokens()) {
+		String l = lanTok.nextToken().trim().toLowerCase();
+		int qualsep = l.indexOf(';');
+		float qval = 1;
+		if (qualsep != -1) {
+		    String p = l.substring(qualsep + 1);
+		    l = l.substring(0, qualsep);
+		    if (p.startsWith("q=")) {
+			qval = Float.parseFloat(p.substring(2));
+		    }
+		}
+		for (int i = 0; i < maxTok; i++) {
+		    if (slang[i] == null) {
+			slang[i] = l;
+			qlang[i] = qval;
+			break;
+		    } else if (qval > qlang[i]) {
+			System.arraycopy(slang, i, slang, i + 1, (maxTok - i - 1));
+			System.arraycopy(qlang, i, qlang, i + 1, (maxTok - i - 1));
+			slang[i] = l;
+			qlang[i] = qval;
+			break;
+		    }
+
+		}
+	    }
+	    for (int i = 0; i < maxTok; i++) {
+		String l = slang[i];
+		properties = languages.get(l);
+		if (properties != null) {
+		    break;
+		}
+		int minusIndex = l.indexOf('-');
+		if (minusIndex != -1) {
+		    // suppressed -cn in zh-cn (example)
+		    l = l.substring(0, minusIndex);
+		    properties = languages.get(l);
+		}
+		if (properties != null) {
+		    break;
+		}
+	    }
+	}
+	if (properties == null) {
+	    properties = languages.get("en");
+	}
+    }
+
+    /**
+     * Get a property.
+     */
+    public String getString(String message) {
+	return properties.getProperty(message);
+    }
+
+    /**
+     * Get a warning property.
+     * 
+     * @param message
+     *            the warning property.
+     */
+    public String getWarningString(String message) {
+	return getString("warning."+message);
+    }
+
+    /**
+     * Get a warning level property.
+     * 
+     * @param message
+     *            the warning property.
+     */
+    public String getWarningLevelString(String message) {
+	return getString(new StringBuilder("warning.").append(message).append(".level").toString());
+    }
+
+    /**
+     * Get an error property.
+     * 
+     * @param message
+     *            the error property.
+     */
+    public String getErrorString(String message) {
+	return getString("error."+message);
+    }
+
+    /**
+     * Get an generator property.
+     * 
+     * @param message
+     *            the generator property.
+     */
+    public String getGeneratorString(String message) {
+	return getString("generator."+message);
+    }
+
+    /**
+     * Get an generator property.
+     * 
+     * @param message
+     *            the generator property.
+     */
+    public String getGeneratorString(String message, String param) {
+	String str = getString("generator."+message);
+
+	// replace all parameters
+	int i = str.indexOf("%s");
+	if (i >= 0) {
+	    str = str.substring(0, i) + param + str.substring(i + 2);
+	}
+	return str;
+    }
+
+    /**
+     * Get an generator property.
+     * 
+     * @param message
+     *            the generator property.
+     */
+    public String getServletString(String message) {
+	return getString("servlet."+message);
+    }
+
+    /**
+     * escape string
+     */
+    static public String escapeString(String orig) {
+	if (orig != null) {
+            int len = orig.length();
+            StringBuilder ret = new StringBuilder(len+16);
+            char c;
+	    
+            for (int i = 0; i < len; i++) {
+                switch (c = orig.charAt(i)) {
+                case '&'  : ret.append("&amp;"); break;
+                case '\'' : ret.append("&#39;"); break;
+                case '"'  : ret.append("&quot;"); break;
+                case '<'  : ret.append("&lt;"); break;
+                case '>'  : ret.append("&gt;"); break;
+                default   : ret.append(c);
+                }
+            }
+            return ret.toString();
+        }
+        return "[empty string]";
+    }
+
+    public String getString(String message, Vector<String> params) {
+	if ((params == null) || params.size() == 0) {
+	    return getString(message);
+	}
+	String[] msg_parts = getString(message).split("%s");
+	Iterator<String> param_it = params.iterator();
+	StringBuilder sb = new StringBuilder(msg_parts[0]);
+	for (int i=1; i<msg_parts.length; i++) {
+	    if (param_it.hasNext()) {
+		sb.append(param_it.next());
+	    }
+	    sb.append(msg_parts[i]);
+	}
+	return sb.toString();
+    }
+
+    static {
+	Utf8Properties<String,String> tmp;
+	try {
+	    java.io.InputStream f = Messages.class.getResourceAsStream("Messages.properties.de");
+	    try {
+		tmp = new Utf8Properties<String,String>();
+		tmp.load(f);
+		languages_name.add("de");
+		languages.put("de", tmp);
+		languages.put("de_DE", tmp);
+		languages.put("de_AT", tmp);
+		languages.put("de_CH", tmp);
+	    } finally {
+		f.close();
+	    }
+	} catch (Exception e) {
+	    System.err.println("org.w3c.css.util.Messages: " + "couldn't load properties de");
+	    System.err.println("  " + e.toString());
+	}
+
+	// ------------------------------------------------
+
+	try {
+	    java.io.InputStream f = Messages.class.getResourceAsStream("Messages.properties.en");
+	    try {
+		tmp = new Utf8Properties<String,String>();
+		tmp.load(f);
+		languages_name.add("en");
+		languages.put("en", tmp);
+	    } finally {
+		f.close();
+	    }
+	} catch (Exception e) {
+	    System.err.println("org.w3c.css.util.Messages: " + "couldn't load properties en");
+	    System.err.println("  " + e.toString());
+	}
+
+	// ------------------------------------------------
+
+	try {
+	    java.io.InputStream f = Messages.class.getResourceAsStream("Messages.properties.es");
+	    try {
+		tmp = new Utf8Properties<String,String>();
+		tmp.load(f);
+		languages_name.add("es");
+		languages.put("es", tmp);
+		languages.put("es_ES", tmp);
+	    } finally {
+		f.close();
+	    }
+	} catch (Exception e) {
+	    System.err.println("org.w3c.css.util.Messages: " + "couldn't load properties es");
+	    System.err.println("  " + e.toString());
+	}
+
+	// -----------------------
+
+	try {
+	    java.io.InputStream f = Messages.class.getResourceAsStream("Messages.properties.fr");
+	    try {
+		tmp = new Utf8Properties<String,String>();
+		tmp.load(f);
+		languages_name.add("fr");
+		languages.put("fr", tmp);
+		languages.put("fr_FR", tmp);
+	    } finally {
+		f.close();
+	    }
+	} catch (Exception e) {
+	    System.err.println("org.w3c.css.util.Messages: " + "couldn't load properties fr");
+	    System.err.println("  " + e.toString());
+	}
+
+	// -----------------------
+
+	try {
+	    java.io.InputStream f = Messages.class.getResourceAsStream("Messages.properties.ko");
+	    try {
+		tmp = new Utf8Properties<String,String>();
+		tmp.load(f);
+		languages_name.add("ko");
+		languages.put("ko", tmp);
+	    } finally {
+		f.close();
+	    }
+	} catch (Exception e) {
+	    System.err.println("org.w3c.css.util.Messages: " + "couldn't load properties ko");
+	    System.err.println("  " + e.toString());
+	}
+
+	// -----------------------
+		
+	try {
+	    java.io.InputStream f = Messages.class.getResourceAsStream("Messages.properties.it");
+	    try {
+		tmp = new Utf8Properties<String,String>();
+		tmp.load(f);
+		languages_name.add("it");
+		languages.put("it", tmp);
+	    } finally {
+		f.close();
+	    }
+	} catch (Exception e) {
+	    System.err.println("org.w3c.css.util.Messages: " + "couldn't load properties it");
+	    System.err.println("  " + e.toString());
+	}
+
+	// -----------------------
+
+	try {
+	    java.io.InputStream f = Messages.class.getResourceAsStream("Messages.properties.nl");
+	    try {
+		tmp = new Utf8Properties<String,String>();
+		tmp.load(f);
+		languages_name.add("nl");
+		languages.put("nl", tmp);
+	    } finally {
+		f.close();
+	    }
+	} catch (Exception e) {
+	    System.err.println("org.w3c.css.util.Messages: " + "couldn't load properties nl");
+	    System.err.println("  " + e.toString());
+	}
+
+	// -----------------------
+
+	try {
+	    java.io.InputStream f = Messages.class.getResourceAsStream("Messages.properties.ja");
+	    try {
+		tmp = new Utf8Properties<String,String>();
+		tmp.load(f);
+		languages_name.add("ja");
+		languages.put("ja", tmp);
+	    } finally {
+		f.close();
+	    }
+	} catch (Exception e) {
+	    System.err.println("org.w3c.css.util.Messages:" + " couldn't load properties ja");
+	    System.err.println("  " + e.toString());
+	}
+
+	// -----------------------
+		
+	try {
+	    java.io.InputStream f = Messages.class.getResourceAsStream("Messages.properties.pl-PL");
+	    try {
+		tmp = new Utf8Properties<String,String>();
+		tmp.load(f);
+		languages_name.add("pl-PL");
+		languages.put("pl", tmp);
+		languages.put("pl_PL", tmp);
+		languages.put("pl-PL", tmp);
+	    } finally {
+		f.close();
+	    }
+	} catch (Exception e) {
+	    System.err.println("org.w3c.css.util.Messages: " + "couldn't load properties pl");
+	    System.err.println("  " + e.toString());
+	}
+
+	// -----------------------
+		
+	try {
+	    java.io.InputStream f = Messages.class.getResourceAsStream("Messages.properties.pt-BR");
+	    try {
+		tmp = new Utf8Properties<String,String>();
+		tmp.load(f);
+		languages_name.add("pt-BR");
+		languages.put("pt-br", tmp);
+		languages.put("pt-BR", tmp);
+		languages.put("pt_BR", tmp);
+		languages.put("pt", tmp);
+	    } finally {
+		f.close();
+	    }
+	} catch (Exception e) {
+	    System.err.println("org.w3c.css.util.Messages: " + "couldn't load properties pt-br");
+	    System.err.println("  " + e.toString());
+	}
+	// -----------------------
+	try {
+	    java.io.InputStream f = Messages.class.getResourceAsStream("Messages.properties.ru");
+	    try {
+		tmp = new Utf8Properties<String,String>();
+		tmp.load(f);
+		languages_name.add("ru");
+		languages.put("ru", tmp);
+	    } finally {
+		f.close();
+	    }
+	} catch (Exception e) {
+	    System.err.println("org.w3c.css.util.Messages: " + "couldn't load properties ru");
+	    System.err.println("  " + e.toString());
+	}
+
+	// -----------------------
+    // disabled for the time being, the properties file has trouble with line breaks
+    // and the rtl text makes it difficult to fix with my editor. Ball is in the camp of translator 2009-03 -- olivier
+    try {
+        java.io.InputStream f = Messages.class.getResourceAsStream("Messages.properties.fa");
+        try {
+     tmp = new Utf8Properties<String,String>();
+     tmp.load(f);
+     languages_name.add("fa");
+     languages.put("fa", tmp);
+        } finally {
+     f.close();
+        }
+    } catch (Exception e) {
+        System.err.println("org.w3c.css.util.Messages: " + "couldn't load properties fa");
+        System.err.println("  " + e.toString());
+    }
+
+	// -----------------------
+	try {
+	    java.io.InputStream f = Messages.class.getResourceAsStream("Messages.properties.sv");
+	    try {
+		tmp = new Utf8Properties<String,String>();
+		tmp.load(f);
+		languages_name.add("sv");
+		languages.put("sv", tmp);
+	    } finally {
+		f.close();
+	    }
+	} catch (Exception e) {
+	    System.err.println("org.w3c.css.util.Messages: " + "couldn't load properties sv");
+	    System.err.println("  " + e.toString());
+	}
+
+	// -----------------------
+	try {
+	    java.io.InputStream f = Messages.class.getResourceAsStream("Messages.properties.bg");
+	    try {
+		tmp = new Utf8Properties<String,String>();
+		tmp.load(f);
+		languages_name.add("bg");
+		languages.put("bg", tmp);
+	    } finally {
+		f.close();
+	    }
+	} catch (Exception e) {
+	    System.err.println("org.w3c.css.util.Messages: " + "couldn't load properties bg");
+	    System.err.println("  " + e.toString());
+	}
+
+	// -----------------------
+	// Ukrainian
+	try {
+	    java.io.InputStream f = Messages.class.getResourceAsStream("Messages.properties.uk");
+	    try {
+		tmp = new Utf8Properties<String,String>();
+		tmp.load(f);
+		languages_name.add("uk");
+		languages.put("uk", tmp);
+	    } finally {
+		f.close();
+	    }
+	} catch (Exception e) {
+	    System.err.println("org.w3c.css.util.Messages: " + "couldn't load properties uk");
+	    System.err.println("  " + e.toString());
+	}
+
+	// -----------------------
+
+	try {
+	    java.io.InputStream f = Messages.class.getResourceAsStream("Messages.properties.zh-cn");
+	    try {
+		tmp = new Utf8Properties<String,String>();
+		tmp.load(f);
+		languages_name.add("zh-cn");
+		languages.put("zh-cn", tmp);
+		languages.put("zh", tmp); // for now we have no other
+		// alternative for chinese
+	    } finally {
+		f.close();
+	    }
+	} catch (Exception e) {
+	    System.err.println("org.w3c.css.util.Messages: " + "couldn't load properties cn");
+	    System.err.println("  " + e.toString());
+	}
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/Messages.properties.bg	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,374 @@
+language_name: Български
+direction: ltr
+more_options: Още Опции
+title_more_options: Показване/Скриване на допълнителни настройки за валидация
+all: Всички
+normal_report: Нормален доклад
+most_important: Най-важното
+no_warnings: Без прупреждения
+no_warnings: Без предупреждения
+profile: Профил
+no_special_profile: Без определен профил
+css1: CSS level 1
+css2: CSS level 2
+css21: CSS level 2.1
+css3: CSS level 3
+SVG: SVG
+svgbasic: SVG Basic
+svgtiny: SVG tiny
+mobile: Mobile
+ATSC_TV_profile: ATSC TV profile
+TV_profile: TV profile
+medium: Медия
+aural: aural
+braille: braille
+embossed: embossed
+handheld: handheld
+print: print
+projection: projection
+screen: screen
+tty: TTY
+tv: TV
+presentation: presentation
+type: Тип
+no_special_type: Автоматично
+html_doc: HTML
+css_doc: CSS
+check: Проверка
+W3C_CSS_validation_service: The W3C CSS Validation Service
+check_CSS: Проверка на Cascading Style Sheets (CSS) и (X)HTML документи със style sheets
+by_URI: По URI
+by_file_upload: Чрез изпращане на файл
+by_direct_input: Чрез директно въвеждане
+validate_by_URI: Валидиране по URI
+enter_uri: Въведете URI на документ (HTML с CSS или само CSS), който желаете да бъде валидиран
+page_address: Адрес на страница за Валидиране
+address: Адрес
+submit_uri: Изпращане на URI за валидация
+validate_by_file_upload: Валидиране чрез изпращане на файл
+choose_document: Изберете документ, който да бъде валидиран (само CSS файлове)
+choose_local_file: Изберете Локален Файл за Изпращане и Валидиране
+local_CSS_file: Локален CSS файл
+submit_file: Изпращане на файл за валидиране
+validate_by_input: Валидиране чрез директно въвеждане
+enter_CSS: Въведете CSS, който желаете да се валидира
+submit_input: Изпратете въведеното за валидиране
+note: Пояснение
+note_xhtml_valid: Ако желаете да валидирате CSS style sheet, вписана в (X)HTML документ, трябва първо <a href="http://validator.w3.org/">да проверите дали използваният (X)HTML е валиден</a>
+# End of variables added along with Index page template
+
+W3C_validator_results: Резултати на W3C CSS Validator за
+# file_title: <!-- provided by the user -->
+CSS_validation_service: CSS validation Service
+jump_to: Прехвърли се на
+# errors_count: <!-- generated on the fly -->
+errors: Грешки
+# warnings_count <!-- generated on the fly -->
+warnings: Предупреждения
+validated_CSS: Валидиран CSS
+congrats: Поздравления! Не Бяха Намерени Грешки.
+# The sentence defined by doc_validates_before_link and doc_validates_after_link variables goes: \
+# "This document validates as CSSXX!" where XX stands for the CSS version used \
+# Since the content of the link about the CSS version is generated on the fly, \
+# it is important to define what goes before the link and what goes afterwards in 2 separate \
+# variables because the position of the link in the sentence varies in different languages
+doc_validates_before_link: Този документ се валидира като
+doc_validates_after_link: !
+no_errors_interoperable_msg: За да покажете на читателите си, че Ви е грижа за създаването на оперативно \
+съвместими Уеб страници, можете да покажете тази картинка на всяка валидирана страница. Следва XHTML, \
+който можете да използвате за да добавите тази картинка към Уеб страницата си:
+valid_CSS: Валиден CSS!
+# <!-- close the img tag with > instead of /> if using HTML<= 4.01 -->
+no_errors_close_tags_msg: затваряйте img тага с &gt; вместо с /&gt; ако използвате HTML &lt;= 4.01
+no_errors_dl_local_msg: Ако предпочитате, може да съхраните копие на картинката във Ваша локална уеб \
+директория и да промените XHTML откъса по-горе да сочи към локалния файл \
+вместо файла на този сървър.
+no_errors_create_link_msg: Ако желаете да създадете линк към тази страница (например, този резултат \
+от валидацията) за да улесните повторно валидиране на страницата в бъдеще или да дадете възможност \
+на други да валидират страницата Ви, URI е:
+no_errors_forHTML_only_msg: само за HTML/XML документ
+no_errors_bookmark_msg: Или, можете просто да добавите настоящата страница към Вашите bookmarks или hotlist.
+note_valide_html: За да функционира според очакванията, Вашият CSS style sheet се нуждае от правилно дърво за парсване на документа. Това означава, че трябва да изпозлвате <a href="http://validator.w3.org/">валиден HTML</a>.
+top: Горе
+# hook_html_validator <!-- generated on the fly -->
+not-css1-style: /* ВНИМАВАЙТЕ ! Това не е CSS1 свойство ! */
+errors_sorry_msg: За съжаление, намерихме следните грешки
+# errors_list: <!-- generated on the fly -->
+# warnings_list: <!-- generated on the fly -->
+# rules_count: <!-- generated on the fly -->
+valid_CSS_info: Валидна CSS информация
+# charset: <!-- generated on the fly -->
+# rules_list: <!-- generated on the fly -->
+CSS_not_found: Не бе намерен style sheet
+home: Начало
+about: За нас
+doc: Документация
+dl: Изтегляне
+feedback: Обратна връзка
+credits: Признания
+home_title: Главна страница на W3C CSS Validation Service
+about_title: За тази услуга
+doc_title: Документация за W3C CSS Validation Service
+dl_title: Изтегляне и инсталиране на CSS валидатор
+feedback_title: Как да споделим мнение за тази услуга
+credits_title: Признания и Благодарности
+W3C_quality_msg: Quality Assurance Activity на W3C, Ви предоставя инструменти за качество на мрежата и други
+learn_more_msg: Научете повече за Cascading Style Sheets
+support: Помогнете за този инструмент, станете
+supporter: W3C Поддръжник
+# End of variables added along with Velocity
+
+# Defines your own error and warning message here
+content-type: text/html; charset=utf-8
+content-language: bg
+output-encoding-name: utf-8
+
+# You can change the level warning like this (example) :
+# warning.redefinition.level: 5
+#  level is an integer between 0 and 9 (all others values are ignored)
+warning.redefinition: Презаписване на %s
+
+# used by xml parser 
+warning.style-inside-comment: Не слагайте правила за стил в HTML коментари, защото може да бъдат премахнати от потребителския агент
+
+# used by org.w3c.css.properties.Css1Style
+warning.same-colors: Еднакъв цвят за %s и за %s
+warning.no-color: Не сте определили color (или цветът е transparent), но сте задали background-color. Убедете се, че подреждането на цветовете прави текста достатъчно четлив.
+warning.no-background-color: Няма зададен background-color (или background-color е transparent) но сте задали color. Убедете се, че подреждането на цветовете прави текста достатъчно четлив.
+#warning.color.mixed-capitalization is now obsolete
+#warning.color.mixed-capitalization: Тъй като имената на цветовете не са case-insensitive, препоръчва се да използвате mixed capitalization, за да направите имената по-четливи: %s
+warning.no-generic-family: %s: Препоръчва се да предлагате generic family като последна алтернатива
+warning.with-space: Имената на фамилиите, съдържащи празно място, трябва да са в кавички. Ако пропуснете кавичките, всяко празно място \
+преди и след името ще бъде игнорирано и всяка последователсност от празни места в името ще бъде отчетена като само \
+едно празно място. 
+warning.no-padding: Препоръчва се да имате a padding област заедно с background color
+warning.same-colors2: Еднакви цветове за color и за background-color в два контекста %s и %s
+warning.relative-absolute: Имате някои абсолютни и някои относителни разстояния в %s. Това прави един style sheet неясен.
+# used by org.w3c.css.properties.CssSelectors
+warning.unknown-html: %s не е HTML Елемент
+warning.html-inside: HTML елемент не може да се съдържа в друг елемент
+warning.body-inside: BODY елемент не може да се съдържа в друг елемент, освен в HTML
+warning.pseudo-classes: Псевдо-класът за връзка %s няма ефект при елементи различни от 'A'
+
+# not used by org.w3c.css.properties.CssSelectors for the moment
+warning.noinside: %s не може да се съдържа в inline елемент
+warning.withblock: Бъдете внимателни. Псевдо-елементи могат да бъдат прикачени само към block-level елемент
+warning.block-level: Това свойство се отнася за block-level елементи.
+
+# used by org.w3c.css.parser.Frame
+warning.no-declaration: Липсват декларации в правилото
+
+# used by org.w3c.css.parser.CssFouffa
+warning.unsupported-import: Импортирани style sheets не се проверяват в режим на директно въвеждане или изпращане на файл
+
+# used by org.w3c.css.values.CssColor
+warning.out-of-range: %s е извън обсег
+error.invalid-color: Невалидна RGB функция
+
+warning.marker: Свойството marker-offset се отнася към елементи с 'display: marker'
+
+# used by org.w3c.css.properties.ACssStyle
+warning.relative: Използването на относителни единици дава по-голяма яснота на stylesheets със свойство %s
+
+# used by org.w3c.css.css.StyleSheetParser and org.w3c.css.css.StyleSheetXMLParser
+error.at-rule: За съжаление, at-правилото %s не е имплементирано.
+
+# used by all properties and values
+error.operator: %s е невалиден оператор
+error.negative-value: %s не се разрешават отрицателни стойности
+error.few-value: също някои стойности на свойство %s
+
+# be careful here, values comes first
+# You can't write something like this : For the color, blue is an incorrect value
+error.value: %s не е стойност на %s
+
+#used by org.w3c.css.properties3.CssToggleGroup
+error.groupname: %s не е правилно име на група. Използвайте валиден идентификатор
+
+#used by org.w3c.css.properties3.CssGroupReset
+error.nogroup: %s не е зададено от toggle-group свойство
+
+#used by org.w3c.css.properties3.CssGlyphOrVert
+error.anglevalue: Стойността трябва да е между -360 и 360 и да е делима на 90
+
+#used by org.w3c.css.properties3.CssTextKashidaSpace
+error.percentage: очаква се процентна стойност
+
+#used by org.w3c.css.properties.CssTextAlign
+warning.xsl: стойност %s се отнася само за XSL
+
+#used by org.w3c.css.parser.analyzer.CssParser
+warning.medialist: списъкът с медии трябва да започва с 'media :' %s
+error.nocomb: Комбинатор %s между селекторите не се допуска в този профил или версия
+
+#used by org.w3c.css.properties.CssDirection
+warning.direction: вместо използване на 'direction' за block-level елементи, използвайте новото CSS3 свойство 'writing-mode'
+
+# used by org.w3c.css.properties.CssTextDecoration
+error.same-value: %s присъства два пъти
+
+error.generic-family.quote: Generic family имена са ключови думи и затова не трябва да са в кавички.
+
+# used by org.w3c.css.properties.CssClip
+error.shape: Невалидна shape-дефиниция за rect(<top>,<right>,<bottom>,<left>)
+error.shape-separator: Невалиден разделител в дефиницията за shape. Трябва да е запетая.
+
+# used by org.w3c.css.properties.CssContent
+error.attr: Невалидна attr-дефиниция attr(X)
+error.function: Невалидна дефиниция на функция 
+error.counter: Невалидна counter-дефиниция counter(<identifier>[,<list-style-type>]?)
+error.counters: Невалидна counters-дефиниция counters(<identifier>,<string>[,<list-style-type>]?)
+
+# used by org.w3c.css.font.Src
+error.format: Невалидна format-дефиниция format(<string>[,<string>]*)
+error.local: Невалидна format-дефиниция local(<string>|<ident>+)
+
+# used by org.w3c.css.values.CssAngle, org.w3c.css.values.CssFrequency, org.w3c.css.values.CssTime, org.w3c.css.values.CssLength
+error.unit: %s е неправилна единица
+
+# used by org.w3c.css.aural.ACssAzimuth
+error.degree: Позиция се описва според правилата за градуси.
+
+# used by org.w3c.css.aural.ACssElevation
+error.elevation.range: Определя височината като ъгъл, между '-90deg' и '90deg'.
+
+# used by org.w3c.css.aural.ACssPitchRange
+error.range: Стойността е извън обсег. Стойността трябва да е между '0' и '100'.
+
+# used by org.w3c.css.properties.CssTextShadow
+error.two-lengths: Изместване на сянка се определя от две <length> стойности (Радиус на замъгляване може да бъде допълнително определен след изместването на сянката.)
+
+error.integer: This number should be an integer.
+error.comma: Липсва разделителна запетая.
+
+# used by org.w3c.css.values.CssPercentage
+error.percent: %s е грешен процент
+
+# used by org.w3c.css.values.CssString
+error.string: %s е грешен низ
+
+# used by org.w3c.css.values.CssURL
+error.url: %s е грешен URL
+
+# used by org.w3c.css.values.CssColor
+error.rgb: %s е невалиден цвят 3 или 6 шестнадесетични номера
+error.angle: %s е невалиден ъгъл. Стойността трябва да е между 0 и 360
+
+# used by org.w3c.css.values.CssNumber
+error.zero: само 0 може да бъде %s. Трябва да въведете мерна единица след числото
+
+# used by org.w3c.css.parser.CssPropertyFactory
+error.noexistence-at-all: Свойство %s не съществува
+error.noexistence-media: Свойство %s не съществува за медия %s
+error.noexistence: Свойство %s не съществува в %s, но съществува в %s
+warning.noexistence: Свойство %s не съществува в %s, но съществува в %s
+warning.noexistence-media: Свойство %s не съществува за медия %s
+warning.notforusermedium : Свойство %s не съществува за тази потребителска медия
+warning.noothermedium : Свойства от друга медиа може да не функционират за тази потребителска медия
+# used by org.w3c.css.parser.AtRule*
+error.noatruleyet: Други @rules освен @import не се поддържат от CSS1 %s
+# used by org.w3c.css.parser.analyzer.CssParser
+error.notforcss1: Стойност %s не съществува за CSS1
+warning.pseudo: Непознат псевдо-елемент или псевдо-клас %s в профила по подразбиране (%s)
+warning.nocomb: Комбинатор %s между селекторите не е разрешен в този профил (%s)
+warning.charsetspecial: Този профил има много специфичен синтаксис за @charset: \
+@charset следвано от точно едно празно място, следвано от името на encoding \
+в кавички, веднага следвано от точка и запетая.
+warning.notversion: %s не може да се използва в тази версия на CSS : %s
+
+# used by org.w3c.css.parser.CssFouffa
+error.unrecognize: Твърде много стойности или неразпознати стойности
+
+# used by org.w3c.css.parser.CssFouffa
+generator.unrecognize: Грешка при разбора
+generator.dontmixhtml: Грешка при разбора. Style sheets не трябва да съдържат HTML синтаксис.  
+
+# used by org.w3c.css.css.StyleSheetGeneratorHTML2
+error.unknown: Неизвестна грешка
+
+# used by org.w3c.css.parser.CssSelectors
+error.pseudo-element: Псевдо-елементът :%s не може да се съдържа тук в контекст %s
+error.pseudo-class: Псевдо-елементът .%s не може да се съдържа тук в HTML контекст %s
+error.pseudo: Непознат псевдо-елемент или псевдо-клас %s
+error.id: ID селектор #%s е невалиден ! Само един ID селектор може да бъде определен в прост селектор: %s.
+error.space: Ако атрибут селектор ~= е използван, думата в стойността %s не трябва да съдържа празно място.
+error.todo : За съжаление тази функционалност %s все още не е имплементирана.
+error.incompatible: %s и %s са несъвместими
+warning.incompatible: %s и %s са несъвместими
+error.notformobile: %s не може да бъде използван с mobile профил
+error.notforatsc: %s не може да бъде използван с ATSC профил
+error.notfortv: %s не може да бъде използван с TV профил
+error.notversion: %s не може да бъде използван с тази версия на CSS : %s
+
+error.media: непозната медия %s 
+error.page: непозната псевдо-именувана страница %s
+
+error.unrecognized.link: Непознат елемент за връзка или xml-stylesheet PI.
+
+# used by StyleSheetGeneratorHTML
+generator.context: Контекст
+generator.request: Грешка при извеждане на Вашата style sheet. \
+Моля, коригирайте заявката си или пишете до plh@w3.org.
+generator.unrecognized: Непознат
+generator.invalid-number: Грешен номер
+generator.property: Грешка на стойността
+generator.line: Ред
+generator.not-found: Файлът не бе намерен
+
+generator.doc-html:   <!-- removed this confusing message olivier 2006-12-14 -->
+generator.doc:  <!-- removed this confusing message olivier 2006-12-14 -->
+
+
+# used by the parser
+parser.semi-colon: опит за търсене на точка и запетая преди името на свойството. добавяне
+
+parser.unknown-dimension: Неизвестна величина
+
+parser.old_class: В CSS1 име на клас може да започва с цифра (".55ft"), \
+стига да не е величина (".55in"). В CSS2 подобни класове се приемат за \
+неизвестни величини (за да се позволи бъдещо добавяне на нови единици). \
+За да бъде ".%s" валиден клас, CSS2 изисква първата цифра да бъде защитена ".\3%s"
+
+parser.old_id: В CSS1 име на id може да започва с цифра ("#55ft"), \
+стига да не е величина ("#55in"). В CSS2 подобни идентификатори се приемат за \
+неизвестни величини (за да се позволи бъдещо добавяне на нови единици).
+
+parser.class_dim: В CSS1 име на клас може да започва с цифра (".55ft"), \
+стига да не е величина (".55in").
+
+parser.id_dim: В CSS1 име на id може да започва с цифра ("#55ft"), \
+стига да не е величина ("#55in").
+
+parser.charset: Правилото @charset може да се използва само в началото на style \
+sheet. Моля, проверете дали няма празно място преди това.
+
+parser.charsetspecial: Този профил има много специфичен синтаксис за @charset: \
+@charset следвано от точно едно празно място, следвано от име на encoding \
+в кавични, веднага последвано от точка и запетая.
+
+warning.old_id: В CSS1 име на id може да започва с цифра ("#55ft"), \
+стига да не е величина ("#55in"). В CSS2 подобни идентификатори се приемат за \
+неизвестни величини (за да се позволи бъдещо добавяне на нови величини).
+
+warning.old_class: В CSS1 име на клас може да започва с цифра (".55ft"), \
+стига да не е величина (".55in"). В CSS2 подобни идентификатори се приемат за \
+неизвестни величини (за да се позволи бъдещо добавяне на нови единици).
+
+# used by the servlet
+servlet.invalid-request: Изпратихте невалидна заявка.
+servlet.process: Обектът не може да бъде обработен
+
+warning.atsc: %s е възможно да не се поддържа от медия atsc-tv
+error.onlyATSC: %s тази функция е само за медия atsc-tv
+
+warning.otherprofile: свойство %s не съществува за този профил, но е валидно за друг профил
+warning.deprecated: тази стойност вече не се използва
+
+warning.float-no-width: В (x)HTML+CSS, елементите използващи float трябва да имат декларирана ширина. Само елементи с онаследена ширинаю (html, img, input, textarea, select или object) не се влияят
+
+parser.charsetcss1: @charset правила не могат да се използват в CSS1
+parser.attrcss1: Селекторите на атрибути са невалидни в CSS1
+
+parser.invalid_id_selector: Невалиден ID селектор
+parser.import_not_allowed: @import правила не се допускат след какво да е валидно заявление различно от @charset и @import.
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/Messages.properties.de	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,367 @@
+# German translation, last updated in sync with Messages.properties.en,v 1.31
+
+direction: ltr
+language_name: Deutsch
+more_options: Weitere Optionen
+title_more_options: Weitere Validierungsoptionen anzeigen/verbergen
+all: Alle
+normal_report: Normal
+most_important: Nur die wichtigsten
+no_warnings: Keine Warnungen
+profile: Profile
+no_special_profile: Kein spezielles Profil
+css1: CSS level 1
+css2: CSS level 2
+css21: CSS level 2.1
+css3: CSS level 3
+SVG: SVG
+svgbasic: SVG Basic
+svgtiny: SVG tiny
+mobile: Mobile
+ATSC_TV_profile: ATSC TV profil
+TV_profile: TV profil
+medium: Medium
+aural: aural
+braille: braille
+embossed: embossed
+handheld: handheld
+print: print
+projection: projection
+screen: screen
+tty: TTY
+tv: TV
+presentation: presentation
+
+type: Typ
+no_special_type: Automatisch
+html_doc: HTML
+css_doc: CSS
+
+check: Prüfen
+W3C_CSS_validation_service: Der W3C CSS Validierungsdienst
+check_CSS:Cascading Style Sheets (CSS) und (X)HTML-Dokumente mit CSS validieren
+by_URI: per URI
+by_file_upload: per File-Upload
+by_direct_input: per Direkteingabe
+validate_by_URI: Validierung per URI
+enter_uri: Geben Sie die URI eines Dokuments ein, das Sie validieren möchten (CSS oder HTML mit CSS)
+page_address: Adresse des zu prüfenden Dokuments
+address: Adresse
+submit_uri: Validierung starten
+validate_by_file_upload: Validierung per Datei-Upload
+choose_document: Wählen Sie eine lokale Datei, die Sie validieren möchten
+choose_local_file: Wählen Sie eine lokale Datei zum Hochladen und Validieren
+local_CSS_file: Lokale CSS-Datei
+submit_file: Datei zum Validieren abschicken
+validate_by_input: Validierung per Direkteingabe
+enter_CSS: Geben Sie den CSS Code ein, den Sie überprüfen möchten
+submit_input: Code validieren
+note: Achtung
+note_xhtml_valid: Wenn Sie CSS-Code in einem (X)HTML-Dokument validieren möchten, sollten Sie zunächst <a href="http://validator.w3.org/">prüfen, ob das (X)HTML-Dokument valide ist</a>
+# End of variables added along with Index page template
+
+W3C_validator_results: Ergebnisse des CSS-Validators 
+# file_title: <!-- provided by the user -->
+CSS_validation_service: CSS Validierungsservice
+jump_to: Zu
+# errors_count: <!-- generated on the fly -->
+errors: Fehlern 
+# warnings_count <!-- generated on the fly -->
+warnings: Warnungen
+validated_CSS: Ihrem validierten Cascading Style Sheet
+congrats: Gratuliere! Keine Fehler gefunden.
+# The sentence defined by doc_validates_before_link and doc_validates_after_link variables goes: \
+# "This document validates as CSSXX!" where XX stands for the CSS version used \
+# Since the content of the link about the CSS version is generated on the fly, \
+# it is important to define what goes before the link and what goes afterwards in 2 separate \
+# variables because the position of the link in the sentence varies in different languages
+doc_validates_before_link: Dieses Dokument wurde als 
+doc_validates_after_link: validiert!
+no_errors_interoperable_msg: Sie können dieses Icon auf jeder validierten Seite darstellen, um zu zeigen, \
+daß Sie sich die Mühe gemacht haben interoperable Web-Seiten zu erstellen.  \
+Nachfolgend finden Sie den XHTML-Code, den Sie verwenden können um das Icon \
+in Ihre Web-Seiten einzubauen:
+valid_CSS: CSS ist valide!
+no_errors_close_tags_msg: beenden Sie ein img Tag mit &gt; anstatt /&gt; wenn Sie HTML &lt;= 4.01 verwenden
+no_errors_dl_local_msg: Sie können das Bild auch herunterladen und in Ihrem lokalen \
+Web-Verzeichnis speichern.  In diesem Fall müssen sie das \
+obere XHTML-Fragment so verändern, daß es auf Ihr lokales Bild verweist. 
+no_errors_create_link_msg: Wenn Sie einen Verweis auf diese Seite anlegen möchten \
+(d.h. auf diese Validierungsergebnis) um die erneute Validierung dieser \
+Seite zu erleichtern oder um es anderen zu ermöglichen Ihre Seite zu \
+validieren, so verwenden Sie folgenden URI:
+no_errors_forHTML_only_msg: nur für HTML/XML-Dokumente
+no_errors_bookmark_msg: Sie können die aktuelle Seite auch einfach in Ihre Bookmarks aufnehmen.
+note_valide_html: To work as intended, your CSS style sheet needs a correct document parse tree. This means you should use <a href="http://validator.w3.org/">valid HTML</a>.
+top: Top
+# hook_html_validator <!-- generated on the fly -->
+not-css1-style: /* Vorsicht: Dies ist keine CSS1-Eigenschaft! */
+errors_sorry_msg: Entschuldigung! Es wurden die folgenden Fehler gefunden
+# errors_list: <!-- generated on the fly -->
+# warnings_list: <!-- generated on the fly -->
+# rules_count: <!-- generated on the fly -->
+valid_CSS_info: Ihr validiertes Cascading Style Sheet:
+# charset: <!-- generated on the fly -->
+# rules_list: <!-- generated on the fly -->
+CSS_not_found: Kein Stylesheet gefunden
+home: Home
+about: About
+doc: Documentation
+dl: Download
+feedback: Feedback
+credits: Credits
+home_title: Homepage des W3C CSS Validierungsdienstes
+about_title: Über den Dienst
+doc_title: Dokumentation zum W3C CSS Validation Service
+dl_title: Den CSS Validator herunterladen und installieren
+feedback_title: Wie Sie Feedback zu diesem Service geben können
+credits_title: Referenzen und Danksagungen
+W3C_quality_msg: W3C's Quality Assurance Activity, bringing you free Web quality tools and more
+learn_more_msg: Learn more about Cascading Style Sheets
+support: Support this tool, become a
+supporter: W3C Supporter
+# End of variables added along with Velocity
+
+# Defines your own error and warning message here
+content-type: text/html; charset=UTF-8
+content-language: de
+output-encoding-name: utf-8
+
+# You can change the level warning like this (example) :
+# warning.redefinition.level: 5
+#  level is an integer between 0 and 9 (all others values are ignored)
+warning.redefinition: Erneute Definition von %s
+
+# used by xml parser
+warning.style-inside-comment: Do not put style rules inside HTML comments as they may be removed by user agent
+
+# used by org.w3c.css.properties.Css1Style
+warning.same-colors: Gleiche Farbe für %s und %s
+warning.no-color: Sie haben keine Vordergrundfarbe zu der Hintergrundfarbe angegeben
+warning.no-background-color: Sie haben keine Hintergrundfarbe zu der Vordergrundfarbe angegeben
+#warning.color.mixed-capitalization is now obsolete
+#warning.color.mixed-capitalization: Obwohl bei Farbnamen die Groß-/Kleinschreibung irrelevant ist, wird empfohlen die gemischte Schreibweise zu verwenden, um die Namen besser lesbar zu machen: %s
+warning.no-generic-family: %s: Es wird empfohlen, daß Sie eine generische Familie als letzte Alternative angeben
+warning.with-space: Namen von Schriftfamilien, die Leerzeichen enthalten, sollten in (doppelte) Anführungszeichen eingeschlossen werden.  Ohne Anführungszeichen werden alle Leerraumzeichen (Leerzeichen, Tabulatoren, etc.) vor und nach dem Namen ignoriert, und jede Sequenz von Leerraumzeichen innerhalb des Namens wird durch ein einzelnes Leerzeichen ersetzt.
+warning.no-padding: Es wird empfohlen, eine freie Umgebung (padding) mit der Hintergrundfarbe zu haben
+warning.same-colors2: Die gleichen Farben für den Vordergrund und den Hintergrund in den zwei Kontexten %s und %s
+warning.relative-absolute: Sie haben einige absolute und relative Längen in %s. Das Stylesheet wird dadurch weniger robust.
+
+warning.direction: anstatt 'direction' für Blockelemente zu verwenden nutzen Sie besser die neue CSS3 Eigenschaft 'writing-mode'
+warning.medialist: die Medienliste sollte mit 'media :' beginnen %s
+
+
+# used by org.w3c.css.properties.CssSelectors
+warning.unknown-html: %s ist kein HTML-Element
+warning.html-inside: Das HTML-Element kann nicht innerhalb eines anderen Elements vorkommen
+warning.body-inside: Das BODY-Element darf nur direkt innerhalb des HTML-Elements vorkommen
+warning.pseudo-classes: Die Anker-Pseudoklasse %s hat keinen Effekt auf andere Elemente als 'A'
+
+# not used by org.w3c.css.properties.CssSelectors for the moment
+warning.noinside: %s kann nicht innerhalb eines Inline-Elements vorkommen
+warning.withblock: Vorsicht: Pseudoelemente können nur an Elemente auf Block-Level angebunden werden.
+warning.block-level: Diese Eigenschaft gilt für Elemente auf Block-Level.
+
+# used by org.w3c.css.parser.Frame
+warning.no-declaration: Keine Deklaration in der Regel
+
+# used by org.w3c.css.parser.CssFouffa 
+warning.unsupported-import: Importierte Style Sheets werden bei den Modi Direkteingabe und Datei-Upload nicht &uuml;berpr&uuml;ft
+
+# used by org.w3c.css.values.CssColor
+warning.out-of-range: %s ist außerhalb des Wertebereichs
+error.invalid-color: Ungültige RGB-Funktion
+
+warning.marker: Die 'marker-offset'-Eigenschaft gilt für Elemente mit 'display: marker'
+
+# used by org.w3c.css.properties.ACssStyle
+warning.relative: Die Verwendung von relativen Einheiten bei der Eigenschaft %s führt zu robusteren Stylesheets
+
+# used by org.w3c.css.css.StyleSheetParser and org.w3c.css.css.StyleSheetXMLParser
+error.at-rule: Leider ist die At-Regel %s nicht implementiert.
+
+# used by all properties and values
+error.operator: %s ist kein ungültiger Operator
+error.negative-value: %s negative Werte sind nicht erlaubt
+error.few-value: zu wenige Werte für die Eigenschaft %s
+
+# be careful here, values comes first
+# You can't write something like this : For the color, blue is an incorrect value
+error.value: %s ist kein %s-Wert
+
+# used by org.w3c.css.properties.CssTextDecoration
+error.same-value: %s kommt zweimal vor
+
+error.generic-family.quote: Namen von generischen Schriftfamilien sind Schlüsselwörter und dürfen deshalb nicht in Anführungszeichen eingeschlossen werden.
+
+# used by org.w3c.css.properties.CssClip
+error.shape: Ungültige rect-Definition rect(<top>,<right>,<bottom>,<left>)
+error.shape-separator: Unzulässiges Trennzeichen in rect(...), es muß ein Komma verwendet werden.
+
+# used by org.w3c.css.properties.CssContent
+error.attr: Ungültige attr-Definition attr(X)
+error.counter: Ungültige Zählerdefinition counter(<identifier>[,<list-style-type>]?)
+error.counters: Ungültige Zählerdefinition counters(<identifier>,<string>[,<list-style-type>]?)
+
+# used by org.w3c.css.font.Src
+error.format: Ungültige Formatdefinition format(<string>[,<string>]*)
+error.local: Ungültige Formatdefinition local(<string>|<ident>+)
+
+# used by org.w3c.css.values.CssAngle, org.w3c.css.values.CssFrequency, org.w3c.css.values.CssTime, org.w3c.css.values.CssLength
+error.unit: %s ist keine gültige Einheit
+
+# used by org.w3c.css.aural.ACssAzimuth
+error.degree: Die Position muß mit Gradangaben beschrieben werden.
+
+# used by org.w3c.css.aural.ACssElevation
+error.elevation.range: Spezifiziert die Höhe als Winkel zwischen '-90deg' und '90deg'.
+
+# used by org.w3c.css.aural.ACssPitchRange
+error.range: Der Wert ist außerhalb des gültigen Wertebereichs.  Der wert muß zwischen '0' und '100' liegen.
+
+# used by org.w3c.css.properties.CssTextShadow
+error.two-lengths: Ein Schattenoffset wird durch zwei <length>-Werte spezifiziert (ein Unschärfe-Radius kann optional nach dem Schattenoffset angegeben werden.)
+
+error.integer: Diese Nummer sollte eine ganze Zahle sein.
+error.comma: Fehlender Komma-Separator.
+
+# used by org.w3c.css.values.CssPercentage
+error.percent: %s ist eine unkorrekte Prozentangabe
+
+# used by org.w3c.css.values.CssString
+error.string: %s ist kein gültiger String
+
+# used by org.w3c.css.values.CssURL
+error.url: %s ist kein gültiger URL
+
+# used by org.w3c.css.values.CssColor
+error.rgb: %s ist keine gültige Farbe mit 3 oder 6 Hexadezimalzahlen
+error.angle: %s ist kein gültiger Winkelwert. Wert muß zwischen 0 und 360 liegen.
+
+# used by org.w3c.css.values.CssNumber
+error.zero: nur 0 kann ein %s sein.  Nach der Zahl muß eine Einheit stehen.
+
+# used by org.w3c.css.parser.CssPropertyFactory
+error.noexistence-at-all: Die Eigenschaft %s existiert nicht
+warning.noexistence-media: Die Eigenschaft %s existiert nicht für das Medium %s
+error.noexistence: Die Eigenschaft %s existiert nicht in %s, aber in %s
+warning.noexistence: Die Eigenschaft %s existiert nicht in %s, aber in %s
+error.noexistence-media: Die Eigenschaft %s existiert nicht für das Medium %s
+
+# used by org.w3c.css.parser.CssFouffa
+error.unrecognize: Zu viele Werte oder die Werte werden nicht erkannt
+
+# used by org.w3c.css.parser.CssFouffa
+generator.unrecognize: Einlese-Fehler
+generator.dontmixhtml: Einlese-Fehler. Style Sheets sollte keine HTML-Syntax.
+
+# used by org.w3c.css.parser.CssSelectors 
+error.pseudo-element: Das Pseudoelement %s kann hier nicht in dem Kontext %s vorkommen
+error.pseudo-class: Die Pseudoklasse .%s kann hier nicht in dem HTML-Kontext %s vorkommen
+error.pseudo: Unbekanntes Pseudoelement oder Pseudoklasse: %s
+warning.pseudo: Unbekanntes Pseudoelement oder unbekannte Pseudoklasse %s im Standard Profile (%s)
+error.id: ID-Selektor #%s ist ungültig!  Nur ein ID-Selektor kann in einem einfachen Selektor angegeben werden: %s.
+error.space: Wenn der Attributselektor ~= verwendet wird, darf der Wert %s keine Leerzeichen enthalten.
+error.todo : Leider ist das Feature %s noch nicht implementiert.
+error.incompatible: %s und %s sind inkompatibel
+warning.incompatible: %s und %s sind inkompatibel
+
+error.media: unbekanntes Medium %s 
+error.page: unbekannte Pseudo-benannte Seite %s
+
+
+# used by StyleSheetGeneratorHTML
+generator.context: Kontext
+generator.request: Ein Fehler trat während der Ausgabe Ihres Stylesheets auf. \
+Bitte korrigieren Sie Ihre Anfrage oder senden Sie eine E-Mail an plh@w3.org.
+generator.unrecognized: Unbekannt
+generator.invalid-number: Ungültige Nummer
+generator.property: Ungültige Nummer
+generator.line: Zeile
+generator.not-found: Datei nicht gefunden
+
+generator.doc-html: <!-- removed this confusing message olivier 2006-12-14 -->
+generator.doc: <!-- removed this confusing message olivier 2006-12-14 -->
+
+
+# used by the parser
+parser.semi-colon: Versuche ein Semikolon vor dem Eigenschaftsnamen zu finden. Füge es hinzu.
+
+parser.unknown-dimension: Unbekanntes dimension
+
+parser.old_class: In CSS1 konnte ein Klassenname mit einer Ziffer beginnen  (".55ft"), \
+es sei denn es handelte sich um eine Dimension (".55in"). In CSS2 werden solche Klassen als \
+unbekannte Dimensionen gelesen (um zukünftige Erweiterungen durch weitere Einheiten zu erlauben)
+
+parser.old_id: In CSS1 konnte ein id Bezeichner, außer wenn es sich um eine Dimension handelte ("#55in"), \
+mit einer Ziffer beginnen ("#55ft"). In CSS2 werden solche ids als \
+unbekannte Dimensionen gelesen (um zukünftige Erweiterungen durch weitere Einheiten zu erlauben)
+
+parser.class_dim: In CSS1 kann ein Klassenname mit einer Ziffer beginnen (".55ft"), \
+es sei denn es handelt sich um eine Dimension (".55in").
+
+parser.id_dim: In CSS1 kann ein id Bezeichner, außer wenn es sich um eine Dimension ("#55in") handelt, \
+mit einer Ziffer beginnen ("#55ft").
+
+parser.charset: Die Regel @charset darf nur zu Beginn eines Stylesheets verwendet werden. \
+Bitte überprüfen Sie, dass keine Leerzeichen davor zu finden sind.
+
+parser.charsetspecial: In diesem Profil gilt eine sehr spezielle Syntax für die @charset Regel: \
+Auf @charset muss genau ein Leerzeichen folgen, gefolgt vom Namen der Enkodierung in Anführungszeichen, \
+direkt danach ein Semikolon.
+warning.charsetspecial: Dieses Profil nutzt eine sehr spezielle Syntax für @charset: \
+@charset gefolgt von genau einem Leerzeichen, gefolgt von der Bezeichnung der Encodingtechnik in Anf&uuml;hrungszeichen, \
+gefolgt ohne weitere Zwischenr&auml;ume von einem Semikolon.
+
+warning.old_id: In CSS1 konnte ein id Bezeichner, außer wenn es sich um eine Dimension handelte ("#55in"), \
+mit einer Ziffer beginnen ("#55ft"). In CSS2 werden solche ids als \
+unbekannte Dimensionen gelesen (um zukünftige Erweiterungen durch weitere Einheiten zu erlauben)
+
+warning.old_class: In CSS1 konnte ein Klassenname mit einer Ziffer beginnen  (".55ft"), \
+es sei denn es handelte sich um eine Dimension (".55in"). In CSS2 werden solche Klassen als \
+unbekannte Dimensionen gelesen (um zukünftige Erweiterungen durch weitere Einheiten zu erlauben)
+
+# used by the servlet
+servlet.invalid-request: Sie haben eine ungültige Anfrage gesendet.
+servlet.process: Kann das Objekt nicht ausführen
+
+error.groupname : %s ist kein gültiger Gruppen-Name. Bitte benutzen Sie einen 
+gültigen Wert.
+
+error.notforcss1 : Die Variable %s ist in CSS1 nicht vorhanden
+error.notforatsc: %s kann nicht mit dem ATSC Profil genutzt werden
+error.onlyATSC: %s diese Funktion ist nur für atsc-tv Medien verf&uuml;gbar
+error.notfortv: %s kann nicht mit dem TV Profil genutzt werden
+error.notversion: %s kann nicht mit dieser Version von CSS verwendet werden : %s
+warning.notversion: %s kann nicht mit dieser CSS Version verwendet werden: %s
+error.nogroup : Die Variable %s wurde durch toggle-group nicht gesetzt
+error.anglevalue : Der Wert muss durch 90 teilbar sein und zwischen -360 und 360 (Grad) liegen
+error.percentage : Es wurde ein Prozent-Wert erwartet
+error.noothermedium : Eigenschaften anderer Endger&auml;te k&ouml;nnten f&uuml;r das aktuelle Endger&auml; nicht funktionieren
+warning.noothermedium: Eigenschaften für andere Medien werden m&ouml;glicherweise mit dem gew&auml;hlten Medium nicht funktionieren
+error.notforusermedium : Die Eigenschaft %s existiert nicht f&uuml;r dieses Endger&auml;te-Profil
+warning.notforusermedium: die Eigenschaft %s existiert nicht für das gewählte Medium
+error.noatruleyet : Andere At-Regeln als @import werden von CSS1 nicht unterst&uuml;tzt.
+error.notformobile : Dieser Befehl funktioniert im Mobil-Profil nicht
+
+warning.atsc : %s ist unter Umständen nicht im Funktionsumfang von atsc-tv enthalten.
+
+error.unrecognized.link: Nicht erkanntes Linkelement oder xml-stylesheet PI.
+
+warning.otherprofile : Die Eigenschaft %s existiert in der angegebenen Version von CSS nicht, ist aber in einer anderen Version vorhanden und valide 
+warning.deprecated : Dieser Wert ist abgelehnt
+
+#used by org.w3c.css.parser.analyzer.CssParser
+error.nocomb: Die Kombination %s von Selektoren ist in diesem Profil oder dieser Version nicht erlaubt.
+warning.nocomb: die Kombinator %s zwischen Selektoren ist in diesem Profil (%s) nicht erlaubt
+warning.xsl: der Wert %s funktioniert nur mit XSL
+error.function: Invalide Funktionsdefinition
+error.unknown: Unbekannter Fehler
+generator.dontmixhtml: Syntax Fehler. Style sheets dürfen keine HTML Syntax enthalten.
+
+warning.float-no-width: In (x)HTML+CSS müssen umfließende Elemente mit einer festen Breite deklariert werden. Nur Elemente mit einer von Natur aus festen Breite (html, img, input, textarea oder object) sind davon nicht betroffen.
+
+parser.charsetcss1: @charset-Regeln können im CSS1-Profil nicht benutzt werden.
+parser.attrcss1: Attribut-Selektoren sind in CSS1 ungültig
+parser.invalid_id_selector: Ungültiger ID-Selektor
+parser.import_not_allowed:  @import-Regeln sind nach jeglichen gültigen Ausdrücken außer @charset und weiteren @import-Regeln verboten
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/Messages.properties.en	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,379 @@
+# Master localization string file: $Id: Messages.properties.en,v 1.40 2009-12-15 17:00:03 ylafon Exp $
+
+direction: ltr
+language_name: English
+more_options: More Options
+title_more_options: Show/Hide extra validation options
+all: All
+normal_report: Normal report
+most_important: Most important
+no_warnings: No warnings
+profile: Profile
+no_special_profile: No special profile
+css1: CSS level 1
+css2: CSS level 2
+css21: CSS level 2.1
+css3: CSS level 3
+SVG: SVG
+svgbasic: SVG Basic
+svgtiny: SVG tiny
+mobile: Mobile
+ATSC_TV_profile: ATSC TV profile
+TV_profile: TV profile
+medium: Medium
+aural: aural
+braille: braille
+embossed: embossed
+handheld: handheld
+print: print
+projection: projection
+screen: screen
+tty: TTY
+tv: TV
+presentation: presentation
+type: Type
+no_special_type: Automatic
+html_doc: HTML
+css_doc: CSS
+check: Check
+W3C_CSS_validation_service: The W3C CSS Validation Service
+check_CSS: Check Cascading Style Sheets (CSS) and (X)HTML documents with style sheets
+by_URI: By URI
+by_file_upload: By file upload
+by_direct_input: By direct input
+validate_by_URI: Validate by URI
+enter_uri: Enter the URI of a document (HTML with CSS or CSS only) you would like validated
+page_address: Address of page to Validate
+address: Address
+submit_uri: Submit URI for validation
+validate_by_file_upload: Validate by file upload
+choose_document: Choose the document you would like validated
+choose_local_file: Choose a Local File to Upload and Validate
+local_CSS_file: Local CSS file
+submit_file: Submit file for validation
+validate_by_input: Validate by direct input
+enter_CSS: Enter the CSS you would like validated
+submit_input: Submit your input for validation
+note: Note
+note_xhtml_valid: If you want to validate your CSS style sheet embedded in an (X)HTML document, you should first <a href="http://validator.w3.org/">check that the (X)HTML you use is valid</a>
+# End of variables added along with Index page template
+
+W3C_validator_results: W3C CSS Validator results for
+# file_title: <!-- provided by the user -->
+CSS_validation_service: CSS validation Service
+jump_to: Jump to
+# errors_count: <!-- generated on the fly -->
+errors: Errors
+# warnings_count <!-- generated on the fly -->
+warnings: Warnings
+validated_CSS: Validated CSS
+congrats: Congratulations! No Error Found.
+# The sentence defined by doc_validates_before_link and doc_validates_after_link variables goes: \
+# "This document validates as CSSXX!" where XX stands for the CSS version used \
+# Since the content of the link about the CSS version is generated on the fly, \
+# it is important to define what goes before the link and what goes afterwards in 2 separate \
+# variables because the position of the link in the sentence varies in different languages
+doc_validates_before_link: This document validates as
+doc_validates_after_link: !
+no_errors_interoperable_msg: To show your readers that you've taken the care to create an interoperable Web \
+page, you may display this icon on any page that validates. Here is the XHTML \
+you could use to add this icon to your Web page:
+valid_CSS: Valid CSS!
+# <!-- close the img tag with > instead of /> if using HTML<= 4.01 -->
+no_errors_close_tags_msg: close the img tag with &gt; instead of /&gt; if using HTML &lt;= 4.01
+no_errors_dl_local_msg: If you like, you can download a copy of this image to keep in your local web \
+directory, and change the XHTML fragment above to reference your local image \
+rather than the one on this server.
+no_errors_create_link_msg: If you would like to create a link to this page (i.e., this validation \
+result) to make it easier to re-validate this page in the future or to allow \
+others to validate your page, the URI is:
+no_errors_forHTML_only_msg: for HTML/XML document only
+no_errors_bookmark_msg: Or, you can just add the current page to your bookmarks or hotlist.
+note_valide_html: To work as intended, your CSS style sheet needs a correct document parse tree. This means you should use <a href="http://validator.w3.org/">valid HTML</a>.
+top: Top
+# hook_html_validator <!-- generated on the fly -->
+not-css1-style: /* BE CAREFUL ! This is not a CSS1 property ! */
+errors_sorry_msg: Sorry! We found the following errors
+# errors_list: <!-- generated on the fly -->
+# warnings_list: <!-- generated on the fly -->
+# rules_count: <!-- generated on the fly -->
+valid_CSS_info: Valid CSS information
+# charset: <!-- generated on the fly -->
+# rules_list: <!-- generated on the fly -->
+CSS_not_found: No style sheet found
+home: Home
+about: About
+doc: Documentation
+dl: Download
+feedback: Feedback
+credits: Credits
+home_title: Home page for the W3C CSS Validation Service
+about_title: About this service
+doc_title: Documentation for the W3C CSS Validation Service
+dl_title: Download and install the CSS validator
+feedback_title: How to provide feedback on this service
+credits_title: Credits and Acknowlegments
+W3C_quality_msg: W3C's Quality Assurance Activity, bringing you free Web quality tools and more
+learn_more_msg: Learn more about Cascading Style Sheets
+support: Support this tool, become a
+supporter: W3C Supporter
+# End of variables added along with Velocity
+
+# Defines your own error and warning message here
+content-type: text/html; charset=utf-8
+content-language: en
+output-encoding-name: utf-8
+
+# You can change the level warning like this (example) :
+# warning.redefinition.level: 5
+#  level is an integer between 0 and 9 (all others values are ignored)
+warning.redefinition: Redefinition of %s
+
+# used by xml parser 
+warning.style-inside-comment: Do not put style rules inside HTML comments as they may be removed by user agent
+
+# used by org.w3c.css.properties.Css1Style
+warning.same-colors: Same color for %s and %s
+warning.no-color: You have no color set (or color is set to transparent) but you have set a background-color. Make sure that cascading of colors keeps the text reasonably legible.
+warning.no-background-color: You have no background-color set (or background-color is set to transparent) but you have set a color. Make sure that cascading of colors keeps the text reasonably legible.
+#warning.color.mixed-capitalization is now obsolete
+#warning.color.mixed-capitalization: Although color names are case-insensitive, it is recommended to use the mixed capitalization, to make the names more legible: %s
+warning.no-generic-family: %s: You are encouraged to offer a generic family as a last alternative
+warning.with-space: Family names containing whitespace should be quoted. If quoting is omitted, any whitespace \
+characters before and after the name are ignored and any sequence of whitespace characters inside the \
+name is converted to a single space. 
+warning.no-padding: You are encouraged to have a padding area with a background color
+warning.same-colors2: Same colors for color and background-color in two contexts %s and %s
+warning.relative-absolute: You have some absolute and relative lengths in %s. This is not a robust style sheet.
+# used by org.w3c.css.properties.CssSelectors
+warning.unknown-html: %s is not an HTML Element
+warning.html-inside: HTML element can't be inside another element
+warning.body-inside: BODY element can't be inside another element except HTML
+warning.pseudo-classes: Anchor pseudo-class %s have no effect on elements other than 'A'
+
+# not used by org.w3c.css.properties.CssSelectors for the moment
+warning.noinside: %s can't be inside an inline element
+warning.withblock: Be careful. Pseudo-elements can only be attached to a block-level element
+warning.block-level: This property applies to block-level elements.
+
+# used by org.w3c.css.parser.Frame
+warning.no-declaration: No declarations in the rule
+
+# used by org.w3c.css.parser.CssFouffa
+warning.unsupported-import: Imported style sheets are not checked in direct input and file upload modes
+
+# used by org.w3c.css.values.CssColor
+warning.out-of-range: %s is out of range
+error.invalid-color: Invalid RGB function
+
+warning.marker: The marker-offset property applies on elements with 'display: marker'
+
+# used by org.w3c.css.properties.ACssStyle
+warning.relative: Using relative units gives more robust stylesheets in property %s
+
+# used by org.w3c.css.css.StyleSheetParser and org.w3c.css.css.StyleSheetXMLParser
+error.at-rule: Sorry, the at-rule %s is not implemented.
+
+# used by all properties and values
+error.operator: %s is an incorrect operator
+error.negative-value: %s negative values are not allowed
+error.few-value: too few values for the property %s
+
+# be careful here, values comes first
+# You can't write something like this : For the color, blue is an incorrect value
+error.value: %s is not a %s value
+
+#used by org.w3c.css.properties3.CssToggleGroup
+error.groupname: %s is not a correct groupname. Use a valid identifier
+
+#used by org.w3c.css.properties3.CssGroupReset
+error.nogroup: %s has not been set by the toggle-group property
+
+#used by org.w3c.css.properties3.CssGlyphOrVert
+error.anglevalue: Value must be between -360 and 360 and be divisable by 90
+
+#used by org.w3c.css.properties3.CssTextKashidaSpace
+error.percentage: percentage value expected
+
+#used by org.w3c.css.properties.CssTextAlign
+warning.xsl: value %s only applies to XSL
+
+#used by org.w3c.css.parser.analyzer.CssParser
+warning.medialist: medialist should start with 'media :' %s
+error.nocomb: Combinator %s between selectors is not allowed in this profile or version
+
+#used by org.w3c.css.properties.CssDirection
+warning.direction: instead of using 'direction' for block-level elements use the new CSS3 'writing-mode' property
+
+# used by org.w3c.css.properties.CssTextDecoration
+error.same-value: %s appears twice
+
+error.generic-family.quote: Generic family names are keywords, and therefore must not be quoted.
+
+# used by org.w3c.css.properties.CssClip
+error.shape: Invalid shape definition rect(<top>,<right>,<bottom>,<left>)
+error.shape-separator: Invalid separator in shape definition. It must be a comma.
+
+# used by org.w3c.css.properties.CssContent
+error.attr: Invalid attr definition attr(X)
+error.function: Invalid function definition 
+error.counter: Invalid counter definition counter(<identifier>[,<list-style-type>]?)
+error.counters: Invalid counters definition counters(<identifier>,<string>[,<list-style-type>]?)
+
+# used by org.w3c.css.font.Src
+error.format: Invalid format definition format(<string>[,<string>]*)
+error.local: Invalid format definition local(<string>|<ident>+)
+
+# used by org.w3c.css.values.CssAngle, org.w3c.css.values.CssFrequency, org.w3c.css.values.CssTime, org.w3c.css.values.CssLength
+error.unit: %s is an incorrect unit
+
+# used by org.w3c.css.aural.ACssAzimuth
+error.degree: Position must be described in terms of degrees.
+
+# used by org.w3c.css.aural.ACssElevation
+error.elevation.range: Specifies the elevation as an angle, between '-90deg' and '90deg'.
+
+# used by org.w3c.css.aural.ACssPitchRange
+error.range: The value is out of range.This value must be between '0' and '100'.
+
+# used by org.w3c.css.properties.CssTextShadow
+error.two-lengths: A shadow offset is specified with two <length> values (A blur radius may optionally be specified after the shadow offset.)
+
+error.integer: This number should be an integer.
+error.comma: Missing comma separator.
+
+# used by org.w3c.css.values.CssPercentage
+error.percent: %s is an incorrect percentage
+
+# used by org.w3c.css.values.CssString
+error.string: %s is an incorrect string
+
+# used by org.w3c.css.values.CssURL
+error.url: %s is an incorrect URL
+
+# used by org.w3c.css.values.CssColor
+error.rgb: %s is not a valid color 3 or 6 hexadecimals numbers
+error.angle: %s is not a valid angle. Value should be between 0 and 360
+
+# used by org.w3c.css.values.CssNumber
+error.zero: only 0 can be a %s. You must put a unit after your number
+
+#used by org.w3c.css.properties.CssColumnCount
+error.strictly-positive: %s is not valid, only values greater than 0 allowed.
+
+# used by org.w3c.css.parser.CssPropertyFactory
+error.noexistence-at-all: Property %s doesn't exist
+error.noexistence-media: Property %s doesn't exist for media %s
+error.noexistence: Property %s doesn't exist in %s but exists in %s
+warning.noexistence: Property %s doesn't exist in %s but exists in %s
+warning.noexistence-media: Property %s doesn't exist for media %s
+warning.notforusermedium : Property %s doesn't exist for this usermedium
+warning.noothermedium : Properties for other media might not work for usermedium
+# used by org.w3c.css.parser.AtRule*
+error.noatruleyet: Other @rules than @import are not supported by CSS1 %s
+# used by org.w3c.css.parser.analyzer.CssParser
+error.notforcss1: Value %s does not exist for CSS1
+warning.pseudo: Unknown pseudo-element or pseudo-class %s in the default profile (%s)
+warning.nocomb: Combinator %s between selectors is not allowed in this profile (%s)
+warning.charsetspecial: This profile has a very specific syntax for @charset: \
+@charset followed by exactly one space, followed by the name of the encoding \
+in quotes, followed immediately by a semicolon.
+warning.notversion: %s can not be used with this version of CSS : %s
+
+# used by org.w3c.css.parser.CssFouffa
+error.unrecognize: Too many values or values are not recognized
+
+# used by org.w3c.css.parser.CssFouffa
+generator.unrecognize: Parse Error
+generator.dontmixhtml: Parse Error. Style sheets should not include HTML syntax.  
+
+# used by org.w3c.css.css.StyleSheetGeneratorHTML2
+error.unknown: Unknown error
+
+# used by org.w3c.css.parser.CssSelectors
+error.pseudo-element: The pseudo-element %s can't appear here in the context %s
+error.pseudo-class: The pseudo-class .%s can't appear here in the HTML context %s
+error.pseudo: Unknown pseudo-element or pseudo-class %s
+error.id: ID selector #%s is invalid ! Only one ID selector can be specified in a simple selector: %s.
+error.space: If the attribute selector ~= is used, the word in the value %s must not contain spaces.
+error.todo : Sorry the feature %s is not implemented yet.
+error.incompatible: %s and %s are incompatible
+warning.incompatible: %s and %s are incompatible
+error.notformobile: %s can not be used with mobile profile
+error.notforatsc: %s can not be used with ATSC profile
+error.notfortv: %s can not be used with TV profile
+error.notversion: %s can not be used with this version of CSS : %s
+
+error.media: unrecognized media %s 
+error.page: unrecognized pseudo named page %s
+
+error.unrecognized.link: Unrecognized link element or xml-stylesheet PI.
+
+# used by StyleSheetGeneratorHTML
+generator.context: Context
+generator.request: An error occured during the output of your style sheet. \
+Please correct your request or send a mail to plh@w3.org.
+generator.unrecognized: Unrecognized
+generator.invalid-number: Invalid number
+generator.property: Value Error
+generator.line: Line
+generator.not-found: File not found
+
+generator.doc-html:   <!-- removed this confusing message olivier 2006-12-14 -->
+generator.doc:  <!-- removed this confusing message olivier 2006-12-14 -->
+
+
+# used by the parser
+parser.semi-colon: attempt to find a semi-colon before the property name. add it
+
+parser.unknown-dimension: Unknown dimension
+
+parser.old_class: In CSS1, a class name could start with a digit (".55ft"), \
+unless it was a dimension (".55in"). In CSS2, such classes are parsed as \
+unknown dimensions (to allow for future additions of new units) \
+To make "%s" a valid class, CSS2 requires the first digit to be escaped "%s"
+
+parser.old_id: In CSS1, an id name could start with a digit ("#55ft"), \
+unless it was a dimension ("#55in"). In CSS2, such ids are parsed as \
+unknown dimensions (to allow for future additions of new units)
+
+parser.class_dim: In CSS1, a class name can start with a digit (".55ft"), \
+unless it is a dimension (".55in").
+
+parser.id_dim: In CSS1, an id name can start with a digit ("#55ft"), \
+unless it is a dimension ("#55in").
+
+parser.charset: The @charset rule may only occur at the start of the style \
+sheet. Please check that there are no spaces before it.
+
+parser.charsetspecial: This profile has a very specific syntax for @charset: \
+@charset followed by exactly one space, followed by the name of the encoding \
+in quotes, followed immediately by a semicolon.
+
+warning.old_id: In CSS1, an id name can start with a digit ("#55ft"), \
+unless it is a dimension ("#55in"). In CSS2, such ids are parsed as \
+unknown dimensions (to allow for future additions of new units)
+
+warning.old_class: In CSS1, a class name can start with a digit ("#55ft"), \
+unless it is a dimension ("#55in"). In CSS2, such ids are parsed as \
+unknown dimensions (to allow for future additions of new units).
+
+# used by the servlet
+servlet.invalid-request: You have sent an invalid request.
+servlet.process: Can't process the object
+
+warning.atsc: %s might not be supported by the medium atsc-tv
+error.onlyATSC: %s this function is only for the atsc-tv medium
+
+warning.otherprofile: property %s does not exist for this profile, but is validated conforming to another profile
+warning.deprecated: this value is deprecated
+
+warning.float-no-width: In (x)HTML+CSS, floated elements need to have a width declared. Only elements with an intrinsic width (html, img, input, textarea, select, or object) are not affected
+
+parser.charsetcss1: @charset rules can not be used in CSS1
+parser.attrcss1: Attribute selectors are invalid in CSS1
+
+parser.invalid_id_selector: Invalid ID selector
+parser.import_not_allowed: @import are not allowed after any valid statement other than @charset and @import.
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/Messages.properties.es	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,372 @@
+# Spanish translation, last updated in sync with Messages.properties.en,v 1.31
+
+direction: ltr
+language_name: Español
+more_options: Más opciones
+title_more_options: Show/Hide extra validation options
+all: Todos
+normal_report: Informe normal
+most_important: Las más importantes
+no_warnings: Sin advertencias
+profile: Perfil
+no_special_profile: Ninguno en especial
+css1: CSS versión 1
+css2: CSS versión 2
+css21: CSS versión 2.1
+css3: CSS versión 3
+SVG: SVG
+svgbasic: SVG Básico
+svgtiny: SVG Reducido
+mobile: Móvil
+ATSC_TV_profile: Perfil de TV ATSC
+TV_profile: Perfil de TV
+medium: Medio
+aural: auditivo
+braille: braille
+embossed: relieve
+handheld: pequeños dispositivos
+print: impresión
+projection: proyección
+screen: pantalla
+tty: teletipo
+tv: televisión
+presentation: presentación
+
+type: Tipo
+no_special_type: Automático
+html_doc: HTML
+css_doc: CSS
+
+check: Check
+W3C_CSS_validation_service: El Servicio de Validación de CSS del W3C
+check_CSS: Verifica Hojas de Estilo en Cascada (CSS) y documentos (X)HTML con hojas de estilo
+by_URI: mediante URI
+by_file_upload: mediante Carga de Archivo
+by_direct_input: mediante Entrada directa
+validate_by_URI: Validar mediante URI
+enter_uri: Introduce la URI de un documento (HTML con CSS o sólo CSS) que desees validar
+page_address: Dirección de la página a Validar
+address: Dirección
+submit_uri: Enviar archivo para su validación
+validate_by_file_upload: Validar mediante Carga de un Archivo
+choose_document: Elige el documento que desees validar
+choose_local_file: Elige un Archivo Local para su Carga y Validación
+local_CSS_file: Archivo CSS local
+submit_file: Enviar archivo para su validación
+validate_by_input: Validar mediante entrada directa
+enter_CSS: Introduce el código CSS que desees validar
+submit_input: Enviar archivo para su validación
+note: Nota
+note_xhtml_valid: Si deseas validar tu hoja de estilo CSS incrustada en un documento (X)HTML, deberías antes <a href="http://validator.w3.org/">comprobar que el  (X)HTML utilizado es válido</a>
+# End of variables added along with Index page template
+
+W3C_validator_results: Resultados del Validador CSS del W3C para 
+# file_title: <!-- provided by the user -->
+CSS_validation_service: Servicio de Validación CSS
+jump_to: Ir a
+# errors_count: <!-- generated on the fly -->
+errors: Los Errores 
+# warnings_count <!-- generated on the fly -->
+warnings: Las Advertencias 
+validated_CSS: Su Hoja de Estilo validada
+congrats: ¡Enhorabuena! No error encontrado.
+# The sentence defined by doc_validates_before_link and doc_validates_after_link variables goes: \
+# "This document validates as CSSXX!" where XX stands for the CSS version used \
+# Since the content of the link about the CSS version is generated on the fly, \
+# it is important to define what goes before the link and what goes afterwards in 2 separate \
+# variables because the position of the link in the sentence varies in different languages
+doc_validates_before_link: ¡Este documento es
+doc_validates_after_link: válido!
+no_errors_interoperable_msg: Puede mostrar este icono en cualquier página que valide para que los usuarios vean \
+que se ha preocupado por crear una página Web interoperable. A continuación \
+se encuentra el XHTML que puede usar para añadir el icono a su página Web:
+valid_CSS: ¡CSS Válido!
+# <!-- close the img tag with > instead of /> if using HTML<= 4.01 -->
+no_errors_close_tags_msg: cierre la etiqueta img con &gt; en lugar de /&gt; si utiliza HTML &lt;= 4.01
+no_errors_dl_local_msg: Si lo desea, puede descargar una copia de la imagen para guardarla en su \
+directorio web local y cambiar el fragmento anterior de XHTML para referenciar \
+a la imagen en local en lugar de a la de éste servidor.
+no_errors_create_link_msg: Si desea crear un enlace con esta página (es decir, con los resultados \
+de la validación) para hacer que sea más fácil revalidar la página en el futuro, \
+o para permitir que otras personas validen su página, el URI es:
+no_errors_forHTML_only_msg: para documentos HTML/XML únicamente
+no_errors_bookmark_msg: O, simplemente, puede añadir la página actual a su lista de marcadores o favoritos.
+note_valide_html: Para funcionar como previsto, tu hoja de estilo CSS necesita un "arbol sintactico". Esto significa que usted necesita usar <a href="http://validator.w3.org/"> un valido codigo HTML</a>.
+top: Top
+# hook_html_validator <!-- generated on the fly -->
+not-css1-style: /* ¡ TENGA CUIDADO ! ¡ Esta propiedad no está incluida en CSS1 ! */
+errors_sorry_msg: Disculpas! Hemos encontrado las siguientes errores
+# errors_list: <!-- generated on the fly -->
+# warnings_list: <!-- generated on the fly -->
+# rules_count: <!-- generated on the fly -->
+valid_CSS_info: Información de CSS válida
+# charset: <!-- generated on the fly -->
+# rules_list: <!-- generated on the fly -->
+CSS_not_found: No se ha encontrado ninguna hoja de estilo
+home: Inicio
+about: Acerca de este servicio
+doc: Documentación
+dl: Download
+feedback: Comentarios
+credits: Créditos
+home_title: Página de inicio del Servicio de Validación CSS del  W3C
+about_title: Acerca de este servicio
+doc_title: Documentación del Servicio de Validación CSS del W3C
+dl_title: Descargar y installar el validador CSS
+feedback_title: Cómo realizar comentarios sobre este servicio
+credits_title: Créditos y Agradecimientos
+W3C_quality_msg: Actividad de Garantí de Calidad del W3C, ofreciéndole herramientas de calidad Web gratuítas y más 
+learn_more_msg: Aprenda má sobre las Hojas de Estilo en Cascada
+support: Apoye esta herramienta, conviértase en un 
+supporter: Contribuidor del W3C
+# End of variables added along with Velocity
+
+# Defines your own error and warning message here
+content-type: text/html; charset=utf-8
+content-language: es
+output-encoding-name: utf-8
+
+# You can change the level warning like this (example) :
+# warning.redefinition.level: 5
+#  level is an integer between 0 and 9 (all others values are ignored)
+warning.redefinition: Redefinición de %s
+
+# used by xml parser
+warning.style-inside-comment: Do not put style rules inside HTML comments as they may be removed by user agent
+
+# used by org.w3c.css.properties.Css1Style
+warning.same-colors: Colores iguales para %s y %s
+warning.no-color: Hay un color de fondo establecido y no hay color de primer plano
+warning.no-background-color: Hay un color de primer plano establecido y no hay color de fondo
+#warning.color.mixed-capitalization is now obsolete
+#warning.color.mixed-capitalization: Aunque los nombres de los colores no son sensibles a las mayúsculas, es recomendable utilizar capitalización mixta para hacerlos más legibles: %s
+warning.no-generic-family: %s: Es recomendable ofrecer una familia genérica como última alternativa
+warning.with-space: Los nombres de familias que contengan espacios en blanco deben entrecomillarse. Si no se hace, cualquier espacio \
+en blanco anterior o posterior al nombre será ignorado y cualquier secuencia de espacios en blanco dentro del nombre \
+será convertida a un único espacio. 
+warning.no-padding: Es recomendable tener un área de relleno (padding) con el color de fondo
+warning.same-colors2: Color de primer plano y color de fondo iguales en dos contextos %s y %s
+warning.relative-absolute: Hay algunas longitudes absolutas y relativas en %s. No es una hoja de estilo robusta.
+
+# used by org.w3c.css.properties.CssSelectors
+warning.unknown-html: %s no es un elemento de HTML
+warning.html-inside: El elemento HTML no puede estar dentro de otro elemento
+warning.body-inside: El elemento BODY no puede estar dentro de otro elemento que no sea el elemento HTML
+warning.pseudo-classes: La pseudo-clase de Anchor %s sólo tiene efecto en los elementos 'A'
+warning.pseudo:  Pseudo-elemento o pseudo-clase %s desconocido(a) en el perfil por defecto (%s)
+# not used by org.w3c.css.properties.CssSelectors for the moment
+warning.noinside: %s no puede estar dentro de un elemento de línea
+warning.withblock: Cuidado. Los pseudo-elementos sólo se pueden unir a elementos de bloque
+warning.block-level: Estas propiedad se aplica a elementos de bloque.
+
+# used by org.w3c.css.parser.Frame
+warning.no-declaration: No hay declaraciones en la regla
+
+# used by org.w3c.css.parser.CssFouffa
+warning.unsupported-import: Las hojas de estilo importadas no se comprueban en los modos de entrada directa y carga de archivo
+
+# used by org.w3c.css.values.CssColor
+warning.out-of-range: %s está fuera de rango
+error.invalid-color: Función RGB no válida
+
+warning.marker: La propiedad marker-offset se aplica a elementos con 'display: marker'
+
+# used by org.w3c.css.properties.ACssStyle
+warning.relative: Utilizar unidades relativas da lugar a hojas de estilo más robustas en la propiedad %s
+
+# used by org.w3c.css.css.StyleSheetParser and org.w3c.css.css.StyleSheetXMLParser
+error.at-rule: Lo lamentamos, la regla-arroba %s no está implementada.
+
+# used by all properties and values
+error.operator: %s es un operador incorrecto
+error.negative-value: Valores negativos de %s no están permitidos
+error.few-value: Faltan valores para la propiedad %s
+
+# be careful here, values comes first
+# You can't write something like this : For the color, blue is an incorrect value
+error.value: %s no es un valor de %s
+
+#used by org.w3c.css.properties3.CssToggleGroup
+error.groupname: %s no es un nombre de grupo correcto. Use un identificador válido
+
+#used by org.w3c.css.properties3.CssGroupReset
+error.nogroup: %s no ha sido establecido por la propiedad toggle-group
+
+#used by org.w3c.css.properties3.CssGlyphOrVert
+error.anglevalue: El valor tiene que estar comprendido entre -360 y 360, y ser divisible por 90
+
+#used by org.w3c.css.properties3.CssTextKashidaSpace
+error.percentage: se espera un valor en porcentaje
+
+#used by org.w3c.css.properties.CssTextAlign
+warning.xsl: el valor %s sólo se aplica a XSL
+
+#used by org.w3c.css.parser.analyzer.CssParser
+warning.medialist : la lista de medios (medialist) debería comenzar por 'media :' %s
+error.nocomb: El combinador %s entre selectores no está permitido en este perfil o versión
+
+#used by org.w3c.css.properties.CssDirection
+warning.direction: use la nueva propiedad de CSS3 'writing-mode' en lugar de usar 'direction' para los elementos de bloque
+
+# used by org.w3c.css.properties.CssTextDecoration
+error.same-value: %s aparece dos veces
+
+error.generic-family.quote: Los nombres de familia genéricos son palabras reservadas y, por tanto, no deben entrecomillarse.
+
+# used by org.w3c.css.properties.CssClip
+error.shape: Definición de figura no válida rect(<top>,<right>,<bottom>,<left>)
+error.shape-separator: Separador no válido en la definición de figura. Debe ser una coma.
+
+# used by org.w3c.css.properties.CssContent
+error.attr: Definición de attr no válida attr(X)
+error.function: Definición de función no válida 
+error.counter: Definición de contador no válida counter(<identifier>[,<list-style-type>]?)
+error.counters: Definición de contadores no válida counters(<identifier>,<string>[,<list-style-type>]?)
+
+# used by org.w3c.css.font.Src
+error.format: Definición de formato no válida format(<string>[,<string>]*)
+error.local: Definición de localización no válida local(<string>|<ident>+)
+
+# used by org.w3c.css.values.CssAngle, org.w3c.css.values.CssFrequency, org.w3c.css.values.CssTime, org.w3c.css.values.CssLength
+error.unit: %s es una unidad incorrecta
+
+# used by org.w3c.css.aural.ACssAzimuth
+error.degree: La posición debe estar especificada en términos de grados.
+
+# used by org.w3c.css.aural.ACssElevation
+error.elevation.range: Especificar la elevación como un ángulo entre '-90deg' y '90deg'.
+
+# used by org.w3c.css.aural.ACssPitchRange
+error.range: El valor está fuera del rango. Este valor debe estar comprendido entre '0' y '100'.
+
+# used by org.w3c.css.properties.CssTextShadow
+error.two-lengths: Un offset de sombra se especifica con dos valores <length> (Opcionalmente, depués del offset de sombra puede especificarse un ratio de difuminado.)
+
+error.integer: Éste número debe ser un entero.
+error.comma: Falta una coma para separar.
+
+# used by org.w3c.css.values.CssPercentage
+error.percent: %s no es un porcentaje correcto
+
+# used by org.w3c.css.values.CssString
+error.string: %s no es una cadena correcta
+
+# used by org.w3c.css.values.CssURL
+error.url: %s no es un URL correcto
+
+# used by org.w3c.css.values.CssColor
+error.rgb: %s no es un color válido de 3 o 6 cifras hexadecimales
+error.angle: %s no es un ángulo válido. El valor debe estar comprendido entre 0 y 360
+
+# used by org.w3c.css.values.CssNumber
+error.zero: Únicamente 0 puede ser un %s. Debe especificarse una unidad detrás de la cifra
+
+# used by org.w3c.css.parser.CssPropertyFactory 
+error.noexistence-at-all: La propiedad %s no existe
+error.noexistence-media: La propiedad %s no existe en el medio %s
+error.noexistence: La propiedad %s no existe en %s pero existe en %s
+warning.noexistence: La propiedad %s no existe en %s pero existe en %s
+warning.noexistence-media: La propiedad %s no existe en el medio %s
+warning.notforusermedium : La propiedad %s no existe en este medio de usuario
+warning.noothermedium : Las propiedades de otros medios podrían no funcionar en el medio de usuario
+# used by org.w3c.css.parser.AtRule*
+error.noatruleyet : Las reglas-arroba que no sean @import no son soportadas por CSS1 %s
+# used by org.w3c.css.parser.analyzer.CssParser
+error.notforcss1 : El valor %s no existe en CSS1
+
+# used by org.w3c.css.parser.CssFouffa
+error.unrecognize: Faltan valores o no se reconocen los valores
+
+# used by org.w3c.css.parser.CssFouffa
+generator.unrecognize: Error de análisis sintáctico
+generator.dontmixhtml: Error sintáctica. Hoja de estilo ne pueden incluir fragmentos de HTML. 
+
+# used by org.w3c.css.parser.CssSelectors
+error.pseudo-element: El pseudo-elemento %s no puede aparecer aquí en el contexto %s
+error.pseudo-class: La pseudo-clase .%s no puede aparecer aquí en el contexto de HTML %s
+error.pseudo: Pseudo-clase o pseudo-elemento %s desconocido(a)
+error.id: ¡El selector de ID #%s no es válido! En un selector simple sólo puede especificarse un selector de ID: %s.
+error.space: Si se utiliza el selector de atributo ~= entonces el valor de %s no puede contener espacios.
+error.todo: Lo lamentamos, esta función %s todavía no está implementada.
+error.incompatible: %s y %s son incompatibles
+warning.incompatible: %s y %s son incompatibles
+error.notformobile : %s no puede usarse en perfiles móviles
+error.notforatsc : %s no puede usarse en perfiles ATSC
+error.notfortv : %s no puede usarse en perfiles de televisión
+error.notversion : %s no puede usarse en esta versión de CSS: %s
+warning.notversion: %s no se puede utilizar en esta versión de CSS: %s
+
+error.media: medio no reconocido %s 
+error.page: página pseudo-nombrada no reconocida %s
+
+error.unrecognized.link: elemento de enlace o instrucción de procesamiento de hoja de estilo xml no reconocida.
+
+# used by StyleSheetGeneratorHTML
+generator.context: Contexto
+generator.request: Se ha producido un error en el procesado de su hoja de estilo. \
+Por favor, corrija su petición o envíe un correo a plh@w3.org.
+generator.unrecognized: No reconocido
+generator.invalid-number: Número no válido
+generator.property: Propiedad no válida
+generator.line: Línea
+generator.not-found: Archivo no encontrado
+generator.doc-html: <!-- removed this confusing message olivier 2006-12-14 -->
+generator.doc: <!-- removed this confusing message olivier 2006-12-14 -->
+
+# used by the parser
+parser.semi-colon: Tentativa de encontrar un punto y coma antes del nombre de la propiedad. Añádalo
+
+parser.unknown-dimension: dimensión desconocida
+
+parser.old_class: En CSS1, un nombre de clase puede empezar por un dígito (".55ft"), \
+excepto si es una magnitud de medida (".55in"). En CSS2, esas clases son interpretadas como \
+magnitudes de medida desconocidas (para permitir añadir nuevas magnitudes en un futuro)
+
+parser.old_id: En CSS1, un nombre de id puede empezar por un dígito ("#55ft"), \
+excepto si es una magnitud de medida ("#55in"). En CSS2, esos nombres son interpretados como \
+magnitudes de medida desconocidas (para permitir añadir nuevas magnitudes en un futuro)
+
+parser.class_dim: En CSS1, un nombre de clase puede empezar por un dígito (".55ft"), \
+excepto si es una magnitud de medida (".55in")
+
+parser.id_dim: En CSS1, un nombre de id puede empezar por un dígito ("#55ft"), \
+excepto si es una magnitud de medida ("#55in")
+
+parser.charset:La regla @charset sólo puede aparecer al comienzo de la hoja \
+de estilo. Por favor, compruebe que no hay espacios antes.
+
+parser.charsetspecial:Este perfil tiene una sintaxis muy específica para @charset: \
+@charset seguido de un espacio exactamente, seguido por el nombre de la codificación \
+entre comillas, seguido inmediatamente por un punto y coma.
+warning.charsetspecial:Este perfil tiene una sintaxis muy específica para @charset: \
+@charset seguido de un espacio exactamente, seguido por el nombre de la codificación \
+entre comillas, seguido inmediatamente por un punto y coma.
+
+warning.old_id:En CSS1, un nombre de id puede empezar por un dígito ("#55ft"), \
+excepto si es una magnitud de medida ("#55in"). En CSS2, esos nombres son interpretados como \
+magnitudes de medida desconocidas (para permitir añadir nuevas magnitudes en un futuro)
+
+warning.old_class:En CSS1, un nombre de id puede empezar por un dígito (".55ft"), \
+excepto si es una magnitud de medida (".55in"). En CSS2, esos nombres son interpretados como \
+magnitudes de medida desconocidas (para permitir añadir nuevas magnitudes en un futuro)
+
+# used by the servlet
+servlet.invalid-request: Se ha enviado una petición no válida.
+servlet.process: No se puede procesar el objeto
+
+warning.atsc : %s podría no ser compatible con el medio atsc-tv
+error.onlyATSC : %s esta función es sólo para el medio atsc-tv
+
+warning.otherprofile : la propiedad %s no existe en este perfil, pero es válida conforme a otro perfil
+warning.deprecated : este valor está desaprobado
+
+#used by org.w3c.css.parser.analyzer.CssParser
+error.nocomb: La combinación %s entre selectores no está permitida en este perfil o versión
+warning.nocomb: No se permite el combinador %s entre selectores en este perfil (%s)
+error.unknown: Error desconocido
+
+warning.float-no-width: En (x)HTML+CSS, los elementos flotados han de tener un ancho (width) declarado. Únicamente elementos con un ancho intrínseco (html, img, input, textarea, select u object) no se ven afectados
+parser.charsetcss1: En CSS1 no se pueden utilizar reglas @charset
+parser.attrcss1: Los selectores de atributo no son válidos en CSS1
+parser.invalid_id_selector: Selector ID no válido
+parser.import_not_allowed: Sólo se permite @import después de una declaración válida @charset y @import
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/Messages.properties.fa	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,339 @@
+direction: rtl
+language_name: فارسی
+more_options: گزینه های بیشتر
+title_more_options: نمایش/پنهان کردن گزینه های اعتبار سنجی اضافی
+all: تمام
+normal_report: گزارش معمولی
+most_important: مهمترین
+no_warnings: بدون اخطار
+profile: پروفایل
+no_special_profile: بدون پروفایل خاص
+css1: سطح 1 CSS
+css2: سطح 2 CSS
+css21: سطح 2.1 CSS
+css3: سطح 3 CSS
+SVG: SVG
+svgbasic: بیسیک SVG
+svgtiny: SVG tiny
+mobile: موبایل
+ATSC_TV_profile: ATSC TV پروفایل
+TV_profile: TV پروفایل
+medium: رسانه
+aural: شنیداری
+braille: بریل
+embossed: برجسته شده
+handheld: دستی
+print: پرینت
+projection: طرح ریزی
+screen: صفحه نمایش
+tty: تله تایپ
+tv: تلویزیون
+presentation: نمایش
+type: نوع
+no_special_type: خودکار
+html_doc: HTML
+css_doc: CSS
+check: بررسی
+W3C_CSS_validation_service: W3C CSS سرویس اعتبار سنجی
+check_CSS: دارای شیوه نامه X(HTML) و اسناد (CSS) بررسی شیوه نامه های آبشاری
+by_URI: URI توسط
+by_file_upload: با آپلود فایل
+by_direct_input: با ورودی مستقیم
+validate_by_URI: URI تایید اعتبار با
+enter_uri: ای که می خواهید معتبر نمایید را، وارد نمایید (CSS یا تنها CSS دارای HTML) سند URI
+page_address: آدرس صفحه جهت تایید اعتبار
+address: آدرس
+submit_uri: برای اعتبار سنجی URI ارایه ی
+validate_by_file_upload: تایید اعتبار با آپلود فایل
+choose_document: (CSS سندی که می خواهید معتبر نمایید را انتخاب کنید (تنها فایلهای
+choose_local_file: یک فایل محلی (در سیستم خودتان) را جهت آپلود و تایید اعتبار انتخاب نمایید
+local_CSS_file: CSS فایل محلی
+submit_file: فایل را برای اعتبار سنجی ارایه نمایید
+validate_by_input: تایید اعتبار با ورودی مستقیم
+enter_CSS: ای را که می خواهید تایید اعتبار شود را وارد نمایید CSS
+submit_input: ورودیتان را برای اعتبار سنجی ارایه نمایید
+note: توجه
+note_xhtml_valid: <a href="http://validator.w3.org"> مورد استفاده معتبر باشد (X)HTML بررسی نمایید که <a/> خودتان را تایید اعتبار نمایید، نخست باید (X)HTML جاسازی شده در یک سند CSS اگر بخواهید شیوه نامه ی 
+# انتهای متغیرهای اضافه شده همراه با الگوی صفحه ی فهرست 
+
+W3C_validator_results: برای W3C CSS نتایج اعتبار سنج
+# file_title: <!-- تهیه شده توسط کاربر -->
+CSS_validation_service: CSS سرویس اعتبار سنجی
+jump_to: جهش کنید به
+# errors_count: <!-- تولید شده در اجرا -->
+errors: خطاها
+# warnings_count: <!-- تولید شده در اجرا -->
+warnings: اخطارها
+validated_CSS: معتبر شده CSS
+congrats: .تبریک! هیچ خطایی یافت نشد
+# doc_validates_before_link و doc_validates_after_link راهی شدن متغیرهای: \
+# باشد CSS نمادهایی برای نسخه ی مورد استفاده ی XX تایید اعتبار می شود!" جاییکه CSSXX این سند بصورت" \
+# ،در هنگام اجرا تولید شده است CSS از آنجایی که محتوای لینک در مورد نسخه ی \
+# این مهم است که آنچه را که قبل از لینک می رود و آنچه را که پس از آن در 2 قسمت مجزا می رود را تعریف نماید \
+# متغیرها برای اینکه وضعیت لینک در جمله در زبانهای متفاوت تغییر می کند
+doc_validates_before_link: این سند تایید اعتبار می شود بصورت
+doc_validates_after_link: !
+no_errors_interoperable_msg: برای نشان دادن به کاربرانتان مبنی بر اینکه شما د قت کافی را جهت ایجاد یک قابلیت عمل بینابینی وب مبذول داشته اید مورد نظر است XHTML صفحه، شما می توانید این آیکون را در هر صفحه ای که تایید اعتبار شده نمایش دهید. در اینجا :شما می توانید اینرا بکار برید تا این آیکون به صفحه ی وب شما اضافه شود
+valid_CSS: !معتبر CSS
+# <--! را بجای </ با < ببندید img استفاده می کنید، تگ HTML <= 4.01 اگر از -->
+no_errors_close_tags_msg: ببندید &lt; با /&lt; را بجای img استفاده می کنید، تگ HTML &lt;= 4.01 اگر از
+no_errors_dl_local_msg: اگر می خواهید، می توانید یک کپی از این تصویر را جهت نگهداری در وب محلی تان دانلود نمایید مذکور در بالا را جهت مراجعه ی تصویر محلی تان انتخاب نمایید XHTML دایرکتوری، و تکه ی .بجای این یکی بر روی این سرور
+no_errors_create_link_msg: اگر شما می خواهید لینکی به این صفحه ایجاد نمایید (یعنی، نتایج \ این اعتبار سنجی) اجازه می دهد جهت اجازه یا تایید اعتبار مجدد این صفحه در آینده آسانتر ساخته شود هست URI ،دیگران که صفحه ی شما را تایید اعتبار می نمایند:
+no_errors_forHTML_only_msg: HTML/XML تنها برای سند
+no_errors_bookmark_msg: .یا، شما فقط می توانید صفحه ی فعلی را به بوکمارک ها یا هات لیست خود اضافه نمایید
+note_valide_html: .شما نیازمند یک نمودار درختی تجزیه سند صحیح است CSS جهت فعالیت بصورت مورد نظر، شیوه نامه .را بکار برید <a href="http://validator.w3.org/">valid HTML</a> این بدین منظور است که باید
+top: بالا
+# hook_html_validator: <!-- تولید شده در اجرا -->
+not-css1-style: /* نیست CSS1 مواظب باشید! این یک مشخصه ی */
+errors_sorry_msg: با تأسف! خطاهای ذیل را یافتیم
+# errors_list: <!-- تولید شده در اجرا -->
+# warnings_list: <!-- تولید شده در اجرا -->
+# rules_count: <!-- تولید شده در اجرا -->
+valid_CSS_info: معتبر CSS اطلاعات
+# charset: <!-- تولید شده در اجرا -->
+# rules_list: <!-- تولید شده در اجرا -->
+CSS_not_found: هیچ شیوه نامه ای یافت نشد
+home: خانه
+about: در مورد
+doc: مستند سازی
+dl: دانلود
+feedback: بازخورد
+credits: قدردانی
+home_title: W3C CSS صفحه اصلی برای سرویس اعتبار سنجی
+about_title: در مورد این سرویس
+doc_title: W3C CSS مستند سازی برای سرویس اعتبار سنجی
+dl_title: CSS دانلود و نصب اعتبار سنج
+feedback_title: چگونگی تهیه ی بازخورد در این سرویس
+credits_title: قدردانی و سپاسگزاریها
+W3C_quality_msg: موجب رساندن ابزارهای رایگان کیفیت وب و سایر موارد به شما می شود ،W3C فعالیت تضمین کیفیت
+learn_more_msg: در مورد شیوه نامه های آبشاری بیشتر یاد بگیرید
+support: حمایت از این ابزار و تبدیل شدن به
+supporter: حامی کنسرسیوم وب جهانی
+# انتهای متغیرهای بسرعت اضافه شده
+
+# تعاریف خطاهای شما و پیغام اخطار در اینجا
+content-type: text/html; charset=utf-8
+content-language: en
+output-encoding-name: utf-8
+
+# :(شما اینگونه می توانید سطح اخطار را تغییر دهید (مثال
+# warning.redefinition.level: 5
+# (سطح یک عدد صحیح مابین 0 و 9 است (تمامی مقادیر دیگر نادیده گرفته می شوند
+warning.redefinition: %s تعریف دوباره ی
+
+# xml استفاده شده توسط تجزیه کننده ی
+warning.style-inside-comment: را بصورتی قرار ندهید که احتمالا توسط مرورگر برداشته شوند HTML دستورات سبک درون توضیحات
+
+# org.w3c.css.properties.Css1Style استفاده شده توسط
+warning.same-colors: %s و %s رنگ یکسان برای
+warning.no-color: .شما هیچ مجموعه رنگ (یا رنگی که بصورت شفاف است) را ندارید اما شما مجموعه ای از یک رنگ پس زمینه را دارید. مطمئن شوید که با آبشار رنگها متن بخوبی خوانده شود
+warning.no-background-color: .شما هیچ رنگ پس زمینه (یا رنگ پس زمینه ای که بصورت شفاف است) را ندارید اما شما یک رنگ را انتخاب کرده اید. مطمئن شوید که آبشار رنگها متن را بخوبی خوانا می نماید
+#هم اکنون منسوخ شده است warning.color.mixed-capitalization
+#warning.color.mixed-capitalization: %s:اگرچه نامهای رنگ نسبت به حروف بزرگ و کوچک غیر حساسند، جهت خواناتر شدن نامها، نوشتن با حروف بزرگ ترکیبی توصیه شده است
+warning.no-generic-family: %s: به شما توصیه می شود تا یک گروه کلی را بعنوان آخرین جایگزین پیشنهاد نمایید
+warning.with-space: نامهای خانوادگی شامل فضای خالی بایستی نقل قول شده باشند. اگر نقل قول از قلم انداخته شده، هر فضای خالی کاراکترها قبل و بعد از نام رد شده اند و هر رشته ی فضای خالی کاراکترها درون .نام به یک تک فاصله تبدیل شده است 
+warning.no-padding: را با یک رنگ پس زمینه داشته باشید padding به شما توصیه می شود که یک ناحیه ی
+warning.same-colors2: %s و %s رنگهای یکسان برای رنگ و رنگ پس زمینه در دو مضمون
+warning.relative-absolute: .دارید. این شیوه نامه ی صحیحی نیست %s شما طولهای نسبی و مطلق اندکی در
+# بکار برده شده است org.w3c.css.properties.CssSelectors توسط
+warning.unknown-html: نیست HTML یک عنصر %s
+warning.html-inside: نمی تواند درون عنصر دیگری باشد HTML عنصر
+warning.body-inside: نمی تواند در داخل عنصر دیگری باشد HTML بجز درون عنصر BODY عنصر
+warning.pseudo-classes: در عناصر دیگر تاثیری ندارد 'A' غیر از %s لینک انچور شبه کلاس
+
+# .برای حالا بکار نرفته است org.w3c.css.properties.CssSelectors توسط
+warning.noinside: باشد inline نمی تواند درون یک عنصر %s
+warning.withblock: اضافه شده باشند block-level دقت کنید. شبه عناصر تنها می توانند به یک عنصر
+warning.block-level: .کاربرد دارد block-level این مشخصه برای عناصر
+
+# org.w3c.css.parser.Frame استفاده شده توسط
+warning.no-declaration: هیچ اعلانی در دستور نیست
+
+# org.w3c.css.parser.CssFouffa استفاده شده توسط
+warning.unsupported-import: شیوه نامه های وارد شده به شیوه های ورودی مستقیم و آپلود فایل بررسی نشده اند
+
+# org.w3c.css.values.CssColor استفاده شده توسط
+warning.out-of-range: خارج از محدوده است %s
+error.invalid-color: بی اعتبار RGB تابع
+
+warning.marker: کاربرد دارد 'display: marker' ویژگی نشانه گذار افست در عناصری با
+
+# org.w3c.css.properties.ACssStyle استفاده شده توسط
+warning.relative: بدست می آید %s با کاربرد واحدهای نسبی شیوه نامه های صحیح  بیشتری در ویژگی
+
+# org.w3c.css.css.StyleSheetParser و org.w3c.css.css.StyleSheetXMLParser استفاده شده توسط
+error.at-rule: .نمی تواند از ویژگی درخواست شده پشتیبانی نماید at-rule %s ،با تاسف
+
+# استفاده شده توسط تمامی مشخصات و مقادیر
+error.operator: اپراتور نادرستی می باشد %s
+error.negative-value: مقادیر منفی غیر مجازند %s
+error.few-value: %s مقادیر بسیار اندک برای ویژگی
+
+# در اینجا دقت کنید، نخست مقادیر می آیند
+# مقدار نادرستی است blue ،شما نمی توانید چنین چیزی را بنویسید : برای رنگ 
+error.value: نیست %s یک مقدار %s
+
+#org.w3c.css.properties3.CssToggleGroup استفاده شده توسط
+error.groupname: نام گروه صحیحی نیست. شناسه ی معتبری را بکار برید %s
+
+#org.w3c.css.properties3.CssGroupReset استفاده شده با
+error.nogroup: توسط ویژگی گروه ضامن تخصیص داده نشده است %s
+
+#org.w3c.css.properties3.CssGlyphOrVert استفاده شده توسط
+error.anglevalue: مقدار بایستی مابین 360- و 360 بوده و بر 90 قابل تقسیم باشد
+
+#org.w3c.css.properties3.CssTextKashidaSpace استفاده شده توسط
+error.percentage: مقدار درصدی مورد انتظار است
+
+#org.w3c.css.properties.CssTextAlign استفاده شده توسط
+warning.xsl: کاربرد دارد XSL تنها در %s مقدار
+
+#org.w3c.css.parser.analyzer.CssParser استفاده شده توسط
+warning.medialist: شروع شده باشد 'media :' %s لیست رسانه می بایستی با
+error.nocomb: مابین گزینشگرها در این پروفایل یا ورژن غیر مجاز است %s ترکیب کننده ی
+
+#org.w3c.css.properties.CssDirection استفاده شده توسط
+warning.direction: استفاده کنید CSS3 از 'writing-mode' برای عناصر سطح بلوک ویژگی جدید 'direction' بجای استفاده از
+
+# org.w3c.css.properties.CssTextDecoration استفاده شده توسط
+error.same-value: دوبار ظاهر می شود %s 
+
+error.generic-family.quote: .نامهای خانوادگی عمومی کلمات کلیدی هستند و بنابراین نبایستی نقل شده باشند
+
+# org.w3c.css.properties.CssClip استفاده شده توسط
+error.shape: (<top>,<right>,<bottom>,<left>) تعریف شکل نامعتبر دریافتی
+error.shape-separator: .جداساز نامعتبر در تعریف شکل. آن بایستی یک ویرگول باشد
+
+# org.w3c.css.properties.CssContent استفاده شده توسط
+error.attr: attr(X) بی اعتبار attr تعریف
+error.function: تعریف عمل نامعتبر 
+error.counter: (<identifier>[,<list-style-type>]?) شمارشگر بی اعتبار شمارشگر تعریف
+error.counters: (<identifier>,<string>[,<list-style-type>]?) شمارشگرهای بی اعتبار شمارشگرهای تعریف
+
+# org.w3c.css.font.Src استفاده شده توسط
+error.format: (<string>[,<string>]*) فرمت بی اعتبار فرمت تعریف
+error.local: (<string>|<ident>+) فرمت بی اعتبار تعریف محلی
+
+# org.w3c.css.values.CssAngle, org.w3c.css.values.CssFrequency, org.w3c.css.values.CssTime, org.w3c.css.values.CssLength استفاده شده توسط
+error.unit: یک واحد نادرست است %s
+
+# org.w3c.css.aural.ACssAzimuth استفاده شده توسط
+error.degree: .موقعیت بایستی بر حسب درجات تشریح شده باشد
+
+# org.w3c.css.aural.ACssElevation استفاده شده توسط
+error.elevation.range: .ارتقا بصورت یک زاویه، مابین 'درجه90-' و 'درجه90' را تبیین می کند
+
+# org.w3c.css.aural.ACssPitchRange استفاده شده توسط
+error.range: .مقدار خارج از محدوده است. این مقدار بایستی مابین '0' و '100' باشد
+
+# org.w3c.css.properties.CssTextShadow استفاده شده توسط
+error.two-lengths: (.تعیین شده است (یک شعاع تیرگی ممکن است پس از افست سایه بصورت اختیاری تعریف شده باشد <length> یک افست سایه با دو مقدار
+
+error.integer: .این عدد بایستی یک عدد صحیح باشد
+error.comma: .جداساز ویرگول گم شده است
+
+# org.w3c.css.values.CssPercentage استفاده شده توسط
+error.percent: درصدی نادرست است %s
+
+# org.w3c.css.values.CssString استفاده شده توسط
+error.string: رشته ای نادرست است %s
+
+# org.w3c.css.values.CssURL استفاده شده توسط
+error.url: نادرست است URL یک %s
+
+# org.w3c.css.values.CssColor استفاده شده توسط
+error.rgb: اعداد هگزا دسیمال رنگ 3 یا 6 معتبر نیست %s
+error.angle: زاویه ی معتبری نیست. مقدار بایستی مابین 0 و 360 باشد %s
+
+# org.w3c.css.values.CssNumber استفاده شده توسط
+error.zero: باشد. شما بایستی بعد از عددتان یک واحد بگذارید %s تنها 0 می تواند یک
+
+# org.w3c.css.parser.CssPropertyFactory استفاده شده توسط
+error.noexistence-at-all: وجود ندارد %s مشخصه ی
+error.noexistence-media: وجود ندارد %s برای رسانه ی %s مشخصه ی
+error.noexistence: موجود است %s وجود ندارد اما در %s در %s مشخصه ی
+warning.noexistence: موجود است %s وجود ندارد اما در %s در %s مشخصه ی
+warning.noexistence-media: وجود ندارد %s برای رسانه ی %s مشخصه ی
+warning.notforusermedium : برای این واسط کار بر وجود ندارد %s مشخصه ی
+warning.noothermedium : مشخصات برای رسانه های دیگر توانایی کار برای واسط کاربر را ندارند
+# org.w3c.css.parser.AtRule* استفاده شده توسط
+error.noatruleyet: پشتیبانی نشده است CSS1 %s توسط @import دیگر از @rules 
+# org.w3c.css.parser.analyzer.CssParser استفاده شده توسط
+error.notforcss1: وجود ندارد CSS1 برای %s مقدار
+warning.pseudo: (%s) در پروفایل پیش فرض %s شبه عنصر یا شبه کلاس ناشناخته ی
+warning.nocomb: غیر مجاز است (%s) مابین گزینشگرها در این پروفایل %s ترکیب گر
+warning.charsetspecial: :دارد @charset این پرفایل ترکیب نحوی بسیار ویژه ای برای ادامه داده شده با فضایی دقیق، توسط نام رمزگذاری ادامه یافته است @charset .در گیومه ها، فورا توسط یک ویرگول نقطه ادامه یافته اند
+warning.notversion: نمی تواند بکار رفته باشد CSS: %s با این ورژن %s
+
+# org.w3c.css.parser.CssFouffa استفاده شده توسط
+error.unrecognize: مقادیر زیادند یا تشخیص داده نشده اند
+
+# org.w3c.css.parser.CssFouffa استفاده شده توسط
+generator.unrecognize: خطای تجزیه
+generator.dontmixhtml: .باشند HTML خطای تجزیه. شیوه نامه ها نبایستی شامل ترکیب نحوی 
+
+# org.w3c.css.css.StyleSheetGeneratorHTML2 استفاده شده توسط
+error.unknown: خطای ناشناخته
+
+# org.w3c.css.parser.CssSelectors استفاده شده توسط
+error.pseudo-element: نمی تواند ظاهر شود %s اینجا در بافت :%s شبه عنصر
+error.pseudo-class: نمی تواند ظاهر شود HTML از %s اینجا در بافت .%s شبه کلاس
+error.pseudo: %s شبه عنصر ناشناخته یا شبه کلاس
+error.id: .تعیین شده باشد %s :می تواند در یک گزینشگر ساده ی ID بی اعتبار است! تنها یک گزینشگر #%s ی ID گزینشگر
+error.space: .نبایستی محتوی فواصل باشد %s اگر گزینشگر ویژگی =~ بکار رفته است، واژه در مقدار
+error.todo : .مورد پشتیبانی قرار نگرفته است %s متاسفانه هنوز ویژگی
+error.incompatible: ناسازگارند %s و %s
+warning.incompatible: ناسازگارند %s و %s
+error.notformobile: نمی تواند با پروفایل سیار بکار رفته باشد %s
+error.notforatsc: بکار رفته باشد ATSC نمی تواند با پروفایل %s
+error.notfortv: بکار رفته باشد TV نمی تواند با پروفایل %s
+error.notversion: بکار رفته باشد CSS: %s نمی تواند با این ورژن %s
+
+error.media: %s رسانه های ناشناس 
+error.page: %s صفحه ی نام برده ی ساختگی ناشناس
+
+error.unrecognized.link: .xml-stylesheet PI عنصر لینک ناشناس یا
+
+# StyleSheetGeneratorHTML استفاده شده توسط
+generator.context: مفهوم
+generator.request: .خطایی در جریان برونداد شیوه نامه رخ داده است .بفرستید plh@w3.org لطفا درخواست خود را تصحیح کنید یا ایمیلی به.
+generator.unrecognized: ناشناس
+generator.invalid-number: شماره ی بی اعتبار
+generator.property: خطای مقدار
+generator.line: خط
+generator.not-found: فایل پیدا نشد
+
+generator.doc-html: <!-- برداشته شده است olivier 2006-12-14 این پیغام گنگ -->
+generator.doc: <!-- برداشته شده است olivier 2006-12-14 این پیغام گنگ -->
+
+
+# استفاده شده توسط تجزیه گر
+parser.semi-colon: سعی نمایید که قبل از نام مشخصه یک ویرگول نقطه را بیابید. آنرا اضافه نمایید
+
+parser.unknown-dimension: بُعد ناشناخته
+
+parser.old_class: ،(".55ft") یک نام کلاس می توانست شروع شود با یک رقم ،CSS1 در دارای چنین کلاس هایی است که تجزیه شده اند بصورت CSS2 ،("#55ft") اگر نبود یک بُعد (ابعاد ناشناخته (با در نظر گرفتن افزایش واحدهای جدید در آینده ".3%s" نیازمند آن است که صرف نظر کرده باشد از نخستین رقم CSS2 ،به یک کلاس معتبر ".%s" جهت تبدیل
+
+parser.old_id: ،("#55ft") می توانست شروع شود با یک عدد id یک نام ،CSS1 در هایی است که تجزیه شده اند بصورت id دارای چنین CSS2 ،("#55ft") اگر نبود بُعد (ابعاد ناشناخته (با مجاز بودن افزایش واحدهای جدید در آینده
+
+parser.class_dim: ،("#55ft") یک نام کلاس می تواند شروع شود با یک عدد ،CSS1 در .(".55in") اگر نباشد بُعد
+
+parser.id_dim: ،("#55ft") می تواند شروع شود با یک عدد id یک نام ،CSS1 در .(".55in") اگر نباشد بُعد
+
+parser.charset: تنها می تواند در شروع استایل واقع شود @charset دستور .ورق. لطفا بررسی نمایید که در آنجا قبل از آن فواصلی موجود نباشند
+
+parser.charsetspecial: :دارد @charset این پروفایل ترکیب نحوی بسیار ویژه ای برای ادامه یافته دقیقا با یک فضا، ادامه داده شده توسط نام رمزگذاری @charset .در گیومه ها، فورا با یک ویرگول نقطه ادامه یافته است 
+
+warning.old_id: ،("#55ft") می تواند شروع شود با یک عدد id یک نام ،CSS1 در هایی است که تجزیه شده اند بصورت id دارای چنین CSS2 ،("#55ft") اگر نباشد بُعد (ابعاد ناشناخته (با در نظر گرفتن افزایش واحدهای جدید در آینده
+
+warning.old_class: ،("#55ft") یک نام کلاس می تواند شروع شود با یک عدد ،CSS1 در هایی است که تجزیه شده اند بصورت id دارای چنین CSS2 ،("#55ft") اگر نباشد بُعد .(ابعاد ناشناخته (با در نظر گرفتن افزایش واحدهای جدید در آینده
+
+# (servlet) استفاده شده توسط سرولت
+servlet.invalid-request: .شما درخواست بی اعتباری فرستاده اید
+servlet.process: نمی تواند شیء را پردازش نماید
+
+warning.atsc: پشتیبانی شده باشد atsc-tv نمی تواند توسط رسانه ی %s
+error.onlyATSC: می باشد atsc-tv این تابع تنها برای رسانه ی %s
+
+warning.otherprofile: برای این پروفایل وجود ندارد، اما در انطباق با پروفایل دیگری تایید اعتبار شده است %s مشخصه ی
+warning.deprecated: این مقدار نامناسب شناخته شده است
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/Messages.properties.fr	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,399 @@
+# French translation, last updated in sync with Messages.properties.en,v 1.31
+
+direction: ltr
+language_name: Français
+more_options: Options supplémentaires
+title_more_options: Cacher/Révéler les options supplémentaires de validation
+all: Tous
+normal_report: Rapport normal
+most_important: Les plus importants
+no_warnings: Aucun avertissement
+profile: Profil
+no_special_profile: Aucun profil particulier
+css1: CSS niveau 1
+css2: CSS niveau 2
+css21: CSS niveau 2.1
+css3: CSS niveau 3
+SVG: SVG
+svgbasic: SVG Basic
+svgtiny: SVG tiny
+mobile: Mobile
+ATSC_TV_profile: Profil ATSC TV
+TV_profile: Profil TV
+medium: Média
+aural: aural
+braille: braille
+embossed: embossed
+handheld: handheld
+print: print
+projection: projection
+screen: screen
+tty: TTY
+tv: TV
+presentation: presentation
+
+type: Type
+no_special_type: Automatique
+html_doc: HTML
+css_doc: CSS
+
+check: Vérifier
+W3C_CSS_validation_service: Service de validation CSS du W3C
+check_CSS: Vérifiez vos feuilles de style CSS et vos documents HTML stylés avec CSS
+by_URI: par adresse URI
+by_file_upload: par chargement de Fichier
+by_direct_input: par Saisie Directe
+validate_by_URI: Validation par adresse URI
+enter_uri: Saisissez l'adresse URI du document (HTML avec CSS, ou CSS seul) à valider
+page_address: Adresse du document à valider
+address: Adresse
+submit_uri: Vérifier le document sélectionné
+validate_by_file_upload: Valider par Chargement de Fichier
+choose_document: Choisissez la feulle de style à valider
+choose_local_file: Choisir un fichier local à valider
+local_CSS_file: Fichier CSS local
+submit_file: Valider le fichier selectionné
+validate_by_input: Validation par Saisie Directe
+enter_CSS: Saisissez la feuille de style à valider  (ATTENTION : feuilles de style CSS uniquement)
+submit_input: Valider la feuille de style
+note: Remarque
+note_xhtml_valid: Si vous souhaitez valider une feuille de style incorporée dans un document (X)HTML, vous devriez d'abord <a href="http://validator.w3.org/">vérifier la validité de votre document (X)HTML</a>
+note_valide_html: Les resultats de la validation de feuilles de styles incorporées dans un document (X)HTML ne sont fiables que si <a href="http://validator.w3.org/">le document HTML est valide</a>.
+# End of variables added along with Index page template
+
+W3C_validator_results: Résultats de la validation W3C CSS de
+# file_title: <!-- provided by the user -->
+CSS_validation_service: CSS validation Service
+jump_to: Aller à
+# errors_count: <!-- generated on the fly -->
+errors: Erreurs
+# warnings_count <!-- generated on the fly -->
+warnings: Avertissements
+validated_CSS: CSS valide
+congrats: Félicitations ! Aucune erreur trouvée.
+# The sentence defined by doc_validates_before_link and doc_validates_after_link variables goes: \
+# "This document validates as CSSXX!" where XX stands for the CSS version used \
+# Since the content of the link about the CSS version is generated on the fly, \
+# it is important to define what goes before the link and what goes afterwards in 2 separate \
+# variables because the position of the link in the sentence varies in different languages
+doc_validates_before_link: Ce document est valide conformément à la recommandation 
+doc_validates_after_link: !
+no_errors_interoperable_msg: Pour montrer à vos lecteurs votre souci d'interopérabilité lors de la \
+création de cette page Web, vous pouvez afficher cette icône sur toutes les \
+pages valides. Voici le fragment de XHTML que vous pouvez utiliser pour ajouter \
+cette icône à votre page Web:
+valid_CSS: CSS Valide !
+# <!-- close the img tag with > instead of /> if using HTML<= 4.01 -->
+no_errors_close_tags_msg: fermez le tag img avec &gt; au lieu de /&gt; si vous utilisez HTML &lt;= 4.01
+no_errors_dl_local_msg: Si vous le désirez, vous pouvez télécharger une copie de cette image \
+dans votre répertoire Web local, et changer le fragment d'HTML décrit ci-dessus pour \
+réferencer le nouvel emplacement de celle-ci.
+no_errors_create_link_msg: Si vous voulez créer un lien direct sur le résultat de cette validation, \
+afin de revalider facilement, ou de permettre à d'autres de vérifier \
+facilement la validité de votre document, l'URI de cette page est :
+no_errors_forHTML_only_msg: uniquement avec des documents HTML/XML
+no_errors_bookmark_msg: Vous pouvez aussi l'ajouter directement à vos signets.
+top: Top
+# hook_html_validator <!-- generated on the fly -->
+not-css1-style: /* ATTENTION! Ce n'est pas une propriété CSS1! */
+errors_sorry_msg: Désolé ! Les erreurs suivantes ont été trouvées :
+# errors_list: <!-- generated on the fly -->
+# warnings_list: <!-- generated on the fly -->
+# rules_count: <!-- generated on the fly -->
+valid_CSS_info: Votre feuille de style CSS validée :
+# charset: <!-- generated on the fly -->
+# rules_list: <!-- generated on the fly -->
+CSS_not_found: Aucune feuille de style trouvée
+home: Accueil
+about: À propos
+doc: Documentation
+dl: Télécharger
+feedback: Contact
+credits: Remerciements
+home_title: Page d'accueil du service de validation CSS de W3C
+about_title: À propos de ce service
+doc_title: Documentation du service de validation CSS du W3C
+dl_title: Télécharger et installer le CSS validator
+feedback_title: Donner un avis à propos de ce service
+credits_title: Mentions et remerciements
+W3C_quality_msg: L'activité Assurance Qualité du W3C vous offre des outils Web gratuits de qualité et plus encore
+learn_more_msg: Plus d'informations sur les feuilles de style en cascade
+support: Aidez le validateur, devenez
+supporter: Contributeur du W3C
+# End of variables added along with Velocity
+
+# Defines your own error and warning message here
+content-type: text/html; charset=utf-8
+content-language: fr
+output-encoding-name: utf-8
+
+# You can change the level warning like this (example) :
+# warning.redefinition.level: 5
+#  level is an integer between 0 and 9 (all others values are ignored)
+warning.redefinition: Redéfinition de la propriété %s
+
+# used by xml parser
+warning.style-inside-comment: Do not put style rules inside HTML comments as they may be removed by user agent
+
+# used by org.w3c.css.properties.Css1Style
+warning.same-colors: %s et %s sont de la même couleur
+warning.no-color: Vous n'avez pas de couleur définie avec votre \
+couleur de fond
+warning.no-background-color: Vous n'avez pas de couleur de fond définie \
+avec votre couleur
+#warning.color.mixed-capitalization is now obsolete
+#warning.color.mixed-capitalization: Bien que les noms de couleurs ne dépendent pas de la casse,\
+il est recommandé d'utiliser la capitalisation mixte pour rendre les noms plus lisibles: %s
+warning.no-generic-family: %s: Vous êtes encouragés à proposer une famille \
+générique comme dernier choix
+warning.with-space: Les noms de familles contenant des espaces doivent être mis entre \
+guillemets. Si les guillemets sont omis, tous les espaces avant et après \
+le nom seront ignorés et toute séquence d'espaces à l'intérieur du nom sera \
+remplacée par un seul espace.
+warning.no-padding: Il est recommandé d'avoir une zone de remplissage lors de \
+l'utilisation d'une couleur de fond
+warning.same-colors2: La même couleur est utilisée en tant que couleur et couleur de \
+fond dans les deux contextes %s et %s
+warning.relative-absolute: Vous avez des longueurs absolues et relatives dans %s, votre feuille de \
+style n'est pas très robuste.
+
+# used by org.w3c.css.properties.CssSelectors
+warning.unknown-html: %s n'est pas un élément 'HTML'
+warning.html-inside: L'élément 'html' ne peut être dans un autre élément
+warning.body-inside: L'élément 'body' ne peut être dans un élément autre que 'html'
+warning.pseudo-es: La «pseudo-classe» "anchor" %s n'a pas d'effets sur d'autres éléments que 'a'
+
+# not used by org.w3c.css.properties.CssSelectors for the moment
+warning.noinside: %s ne peut exister a l'intérieur d'un element en-ligne
+warning.withblock: Attention, les «pseudo-éléments» ne peuvent être attachés qu'à \
+des éléments de type "bloc".
+warning.block-level: Cette propriété ne s'applique qu'aux éléments de type \
+"bloc".
+
+# used by org.w3c.css.parser.Frame
+warning.no-declaration: Pas de déclarations dans cette règle
+
+# used by org.w3c.css.parser.CssFouffa 
+warning.unsupported-import: En mode «chargement de fichier» et «saisie directe», le validateur ne vérifie pas les feuilles de style importées.
+
+# used by org.w3c.css.values.CssColor
+warning.out-of-range: %s est hors-limites
+error.invalid-color: Cette fonction RVB est invalide
+
+warning.marker: La propriété "marker-offset" ne s'applique que sur des\
+ éléments contenant 'display: marker'
+
+# used by org.w3c.css.properties.ACssStyle
+warning.relative: L'utilisation d'unités relatives pour la propriété \
+%s rend la feuille de style plus robuste
+
+# used by org.w3c.css.css.StyleSheetParser and org.w3c.css.css.StyleSheetXMLParser
+error.at-rule: Désolé mais la règle-arobase %s n'est pas implementée
+
+# used by all properties and values
+error.operator: %s n'est pas un opérateur correct
+error.negative-value: Les valeurs négatives de %s ne sont pas autorisées
+error.few-value: Il n'y a pas assez de valeurs pour la propriété %s
+
+# be careful here, values comes first
+# You can't write something like this : For the color, blue is an incorrect value
+error.value: %s n'est pas une valeur de %s
+
+# used by org.w3c.css.properties3.CssToggleGroup
+error.groupname: %s n'est pas un nom de groupe correct. Utilisez un bon identifiant
+
+#used by org.w3c.css.properties3.CssGroupReset
+error.nogroup: %s n'a pas été initialisé par toggle-group
+
+#used by org.w3c.css.properties3.CssGlyphOrVert
+error.anglevalue: La valeur doit être entre -360 et 360 et divisable par 90
+
+#used by org.w3c.css.properties3.CssTextKashidaSpace
+error.percentage: La valeur doit être un pourcentage
+
+#used by org.w3c.css.properties.CssDirection
+warning.direction: au lieu de 'direction' pour les éléments block-level il vaut mieux utiliser 'writing-mode' qui est nouveau dans CSS3
+
+# used by org.w3c.css.properties.CssTextDecoration
+error.same-value: %s apparait deux fois
+
+error.generic-family.quote: Les noms de familles génériques sont des mots-clefs, \
+ils doivent donc être sans guillemets.
+
+# used by org.w3c.css.properties.CssClip
+error.shape: Définition de forme non valide: rect(<haut>,<droit>,<bas>,<gauche>)
+error.shape-separator: Séparateur non valide dans la définition de la forme, \
+cela doit être une virgule.
+
+# used by org.w3c.css.properties.CssContent
+error.attr: Définition d'attribut non valide attr(X)
+error.function: Définition non valide de fonction
+error.counter: Définition de compteur non valide counter(<identifier>[,<list-style-type>]?)
+error.counters: Définition de compteurs non valide counters(<identifier>,<string>[,<list-style-type>]?)
+
+# used by org.w3c.css.font.Src
+error.format: Définition de format non valide format(<string>[,<string>]*)
+error.local: Définition de format non valide local(<string>|<ident>+)
+
+# used by org.w3c.css.values.CssAngle, org.w3c.css.values.CssFrequency, org.w3c.css.values.CssTime, org.w3c.css.values.CssLength
+error.unit: %s n'est pas une unité valable.
+
+# used by org.w3c.css.aural.ACssAzimuth
+error.degree: La position doit être decrite en degrés
+
+# used by org.w3c.css.aural.ACssElevation
+error.elevation.range: L'élévation doit être exprimée en tant qu'angle, \
+entre '-90deg' et '90deg'.
+
+# used by org.w3c.css.aural.ACssPitchRange
+error.range: Cette valeur est hors-limites, elle doit être comprise entre '0' et '100'.
+
+# used by org.w3c.css.properties.CssTextShadow
+error.two-lengths: Une compensation d'ombre (shadow offset) est définie par deux valeurs \
+de <longueur> (Un rayon de flou optionnel peut être ajouté après cette \
+définition).
+
+error.integer: Ce nombre doit être entier.
+error.comma: Le séparateur 'virgule' est manquant.
+
+# used by org.w3c.css.values.CssPercentage
+error.percent: %s est une valeur de pourcentage incorrecte
+
+# used by org.w3c.css.values.CssString
+error.string: %s n'est pas une chaine de caractère correcte
+
+# used by org.w3c.css.values.CssURL
+error.url: %s n'est pas une URL correcte.
+
+# used by org.w3c.css.values.CssColor
+error.rgb: %s n'est pas une couleur valide (qui doit contenir 3 ou 6 chiffres hexadécimaux).
+error.angle: %s n'est pas une angle valide. La valeur doit être entre 0 et 360 
+
+# used by org.w3c.css.values.CssNumber
+error.zero: only 0 can be a %s. You must put an unit after your number
+
+# used by org.w3c.css.css.StyleSheetGeneratorHTML2
+error.unknown: Erreur inconnue
+
+# used by org.w3c.css.parser.CssPropertyFactory
+error.noexistence-at-all: La propriété %s n'existe pas
+error.noexistence-media: La propriété %s n'existe pas pour le media %s
+error.noexistence: La propriété %s n'existe pas en %s. mais existe en %s
+warning.noexistence: La propriété %s n'existe pas en %s. mais existe en %s
+warning.noexistence-media: La propriété %s n'existe pas pour le media %s
+warning.medialist: La liste de media (medialist) doit commencer par 'media :' %s
+# used by org.w3c.css.parser.CssFouffa
+error.unrecognize: Trop de valeurs, ou valeurs non reconnues
+
+# used by org.w3c.css.parser.CssFouffa
+generator.unrecognize: Erreur lors de l'analyse grammaticale.
+generator.dontmixhtml: Erreur de Syntaxe: une feuille de style ne peut inclure de fragments de HTML.
+
+# used by org.w3c.css.parser.CssSelectors
+error.pseudo-element: Le pseudo-élément %s ne peut apparaitre dans le contexte %s
+error.pseudo-class: La pseudo-classe .%s ne peut apparaitre dans le contexte HTML %s
+warning.pseudo-classes: La pseudo-class d'ancre %s n'a d'effet que sur l'element 'A'
+error.pseudo: Pseudo-élément ou pseudo-classe %s inconnu(e)
+error.id: Le sélécteur d'identificateur n'est pas valide! \
+Un selecteur simple: %s ne peut avoir qu'un seul sélécteur d'identificateur
+error.space: Si le sélécteur d'attribut ~= est utilisé, alors le mot de la \
+valeur %s ne doit pas contenir d'espaces.
+error.todo : Désolé, mais cette fonctionnalité n'est pas encore disponible.
+error.incompatible: %s et %s ne sont pas compatibles.
+warning.incompatible: %s et %s ne sont pas compatibles.
+
+error.media: media %s non reconnu 
+error.page: Page pseudo-nommée %s non reconnue
+warning.xsl: %s ne s'applique qu'aux feuilles de style XSL
+
+# used by StyleSheetGeneratorHTML
+generator.context: Contexte
+generator.request: Une erreur s'est produite lors de l'ecriture de votre feuille de style. \
+Veuillez corriger votre requète, ou envoyez un courrier électronique à plh@w3.org.
+generator.unrecognized: Non reconnu
+generator.invalid-number: Nombre erroné
+generator.property: Propriété erronée
+generator.line: Ligne
+generator.not-found: Fichier introuvable
+generator.doc-html: <!-- removed this confusing message olivier 2006-12-14 -->
+generator.doc: <!-- removed this confusing message olivier 2006-12-14 -->
+
+# used by the parser
+parser.semi-colon: impossible de trouver un point-virgule avant le nom de la \
+propriété, ajoutez-le.
+
+parser.unknown-dimension: Dimension inconnue
+
+parser.old_class: En CSS1, il était possible d'avoir un nom de classe \
+commençant par un chiffre (".55xx") sauf s'il s'agissait d'une dimension \
+(".55cm"). En CSS2, de tels noms sont analysés comme étant des dimensions \
+inconnues, pour permettre l'ajout de nouvelles unités). Pour que "%s" soit \
+un nom de classe CSS2 valide, le premier chiffre doit être échappé "%s"
+
+parser.old_id: En CSS1, il était possible d'avoir un nom d'id \
+commençant par un chiffre ("#55xx") sauf s'il s'agissait d'une dimension \
+("#55cm"). En CSS2, de tels noms sont analysés comme étant des dimensions \
+inconnues, pour permettre l'ajout de nouvelles unités).
+
+parser.class_dim: En CSS1, il est possible d'avoir un nom de classe \
+commençant par un chiffre (".55xx") sauf s'il s'agit d'une dimension \
+(".55cm").
+
+parser.id_dim: En CSS1, il est possible d'avoir un nom d'id \
+commençant par un chiffre ("#55xx") sauf s'il s'agit d'une dimension \
+("#55cm").
+
+parser.charset: La règle @charset doit apparaitre au début du fichier. \
+Vérifiez qu'il n'y a pas d'espace avant.
+
+parser.charsetspecial:Ce profil a une syntaxe très spécifique pour @charset : \
+@charset suivi d'exactement un espace, suivi du nom de l'encodage entre \
+guillemets, immédiatement suivi par un point-virgule.
+
+warning.old_class: En CSS1, il est possible d'avoir un nom de classe \
+commençant par un chiffre (".55xx") sauf s'il s'agit d'une dimension \
+(".55cm"). En CSS2, de tels noms sont analysés comme étant des dimensions \
+inconnues, pour permettre l'ajout de nouvelles unités).
+
+warning.old_id: En CSS1, il est possible d'avoir un nom d'id \
+commençant par un chiffre ("#55xx") sauf s'il s'agit d'une dimension \
+("#55cm"). En CSS2, de tels noms sont analysés comme étant des dimensions \
+inconnues, pour permettre l'ajout de nouvelles unités).
+
+# used by the servlet
+servlet.invalid-request: Vous avez envoyé une requète erronée.
+servlet.process: Impossible de travailler sur l'objet.
+
+error.notforcss1 : La valeur %s n'existe pas dans le cadre de CSS1
+warning.pseudo: Le pseudo-element ou pseudo-class %s est inconnu dans le profil par défaut (%s)
+warning.nocomb: La combinaison de selecteurs %s n'est pas autorisée pour ce profil CSS (%s)
+warning.charsetspecial: Ce profil possède une syntaxe très particulière pour @charset: \
+@charset doit être immédiatement suivi d'un espace, puis le nom de l'encodage \
+entre guillemets, suivi immédiatement d'un point-virgule..
+warning.notversion: %s ne peut être utilisé dans cette version de CSS : %s
+
+warning.noothermedium : Certaines propriétés relatives à d'autres media peuvent ne pas s'appliquer à ce medium
+warning.notforusermedium : La propriété %s n'existe pas pour ce medium d'utilisateur
+error.noatruleyet : Excepté @import, les règles @ ne sont pas supportés en CSS1 : %s
+error.notformobile : %s ne peut pas être utilisé pour le profile mobile
+error.notforatsc: %s ne peut pas être utilisé pour le profil ATSC
+error.notfortv: %s ne peut pas être utilisé pour le profil TV
+error.notversion: %s ne peut pas être utilisé pour cette version CSS: %s
+
+warning.atsc : il se peut que %s ne soit pas supporté par atsc-tv
+error.onlyATSC : cette fonction est seulement pour le @media atsc-tv
+
+error.unrecognized.link: La balise link ou l'instruction de traitement\
+ xml-stylesheet ne sont pas reconnues.
+
+warning.otherprofile : propriété %s n'existe pas dans ce profile mais est validée conforme à un autre profile
+warning.deprecated : cette valeur est déconseillée
+
+#used by org.w3c.css.parser.analyzer.CssParser
+error.nocomb: Le Combinateur de sélecteurs %s n'est pas admis dans ce profile ou cette version
+
+warning.float-no-width: En (x)HTML+CSS, les éléments flottants doivent avoir leur largeur déclarée. Seul les éléments ayant une largeur intrinsève (html, img, input, textarea, select, or object) ne sont pas sujets a cette règle
+parser.charsetcss1: la règle @charset ne doit pas être utilisée en CSS1
+parser.attrcss1: les sélecteurs d'attribut ne doivent pas être utilisés en CSS1
+parser.invalid_id_selector: Sélécteur d'ID invalide
+parser.import_not_allowed: @import n'est pas autorisé s'il apparaît après toute déclaration autre que @charset et @import.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/Messages.properties.it	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,369 @@
+# Italian translation, last updated in sync with Messages.properties.en,v 1.31
+
+direction: ltr
+language_name: Italiano
+more_options: Maggiori opzioni
+title_more_options: Visualizza/nascondi le modalità avanzate di verifica
+all: Tutti
+normal_report: Rapporto normale
+most_important: I più importanti
+no_warnings: Nessun avviso
+profile: Profilo
+no_special_profile: Nessun profilo specifico
+css1: CSS versione 1
+css2: CSS versione 2
+css21: CSS versione 2.1
+css3: CSS versione 3
+SVG: SVG
+svgbasic: SVG Basic
+svgtiny: SVG tiny
+mobile: Mobile
+ATSC_TV_profile: Profilo ATSC TV
+TV_profile: TV profilo
+medium: Media
+aural: aural
+braille: braille
+embossed: embossed
+handheld: handheld
+print: print
+projection: projection
+screen: screen
+tty: TTY
+tv: TV
+presentation: presentation
+
+type: Tipo
+no_special_type: Automatico
+html_doc: HTML
+css_doc: CSS
+
+check: Verifica
+W3C_CSS_validation_service: Servizio di validazione del W3C per i fogli di stile a cascata (CSS)
+check_CSS: Verifica i fogli di stile a cascata (CSS) e i documenti (X)HTML contenenti fogli di stile
+by_URI: tramite URI (indirizzo)
+by_file_upload: tramite trasferimento file
+by_direct_input: tramite immissione diretta
+validate_by_URI: Validazione tramite URI
+enter_uri: Inserisci il percorso (URI) di un documento (HTML con CSS o solamente CSS) che desideri sottoporre alla validazione
+page_address: Indirizzo della pagina da verificare
+address: Indirizzo
+submit_uri: Invia il file per la validazione
+validate_by_file_upload: Validazione tramite trasferimento file
+choose_document: Seleziona il documento che desideri verificare
+choose_local_file: Seleziona un documento locale per da trasferire e verificare
+local_CSS_file: Documento CSS locale
+submit_file: Invia il file per la verifica
+validate_by_input: Validazione tramite immissione diretta
+enter_CSS: Inserisci il testo del CSS che desideri validare
+submit_input: Invia il codice per la verifica
+note: Nota
+note_xhtml_valid: Se desideri verificare un foglio di stile CSS interno ad un documento (X)HTML, dovresti prima <a href="http://validator.w3.org/">verificare la validità del codice (X)HTML</a>
+# End of variables added along with Index page template
+
+W3C_validator_results: Risultati della validazione W3C dei Fogli di Stile a Cascata (CSS) per 
+# file_title: <!-- provided by the user -->
+CSS_validation_service: Servizio di validazione CSS
+jump_to: Passa a
+# errors_count: <!-- generated on the fly -->
+errors: Errori
+# warnings_count <!-- generated on the fly -->
+warnings: Avvisi
+validated_CSS: Foglio CSS validato
+congrats: Congratulazioni! Nessun errore trovato.
+# The sentence defined by doc_validates_before_link and doc_validates_after_link variables goes: \
+# "This document validates as CSSXX!" where XX stands for the CSS version used \
+# Since the content of the link about the CSS version is generated on the fly, \
+# it is important to define what goes before the link and what goes afterwards in 2 separate \
+# variables because the position of the link in the sentence varies in different languages
+doc_validates_before_link: Questo documento è valido rispetto alla specifica 
+doc_validates_after_link: !
+no_errors_interoperable_msg: Per rendere visibile ai tuoi lettori che hai curato lo sviluppo per creare una pagina Web \
+interoperabile, puoi pubblicare questa icona in qualsiasi pagina che rispetta la validazione. \
+Di seguito il codice XHTML che puoi utilizzare per aggiungere questa icona alla tua pagina Web:
+valid_CSS: CSS Valido!
+# <!-- close the img tag with > instead of /> if using HTML<= 4.01 -->
+no_errors_close_tags_msg: Se si utilizza XHTML, chiudere l'elemento img con /&gt;. \
+Se si utilizza HTML &lt;= 4.01, chiudere l'elemento img tag con &gt; invece di /&gt;
+no_errors_dl_local_msg: Se lo desideri, puoi scaricare una copie di questa immagine per salvarla all'interno del tuo sito Web,\
+modificando il codice XHTML sopra riportato riferendolo all'immagine locale anziché a quella residente\
+in questo server. 
+no_errors_create_link_msg: Se desideri creare un collegamento a questa pagina (per esempio, al risultato di validazione)\
+per rendere più facile una futura riverifica di questa pagina o per consentire ad altre persone\
+di verificare la conformità della tua pagina, l'URI è:
+no_errors_forHTML_only_msg: solo per documenti HTML/XML
+no_errors_bookmark_msg: Oppure puoi solamente aggiungere la pagina corrente ai tuoi collegamenti preferiti.
+note_valide_html: To work as intended, your CSS style sheet needs a correct document parse tree. This means you should use <a href="http://validator.w3.org/">valid HTML</a>.
+top: Top
+# hook_html_validator <!-- generated on the fly -->
+not-css1-style: /* BE CAREFUL ! This is not a CSS1 property ! */
+errors_sorry_msg: Errori
+# errors_list: <!-- generated on the fly -->
+# warnings_list: <!-- generated on the fly -->
+# rules_count: <!-- generated on the fly -->
+valid_CSS_info: Informazioni valide per il Foglio di stile (CSS)
+# charset: <!-- generated on the fly -->
+# rules_list: <!-- generated on the fly -->
+CSS_not_found: Non è stato individuato alcun foglio di stile
+home: Pagina iniziale
+about: Riguardo questo servizio
+doc: Documentazione
+dl: Download
+feedback: Commenti
+credits: Crediti
+home_title: Pagina iniziale del servizio di validazione CSS del W3C
+about_title: Informazioni sul servizio
+doc_title: Documentazione per il servizio di validazione W3C per i fogli di stile CSS
+dl_title: Scarica ed installa il validatore CSS
+feedback_title: Come fornire commenti al servizio
+credits_title: Crediti e ringraziamenti
+W3C_quality_msg: Attività W3C per la garanzia di qualità, fornisce strumenti gratuiti per la qualità del web e molto altro
+learn_more_msg: Maggiori informazioni sui fogli di stile a cascata (CSS)
+support: Aiuta questo strumento, diventa un
+supporter: Sostenitore del W3C
+# End of variables added along with Velocity
+
+# Defines your own error and warning message here
+content-type: text/html; charset=utf-8
+content-language: it
+output-encoding-name: utf-8
+
+# You can change the level warning like this (example) :
+# warning.redefinition.level: 5
+#  level is an integer between 0 and 9 (all others values are ignored)
+warning.redefinition: Ridefinizione di %s
+
+# used by xml parser
+warning.style-inside-comment: Non inserire regole per i fogli di sile all'interno di commenti HTML in quanto potrebbero essere rimossi dal browser.
+
+# used by org.w3c.css.properties.Css1Style
+warning.same-colors: Hai utilizzato lo stesso colore per %s e %s
+warning.no-color: Non hai definito un colore per il contenuto (oppure il colore principale è definito come trasparente) mentre hai definito un colore di sfondo. Verifica che il sovrapporsi dei colori garantisca una discreta leggibilità.
+warning.no-background-color: Non hai definito un colore di sfondo (oppure il colore di sfondo è definito come trasparente) mentre hai definito un colore per il contenuto.Verifica che il sovrapporsi dei colori garantisca una discreta leggibilità.
+#warning.color.mixed-capitalization is now obsolete
+#warning.color.mixed-capitalization: Anche se i nomi dei colori non sono sensibili all'uso di caratteri in maiuscolo e minuscolo, si raccomanda di non usare nomi con caratteri misti, in modo da renderli più leggibili: %s
+warning.no-generic-family: %s: si consiglia di fornire come ultima alternativa una tipologia generica di carattere.
+warning.with-space: Le tipologie di carattere che contengono degli spazi all'interno del nome dovrebbero essere racchiuse tra virgolette. Se si omettono le virgolette, qualsiasi spazio prima e dopo il nome viene ignorato e qualsiasi sequenza di caratteri di spaziatura all'interno del nome viene convertita in un singolo spazio. 
+warning.no-padding: si consiglia l'uso di un'area di padding in presenza di valori per background-color
+warning.same-colors2: Hai utilizzato lo stesso colore per il valore di color e per il valore di background-color in due contesti: %s e %s
+warning.relative-absolute: Utilizzi alcune unità di misura assolute ed altre di tipo relativo per %s. Questo non rende durevole il foglio di stile.
+ by org.w3c.css.properties.CssSelectors
+warning.unknown-html: %s non è un elemento HTML
+warning.html-inside: L'elemento HTML non può essere contenuto all'interno di un altro elemento
+warning.body-inside: L'elemento BODY non può essere utilizzato all'interno di un altro elemento ad eccezione dell'elemento HTML
+warning.pseudo-classes: La pseudo-classe per l'ancora %s non ha effetto se non per l'elemento 'A'
+warning.pseudo: Il pseudo-elemento o la pseudo-classe %s è sconosciuta nel profilo predefinito (%s)
+# not used by org.w3c.css.properties.CssSelectors for the moment
+warning.noinside: %s non può essere contenuto in un elemento di tipo inline
+warning.withblock: Attenzione. Gli pseudo-elementi possono essere applicati solo a degli elementi di tipo block-level.
+warning.block-level: Questa proprietà si applica ad elementi di tipo block-level.
+
+# used by org.w3c.css.parser.Frame
+warning.no-declaration: Non sono presenti dichiarazioni
+
+# used by org.w3c.css.parser.CssFouffa
+warning.unsupported-import: I fogli di stile importati non vengono validati nelle modalità di immissione diretta e di caricamento file
+
+# used by org.w3c.css.values.CssColor
+warning.out-of-range: %s è un valore non valido
+error.invalid-color: Funzione RGB non valida
+
+warning.marker: La proprietà marker-offset si applica agli elementi con 'display: marker'
+
+# used by org.w3c.css.properties.ACssStyle
+warning.relative: L'uso di unità relative garantisce maggior robustezza al foglio di stile nella proprietà %s
+
+# used by org.w3c.css.css.StyleSheetParser and org.w3c.css.css.StyleSheetXMLParser
+error.at-rule: Spiacente, at-rule %s non è implementata.
+
+# used by all properties and values
+error.operator: %s è un operatore non valido
+error.negative-value: non sono consentiti valori negativi per %s
+error.few-value: valori non sufficienti per la proprietà %s
+
+# be careful here, values comes first
+# You can't write something like this : For the color, blue is an incorrect value
+error.value: %s non è un valore per %s
+
+#used by org.w3c.css.properties3.CssToggleGroup
+error.groupname: %s non è un nome di gruppo corretto. Utilizza un identificatore valido
+
+#used by org.w3c.css.properties3.CssGroupReset
+error.nogroup: %s non è stato specificato dalla proprietà toggle-group
+
+#used by org.w3c.css.properties3.CssGlyphOrVert
+error.anglevalue: Il valore deve essere fra -360 e 360 ed essere dividibile per 90
+
+#used by org.w3c.css.properties3.CssTextKashidaSpace
+error.percentage: valore percentuale atteso
+
+#used by org.w3c.css.properties.CssTextAlign
+warning.xsl: il valore %s si applica solo a XSL
+
+#used by org.w3c.css.parser.analyzer.CssParser
+warning.medialist : medialist should start with 'media :' %s
+error.nocomb: Il combinatore %s fra selettori non è consentito in questo profilo o versione
+warning.nocomb: Non è consentito il combinatore %s tra i selettori per questo profilo (%s)
+
+#used by org.w3c.css.properties.CssDirection
+warning.direction: invece di utilizzare 'direction' per elementi block-level  utilizza la nuova proprietà CSS3 'writing-mode'
+
+# used by org.w3c.css.properties.CssTextDecoration
+error.same-value: %s appare due volte
+
+error.generic-family.quote: I nomi generici dei caratteri sono parole chiave, e percio non possono essere quotate.
+
+# used by org.w3c.css.properties.CssClip
+error.shape: Definizione non valida per la forma rect(<top>,<right>,<bottom>,<left>)
+error.shape-separator: Separatore non valido nella definizione di forma. Deve essere una virgola.
+
+# used by org.w3c.css.properties.CssContent
+error.attr: Definizione di attr(X) non valida
+error.function: Definizione di funzione non valida
+error.counter: Definizione di counter non valida  counter(<identifier>[,<list-style-type>]?)
+error.counters: Definizione di counters non valida  counters(<identifier>,<string>[,<list-style-type>]?)
+
+# used by org.w3c.css.font.Src
+error.format: Definizione di format non valida format(<string>[,<string>]*)
+error.local: Definizione di local non valida  local(<string>|<ident>+)
+
+# used by org.w3c.css.values.CssAngle, org.w3c.css.values.CssFrequency, org.w3c.css.values.CssTime, org.w3c.css.values.CssLength
+error.unit: %s è un'unità non corretta
+
+# used by org.w3c.css.aural.ACssAzimuth
+error.degree: La posizione deve essere descritta in gradi.
+
+# used by org.w3c.css.aural.ACssElevation
+error.elevation.range: Specifica l'elevation come un angolo, fra '-90deg' e '90deg'.
+
+# used by org.w3c.css.aural.ACssPitchRange
+error.range: Il valore è fuori dalla gamma di valori. Tale valore deve essere fra '0' e '100'.
+
+# used by org.w3c.css.properties.CssTextShadow
+error.two-lengths: Uno shadow offset viene specificato con due valori <length>  (Un blur radius può essere specificato eventualmente dopo lo shadow offset.)
+
+error.integer: This number should be an integer.
+error.comma: Manca la virgola separatrice.
+
+# used by org.w3c.css.values.CssPercentage
+error.percent: %s è una percentuale non corretta
+
+# used by org.w3c.css.values.CssString
+error.string: %s è una stringa non corretta
+
+# used by org.w3c.css.values.CssURL
+error.url: %s è un URL non corretto
+
+# used by org.w3c.css.values.CssColor
+error.rgb: %s non è un valido colore da 3 o 6 numeri esadecimali
+error.angle: %s non è un angolo valido. Il valore dovrebbe essere fra 0 e 360
+
+# used by org.w3c.css.values.CssNumber
+error.zero: only 0 can be a %s. Devi mettere un'unità dopo il tuo numero
+
+# used by org.w3c.css.parser.CssPropertyFactory
+error.noexistence-at-all: La proprietà %s non esiste
+error.noexistence-media: La proprietà %s non esiste per il media %s
+error.noexistence: La proprietà %s non esiste per %s ma esiste in %s
+warning.noexistence: La proprietà %s non esiste per %s ma esiste in %s
+warning.noexistence-media: La proprietà %s non esiste per il media %s
+warning.notforusermedium : La proprietà %s non esiste per questo usermedium
+warning.noothermedium : La proprietà per altri media non dovrebbero funzionare per usermedium
+# used by org.w3c.css.parser.AtRule*
+error.noatruleyet : Altre @rules diverse da @import non sono supportate dai CSS1 %s
+# used by org.w3c.css.parser.analyzer.CssParser
+error.notforcss1 : Il valore %s non esiste per i CSS1
+
+# used by org.w3c.css.parser.CssFouffa
+error.unrecognize: Vi sono troppi valori, oppure i valori non sono riconosciuti
+
+# used by org.w3c.css.parser.CssFouffa
+generator.unrecognize: Parse Error
+generator.dontmixhtml: Parse Error. Fogli di stile non deve includere la sintassi HTML.
+
+# used by org.w3c.css.parser.CssSelectors
+error.pseudo-element: Lo pseudo-element %s non può apparire in questo contesto %s
+error.pseudo-class: La pseudo-class .%s non può apparire qui nel contesto HTML %s
+error.pseudo: Pseudo-elemento o pseudo-classe non conosciuto %s
+error.id: ID selector #%s is invalid ! Un solo selettore ID può essere specificato in un selettore semplice: %s.
+error.space: Se è utilizato il selettore di attributo ~= , la parole nel valore %s non deve contenere spazi.
+error.todo : Ci spiacema la caratteristica %s non è ancora implementata.
+error.incompatible: %s e %s sono incompatibili
+warning.incompatible: %s e %s sono incompatibili
+error.notformobile : %s non può essere usato con un mobile profile
+error.notforatsc : %s non può essere usato con un ATSC profile
+error.notfortv : %s non può essere usato con un TV profile
+error.notversion : %s non può essere usato con questa versione di CSS : %s
+warning.notversion: %s non può essere utilizzato con questa versione di CSS : %s
+
+error.media: media non riconosciuto %s 
+error.page: pseudo nome di pagina non riconosciuto %s
+
+error.unrecognized.link: Elemento link o xml-stylesheet PI non riconosciuto.
+
+# used by StyleSheetGeneratorHTML
+generator.context: Contesto
+generator.request: Vi è stato un errore durtante l'output del tuo foglio di stile. \
+Per favore correggi la tua richiesta o manda un'email a plh@w3.org.
+generator.unrecognized: Non riconosciuto
+generator.invalid-number: Numero non valido
+generator.property: Numero non valido
+generator.line: Linea
+generator.not-found: File non trovato
+generator.doc-html: <!-- removed this confusing message olivier 2006-12-14 -->
+generator.doc:<!-- removed this confusing message olivier 2006-12-14 -->
+
+# used by the parser
+parser.semi-colon: provato a trovare un punto e virgola prima del nome della proprietà. aggiungilo
+
+parser.unknown-dimension: Sconosciuto dimensione.
+
+parser.old_class:Nei CSS1, un nome di classe potrebbe cominciare con una cifra (".55ft"), \
+a meno che non sia una dimensione (".55in"). Nei CSS2, tali classi vengono analizzate (parsed) come \
+dimensioni sconosciute (per permettere future aggiunte di nuove unità)
+
+parser.old_id:Nei CSS1, un nome id potrebbe cominciare con una cifra ("#55ft"), \
+a meno che non sia una dimensione ("#55in"). Nei CSS2, tali id vengono analizzati (parsed) come \
+dimensioni sconosciute (per permettere future aggiunte di nuove unità)
+
+parser.class_dim:Nei CSS1, un nome di classe può cominciare con una cifra (".55ft"), \
+a meno che non sia una dimensione (".55in").
+
+parser.id_dim:Nei CSS1, un nome id potrebbe cominciare con una cifra ("#55ft"), \
+a meno che non sia una dimensione ("#55in").
+
+parser.charset:La regola @charset può comparire solo all'inizio del foglio di \
+stile. Per favore controlla che non vi siano spazi prima di essa.
+
+parser.charsetspecial:Questo profilo ha una sintassi specifica per @charset: \
+@charset seguito esattamente da uno spazio, seguito dal nome della codifica \
+in doppi apici, seguito immediatamente da un punto e virgola.
+
+warning.charsetspecial: Questo profilo ha una sintassi molto
+particolare per @charset: @charset seguito da esattamente un singolo spazio,
+seguito dal nome della codifica fra doppie virgolette, seguito immediatamente
+da un punto e virgola.
+
+warning.old_id:Nei CSS1, un nome id può cominciare con una cifra ("#55ft"), \
+a meno che non sia una dimensione ("#55in"). Nei CSS2, tali id vengono analizzati (parsed) come \
+dimensioni sconosciute (per permettere future aggiunte di nuove unità)
+
+warning.old_class:Nei CSS1, un nome di classe può cominciare con una cifra ("#55ft"), \
+a meno che non sia una dimensione ("#55in"). Nei CSS2, tali id vengono analizzati (parsed) come \
+dimensioni sconosciute (per permettere future aggiunte di nuove unità)
+
+# used by the servlet
+servlet.invalid-request: Hai inviato una richiesta non valida.
+servlet.process: Non è possibile processare l'oggetto
+
+warning.atsc : %s potrebbe non essere supportato dal medium atsc-tv
+error.onlyATSC : %s questa funzione è valida solo per il medium atsc-tv
+
+warning.otherprofile : la proprietà %s non esiste per questo profilo, ma viene validata in conformità ad un altro profilo 
+warning.deprecated : questo valore è deprecato
+error.unknown: Errore sconosciuto
+
+warning.float-no-width: Nel (x)HTML+CSS, gli elementi con proprietà float hanno bisogno che la loro larghezza venga dichiarata. Soltanto gli elementi con una larghezza intrinseca (html, img, input, textarea, select, o object) non presentano questo problema
+parser.charsetcss1: La direttiva @charset non può essere usata nell'ambito del CSS1
+parser.attrcss1: I selettori di attributo non sono validi nei css1
+parser.invalid_id_selector: Selettore ID non valido.
+parser.import_not_allowed: @import non è permesso dopo nessun altra dichiarazione valida che non sia @charset e @import.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/Messages.properties.ja	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,360 @@
+# Japanese translation, last updated in sync with Messages.properties.en,v 1.31
+
+direction: ltr
+language_name: 日本語
+more_options: オプション
+title_more_options: その他の検査オプションを表示する/隠す
+all: 全て出力
+normal_report: 一般的なものを出力
+most_important: 重要なものだけ出力
+no_warnings: 出力しない
+profile: Profile
+no_special_profile: 特にプロファイルを指定しない
+css1: CSS レベル 1
+css2: CSS レベル 2
+css21: CSS レベル 2.1
+css3: CSS レベル 3
+SVG: SVG
+svgbasic: SVG Basic
+svgtiny: SVG tiny
+mobile: Mobile
+ATSC_TV_profile: ATSC TV profile
+TV_profile: TV profile
+medium: Medium
+aural: Aural
+braille: Braille
+embossed: Embossed
+handheld: Handheld
+print: Print
+projection: Projection
+screen: Screen
+tty: TTY
+tv: TV
+presentation: Presentation
+
+type: 種類
+no_special_type: 自動
+html_doc: HTML
+css_doc: CSS
+
+check: 検証する
+W3C_CSS_validation_service: W3C CSS 検証サービス
+check_CSS: カスケーディングスタイルシート(CSS)を検証
+by_URI: URLを指定
+by_file_upload: アップロード
+by_direct_input: 直接入力
+validate_by_URI: URLで指定して検証
+enter_uri: 検証したい文書(CSSと組み合わせたHTML文書、もしくはCSS単体の文書)のURIを入力してください
+page_address: 検証対象のアドレスを入力してください
+address: アドレス
+submit_uri: 検証するためのURIを送信します
+validate_by_file_upload: ソースファイルをアップロードして検証
+choose_document: 検証したいCSS文書のソースファイル名を入力してください
+choose_local_file: アップロード・検証するローカルのファイルを選択します
+local_CSS_file: CSSファイル
+submit_file: 検証するファイルを送信します
+validate_by_input: テキストエリアに直接入力して検証
+enter_CSS: 検証したいCSSをテキストエリアに入力してください (CSSソースのみ)
+submit_input: 入力したテキストを検証するために送信します
+note: メモ
+note_xhtml_valid: CSSスタイルシートを意図した通りに機能させるには、正しい文書解析木が必要です。つまり、<a href="http://validator.w3.org/">正当なHTML</a>を用いるべきです。
+# End of variables added along with Index page template
+
+W3C_validator_results: CSS 検証サービス検証結果
+# file_title: <!-- provided by the user -->
+CSS_validation_service: CSS 検証サービス
+jump_to: 表示
+# errors_count: <!-- generated on the fly -->
+errors: エラー 
+# warnings_count <!-- generated on the fly -->
+warnings: 警告 
+validated_CSS: 入力されたCSS
+congrats: おめでとうございます! エラーはありません。
+# The sentence defined by doc_validates_before_link and doc_validates_after_link variables goes: \
+# "This document validates as CSSXX!" where XX stands for the CSS version used \
+# Since the content of the link about the CSS version is generated on the fly, \
+# it is important to define what goes before the link and what goes afterwards in 2 separate \
+# variables because the position of the link in the sentence varies in different languages
+doc_validates_before_link: おめでとうございます! この文書は正当な
+doc_validates_after_link: として検証できました!
+no_errors_interoperable_msg: あなたがこのWebページを作るにあたって、\
+高度な相互運用性<span lang="en" xml:lang="en">(Interoperability)</span>\
+に対する配慮を行った事を読者に示すため、このアイコンを張る事をお勧めします。\
+あなたのWebページにこのアイコンを張るためには、次のHTMLの断片を利用すると良いでしょう。
+valid_CSS: 正当なCSSです!
+# <!-- close the img tag with > instead of /> if using HTML<= 4.01 -->
+no_errors_close_tags_msg: HTML 4.01 以前を使用する場合は img タグを /&gt; ではなく &gt; で閉じてください。
+no_errors_dl_local_msg: この画像はローカルコピーを使っても構いません。\
+つまり、あなたのWebサーバにこの画像のコピーをダウンロードしてディレクトリに保存し、\
+上記のHTMLの断片について、ダウンロードしたものを参照するように変更して使う事もできます。
+no_errors_create_link_msg: この検証結果のページに対するリンクを作りたい場合、\
+以下のURIを利用して下さい。\
+リンクを組み込んでおく事で、後からもう一度このページの検証を行ったり、\
+他の人がこのページを検証する事が容易になります。
+no_errors_forHTML_only_msg: HTML/XML 文書のみに有効
+no_errors_bookmark_msg: もちろん、このページをブックマークやホットリストに追加したのでもよいでしょう。
+note_valide_html: あなたの CSSスタイルシートを意図した通りに機能させるには、正しい文書解析木が必要です。つまり、<a href="http://validator.w3.org/">正しいHTML</a>を用いるべきです。
+top: Top
+# hook_html_validator <!-- generated on the fly -->
+not-css1-style: /* 注意して下さい ! このプロパティはCSS1用ではありません ! */
+errors_sorry_msg: エラー: 以下のエラーが見つかりました。
+# errors_list: <!-- generated on the fly -->
+# warnings_list: <!-- generated on the fly -->
+# rules_count: <!-- generated on the fly -->
+valid_CSS_info: 検証したスタイルシートを以下に示します
+# charset: <!-- generated on the fly -->
+# rules_list: <!-- generated on the fly -->
+CSS_not_found: スタイルシートが見つかりませんでした。
+home: ホーム
+about: このサービスについて
+doc: ドキュメント
+dl: ダウンロード
+feedback: お問い合わせ
+credits: 謝辞
+home_title: W3C CSS 検証サービスのホーム
+about_title: CSS 検証サービスについて
+doc_title: CSS 検証サービスドキュメント: 目次
+dl_title: CSS 検証サービスのダウンロードとインストール
+feedback_title: フィードバック
+credits_title: 謝辞
+W3C_quality_msg: W3CのQuality Assurance Activityによって、フリーなウェブ品質ツールなどが提供されています。
+learn_more_msg: カスケーディングスタイルシートについてもっと知る
+support: 参加してこのツールを支援しましょう:
+supporter: W3C サポーター
+# End of variables added along with Velocity
+
+# Defines your own error and warning message here
+content-type: text/html; charset=utf-8
+content-language: ja
+output-encoding-name: utf-8
+
+# You can change the level warning like this (example) :
+# warning.redefinition.level: 5
+#  level is an integer between 0 and 9 (all others values are ignored)
+warning.redefinition: %s が再定義されています
+
+# used by xml parser
+warning.style-inside-comment: ユーザエージェントによって削除される可能性があるので、スタイルルールはHTMLコメントの中に記述しないでください
+
+# used by org.w3c.css.properties.Css1Style
+warning.same-colors: %s と %s は同じ色です
+warning.no-color: 指定された背景色(background-color)に対応する前面色(color)が指定されていません
+warning.no-background-color: 指定された前面色(color)に対応する背景色(background-color)が指定されていません
+#warning.color.mixed-capitalization is now obsolete
+#warning.color.mixed-capitalization: 色の名前に大文字/小文字の区別はありませんが、\
+名前をより区別しやすくするため、大文字を混ぜて使う事が推奨されます: %s
+warning.no-generic-family: %s: 一般フォントファミリー名\
+(generic font family)を最後の選択肢として付け加えておく事を推奨します
+warning.with-space: 空白文字を含むフォントファミリー名は引用符で囲む必要が\
+あります。引用符を省略した場合、名前の前後の空白文字は無視され、また\
+名前の途中に含まれる連続した空白文字は全て一つの空白文字に変換されます
+warning.no-padding: 背景色(background-color)を持った padding 領域を持たせる事を推奨します
+warning.same-colors2: 二つのコンテキスト %s と %s で、同じ色が前面色\
+(color) と背景色 (background-color) に使われています
+warning.relative-absolute: %s における長さ指定について、\
+絶対値指定と相対値指定がともに用いられています。\
+これはあまり堅牢(robust)なスタイルシートではありません
+
+# used by org.w3c.css.properties.CssSelectors
+warning.unknown-html: %s はHTMLの要素ではありません
+warning.html-inside: HTML 要素は他の要素中に含むことはできません
+warning.body-inside: BODY 要素は HTML 要素以外の他の要素中に含む事はできません
+warning.pseudo-classes: アンカー(Anchor) 疑似クラス %s は、'A' 要素以外の他の要素には効果がありません
+
+# not used by org.w3c.css.properties.CssSelectors for the moment
+warning.noinside: %s はインライン要素中に含むことはできません
+warning.withblock: 注意して下さい - 疑似要素はブロックレベル要素にのみ付ける事ができます
+warning.block-level: このプロパティはブロックレベル要素に適用されます
+
+# used by org.w3c.css.parser.Frame
+warning.no-declaration: 宣言(declarations)がルール中に存在しません
+
+# used by org.w3c.css.parser.CssFouffa
+warning.unsupported-import: @importでインポートされるスタイルシートは直接入力やファイルアップロードでは検証されません。
+
+# used by org.w3c.css.values.CssColor
+warning.out-of-range: %s は指定可能範囲を越えています
+error.invalid-color: 正しい RGB 関数の指定ではありません
+
+warning.marker: marker-offset プロパティは、'display: marker' 要素にのみ適用されます
+
+# used by org.w3c.css.properties.ACssStyle
+warning.relative: %s プロパティに相対指定の単位を使うことで、より強固なスタイルシートを作る事ができます
+
+# used by org.w3c.css.css.StyleSheetParser and org.w3c.css.css.StyleSheetXMLParser
+error.at-rule: 申し訳ありませんが、at-rule %s はまだ実装されていません。
+
+# used by all properties and values
+error.operator: %s は正しい演算子 (operator) ではありません
+error.negative-value: %s に負の値は使えません
+error.few-value: %s プロパティの値が少なすぎます
+
+# be careful here, values comes first
+# You can't write something like this : For the color, blue is an incorrect value
+error.value: %s は %s で利用できる値ではありません
+
+# used by org.w3c.css.properties.CssTextDecoration
+error.same-value: %s は二回出現しました
+
+error.generic-family.quote: 一般フォントファミリー名(Generic font family)\
+はキーワードなので、引用符で囲む事はできません
+
+# used by org.w3c.css.properties.CssClip
+error.shape: 間違った形状指定が rect(<top>,<right>,<bottom>,<left>) になされています
+error.shape-separator: 形状指定の区切り文字が正しくありません。\
+これはカンマ(,)である必要があります
+
+# used by org.w3c.css.properties.CssContent
+error.attr: 属性の定義が間違っています attr(X)
+error.counter: カウンター定義が間違っています counter(<identifier>[,<list-style-type>]?)
+error.counters: カウンター定義が間違っています counters(<identifier>,<string>[,<list-style-type>]?)
+
+# used by org.w3c.css.font.Src
+error.format: フォーマット定義が間違っています format(<string>[,<string>]*)
+error.local: フォーマット定義が間違っています local(<string>|<ident>+)
+
+# used by org.w3c.css.values.CssAngle, org.w3c.css.values.CssFrequency, org.w3c.css.values.CssTime, org.w3c.css.values.CssLength
+error.unit: %s は正しい単位ではありません
+
+# used by org.w3c.css.aural.ACssAzimuth
+error.degree: position は degrees で指定する必要があります。
+
+# used by org.w3c.css.aural.ACssElevation
+error.elevation.range: elevation は '-90deg' から '90deg' の範囲の角度で指定してください
+
+# used by org.w3c.css.aural.ACssPitchRange
+error.range: 値が指定可能範囲を越えています。この値は '0' から '100' の間で指定してください
+
+# used by org.w3c.css.properties.CssTextShadow
+error.two-lengths: shadow offset は二つの <legnth> 値で指定する必要があります。\
+(blur radius は、 shadow offset の後にオプションとして指定できます。)
+
+error.integer: この数字は整数である必要があります
+error.comma: カンマ(,)区切り文字がありません
+
+# used by org.w3c.css.values.CssPercentage
+error.percent: %s は正しいパーセント指定ではありません
+
+# used by org.w3c.css.values.CssString
+error.string: %s は正しい文字列ではありません
+
+# used by org.w3c.css.values.CssURL
+error.url: %s は正しいURLではありません
+
+# used by org.w3c.css.values.CssColor
+error.rgb: %s は、3または6つの16進数の数字による正しい色の指定ではありません
+
+# used by org.w3c.css.values.CssNumber
+error.zero: %s には 0 だけが使えます。数字の後には単位を入れる必要があります
+
+# used by org.w3c.css.parser.CssPropertyFactory 
+error.noexistence-at-all: プロパティ %s は存在しません
+error.noexistence-media: プロパティ %s はメディア %s には存在しません
+error.noexistence: プロパティ %s は %s に存在しませんが、%s に存在します
+warning.noexistence: プロパティ %s は %s に存在しませんが、%s に存在します
+warning.noexistence-media: プロパティ %s はメディア %s には存在しません
+
+# used by org.w3c.css.parser.CssFouffa
+error.unrecognize: 値が多すぎるか、もしくは値が解析できません
+
+# used by org.w3c.css.parser.CssFouffa
+generator.unrecognize: 文法解析エラーが発生しました
+generator.dontmixhtml: 文法解析エラーが発生しました. スタイルシートのHTML構文が含まれてはならない。
+
+# used by org.w3c.css.parser.CssSelectors
+error.pseudo-element: 疑似要素 %s はコンテキスト %s 中のこの場所では使えません
+error.pseudo-class: 疑似クラス .%s は HTMLコンテキスト %s 中のこの場所では使えません
+error.pseudo: %sは未知の疑似要素または疑似クラスです
+warning.pseudo: 未知の疑似要素または疑似クラス %s がデフォルトプロファイル (%s) にあります
+error.id: ID セレクタ #%s は間違っています!\
+単純セレクタ (simple selector) %s には一つのIDセレクタしか指定できません
+error.space: 属性セレクタ (attribute selector) ~= が用いられている場合、\
+値 %s の中の語は空白文字を含む事はできません
+error.todo : 申し訳ありませんが、feature %s はまだ実装されていません
+error.incompatible: %s と %s は互換性がありません
+warning.incompatible: %s と %s は互換性がありません
+
+error.media: 認識できないメディア %s が指定されています
+error.page: 認識できない疑似名前付きページ(psuedo named page) %s が指定されています
+
+
+# used by StyleSheetGeneratorHTML
+generator.context: コンテキスト
+generator.request: 指定されてスタイルシートの出力中にエラーが発生しました。\
+リクエストを修正するか、plh@w3.org にメールを送ってください。
+generator.unrecognized: 認識できません
+generator.invalid-number: 正しい数字ではありません
+generator.property: 次のプロパティが正しくありません
+generator.line: 行番号
+generator.not-found: ファイルが見つかりません
+generator.doc-html: <!-- removed this confusing message olivier 2006-12-14 -->
+
+generator.doc:<!-- removed this confusing message olivier 2006-12-14 -->
+
+# used by the parser
+parser.semi-colon: プロパティ名の前にセミコロン(;)を追加してみて下さい
+
+parser.unknown-dimension: 未知の次元。
+
+parser.old_class: CSS1では、 クラス名はdimension (".55in" など) でない限り、数字から始める事ができました (".55ft" など)。\
+CSS2では、このようなクラスは未知の dimension として解析されます。(これは、将来新しい単位が追加される可能性を保つためです)
+
+parser.old_id: CSS1では、id名は dimension ("#55in"など) でない限り、数字から始めることができました ("#55ft" など)。 \
+CSS2では、このようなidは不明な dimension として解析されます。これは、将来新しい単位を追加できるようにするためです。
+
+parser.class_dim:CSS1では、 クラス名はdimension (".55in") でない限り、数字から始める事ができます (".55ft")
+
+parser.id_dim: CSS1では、id名は dimension ("#55in"など) でない限り、数字から始めることができます ("#55ft" など)。
+
+parser.charset:@charset 規則が指定できるのは、スタイルシートの最初の部分のみです。直前にスペースが入っていたりしないか確認してみてください。
+
+parser.charsetspecial:このプロファイルには、固有の @charset 構文があります。@charset のあとには1つのスペース、引用符つきのエンコーディングの名前、セミコロンを並べます。
+warning.charsetspecial: このプロファイルには、固有の @charset 構文があります。@charset のあとには1つのスペース、引用符つきのエンコーディングの名前、セミコロンを並べます。
+warning.old_id: CSS1では、id名は dimension ("#55in"など) でない限り、数字から始めることができました ("#55ft" など)。 \
+CSS2では、このようなidは不明な dimension として解析されます。これは、将来新しい単位を追加できるようにするためです。
+
+warning.old_class: CSS1では、 クラス名はdimension (".55in" など) でない限り、数字から始める事ができました (".55ft" など)。\
+CSS2では、このようなクラスは未知の dimension として解析されます。(これは、将来新しい単位が追加される可能性を保つためです)
+
+# used by the servlet
+servlet.invalid-request: 正しいリクエストではありません
+servlet.process: 指定されたオブジェクトは処理できません
+
+error.unrecognized.link: 認識できないリンク要素またはxml-stylesheet PIです。
+
+#used by org.w3c.css.parser.analyzer.CssParser
+error.nocomb: セレクタ間の結合子 %s はこのプロファイルまたはバージョンでは利用できません
+warning.nocomb: セレクタ間の結合子 %s はこのプロファイルまたはバージョンでは利用できません
+error.angle: %s は正しい角度ではありません。値は 0 から 360 の間である必要があります
+error.anglevalue: 値は -360 から 360 の間で、かつ 90 で割り切れる必要があります
+error.function: 正しくない関数定義です
+error.groupname: %s は正しくないgroupnameです。正しい identifier を使ってください
+error.noatruleyet: @import 以外の @rules は CSS1 %s ではサポートされていません
+error.nogroup: %s は toggle-group プロパティによって指定されていません
+error.notforatsc: %s は ATSC プロファイルでは利用できません
+error.notforcss1: 値 %s は CSS1 には存在しません
+error.notformobile: %s は mobile プロファイルでは利用できません
+error.notfortv: %s は TV プロファイルでは利用できません
+error.notversion: %s は CSS : %s バージョンでは利用できません
+error.onlyATSC: %s この関数は atsc-tv メディアでしか利用できません
+warning.atsc: %s は atsc-tv メディアでサポートされていない可能性があります
+error.percentage: パーセンテージ値が必要です
+error.unknown: 不明なエラー
+warning.deprecated: この値は廃止されました
+warning.direction: ブロックレベル要素には'direction'ではなく新しいCSS3の'writing-mode'プロパティを用いてください
+warning.medialist:  メディアリストは 'media :' %s で始まるべきです
+warning.noothermedium: 他のメディア用のプロパティは usermedium では動作しない可能性があります
+warning.notforusermedium: プロパティ %s はこの usermedium には存在しません
+warning.notversion: %s はこの CSS : %s バージョンでは利用できません
+warning.otherprofile: プロパティ %s はこのプロファイルには存在しませんが、他のプロファイルでは正当です
+warning.xsl: 値 %s は XSL にのみ適用可能です
+
+parser.unknown-dimension: 不明なディメンション
+generator.dontmixhtml: パースエラーが発生しました。スタイルシートにHTMLシンタックスが含まれています。
+
+warning.float-no-width: (X)HTML+CSSでは浮動要素には幅属性の宣言が必要です。固有の幅属性を持つ要素(すなわちhtml, img, input, textarea, select, またはobject)は対象外です。
+
+parser.charsetcss1: @charset は CSS1 には存在しません。
+parser.attrcss1: 属性選択子 は CSS1 には存在しません。
+parser.invalid_id_selector: 不正な ID 選択子です。
+parser.import_not_allowed: @charset と @import 以外の有効な文の後に @import は指定できません。
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/Messages.properties.ko	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,348 @@
+# Korean translation, last updated at 2008-11-11 based on Messages.properties.en,v 1.31
+
+direction: ltr
+language_name: 한국어
+more_options: 추가 설정
+title_more_options: 추가 설정 표시/숨김
+all: 전부
+normal_report: 일반 보고서
+most_important: 매우 중요
+no_warnings: 경고 없음
+profile: 프로파일
+no_special_profile: 프로파일 없음
+css1: CSS 레벨 1
+css2: CSS 레벨 2
+css21: CSS 레벨 2.1
+css3: CSS 레벨 3
+SVG: SVG
+svgbasic: SVG Basic
+svgtiny: SVG Tiny
+SVG_basic: <!-- SVG Basic , deprecated as per master language file -->
+SVG_tiny: <!-- SVG Tiny , deprecated as per master language file -->
+mobile: 모바일
+ATSC_TV_profile: ATSC TV 프로필
+TV_profile: TV 프로필
+medium: 중간
+aural: 음성
+braille: 점자
+embossed: 엠보싱
+handheld: 휴대용
+print: 인쇄
+projection: 프로젝션
+screen: 화면
+tty: TTY
+tv: TV
+presentation: 프레젠테이션
+type: 형식
+no_special_type: 자동
+html_doc: HTML
+css_doc: CSS
+check: 검사
+W3C_CSS_validation_service: W3C CSS 검사 서비스
+check_CSS: 캐스케이딩 스타일시트 (CSS) 와 스타일시트를 포함한 (X)HTML 문법검사
+by_URI: URI
+by_file_upload: 파일 업로드
+by_direct_input: 직접 입력
+validate_by_URI: URI 검사
+enter_uri: 검사하고자 하는 (HTML과 CSS 또는 CSS만으로 이루어진) 문서의 URI를 입력하여 주십시오
+page_address: 검사할 웹 페이지의 주소
+address: 주소
+submit_uri: 검사를 위한 주소 저장
+validate_by_file_upload: 파일 업로드를 통한 검사
+choose_document: 검사를 할 문서를 선택하여 주십시오
+choose_local_file: 컴퓨터에 저장된 CSS 문서를 선택하여 주십시오
+local_CSS_file: 컴퓨터에 저장된 CSS 문서
+submit_file: 검사할 파일 업로드
+validate_by_input: 직접 입력을 통한 검사
+enter_CSS: 검사할 CSS를 입력하여 주십시오
+submit_input: 검사할 내용을 저장
+note: 주의
+note_xhtml_valid: (X)HTML 문서에 포함된 CSS 스타일시트를 검사하기 이전에, <a href="http://validator.w3.org/">(X)HTML 문법 검사</a>를 하는 것을 권장합니다.
+# End of variables added along with Index page template
+
+W3C_validator_results: W3C CSS 검사 결과
+# file_title: <!-- provided by the user -->
+CSS_validation_service: CSS 검사 서비스
+jump_to: 이동
+# errors_count: <!-- generated on the fly -->
+errors: 오류
+# warnings_count <!-- generated on the fly -->
+warnings: 경고
+validated_CSS: 검사 된 CSS
+congrats: 축하합니다! 발견된 오류가 없습니다.
+# The sentence defined by doc_validates_before_link and doc_validates_after_link variables goes: \
+# "This document validates as CSSXX!" where XX stands for the CSS version used \
+# Since the content of the link about the CSS version is generated on the fly, \
+# it is important to define what goes before the link and what goes afterwards in 2 separate \
+# variables because the position of the link in the sentence varies in different languages
+doc_validates_before_link: 이 문서는 다음 형식으로 검사되었습니다:
+doc_validates_after_link: !
+no_errors_interoperable_msg: 방문자들에게 상호 호환성이 있는 웹 페이지를 고려한 웹 페이지를 작성한 것을 알리기 위해, 검증된 웹 페이지에서 이 아이콘을 표시할 수 있습니다. 아래 XHTML 코드를 이용하여 아이콘을 웹 페이지에 추가할 수 있습니다:
+valid_CSS: 올바른 CSS입니다!
+# <!-- close the img tag with > instead of /> if using HTML<= 4.01 -->
+no_errors_close_tags_msg: HTML 4.01 이하에서는 /&gt; 대신에 &gt;로 img태그를 닫아야 합니다
+no_errors_dl_local_msg: 원하신다면, 이 이미지의 사본을 웹 사이트의 디렉토리에 저장하고, 위에 있는 XHTML 코드에서 사본으로 경로를 변경하는 것도 가능합니다.
+no_errors_create_link_msg: 향후 이 페이지를 쉽게 검사하거나 다른 사용자들이 검사를 해볼 수 있게 이 검사 결과에 대한 링크를 만들고 싶다면, 링크 URI는 다음과 같습니다:
+no_errors_forHTML_only_msg: HTML/XML 문서 전용
+no_errors_bookmark_msg: 또는, 이 페이지를 즐겨찾기 (또는 책갈피) 에 추가하여도 됩니다.
+note_valide_html: 정상적인 작동을 위해서, 스타일시트는 올바른 문서 구조를 가지고 있어야 합니다. 즉, <a href="http://validator.w3.org/">올바른 HTML</a>을 사용하여야 합니다.
+top: 최상위
+# hook_html_validator <!-- generated on the fly -->
+not-css1-style: /* 주의하세요 ! 이것은 CSS1 속성이 아닙니다 !  */
+errors_sorry_msg: 검사 결과, 다음과 같은 오류들이 발견되었습니다
+# errors_list: <!-- generated on the fly -->
+# warnings_list: <!-- generated on the fly -->
+# rules_count: <!-- generated on the fly -->
+valid_CSS_info: 올바른 CSS에 대한 정보
+# charset: <!-- generated on the fly -->
+# rules_list: <!-- generated on the fly -->
+CSS_not_found: 스타일시트 발견되지 않음
+home: 홈
+about: 정보
+doc: 설명서
+dl: 다운로드
+feedback: 의견/건의
+credits: 도움 주신 분
+home_title: W3C CSS 검사 서비스 홈페이지
+about_title: 이 서비스에 대하여
+doc_title: W3C CSS 검사 서비스에 대한 설명서
+dl_title: CSS 검사 도구 다운로드 받기
+feedback_title: 이 서비스에 대한 의견 또는 건의를 하는 방법
+credits_title: 제작자들과 도움 주신 분들
+W3C_quality_msg: W3C의 품질 검증 활동, 무료 웹 품질 검증 도구 제공
+learn_more_msg: CSS(캐스케이딩 스타일 시트)에 대하여 자세히 알아보기
+support: 이 서비스에 대한 지원으로
+supporter: W3C 서포터가 되기
+# End of variables added along with Velocity
+
+# Defines your own error and warning message here
+content-type: text/html; charset=utf-8
+content-language: en
+output-encoding-name: utf-8
+
+# You can change the level warning like this (example) :
+# warning.redefinition.level: 5
+#  level is an integer between 0 and 9 (all others values are ignored)
+warning.redefinition: %s에 대한 재정의
+
+# used by xml parser 
+warning.style-inside-comment: HTML 문서의 주석에 스타일 규칙을 넣으면 유저 에이전트(브라우저 등)에 의하여 누락될 수 있으므로 권장되지 않습니다
+
+# used by org.w3c.css.properties.Css1Style
+warning.same-colors: %s와 %s는 같은 색상
+warning.no-color: 색상을 설정하지 않았거나 투명으로 설정하였음에도 불구하고 배경색을 지정하였습니다. 색상 스타일의 상호 연결로 가독성이 보장되는지 확인하시기 바랍니다.
+warning.no-background-color: 배경색이 지정되지 않았거나 배경색이 투명으로 설정되었음에도 색상을 선정하였습니다. 색상 스타일의 상호 연결로 가독성이 보장되는지 확인하시기 바랍니다.
+#warning.color.mixed-capitalization is now obsolete
+#warning.color.mixed-capitalization: Although color names are case-insensitive, it is recommended to use the mixed capitalization, to make the names more legible: %s
+warning.no-generic-family: %s: 마지막 제공된 서체 후보 이외에도 일반적이 대안을 제공할 것을 권장합니다
+warning.with-space: 공백을 포함한 서체명은 따옴표로 구분을 지어야 합니다. 따옴표를 사용하지 않으면, 문자열 앞과 뒤에 오는 공백은 무시되며, 단어 사이의 공백들은 한개의 공백으로 변환됩니다.
+warning.no-padding: 배경색이 지정되었을 경우 내부 여백(padding)을 사용할 것을 권장합니다.
+warning.same-colors2: 전경색 %s 와 배경색 %s이 같습니
+warning.relative-absolute: %s 에서 크기에 대한 절대값과 상대값이 발견되었습니다. 혼용하는 것은 좋은 스타일시트가 못됩니다.
+# used by org.w3c.css.properties.CssSelectors
+warning.unknown-html: %s는 HTML 요소가 아닙니다
+warning.html-inside: HTML 요소는 다른 요사의 하위에 있어서는 안됩니다
+warning.body-inside: BODY 요소는 HTML 요소 이외의 요소에 종속될 수 없습니다
+warning.pseudo-classes: 비정규 앵커 클래스 %s 는 A 요소 이외에는 효가가 없습니다
+
+# not used by org.w3c.css.properties.CssSelectors for the moment
+warning.noinside: %s 는 인라인 요소에 존재할 수 없습니다
+warning.withblock: 주의 바랍니다. 비정규 요소는 블럭 단위 요소에서만 사용할 수 있습니다
+warning.block-level: 이 속성은 블럭 단위에 요소에서만 사용 가능합니다
+
+# used by org.w3c.css.parser.Frame
+warning.no-declaration: 규칙에 대한 정의가 없습니다
+
+# used by org.w3c.css.parser.CssFouffa
+warning.unsupported-import: 불러온 스타일시트가 직접 입력과 파일 업로드 모드에 대한 검사가 이루어지지 않았습니다
+
+# used by org.w3c.css.values.CssColor
+warning.out-of-range: %s 는 범주를 벗어난 값입니다
+error.invalid-color: 올바르지 않은 RGB 정의
+
+warning.marker: marker-offset속성은 'display: marker' 속성에만 적용됩니다
+
+# used by org.w3c.css.properties.ACssStyle
+warning.relative: 속성 %s 에서는 상대값을 사용하는 것으로 좋은 스타일시트를 만들 수 있습니다
+
+# used by org.w3c.css.css.StyleSheetParser and org.w3c.css.css.StyleSheetXMLParser
+error.at-rule: 죄송합니다. %s에 대한 at-rule은 구현되지 않았습니다
+
+# used by all properties and values
+error.operator: %s는 올바른 연산자가 아닙니다
+error.negative-value: %s에서는 음수가 허용되지 않습니다
+error.few-value: 속성 %s에 대한 매개변수가 부족합니다
+
+# be careful here, values comes first
+# You can't write something like this : For the color, blue is an incorrect value
+error.value: %s 는 올바른 %s 값이 아닙니다
+
+#used by org.w3c.css.properties3.CssToggleGroup
+error.groupname: %s는 올바른 그룹 이름이 아닙니다. 올바른 이름을 사용하기 바랍니다
+
+#used by org.w3c.css.properties3.CssGroupReset
+error.nogroup: %s는 toggle-group속성에 대해 설정되지 않았습니다
+
+#used by org.w3c.css.properties3.CssGlyphOrVert
+error.anglevalue: 값이 -360에서 360 사이여야 하며, 90으로 나누어질 수 있어야 합니다
+
+#used by org.w3c.css.properties3.CssTextKashidaSpace
+error.percentage: 퍼센트 값이 필요합니다
+
+#used by org.w3c.css.properties.CssTextAlign
+warning.xsl: 값 %s는 XSL에서만 사용됩니다
+
+#used by org.w3c.css.parser.analyzer.CssParser
+warning.medialist: 매체 목록은 'media :' %s로 시작되어야 합니다
+error.nocomb: 이 프로파일 또는 버전에서 선택자에 대한 혼합자 %s는 허용되지 않습니다
+
+#used by org.w3c.css.properties.CssDirection
+warning.direction: 블럭 단위 요소에서는 'direction' 보다 CSS3의 새로운 'writing-mode' 속성을 사용하기 바랍니다
+
+# used by org.w3c.css.properties.CssTextDecoration
+error.same-value: %s가 중복되어 정의 되었습니다
+
+error.generic-family.quote: 일반적인 패밀리 명칭은 키워드이므로 따옴표로 묶어서는 안됩니다
+
+# used by org.w3c.css.properties.CssClip
+error.shape: rect(<top>,<right>,<bottom>,<left>)에 대한 도형 정의가 올바르지 않습니다
+error.shape-separator: 도형 정의에 구분자가 올바르지 않습니다. 구분자는 쉼표를 사용하여야 합니다
+
+# used by org.w3c.css.properties.CssContent
+error.attr: 올바르지 않은 attr 정의 attr(X)
+error.function: 올바르지 않은 함수 정의
+error.counter: 올바르지 않은 counter 정의 counter(<identifier>[,<list-style-type>]?)
+error.counters: 올바르지 않은 counters 정의 counters(<identifier>,<string>[,<list-style-type>]?)
+
+# used by org.w3c.css.font.Src
+error.format: 올바르지 않은 형식 정의 format(<string>[,<string>]*)
+error.local: 올바르지 않은 형식 정의 local(<string>|<ident>+)
+
+# used by org.w3c.css.values.CssAngle, org.w3c.css.values.CssFrequency, org.w3c.css.values.CssTime, org.w3c.css.values.CssLength
+error.unit: %s 는 올바른 단위가 아닙니다
+
+# used by org.w3c.css.aural.ACssAzimuth
+error.degree: 위치는 각도로 표현되어야 합니다
+
+# used by org.w3c.css.aural.ACssElevation
+error.elevation.range: 고도를 각도로 표현하며, '-90deg' 와 '90deg' 사이의 값을 사용합니다.
+
+# used by org.w3c.css.aural.ACssPitchRange
+error.range: 값이 범위를 넘어갔습니다. 유효한 값은 '0'과 '100' 사이의 값만 허용됩니다.
+
+# used by org.w3c.css.properties.CssTextShadow
+error.two-lengths: 그림자 오프셋은 두 개의 길이 값으로 설정됩니다 (필요할 경우, 흐림 효과 반경에 대한 값은 그림자 오프셋 값 이후에 표현됩니다)
+
+error.integer: 이 값은 정수여야 합니다.
+error.comma: 쉼표 구분자가 없습니다.
+
+# used by org.w3c.css.values.CssPercentage
+error.percent: %s는 올바른 퍼센트 수치가 아닙니다
+
+# used by org.w3c.css.values.CssString
+error.string: %s는 올바른 문자열이 아닙니다
+
+# used by org.w3c.css.values.CssURL
+error.url: %s는 올바른 URL이 아닙니다
+
+# used by org.w3c.css.values.CssColor
+error.rgb: %s는 올바른 3자리 또는 6자리의 16진수로 표현된 색상이 아닙니다
+error.angle: %s는 올바른 각도가 아닙니다. 0과 360사이의 값만 허용됩니다
+
+# used by org.w3c.css.values.CssNumber
+error.zero: 오직 0만이 %s일 수 있습니다. 값 뒤에는 반드시 단위가 표현되어야 합니다
+
+# used by org.w3c.css.parser.CssPropertyFactory
+error.noexistence-at-all: 속성 %s는 존재하지 않는 속성입니다
+error.noexistence-media: 속성 %s는 매체 %s에 존재하지 않습니다
+error.noexistence: 속성 %s는 %s에 존재하지 않지만 %s에는 존재합니다
+warning.noexistence: 속성 %s는 %s에 존재하지 않지만 %s에는 존재합니다
+warning.noexistence-media: 속성 %s는 매체 %s에 존재하지 않습니다
+warning.notforusermedium : 속성 %s는 이 usermedium에 대하여 존재하지 않습니다
+warning.noothermedium : 다른 매체를 위한 속성은 usermedium에서 동작하지 않을 수 있습니다
+# used by org.w3c.css.parser.AtRule*
+error.noatruleyet: @import를 제외한 여타 @규칙은 CSS1 %s 에서 지원되지 않을 수 있습니다
+# used by org.w3c.css.parser.analyzer.CssParser
+error.notforcss1: 값 %s는 CSS1에서 존재하지 않습니다
+warning.pseudo: 알려지지 않은 비정규 요소 또는 비정규 클래스 %s가 기본 프로파일 (%s)에 포함되어 있습니다
+warning.nocomb: 혼합자 %s 는 이 프로파일 (%s) 에서는 지시자에 사용될 수 없습니다
+warning.charsetspecial: 이 프로파일은 @charset:에 대한 매우 엄격한 규칙이 있습니다. @charset 이후에 정확하게 한개의 공백이 있어야 하며, 그 직후에 따옴표로 묶인 인코딩 명 바로 뒤에 세미콜론을 사용하여야 합니다.
+warning.notversion: %s는 이 버전의 CSS에서 사용할 수 없습니다 : %s
+
+# used by org.w3c.css.parser.CssFouffa
+error.unrecognize: 너무 많은 값 또는 값이 인식되지 않습니다
+
+# used by org.w3c.css.parser.CssFouffa
+generator.unrecognize: 해석 오류
+generator.dontmixhtml:  해석 오류. 스타일 시트는 HTML 구문을 포함해서는 안된다.
+
+# used by org.w3c.css.css.StyleSheetGeneratorHTML2
+error.unknown: 알 수 없는 오류
+
+# used by org.w3c.css.parser.CssSelectors
+error.pseudo-element: 비정규 요소 %s는 %s에서 나타날 수 없습니다
+error.pseudo-class: 비정규 클래스 .%s는 HTML문서상 %s에서 나타날 수 없습니다
+error.pseudo: 알 수 없는 비정규 요소 또는 비정규 클래스 %s
+error.id: ID 지시지 #%s는 올바르지 않습니다 ! 단순 지시자에서는 한가지 ID지시자만 사용될 수 있습니다: %s.
+error.space: 속성 지시자 ~= 가 사용될 경우, 값 %s에 정의 된 값은 공백을 포함할 수 없습니다.
+error.todo : 죄송합니다. 기능 %s는 아직 구현되지 않았습니다.
+error.incompatible: %s와 %s 는 호환이 되지 않습니다
+warning.incompatible: %s와 %s 는 호환이 되지 않습니다
+error.notformobile: %s는 모바일 프로파일에서 사용될 수 없습니다
+error.notforatsc: %s는 ATSC 프로파일에서 사용될 수 없습니다
+error.notfortv: %s는 TV 프로파일에서 사용될 수 없습니다
+error.notversion: %s 는 이 버전의 CSS에서 사용할 수 없습니다 : %s
+
+error.media: 알 수 없는 매체 %s 
+error.page: 알 수 없는 비정규 명칭 페이지 %s
+
+error.unrecognized.link: 알 수 없는 link 요소 또는 xml-stylesheet PI.
+
+# used by StyleSheetGeneratorHTML
+generator.context: 내용
+generator.request: 스타일시트를 표시하는 도중 오류가 발생하였습니다. 요청 내용을 확인하시거나 plh@w3.org로 메일을 보내주시기 바랍니ㅏ.
+generator.unrecognized: 알려지지 않은
+generator.invalid-number: 올바르지 않은 숫자
+generator.property: 잘못 된 값
+generator.line: 행
+generator.not-found: 파일이 없습니다
+
+generator.doc-html:   <!-- removed this confusing message olivier 2006-12-14 -->
+generator.doc:  <!-- removed this confusing message olivier 2006-12-14 -->
+
+# used by the parser
+parser.semi-colon: 속성 앞에 세미콜론을 찾으려고 시도하였습니다. 추가하여 주시기 바랍니다
+parser.unknown-dimension: 알 수없는 차원의
+
+parser.old_class: CSS1에서는 클래스 이름이 길이가 아니었을 경우에 (".55in") 숫자로 시작될 수 있었습니다. (".55ft") 하지만 CSS2에서는 그러한 경우 추후에 추가될 단위를 고려, 모두 알 수 없는 길이로 인식돕니다. ".%s"를 올바른 클래스 이름으로 만들기 위해서 CSS2에서는 ".\3%s"와 같이 숫자 첫 자리에 역슬래시를 추가하여야 합니다.
+
+parser.old_id: CSS1에서는 ID 이름이 길이가 아니었을 경우에 ("#55in") 숫자로 시작될 수 있었습니다. ("#55ft") 하지만 CSS2에서는 그러한 경우 추후에 추가될 단위를 고려, 모두 알 수 없는 길이로 인식돕니다.
+
+parser.class_dim: CSS1에서는 클래스 이름이 길이가 아니었을 경우에 (".55in") 숫자로 시작될 수 있습니다. (".55ft")
+
+parser.id_dim: CSS1에서는 ID 이름이 길이가 아니었을 경우에 ("#55in") 숫자로 시작될 수 있습니다. ("#55ft")
+
+parser.charset: @charset 규칙은 스타일시트가 시작할때만 정의될 수 있습니다. 이때, 그 앞에 공백이 없는지 반드시 확인하기 바랍니다.
+
+parser.charsetspecial: 이 프로파일은 @charset:에 대한 매우 엄격한 규칙이 있습니다. @charset 이후에 정확하게 한개의 공백이 있어야 하며, 그 직후에 따옴표로 묶인 인코딩 명 바로 뒤에 세미콜론을 사용하여야 합니다.
+
+warning.old_id: CSS1에서는 ID 이름이 길이가 아니었을 경우에 ("#55in") 숫자로 시작될 수 있었습니다. ("#55ft") 하지만 CSS2에서는 그러한 경우 추후에 추가될 단위를 고려, 모두 알 수 없는 길이로 인식돕니다.
+
+warning.old_class: CSS1에서는 클래스 이름이 길이가 아니었을 경우에 (".55in") 숫자로 시작될 수 있었습니다. (".55ft") 하지만 CSS2에서는 그러한 경우 추후에 추가될 단위를 고려, 모두 알 수 없는 길이로 인식돕니다. ".%s"를 올바른 클래스 이름으로 만들기 위해서 CSS2에서는 ".\3%s"와 같이 숫자 첫 자리에 역슬래시를 추가하여야 합니다.
+
+# used by the servlet
+servlet.invalid-request: 올바르지 않은 요청을 하였습니다.
+servlet.process: 객체를 처리할 수 없습니다
+
+warning.atsc: %s는 atsc-tv 매체에서 지원되지 않을 수 있습니다
+error.onlyATSC: %s는 atsc-tv 매체에서만 사용 가능합니다
+
+warning.otherprofile: 속성 %s는 이 프로파일에 존재하지 않습니다만, 다른 프로파일에 의하여 유효하다고 검증되었습니다
+warning.deprecated: 이 값은 더 이상 사용되지 않습니다
+
+warning.float-no-width: In (x)HTML+CSS, floated elements need to have a width declared. Only elements with an intrinsic width (html, img, input, textarea, select, or object) are not affected <!-- translation unavailable -->
+
+parser.charsetcss1: @charset rules can not be used in CSS1 <!-- translation unavailable -->
+parser.attrcss1: Attribute selectors are invalid in CSS1 <!-- translation unavailable -->
+parser.invalid_id_selector: Invalid ID selector <!-- translation unavailable -->
+parser.import_not_allowed: @import are not allowed after any valid statement other than @charset and @import. <!-- translation unavailable -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/Messages.properties.nl	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,374 @@
+# Dutch translation, last updated in sync with Messages.properties.en,v 1.31
+
+direction: ltr
+language_name: Nederlands
+more_options: Meer Opties
+title_more_options: Weergeven/Verbergen van extra validatie opties
+all: Alle
+normal_report: Normaal
+most_important: Meest belangrijk
+no_warnings: Geen
+profile: Profiel
+no_special_profile: Geen speciaal profiel
+css1: CSS versie 1
+css2: CSS versie 2
+css21: CSS versie 2.1
+css3: CSS versie 3
+SVG: SVG
+svgbasic: SVG Basic
+svgtiny: SVG tiny
+mobile: Mobile
+ATSC_TV_profile: ATSC TV profiel
+TV_profile: TV profiel
+medium: Medium
+aural: aural
+braille: braille
+embossed: embossed
+handheld: handheld
+print: print
+projection: projection
+screen: screen
+tty: TTY
+tv: TV
+presentation: presentation
+
+type: Type
+no_special_type: Automatisch
+html_doc: HTML
+css_doc: CSS
+
+check: Controleer
+W3C_CSS_validation_service: De W3C CSS Validatie Service
+check_CSS: Controleer Cascading Style Sheets (CSS) en (X)HTML documenten die gebruik maken van style sheets
+by_URI: via een URI
+by_file_upload: via het uploaden van een bestand
+by_direct_input: via directe invoer
+validate_by_URI: Valideer via een URI
+enter_uri: Geef de URI op van een document (HTML met CSS of alleen CSS) dat je wilt valideren
+page_address: Adres van de pagina om de valideren
+address: Adres
+submit_uri: Verzenden om te valideren
+validate_by_file_upload: Valideer via het uploaden van een bestand
+choose_document: Kies het document dat je wilt valideren
+choose_local_file: Kies een lokaal bestand dat je wilt uploaden en valideren
+local_CSS_file: Lokaal CSS bestand
+submit_file: Verzenden om te valideren
+validate_by_input: Valideer via directe invoer
+enter_CSS: Voer de CSS in die je wilt valideren
+submit_input: Verzenden om te valideren
+note: Opmerking
+note_xhtml_valid: Als je een CSS style sheet wilt valideren die gebruikt wordt in een (X)HTML document, zou je die eerst moeten <a href="http://validator.w3.org/">laten controleren</a>
+# End of variables added along with Index page template
+
+W3C_validator_results: W3C CSS Validator Resultaten met object : 
+# file_title: <!-- provided by the user -->
+CSS_validation_service: CSS Validatie Service
+jump_to: Ga naar
+# errors_count: <!-- generated on the fly -->
+errors: Fouten 
+# warnings_count <!-- generated on the fly -->
+warnings: Waarschuwingen
+validated_CSS: Uw gevalideerde CSS
+congrats: Gefeliciteerd! Geen fouten gevonden.
+# The sentence defined by doc_validates_before_link and doc_validates_after_link variables goes: \
+# "This document validates as CSSXX!" where XX stands for the CSS version used \
+# Since the content of the link about the CSS version is generated on the fly, \
+# it is important to define what goes before the link and what goes afterwards in 2 separate \
+# variables because the position of the link in the sentence varies in different languages
+doc_validates_before_link: Dit document is gevalideerd als 
+doc_validates_after_link: !
+no_errors_interoperable_msg: Om uw lezers te laten zien dat u de moeite heeft genomen om een interoperabele webpagina te maken, \
+kunt u dit pictogram op elke gevalideerde pagina plaatsen. Hier is de HTML code \
+die u kunt gebruiken om dit pictogram aan uw webpagina toe te voegen:
+valid_CSS: Valide CSS!
+# <!-- close the img tag with > instead of /> if using HTML<= 4.01 -->
+no_errors_close_tags_msg: Sluit de img tag met &gt; in plaats van met /&gt; als u HTML versie 4.01 of eerder gebruikt
+no_errors_dl_local_msg: Als u wilt, kunt u een kopie van dit plaatje downloaden, in uw locale webdirectory \
+zetten en in het XHTML fragment hierboven refereren aan uw lokaal opgeslagen afbeelding \
+in plaats van aan die op deze server.
+no_errors_create_link_msg: Als u een link wilt maken naar deze pagina (i.e. naar dit validatieresultaat \
+om het gemakkelijker te maken deze pagina later te revalideren of anderen \
+in staat te stellen uw pagina te valideren is de URL:
+no_errors_forHTML_only_msg: Alleen voor HTML documenten
+no_errors_bookmark_msg: Of u kunt de huidige pagina toevoegen aan uw favorieten of hotlist.
+note_valide_html: Als je een CSS style sheet wilt valideren die gebruikt wordt in een (X)HTML document, zou je die eerst moeten <a href="http://validator.w3.org/">laten controleren</a>.
+top: Top
+# hook_html_validator <!-- generated on the fly -->
+not-css1-style: /* VOORZICHTIG ! Dit is geen CSS1 eigenschap ! */
+errors_sorry_msg: Sorry! We vonden de volgende fouten
+# errors_list: <!-- generated on the fly -->
+# warnings_list: <!-- generated on the fly -->
+# rules_count: <!-- generated on the fly -->
+valid_CSS_info: Uw gevalideerde Cascading Style Sheet :
+# charset: <!-- generated on the fly -->
+# rules_list: <!-- generated on the fly -->
+CSS_not_found: Geen style sheet gevonden
+home: Home
+about: Over
+doc: Documentatie
+dl: Download
+feedback: Reacties
+credits: Credits
+home_title: Home pagina van de W3C CSS Validatie Service
+about_title: Over deze service
+doc_title: Documentatie voor de W3C CSS Validatie Service
+dl_title: Download de CSS validator
+feedback_title: Hoe reacties te geven over deze service
+credits_title: Credits en Erkenning
+W3C_quality_msg: W3C's Quality Assurance Activity, bringing you free Web quality tools and more
+learn_more_msg: Leer meer over Cascading Style Sheets
+support: Ondersteun de validator, wordt een
+supporter: W3C Supporter
+# End of variables added along with Velocity
+
+# Definieert uw eigen error en waarschuwingsberichten hier
+content-type: text/html; charset=utf-8
+content-language: nl
+output-encoding-name: utf-8
+
+# U kunt zo het niveau van waarschuwing aanpassen (voorbeeld) :
+# warning.redefinition.level: 5
+# level is een integer tussen 0 en 9 (alle andere waarden worden genegeerd)
+warning.redefinition: Herdefinitie van %s
+
+# used by xml parser
+warning.style-inside-comment: Plaats geen style regels in HTML commentaar, \
+deze kunnen worden verwijderd door het programma van de gebruiker
+
+# used by org.w3c.css.properties.Css1Style
+warning.same-colors: Dezelfde kleuren voor %s en %s
+warning.no-color: Je hebt geen tekstkleur opgegeven (of de kleur is transparant) maar je hebt wel een achtergrondkleur opgegeven. Zorg ervoor dat het opgeven van tekst- en achtergrondkleuren de tekst leesbaar houdt.
+warning.no-background-color: Je hebt geen achtergrondkleur opgegeven (of de achtergrondkleur is transparant) maar je hebt wel een tekstkleur opgegeven. Zorg ervoor dat het opgeven van tekst- en achtergrondkleuren de tekst leesbaar houdt.
+#warning.color.mixed-capitalization is now obsolete
+#warning.color.mixed-capitalization: Alhoewel namen van kleuren case-insensitive zijn is het beter om de gemengde  schrijfwijze te hanteren om de namen beter leesbaar te maken: %s
+warning.no-generic-family: %s: Het is beter een algemene font-family op te geven als laatste alternatief
+warning.with-space: Familienamen die spaties bevatten moeten tussen aanhalingstekens worden geplaatst. \
+Als quotes worden weggelaten wordt elke tussenruimte voor en achter de naam genegeerd en elke groep \
+whitespace-tekens in de naam wordt omgezet naar een spatie.
+warning.no-padding: Het is beter een padding te gebruiken met een achtergrondkleur
+warning.same-colors2: Dezelfde kleur en achtergrondkleur in twee contexten %s en %s
+warning.relative-absolute: U hebt absolute en relatieve lengtes in %s. Dit is geen robuuste style sheet.
+
+# used by org.w3c.css.properties.CssSelectors
+warning.unknown-html: %s is geen HTML Element
+warning.html-inside: HTML element kan niet binnen een ander element voorkomen
+warning.body-inside: BODY element kan niet binnen een ander element dan HTML voorkomen
+warning.pseudo-classes: Anker pseudo-class %s heeft geen effect op andere elementen dan 'A'
+
+# niet gebruikt door org.w3c.css.properties.CssSelectors op dit moment
+warning.noinside: %s kan niet voorkomen binnen een inline element
+warning.withblock: Wees voorzichtig. Pseudo-elementen kunnen alleen worden gekoppeld aan een block-level element
+warning.block-level: Deze eigenschap is van toepassing op block-level elementen.
+
+# gebruikt door org.w3c.css.parser.Frame
+warning.no-declaration: Geen declaraties in de regel
+
+# used by org.w3c.css.parser.CssFouffa
+warning.unsupported-import: De geïmporteerde style sheets worden niet gecontroleerd bij het direct invoeren of uploaden van een style sheet
+
+# gebruikt door org.w3c.css.values.CssColor
+warning.out-of-range: %s valt buiten het bereik
+error.invalid-color: Ongeldige RGB functie
+
+warning.marker: De marker-offset eigenschap is van toepassing op elementen met 'display: marker'
+
+# gebruikt door org.w3c.css.properties.ACssStyle
+warning.relative: Het gebruik van relatieve maten geeft robuustere stylesheets bij de eigenschap %s
+
+# gebruikt door org.w3c.css.css.StyleSheetParser and org.w3c.css.css.StyleSheetXMLParser
+error.at-rule: Sorry, de at-regel %s is niet geimplementeerd.
+
+# gebruikt voor alle eigenschappen en waarden
+error.operator: %s is een incorrecte operator
+error.negative-value: %s negatieve waarden zijn niet toegestaan
+error.few-value: te weinig waarden voor de eigenschap %s
+
+# gebruikt door org.w3c.css.properties3.CssToggleGroup
+error.groupname: %s is geen correcte groepnaam. Gebruik een geldige identifier
+
+# gebruikt door org.w3c.css.properties3.CssGroupReset
+error.nogroup: %s is niet geinitialiseerd door een toggle-group eigenschap
+
+error.notforatsc: %s kan niet gebruikt worden met het ATSC profiel
+error.notfortv: %s kan niet gebruikt worden met het TV profiel
+error.notversion: %s kan niet worden gebruikt met deze versie van CSS : %s
+
+# gebruikt door org.w3c.css.properties3.CssGlyphOrVert
+error.anglevalue: Waarde moet tussen -360 en 360 zijn en deelbaar zijn door 90
+
+#gebruikt door org.w3c.css.properties3.CssTextKashidaSpace
+error.percentage: Waarde moet een percentage zijn
+
+#used by org.w3c.css.properties.cssDirection
+warning.direction: het is beter voor block-level elementen de CSS3 eigenschap 'writing-mode' te gebruiken
+
+# wees voorzichtig, waarden komen eerst
+# U kunt niet zoiets als dit schrijven: Voor de kleur is blauw een incorrecte waarde
+error.value: %s geen %s waarde
+
+# gebruikt door org.w3c.css.properties.CssTextDecoration
+error.same-value: %s komt tweemaal voor
+
+error.generic-family.quote: Generieke familienamen zijn sleutelwoorden en moeten daarom tussen aanhalingstekens worden geplaatst
+
+# gebruikt door org.w3c.css.properties.CssClip
+error.shape: Ongeldige vormdefinitie rect(<top>,<right>,<bottom>,<left>)
+error.shape-separator: Ongeldig scheidingsteken in de vormdefinitie. Dit moet een komma zijn.
+
+# gebruikt door org.w3c.css.properties.CssContent
+error.attr: Ongeldige definitie van attr  attr(X)
+error.counter: Ongeldige counter definitie counter(<identifier>[,<list-style-type>]?)
+error.counters: Ongeldige counters definitie counters(<identifier>,<string>[,<list-style-type>]?)
+
+# gebruikt door org.w3c.css.font.Src
+error.format: Ongeldige format definitie format(<string>[,<string>]*)
+error.local: Ongeldige format definitie local(<string>|<ident>+)
+
+# gebruikt door org.w3c.css.values.CssAngle, org.w3c.css.values.CssFrequency, org.w3c.css.values.CssTime, org.w3c.css.values.CssLength
+error.unit: %s is een incorrecte unit
+
+error.unknown: Onbekende error
+
+# gebruikt door org.w3c.css.aural.ACssAzimuth
+error.degree: De positie moet worden beschreven in gradaties.
+
+# gebruikt door org.w3c.css.aural.ACssElevation
+error.elevation.range: Specificeert de 'elevation' als een hoek, tussen '-90deg' en '90deg'.
+
+# gebruikt door org.w3c.css.aural.ACssPitchRange
+error.range: Deze waarde valt buiten het bereik. Deze moet tussen '0' en '100' liggen.
+
+# gebruikt door org.w3c.css.properties.CssTextShadow
+error.two-lengths: Een schaduw offset wordt gespecificeerd met twee <length> waarden (Een blur radius kan optioneel worden gespecificeerd na de schaduw offset.)
+
+error.integer: Dit getal moet een integer zijn.
+error.comma: Ontbrekende komma als scheidingsteken.
+
+# gebruikt door org.w3c.css.values.CssPercentage
+error.percent: %s is een incorrect percentage
+
+# gebruikt door org.w3c.css.values.CssString
+error.string: %s is een incorrecte string
+
+# gebruikt door org.w3c.css.values.CssURL
+error.url: %s is geen incorrecte URL
+
+# gebruikt door org.w3c.css.values.CssColor
+error.rgb: %s is geen geldige kleur 3 of 6 hexadecimale getallens
+error.angle: %s is geen geldige hoek. De waarde moet tussen 0 en 360 liggen
+
+# gebruikt door org.w3c.css.values.CssNumber
+error.zero: alleen 0 kan een %s zijn. U moet een maat achter uw getal plaatsen
+
+# gebruikt door org.w3c.css.parser.CssPropertyFactory
+error.noexistence-at-all: Eigenschap %s bestaat niet
+
+error.noexistence: Eigenschap %s bestaat niet in %s maar wel in %s
+warning.noexistence: Eigenschap %s bestaat niet in %s maar wel in %s
+
+error.noexistence-media: Eigenschap %s bestaat niet voor media %s
+warning.noexistence-media: Eigenschap %s bestaat niet voor media %s
+
+# gebruikt door org.w3c.css.parser.CssFouffa
+error.unrecognize: Te veel waarden of teveel onbekende waarden
+
+# gebruikt door org.w3c.css.parser.CssFouffa
+generator.unrecognize: Parse Error
+generator.dontmixhtml: Parse Error. Style sheets mogen geen HTML syntax.
+
+# gebruikt door org.w3c.css.parser.CssSelectors
+error.pseudo-element: Het pseudo-element %s kan niet in deze context voorkomen %s
+error.pseudo-class: De pseudo-class .%s kan niet in deze HTML context voorkomen %s
+error.pseudo: Onbekend pseudo-element of pseudo-class %s
+error.id: ID selector #%s is ongeldig ! Slechts een ID selector kan worden gespecificeerd in een eenvoudige selector: %s.
+error.space: Als de attribuut selector ~= wordt gebruikt mag het woord in de waarde %s geen spaties bevatten.
+error.todo : Sorry de feature %s is nog niet geimplementeerd.
+error.incompatible: %s en %s zijn incompatible
+warning.incompatible: %s en %s zijn incompatible
+
+error.media: onbekende media %s 
+error.page: onbekende pseudo genaamde pagina %s
+
+
+# gebruikt door StyleSheetGeneratorHTML
+generator.context: Context
+generator.request: Er is een fout opgetreden tijdens de uitvoer van uw style sheet. \
+Corrigeer uw verzoek of stuur een mail naar plh@w3.org.
+generator.unrecognized: onbekend
+generator.invalid-number: Ongeldig getal
+generator.property: Ongeldig getal
+generator.line: Regel
+generator.not-found: Bestand niet gevonden
+generator.doc-html:<!-- removed this confusing message olivier 2006-12-14 -->
+
+generator.doc:<!-- removed this confusing message olivier 2006-12-14 -->
+
+
+# gebruikt door the parser
+parser.semi-colon: poging een puntkomma te vinden voor de eigenschapnaam: voeg deze toe
+
+parser.unknown-dimension: Onbekend dimensie.
+
+parser.old_class:In CSS1 kon de naam van een klasse beginnen met een getal (".55ft"), \
+tenzij het een dimensie was (".55in"). In CSS2 worden zulke klassen geparsed als \
+onbekende dimensies (dit maakt het mogelijk later nieuwe units toe te voegen)
+
+parser.old_id:In CSS1 kon een id beginnen met een getal ("#55ft"), \
+tenzij het een dimensie was ("#55in"). In CSS2 worden zulke ids geparsed als \
+onbekende dimensies (dit maakt het mogelijk later nieuwe units toe te voegen)
+
+parser.class_dim:In CSS1 kan de naam van een klasse beginnen met een getal (".55ft"), \
+tenzij het een dimensie is (".55in").
+
+parser.id_dim:In CSS1 kan een id beginnen met een getal ("#55ft"), \
+tenzij het een dimensie is ("#55in").
+
+parser.charset:De @charset-regel mag alleen voorkomen aan het begin van een \
+style-sheet. Controleer dat er geen spaties aan voorafgaan.
+
+parser.charsetspecial:Dit profiel heeft een specifieke syntax voor @charset: \
+@charset gevolgd door precies een spatie, gevolgd door het type tussen aanhalingstekens \
+en een puntkomma.
+
+warning.old_id:In CSS1 kon de naam van een id beginnen met een getal ("#55ft"), \
+tenzij het een dimensie is ("#55in"). In CSS2 worden zulke ids geparsed als \
+onbekende dimensies (dit maakt het mogelijk later nieuwe units toe te voegen)
+
+warning.old_class:In CSS1 kon de naam van een klasse beginnen met een getal (".55ft"), \
+tenzij het een dimensie is (".55in"). In CSS2 worden zulke klassen geparsed als \
+onbekende dimensies (dit maakt het mogelijk later nieuwe units toe te voegen)
+
+# gebruikt door de servlet
+servlet.invalid-request: U hebt een ongeldig verzoek ingediend.
+servlet.process: Kan het object niet verwerken
+
+error.notforcss1 : Waarde %s bestaat niet voor CSS1
+warning.noothermedium : Eigenschappen voor andere media werken mogelijk niet voor dit gebruikersmedium
+warning.notforusermedium : Eigenschap %s bestaat niet voor dit gebruikersmedium
+error.noatruleyet : Andere @regels dan @import worden niet ondersteund door CSS1 %
+error.notformobile : %s kan niet worden gebruikt voor het mobile profiel
+warning.atsc : %s wordt mogelijk niet ondersteund door het medium atsc-tv
+error.onlyATSC : deze functie is alleen voor @media atsc-tv
+
+error.unrecognized.link: Onherkenbaar link element of xml-stylesheet PI.
+
+warning.otherprofile : property %s bestaat niet in dit profiel, maar is gevalideerd conform een ander profiel
+warning.deprecated : deze waarde is verouderd en kan beter niet meer worden gebruikt
+
+#used by org.w3c.css.parser.analyzer.CssParser
+error.nocomb: Combinator %s tussen de selectors is niet toegestaan in dit profiel of versie
+
+error.function: Ongeldige functie definitie
+warning.charsetspecial: Dit profiel heeft een specifieke syntax voor @charset: @charset, gevolgd door een spatie, gevolgd door de naam van de encoding tussen quotes, direct gevolgd door een puntkomma.
+warning.medialist: De medialijst moet starten met 'media :' %s
+warning.nocomb: Combinatieteken %s tussen selectors is niet toegestaan binnen dit profiel (%s)
+warning.notversion: %s kan niet gebruikt worden in deze CSS-versie: %s
+warning.pseudo: Onbekend pseudo-element of pseudo-class %s in het standaard profiel (%s)
+warning.xsl: waarde %s is alleen geldig voor XSL
+
+warning.float-no-width: In (x)HTML+CSS moet de breedte van floated elementen gedeclareerd zijn. Alleen elementen met een intrinsieke breedte (html, img, input, textarea, select, of object) worden hierdoor niet beïnvloed
+parser.charsetcss1: De @charset regels zijn niet compatibel met CSS1
+parser.attrcss1: De Attribute selectors zijn niet compatibel met CSS1
+parser.invalid_id_selector: Niet valide ID selector
+parser.import_not_allowed: @import is niet toegestaan na een valide statement anders dan @charset en @import
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/Messages.properties.pl-PL	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,371 @@
+# Polish translation, last updated in sync with Messages.properties.en,v 1.31
+
+direction: ltr
+language_name: Polski
+more_options: Więcej opcji
+title_more_options: Pokaż/schowaj dodatkowe opcje
+all: Wszystkie
+normal_report: Zwyczajny raport
+most_important: Najważniejsze
+no_warnings: Brak ostrzeżeń
+profile: Profil
+no_special_profile: Brak specjalnego profilu
+css1: CSS wersja 1
+css2: CSS wersja 2
+css21: CSS wersja 2.1
+css3: CSS wersja 3
+SVG: SVG
+svgbasic: SVG Basic
+svgtiny: SVG tiny
+mobile: mobilny
+ATSC_TV_profile: ATSC TV profil
+TV_profile: TV profil
+medium: Medium
+aural: dźwiękowe
+braille: braille
+embossed: wytłaczane
+handheld: ręczne
+print: druk
+projection: projekcja
+screen: ekran
+tty: TTY
+tv: TV
+presentation: prezentacja
+
+type: Typ
+no_special_type: Automatycznie
+html_doc: HTML
+css_doc: CSS
+
+check: Sprawdź
+W3C_CSS_validation_service: Usługa Walidacji CSS W3C
+CSS_validation_service: Usługa Walidacji CSS W3C
+check_CSS: Sprawdź Kaskadowe Arkusze Stylów CSS) i dokumenty (X)HTML z arkuszami stylów
+by_URI: przez URI
+by_file_upload: poprzez załadowanie pliku
+by_direct_input: poprzez wprowadzenie kodu
+validate_by_URI: Walidacja przez URI
+enter_uri: Wprowadź URI dokumentu (HTML z CSS lub tylko CSS) do walidacji  
+page_address: Adres strony, która ma być walidowana
+address: Adres
+submit_uri: Prześlij plik do walidacji
+validate_by_file_upload: Walidacja poprzez załadowanie pliku
+choose_document: Wybierz dokument do walidacji
+choose_local_file: Wybierz lokalny plik, który chcesz walidować
+local_CSS_file: Lokalny plik CSS
+submit_file: Prześlij plik do walidacji
+validate_by_input: Walidacja poprzez bezpośrednie wprowadzenie kodu
+enter_CSS: Wprowadź kod CSS do walidacji
+submit_input: Prześlij plik do walidacji
+note: Uwaga
+note_xhtml_valid: Jeśli chcesz walidować arkusz CSS umieszczony w dokumencie (X)HTML, powinieneś wpierw <a href="http://validator.w3.org/">sprawdzić, czy użyty (X)HTML jest poprawny</a>
+# End of variables added along with Index page template
+
+W3C_validator_results: Wyniki Walidatora CSS W3C dla
+# file_title: <!-- provided by the user -->
+jump_to: Zobacz
+# errors_count: <!-- generated on the fly -->
+errors: Błędy
+# warnings_count <!-- generated on the fly -->
+warnings: Ostrzeżenia
+validated_CSS: Swój arkusz stylu
+congrats: Gratulacje! Nie znaleziono żadnych błędów.
+# The sentence defined by doc_validates_before_link and doc_validates_after_link variables goes: \
+# "This document validates as CSSXX!" where XX stands for the CSS version used \
+# Since the content of the link about the CSS version is generated on the fly, \
+# it is important to define what goes before the link and what goes afterwards in 2 separate \
+# variables because the position of the link in the sentence varies in different languages
+doc_validates_before_link: Dokument ten jest poprawnie napisanym arkuszem  
+doc_validates_after_link: !
+no_errors_interoperable_msg: Aby pokazać czytelnikom swojej strony, że stworzyłeś stronę interoperacyjną \
+, możesz umieścić ikonę na każdej stronie, która pomyślnie przeszła walidację. Oto kod HTML\
+, który możesz dodać do swojej strony:
+valid_CSS: Poprawny CSS!
+# <!-- close the img tag with > instead of /> if using HTML<= 4.01 -->
+no_errors_close_tags_msg: zakończ znacznik obrazu z &gt; zamiast /&gt; jeśli używasz HTML &lt;= 4.01
+no_errors_dl_local_msg: Jeśli chcesz, możesz ściągnąć kopię tej ikony i umieścić ja w lokalnym \
+katalogu swojego serwera oraz przerobić fragment XHTML podając link prowadzący do ikony na swoim serwerze \
+zamiast do ikony na serwerze Walidatora CSS W3C.
+no_errors_create_link_msg: Jeśli chciałbyś stworzyć link do tej strony (np. do wyniku \
+walidacji) aby ułatwić sobie ponowną walidację w przyszłości lub w celu pozwolenia \
+innym na walidację tej strony, użyj następującego adresu:
+no_errors_forHTML_only_msg: jedynie dla dokumentów HTML/XML
+no_errors_bookmark_msg: Lub możesz dodać stronę do Ulubionych.
+note_valide_html: Aby działał poprawnie, Twój arkusz CSS wymaga poprawnego drzewa dokumentu. To znaczy, że powinieneś upewnić się, że używasz <a href = "http://validator.w3.org/">poprawnego HTMLa</a>.
+top: Szczyt
+# hook_html_validator <!-- generated on the fly -->
+not-css1-style: /* OSTROŻNIE ! To nie jest właściwość pochodząca z CSS1 ! */ 
+errors_sorry_msg: Błędy
+# errors_list: <!-- generated on the fly -->
+# warnings_list: <!-- generated on the fly -->
+# rules_count: <!-- generated on the fly -->
+valid_CSS_info: Informacje na temat poprawnego CSS
+# charset: <!-- generated on the fly -->
+# rules_list: <!-- generated on the fly -->
+CSS_not_found: Nie znaleziono arkusza stylów
+home: Strona początkowa
+about: O nas
+doc: Dokumentacja
+dl: Download
+feedback: Opinie
+credits: Podziękowania
+home_title: Home
+about_title: O serwisie
+doc_title: Dokumentacja Usługi Walidacji CSS
+dl_title: Ściągnij i zainstaluj walidator CSS
+feedback_title: Jak wysłać opinię na temat tej usługi
+credits_title: Podziękowania
+W3C_quality_msg: W3C's Quality Assurance Activity dostarcza darmowych narzędzi webowych i wiele więcej
+learn_more_msg: Dowiedz się więcej o Kaskadowych Arkuszach Styli
+support: Wesprzyj to narzędzie, zostań
+supporter: Osoba wspierająca W3C
+# End of variables added along with Velocity
+
+# Definiuje komunikaty błędów i ostrzeżeń
+content-type: text/html; charset=utf-8
+content-language: pl
+output-encoding-name: utf-8
+
+# Można zmienić poziom ostrzeżeń w następujšcy sposób (przykład) :
+# warning.redefinition.level: 5
+#  poziom jest liczbš pomiędzy 0 i 9 (wszystkie inne wartoœci sš ignorowane)
+warning.redefinition: Redefiniowanie %s
+
+# used by xml parser
+warning.style-inside-comment: Do not put style rules inside HTML comments as they may be removed by user agent
+
+# użyte przez org.w3c.css.properties.Css1Style
+warning.same-colors: Takie same kolory dla %s i %s
+warning.no-color: Brak koloru w background-color
+warning.no-background-color: Brak background-color with your color
+#warning.color.mixed-capitalization is now obsolete
+#warning.color.mixed-capitalization: Chociaż nazwy kolorów nie sš wrażliwe na wielkoœć czcionki, zaleca się aby używać kombinacji małej i dużej czcionki, co uczyni nazwy bardziej czytelnymi: %s
+warning.no-generic-family: %s: Zaleca się aby rodziny czcionek rodzajowych były stosowane w ostatecznoœci
+warning.with-space: nazwy rodzin czcionek zawierajšce białe znaki powinny być w cudzysłowiu. Jeœli pominie się cudzysłów, białe znaki \
+przed i po nazwie sš ignorowane oraz cišg białych znaków wewnštrz nazwy \
+jest przekształcony w jednš spację. 
+warning.no-padding: Zaleca się aby mieć padding z kolorem tła
+warning.same-colors2: Takie same kolory dla color i background-color w dwóch miejscach %s i %s
+warning.relative-absolute: Istniejš długoœci absolutne i relatywne w %s. To nie jest mocny arkusz stylów.
+ by org.w3c.css.properties.CssSelectors
+warning.unknown-html: %s nie jest elementem HTML
+warning.html-inside: Element HTML nie może znajdować się wewnštrz innego elementu
+warning.body-inside: Element BODY nie może być wewnštrz innego elementu z wyjštkiem HTML
+warning.pseudo-classes: Anchor pseudo-class %s nie działa na inne elementy poza 'A'
+
+# nie użyte przez org.w3c.css.properties.CssSelectors na czas obecny
+warning.noinside: %s nie może być wewnštrz elementu inline 
+warning.withblock: Uwaga. Pseudo-elementy mogš być dołšczone jedynie do elementu block-level 
+warning.block-level: Właœciwoœć tš stosuje się jedynie do elementów block-level.
+
+# użyte przez org.w3c.css.parser.Frame
+warning.no-declaration: No declarations in the rule
+
+# used by org.w3c.css.parser.CssFouffa AND NEEDS TRANSLATION
+warning.unsupported-import: Imported style sheets are not checked in direct input and file upload modes
+
+# użyte przez org.w3c.css.values.CssColor
+warning.out-of-range: %s is out of range
+error.invalid-color: Invalid RGB function
+
+warning.marker: Właœciwoœć marker-offset stosuje się do elementów z 'display: marker'
+
+# użyte przez org.w3c.css.properties.ACssStyle
+warning.relative: Zastosowanie jednostek relatywnych we właœciwoœci %s daje w rezultacie silniejszy arkusz stylów
+
+# użyte przez org.w3c.css.css.StyleSheetParser i org.w3c.css.css.StyleSheetXMLParser
+error.at-rule: Niestety ale at-rule %s jest nie wdrożony.
+
+# użyte przez wszystkie właœciwoœci i wartoœci
+error.operator: %s jest niepoprawnym operatorem
+error.negative-value: Wartoœci negatywne %s sš niedozwolone
+error.few-value: Zbyt mało wartoœci dla właœciwoœci %s
+
+# Uwaga! Wartoœci sš pierwsze
+# Można napisać coœ takiego : Dla color, blue nie jest wartoœciš poprawnš 
+error.value: %s nie jest wartoœciš %s 
+
+#użyte przez org.w3c.css.properties3.CssToggleGroup
+error.groupname: %s nie jest poprawnš groupname. Zastosuj poprawny identyfikator
+
+#użyte przez org.w3c.css.properties3.CssGroupReset
+error.nogroup: %s nie jest ustalona przez właœciwoœć toggle-group
+
+#użyte przez org.w3c.css.properties3.CssGlyphOrVert
+error.anglevalue: Wartoœć powinna być pomiędzy -360 i 360 oraz podzielna przez 90
+
+#użyte przez org.w3c.css.properties3.CssTextKashidaSpace
+error.percentage: Oczekuje się wartoœci procentowej
+
+#użyte przez org.w3c.css.properties.CssTextAlign
+warning.xsl: Wartoœć %s stosuje się jedynie w XSL
+
+#użyte przez org.w3c.css.parser.analyzer.CssParser
+warning.medialist : medialist powinna zaczšć się z 'media :' %s
+error.nocomb: Kombinator %s pomiędzy selektorami nie jest dozwolony w tym profilu lub wersji
+
+#użyte przez org.w3c.css.properties.CssDirection
+warning.direction: Zamiast stosować 'direction' dla elemetów block-level, zastosuj nowš własnoœć CSS3 'writing-mode' 
+
+# użyte przez org.w3c.css.properties.CssTextDecoration
+error.same-value: %s pojawia się dwukrotnie
+
+error.generic-family.quote: Nazwy rodzin rodzajowych sš słowami kluczowymi i nie mogš być cytowane.
+
+# użyte przez org.w3c.css.properties.CssClip
+error.shape: Niepoprawna definicja shape rect(<top>,<right>,<bottom>,<left>)
+error.shape-separator: Niepoprawny separator w definicji shape. Musi to być przecinek.
+
+# użyte przez org.w3c.css.properties.CssContent
+error.attr: Niepoprawna definicja attr, attr(X)
+error.function: Niepoprawna definicja function  
+error.counter: Niepoprawna definicja counter, counter(<identifier>[,<list-style-type>]?)
+error.counters: Niepoprawna definicja counters, counters(<identifier>,<string>[,<list-style-type>]?)
+
+# użyte przez org.w3c.css.font.Src
+error.format: Niepoprawna definicja format, format(<string>[,<string>]*)
+error.local: Niepoprawna definicja, local(<string>|<ident>+)
+
+# użyte przez org.w3c.css.values.CssAngle, org.w3c.css.values.CssFrequency, org.w3c.css.values.CssTime, org.w3c.css.values.CssLength
+error.unit: %s nie jest poprawnš jednostkš
+
+# użyte przez org.w3c.css.aural.ACssAzimuth
+error.degree: Pozycja musi być wyrażona w stopniach.
+
+# użyte przez org.w3c.css.aural.ACssElevation
+error.elevation.range: Okreœla elewację jako kšt pomiędzy '-90deg' i '90deg'.
+
+# użyte przez org.w3c.css.aural.ACssPitchRange
+error.range: Wartoœć jest poza zasięgiem. Wartoœć powinna być pomiędzy '0' i '100'.
+
+# użyte przez org.w3c.css.properties.CssTextShadow
+error.two-lengths: Shadow offset jest okreœlony dwoma wartoœciami <length>. (Blur radius może być okreœlony po shadow offset.)
+
+error.integer: Liczba ta musi być liczbš całkowitš.
+error.comma: Brak przecinka jako separatora.
+
+# użyte przez org.w3c.css.values.CssPercentage
+error.percent: %s jest niepoprawnš wartoœciš procentowš
+
+# użyte przez org.w3c.css.values.CssString
+error.string: %s jest niepoprawnym cišgiem
+
+# użyte przez org.w3c.css.values.CssURL
+error.url: %s jest niepoprawnym URL
+
+# użyte przez org.w3c.css.values.CssColor
+error.rgb: %s nie jest prawidłowym numerem koloru 3 lub 6 hexadecimals 
+error.angle: %s jest niepoprawnym kštem. Wartoœć powinna być pomiędzy 0 i 360
+
+# użyte przez org.w3c.css.values.CssNumber
+error.zero: Jedynie 0 może być %s. Musisz wstawić jednostkę po numerze
+
+# użyte przez org.w3c.css.parser.CssPropertyFactory 
+error.noexistence: WłaWłaściwość %s nie istnieje w %s, ale istnieje w %s
+warning.noexistence: Właściwość %s nie istnieje w %s, ale istnieje w %s
+error.noexistence-media: Właœciwoœć %s nie istnieje dla media %s
+error.noexistence-at-all: Właściwość %s nie istnieje
+warning.noexistence-media: Właœciwoœć %s nie istnieje dla media %s
+warning.notforusermedium : Właœciwoœć %s nie istnieje dla tego usermedium
+warning.noothermedium : Właœciwoœć dla innych mediów może nie działać dla usermedium
+# użyte przez org.w3c.css.parser.AtRule*
+error.noatruleyet : Inne @rules poza @import nie sš wspierane przez CSS1 %s
+# użyte przez org.w3c.css.parser.analyzer.CssParser
+error.notforcss1 : Wartoœć %s nie istnieje w CSS1
+warning.pseudo: Nieznany pesudo-element lub pseudo-klasa %s w domyślnym profilu (%s)
+warning.nocomb: Kombinator %s pomiędzy selektorami nie jest dozwolony w tym profilu (%s)
+warning.charsetspecial: Ten profil ma ściśle określoną składnię dla reguły @charset: @charset, dokładnie jedna spacja, nazwa kodowania w cudzysłowie, średnik.
+warning.notversion: %s nie może zostać użyty z tą wersją CSS: %s
+
+# użyte przez org.w3c.css.parser.CssFouffa
+error.unrecognize: Zbyt dużo wartoœci lub wartoœci nie rozpoznane
+
+# użyte przez org.w3c.css.parser.CssFouffa
+generator.unrecognize: Błšd parsowania
+generator.dontmixhtml: Błąd parsowania: Arkusz styli nie powinien zawierać składni HTML.
+
+# used by org.w3c.css.css.StyleSheetGeneratorHTML2
+error.unknown: Unknown error
+
+# użyte przez org.w3c.css.parser.CssSelectors
+error.pseudo-element: Pseudo-element %s nie może pojawić się w następujšcym kontekœcie %s
+error.pseudo-class: Pseudo-class .%s nie może pojawić się w następujšcym kontekœcie HTML %s
+error.pseudo: Niznany pseudo-element lub pseudo-class %s
+error.id: Selektor ID #%s jest niepoprawny ! Tylko jeden selektor ID może być okreœlony w selektorze prostym: %s.
+error.space: Jeœli stosuje się selektor atrybutu ~=, wyraz w wartoœci %s nie powinien zawierać spacji.
+error.todo : Niestety, ale funkcja %s nie została jeszcze wdrożona.
+error.incompatible: %s i %s sš niekompatybilne
+warning.incompatible: %s i %s sš niekompatybilne
+error.notformobile : %s nie może być zastosowany w profilu mobilnym
+error.notforatsc : %s nie może być zastosowany w profilu ATSC
+error.notfortv : %s nie może być zastosowany w profilu TV
+error.notversion : %s nie może być zastosowany w tej wersji CSS : %s
+
+error.media: nierozpoznane media %s 
+error.page: nierozpoznana pseudo named page %s
+
+error.unrecognized.link: Nierozpoznany link element lub xml-stylesheet PI.
+
+# użyte przez StyleSheetGeneratorHTML
+generator.context: Kontekst
+generator.request: Wystšpił błšd podczas przetwarzania twojego arkusza stylów. \
+Proszę ponowić proœbę lub wysłać e-mail pod adres plh@w3.org.
+generator.unrecognized: Nierozpoznane
+generator.invalid-number: Niepoprawny numer
+generator.property: Niepoprawny numer
+generator.line: Linia
+generator.not-found: Pliku nie znaleziono
+generator.doc-html: <!-- removed this confusing message olivier 2006-12-14 -->
+generator.doc:<!-- removed this confusing message olivier 2006-12-14 -->
+
+
+# użyte przez parser
+parser.semi-colon: próba znalezienia œrednika przed nazwš właœciwoœci. Dodaj go
+
+parser.unknown-dimension: Nieznany wymiar
+
+
+parser.old_class: W CSS1, nazwa klasy może zaczšć się od cyfry (".55ft"), \
+chyba, że jest to wymiar (".55in"). W CSS2 takie klasy sš parsowane jako \
+nieznane wymiary (aby pozwolić na póŸniejsze dodawanie jednostek)
+
+parser.old_id:W CSS1 nazwa id może zaczšć się od cyfry("#55ft"), \
+chyba, że jest to wymiar ("#55in"). W CSS2 takie klasy sš parsowane jako \
+nieznane wymiary (aby pozwolić na póŸniejsze dodawanie jednostek)
+
+parser.class_dim:W CSS1 nazwa klasy może zaczšć się od cyfry (".55ft"), \
+chyba, że jest to wymiar (".55in").
+
+parser.id_dim:W CSS1 nazwa id  może zaczšć się od cyfry ("#55ft"), \
+chyba, że jest to wymiar ("#55in").
+
+parser.charset:Reguła @charset może pojawić się jedynie na poczštku \
+arkusza. Upewnij się, że nie ma przed niš spacji.
+
+parser.charsetspecial:Ten profil ma specyficzny syntax dla @charset: \
+@charset dokładnie po jednej spacji a następnie nazwa kodowania \
+w cudzysłowie zakończona bezpoœrednio œrednikiem.
+
+warning.old_id:W CSS1 nazwa id  może zaczšć się od cyfry ("#55ft"), \
+chyba, że jest to wymiar ("#55in"). W CSS2 takie klasy sš parsowane jako \
+nieznane wymiary (aby pozwolić na póŸniejsze dodawanie jednostek)
+
+warning.old_class:In CSS1, a class name can start with a digit ("#55ft"), \
+chyba, że jest to wymiar ("#55in"). W CSS2 takie klasy sš parsowane jako \
+nieznane wymiary (aby pozwolić na póŸniejsze dodawanie jednostek)
+
+# użyte przez servlet
+servlet.invalid-request: Wysłałeœ niewłaœciwe polecenie.
+servlet.process: Nie można przetworzyć obiektu
+
+warning.atsc : %s może nie być wspieranym przez medium atsc-tv
+error.onlyATSC : %s ta funkcja jest jedynie dla medium atsc-tv
+
+warning.otherprofile : właœciwoœć %s nie istnieje dla tego profilu, ale wykazuje zgodnoœć z innym profilem
+warning.deprecated : Wartoœć jest przestarzała
+
+warning.float-no-width: W (x)HTML+CSS elementy pływające muszą mieć określoną szerokość. Nie dotyczy to tylko elementów z szerokością przypisaną domyślnie (html, img, input, textarea, select i object)
+parser.charsetcss1: Reguły @charset nie mogą być używane w CSS1
+parser.attrcss1: Selektory atrybutów są nieprawidłowe w CSS1
+parser.invalid_id_selector: Nieprawidłowy selektor ID
+parser.import_not_allowed: Wyrażenie @import nie może występować po żadnym z istniejących wyrażeń, z wyjątkiem @charset i @import.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/Messages.properties.pt-BR	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,376 @@
+# Brazilian-Portuguese translation, last updated in sync with Messages.properties.en,v 1.31
+
+direction: ltr
+language_name: Português
+more_options: Mais opções
+title_more_options: Mostra/oculta opções extras de validação
+all: Todos
+normal_report: Relatório normal
+most_important: Mais importantes
+no_warnings: Sem alertas
+profile: Perfil
+no_special_profile: Nenhum perfil especial
+css1: CSS nível 1
+css2: CSS nível 2
+css21: CSS nível 2.1
+css3: CSS nível 3
+SVG: SVG
+svgbasic: SVG Basic
+SVG_basic: SVG Basic
+svgtiny: SVG Tiny
+SVG_tiny: SVG Tiny
+mobile: Móvel
+ATSC_TV_profile: Perfil TV ATSC 
+TV_profile: Perfil TV
+medium: Mídias
+aural: Auditiva
+braille: Escrita braille
+embossed: Impressora braille
+handheld: Dispositivos portáteis
+print: Impressa
+projection: Projeção
+screen: Tela
+tty: Teletipo
+tv: Televisão
+presentation: Apresentação
+type: Tipo
+no_special_type: Automático
+html_doc: HTML
+css_doc: CSS
+check: Verificar
+W3C_CSS_validation_service: Serviço de validação de CSS do W3C
+check_CSS: Analisa folhas de estilo em cascata (CSS) e documentos (X)HTML com folha de estilo
+by_URI: Por URI
+by_file_upload: Por upload de arquivo
+by_direct_input: Por entrada direta
+validate_by_URI: Validar por URI
+enter_uri: Entre a URI do documento (HTML com CSS ou somente CSS) a ser validado
+page_address: Endereço da página a ser validada
+address: Endereço
+submit_uri: Enviar URI para validação
+validate_by_file_upload: Validar por upload de arquivo
+choose_document: Escolha o documento que você gostaria de validar
+choose_local_file: Escolha o arquivo local que você gostaria de validar
+local_CSS_file: Arquivo CSS local
+submit_file: Enviar arquivo para validação
+validate_by_input: Validar por entrada direta
+enter_CSS: Entre as CSS que você gostaria de validar
+submit_input: Enviar CSS para validação
+note: Nota
+note_xhtml_valid: Para validar uma folha de estilo CSS incorporada a um documento (X)HTML você deverá, primeiramente, <a href="http://validator.w3.org/">verificar se a marcação (X)HTML é válida</a>
+# End of variables added along with Index page template
+
+W3C_validator_results: Resultados da validação CSS do W3C para
+# file_title: <!-- provided by user -->
+CSS_validation_service: Serviço de validação CSS
+jump_to: Ir para
+# errors_count: <!-- generated on the fly -->
+errors: Erros
+# warnings_count <!-- generated on the fly -->
+warnings: Alertas
+validated_CSS: CSS validada
+congrats: Parabéns! Não foram encontrados erros na sua folha de estilo.
+# The sentence defined by doc_validates_before_link and doc_validates_after_link variables goes: \
+# "This document validates as CSSXX!" where XX stands for the CSS version used \
+# Since the content of the link about the CSS version is generated on the fly, \
+# it is important to define what goes before the link and what goes afterwards in 2 separate \
+# variables because the position of the link in the sentence varies in different languages
+doc_validates_before_link: Este documento é válido para as
+doc_validates_after_link: !
+no_errors_interoperable_msg: Para mostrar aos seus leitores que você teve o cuidado de criar \
+ uma página web interoperável, você pode inserir um selo nas páginas válidas. Veja a seguir o \
+código XHTML a ser usado para mostrar na sua página o citado selo:
+valid_CSS: CSS válido!
+# <!-- close the img tag with > instead of /> if using HTML<= 4.01 -->
+no_errors_close_tags_msg: Se a sua marcação foi escrita com HTML versão 4.01 ou menor a \
+tag de fechamento do elemento img deverá ser &gt; no lugar de /&gt;, como mostrado.
+no_errors_dl_local_msg: Se você preferir, pode fazer o download da imagem do selo de validação \
+ e hospedá-la no seu servidor, mas neste caso não se esqueça de alterar o endereço da imagem no \
+ fragmento de código mostrado.
+no_errors_create_link_msg: se você quiser criar um link para esta página (isto é, o resultado da validação) \
+com a finalidade de facilitar futuras revalidações, ou mesmo permitir que seus leitores \
+verifiquem a validação da página, o endereço URI é mostrado a seguir:
+no_errors_forHTML_only_msg: Somente para documentos HTML/XML
+no_errors_bookmark_msg: Ou, você pode adicionar esta página à sua lista de favoritos.
+note_valide_html: Para surtir os efeitos de estilização pretendidos sua folha de estilo CSS precisa estar atrelada a um documento capaz de criar uma árvore possível de ser parseada. Em outras palavras: o documento deverá estar escrito em linguagem <a href="http://validator.w3.org/">HTML válida</a>.
+top: Topo
+# hook_html_validator <!-- generated on the fly -->
+not-css1-style: /* CUIDADO ! Essa não é uma propriedade CSS1 válida ! */
+errors_sorry_msg: Lamento! Encontramos os seguintes erros
+# errors_list: <!-- generated on the fly -->
+# warnings_list: <!-- generated on the fly -->
+# rules_count: <!-- generated on the fly -->
+valid_CSS_info: Informações CSS válidas
+# charset: <!-- generated on the fly -->
+# rules_list: <!-- generated on the fly -->
+CSS_not_found: Não foi encontrada folha de estilo
+home: Home
+about: Sobre
+doc: Documentação
+dl: Download
+feedback: Feedback
+credits: Créditos
+home_title: Home page do serviço de validação do W3C
+about_title: Sobre esse serviço
+doc_title: Documentação para o serviço de validação do W3C
+dl_title: Download e instalação do validador CSS
+feedback_title: Como enviar seu feedback para este serviço
+credits_title: Créditos e agradecimentos
+W3C_quality_msg: W3C's Quality Assurance Activity, trazendo até você ferramentas livres para qualidade web e muito mais
+learn_more_msg: Saiba mais sobre folhas de estilo em cascata
+support: Dê suporte a essa ferramenta, torne-se um
+supporter: Suporte ao W3C
+# End of variables added along with Velocity
+
+# Defines your own error and warning message here
+content-type: text/html; charset=utf-8
+content-language: pt-br
+output-encoding-name: utf-8
+
+# You can change the level warning like this (example) :
+# warning.redefinition.level: 5
+#  level is an integer between 0 and 9 (all others values are ignored)
+warning.redefinition: Redefinição de %s
+
+# used by xml parser 
+warning.style-inside-comment: Não coloque regras de estilo dentro de sinais de comentários para HTML, pois poderão ser  removidas pelo agente de usuário.
+
+# used by org.w3c.css.properties.Css1Style
+warning.same-colors: Algumas cores %s e %s
+warning.no-color: Você não definiu uma cor (ou definiu como transparente) de frente, mas definiu cor de fundo. Certifique-se de que o efeito cascata para cores garante um contraste legível para os textos.
+warning.no-background-color: Você não definiu uma cor de fundo (ou definiu como transparente) mas definiu uma cor de frente. Certifique-se de que o efeito cascata para cores garante um contraste legível para os textos.
+#warning.color.mixed-capitalization is now obsolete
+#warning.color.mixed-capitalization: Although color names are case-insensitive, it is recommended to use the mixed capitalization, to make the names more legible: %s
+warning.no-generic-family: %s: É recomendável definir uma família de fontes genérica como última alternativa.
+warning.with-space: Nomes para família de fontes contendo espaços em branco devem estar entre aspas. \ 
+Se as aspas forem omitidas os espaços em branco antes e depois do nome serão ignorados e qualquer sequencia \
+de espaços dentro do nome será convertida em espaço único. 
+warning.no-padding: É recomendável definir uma área de enchimento (padding) com uma cor de fundo
+warning.same-colors2: Mesma cor para fundo e frente em dois contextos %s e %s
+warning.relative-absolute: Você definiu algumas medidas em unidades absolutas e relativas em %s. Esta não é uma definição robusta para estilos.
+# used by org.w3c.css.properties.CssSelectors
+warning.unknown-html: %s não é um elemento HTML
+warning.html-inside: Elemento HTML não pode estar contido dentro de outro elemento
+warning.body-inside: O elemento BODY não pode estar contido dentro de outro elemento que não seja o elemento HTML
+warning.pseudo-classes: pseudo-classes para âncoras %s não causam efeito em elementos que não seja o elemento 'A'
+
+# not used by org.w3c.css.properties.CssSelectors for the moment
+warning.noinside: %s não pode estar contido em um elemento inline
+warning.withblock: Cuidado. Pseudo-elementos podem ser anexados somente a elementos nível de bloco
+warning.block-level: Esta propriedade aplica-se a elementos nível de bloco.
+
+# used by org.w3c.css.parser.Frame
+warning.no-declaration: Regra sem declarações
+
+# used by org.w3c.css.parser.CssFouffa
+warning.unsupported-import: Não é possível verificar folhas de estilo importadas quando se opta por verificação por entrada direta ou por upload.
+
+# used by org.w3c.css.values.CssColor
+warning.out-of-range: %s está fora da faixa
+error.invalid-color: Função RGB inválida
+
+warning.marker: A propriedade marker-offset aplica-se a elementos com a declaração 'display: marker'
+
+# used by org.w3c.css.properties.ACssStyle
+warning.relative: Usar unidade de medida relativa torna a estilização mais robusta para a propriedade %s
+
+# used by org.w3c.css.css.StyleSheetParser and org.w3c.css.css.StyleSheetXMLParser
+error.at-rule: Lamento, a at-rule %s não está implementada.
+
+# used by all properties and values
+error.operator: %s é um operador incorreto
+error.negative-value: %s valores negativos não são permitidos
+error.few-value: poucos valores para a propriedade %s
+
+# be careful here, values comes first
+# You can't write something like this : For the color, blue is an incorrect value
+error.value: %s não é um valor %s
+
+#used by org.w3c.css.properties3.CssToggleGroup
+error.groupname: %s não é um nome de grupo correto. Use um identificador válido
+
+#used by org.w3c.css.properties3.CssGroupReset
+error.nogroup: %s não foi definido pela propriedade toggle-group
+
+#used by org.w3c.css.properties3.CssGlyphOrVert
+error.anglevalue: O valor deve estar entre -360 e 360 e ser divisível por 90
+
+#used by org.w3c.css.properties3.CssTextKashidaSpace
+error.percentage: é esperado um valor em porcentagem 
+
+#used by org.w3c.css.properties.CssTextAlign
+warning.xsl: o valor %s aplica-se somente à XSL
+
+#used by org.w3c.css.parser.analyzer.CssParser
+warning.medialist: lista para mídia deve começar com 'media :' %s
+error.nocomb: O elemento de combinação %s, entre seletores, não é permitido neste perfil ou versão
+
+#used by org.w3c.css.properties.CssDirection
+warning.direction: em lugar de usar 'direction' para elementos nível de bloco use a nova propriedade CSS3 'writing-mode'
+
+# used by org.w3c.css.properties.CssTextDecoration
+error.same-value: %s aparece duas vezes
+
+error.generic-family.quote: Família de fontes genéricas é declarada com palavra-chave, assim não deve estar entre aspas.
+
+# used by org.w3c.css.properties.CssClip
+error.shape: Definição de forma inválida rect(<top>,<right>,<bottom>,<left>)
+error.shape-separator: O separador usado na definição de forma é inválido. O separador deve ser uma vírgula.
+
+# used by org.w3c.css.properties.CssContent
+error.attr: Definição inválida para attr attr(X)
+error.function: Definição inválida para função 
+error.counter: Definição inválida para counter counter(<identifier>[,<list-style-type>]?)
+error.counters: Definição inválida para counters counters(<identifier>,<string>[,<list-style-type>]?)
+
+# used by org.w3c.css.font.Src
+error.format: Definição inválida para format format(<string>[,<string>]*)
+error.local: Definição inválida para format  local(<string>|<ident>+)
+
+# used by org.w3c.css.values.CssAngle, org.w3c.css.values.CssFrequency, org.w3c.css.values.CssTime, org.w3c.css.values.CssLength
+error.unit: %s é uma unidade incorreta
+
+# used by org.w3c.css.aural.ACssAzimuth
+error.degree: A posição deve ser definida em graus (degrees).
+
+# used by org.w3c.css.aural.ACssElevation
+error.elevation.range: Define a elevação (elevation) com um ângulo entre '-90graus' e '90graus'.
+
+# used by org.w3c.css.aural.ACssPitchRange
+error.range: O valor está fora da faixa. A faixa vai de '0' a '100'.
+
+# used by org.w3c.css.properties.CssTextShadow
+error.two-lengths: Offset para a sombra foi definido com uso de dois valores <length> (Opcionalmente, pode ser definido um raio para blur logo após o offset para a sombra.)
+
+error.integer: This number should be an integer.
+error.comma: Ausência da vírgula separadora.
+
+# used by org.w3c.css.values.CssPercentage
+error.percent: %s é um valor incorreto para porcentagem
+
+# used by org.w3c.css.values.CssString
+error.string: %s é uma string incorreta
+
+# used by org.w3c.css.values.CssURL
+error.url: %s é uma URL incorreta
+
+# used by org.w3c.css.values.CssColor
+error.rgb: %s é uma cor inválida 3 ou 6 números hexadecimais são requeridos
+error.angle: %s é um ângulo inválido. O valor deve estar entre 0 e 360
+
+# used by org.w3c.css.values.CssNumber
+error.zero: somente 0 pode ser um(a) %s. Você deve declarar uma unidade de medida para o número
+
+# used by org.w3c.css.parser.CssPropertyFactory
+error.noexistence-at-all: A propriedade %s não existe
+error.noexistence-media: A propriedade %s não existe para a mídia %s
+error.noexistence: A propriedade %s não existe em %s mas existe em %s
+warning.noexistence: A propriedade %s não existe em %s mas existe em %s
+warning.noexistence-media: A propriedade %s não existe para a mídia %s
+warning.notforusermedium : A propriedade %s não existe para esta mídia de usuário
+warning.noothermedium : Propriedades para outras mídias poderão não funcionar para mídia de usuário
+# used by org.w3c.css.parser.AtRule*
+error.noatruleyet: Outras @rules que não seja @import não são suportadas em CSS1 %s
+# used by org.w3c.css.parser.analyzer.CssParser
+error.notforcss1: O valor %s não existe em CSS1
+warning.pseudo: Pseudo-elemento ou pseudo classe %s no perfil padrão (%s)
+warning.nocomb: O elemento de combinação %s entre seletores não é permitido neste perfil (%s)
+warning.charsetspecial: Este perfil tem uma sintaxe bem específica para @charset: \
+@charset seguido por exatamente um espaço em branco, seguido pelo nome de uma codificação \
+entre aspas, imediatamente seguido por ponto-e-vírgula.
+warning.notversion: %s não pode ser usado(a) com esta versão CSS : %s
+
+# used by org.w3c.css.parser.CssFouffa
+error.unrecognize: Presença de muitos valores ou valores não reconhecidos
+
+# used by org.w3c.css.parser.CssFouffa
+generator.unrecognize: Erro de parseamento
+
+# used by org.w3c.css.css.StyleSheetGeneratorHTML2
+error.unknown: Erro desconhecido
+
+# used by org.w3c.css.parser.CssSelectors
+error.pseudo-element: O pseudo-elemento %s ão pode aparecer nesse contexto HTML %s
+error.pseudo-class: A pseudo classe .%s não pode aparecer nesse contexto HTML  %s
+error.pseudo: Pseudo-elemento ou pseudo classe %s desconhecido
+error.id: O seletor ID #%s é inválido! Somente um seletor ID pode ser definido em um seletor simples: %s.
+error.space: Se o seletor de atributo ~= é usado, a palavra no valor %s não deve conter espaços.
+error.todo : Lamento. A funcionalidade %s ainda não foi implementada.
+error.incompatible: %s e %s são incompatíveis
+warning.incompatible: %s e %s são incompatíveis
+error.notformobile: %s não pode ser usada com perfil mobile
+error.notforatsc: %s não pode ser usada com perfil ATSC 
+error.notfortv: %s não pode ser usada com perfil TV
+error.notversion: %s não pode ser usada com esta versão de CSS : %s
+
+error.media: unrecognized media %s 
+error.page: não reconhecido o pseudo nome da página page %s
+
+error.unrecognized.link: Elemento link não reconhecido ou xml-stylesheet PI.
+
+# used by StyleSheetGeneratorHTML
+generator.context: Contexto
+generator.request: Ocorreu um erro ao tentar carregar sua folha de estilo. \
+Por favor verifique sua requisição ou envie um e-mail para plh@w3.org.
+generator.unrecognized: Não reconhecido
+generator.invalid-number: Número inválido
+generator.property: Erro de valor
+generator.line: Linha
+generator.not-found: Arquivo não encontrado
+
+generator.doc-html:   <!-- removed this confusing message olivier 2006-12-14 -->
+generator.doc:  <!-- removed this confusing message olivier 2006-12-14 -->
+
+
+# used by the parser
+parser.semi-colon: tentativa de encontrar um ponto-e-vírgula antes da propriedade. Coloque o ponto-e-vírgula
+
+parser.old_class: Em CSS1, um nome de classe pode começar com um dígito (".55ft"), \
+a menos que seja uma dimensão (".55in"). Em CSS2, tais ids são parseadas como \
+dimensões desconhecidas (com a finalidade de permitir adições futuras de novas unidades). \
+Para que ".%s" seja uma classe válida, CSS2 requer que o primeiro dígito seja escapado ".\3%s"
+
+parser.old_id: Em CSS1, um nome de id pode começar com um dígito ("#55ft"), \
+a menos que seja uma dimensão ("#55in"). Em CSS2, tais ids são parseadas como \
+dimensões desconhecidas (com a finalidade de permitir adições futuras de novas unidades).
+
+parser.class_dim: Em CSS1, um nome de classe pode começar com um dígito (".55ft"), \
+a menos que seja uma dimensão (".55in").
+
+parser.id_dim: Em CSS1, um nome de id pode começar com um dígito ("#55ft"), \
+a menos que seja uma dimensão ("#55in").
+
+parser.charset: A diretiva @charset deve ser declarada no início da folha \
+de estilo. Por favor assegure-se de que não há espaços em branco antes da declaração.
+
+parser.charsetspecial: Este perfil tem uma sintaxe bem específica para @charset: \
+@charset seguido por exatamente um espaço em branco, seguido pelo nome de uma codificação \
+entre aspas, imediatamente seguido por ponto-e-vírgula.
+
+warning.old_id: Em CSS1, um id pode começar com um dígito ("#55ft"), \
+a menos que seja uma dimensão ("#55in"). Em CSS2, tais ids são parseadas como \
+dimensões desconhecidas (com a finalidade de permitir adições futuras de novas unidades).
+
+warning.old_class: Em CSS1, um nome de classe pode começar com um dígito ("#55ft"), \
+a menos que seja uma dimensão ("#55in"). Em CSS2, tais ids são parseadas como \
+dimensões desconhecidas (com a finalidade de permitir adições futuras de novas unidades).
+
+# used by the servlet
+servlet.invalid-request: Você enviou uma requisição inválida.
+servlet.process: Impossível processar o objeto
+
+warning.atsc: %s pode não ser suportada pela mídia atsc-tv
+error.onlyATSC: %s esta função é exclusiva para a mídia atsc-tv
+
+warning.otherprofile: A propriedade %s não existe nesse perfil, mas valida em outro perfil.
+warning.deprecated: este valor está em desuso
+parser.unknown-dimension: Dimensão desconhecida
+generator.dontmixhtml: Erro de parseamento. Sintaxe HTML não é permitida em folhas de estilo
+
+warning.float-no-width: Em (x)HTML+CSS elementos flutuados devem ter uma declaração de largura. Somente elementos flutuados que possuam largura explícita (html, img, input, textarea, select, ou object) dispensam a declaração.
+parser.charsetcss1: A diretiva @charset não é permitida nas CSS1
+parser.attrcss1: Seletores de atributo não são válidos nas CSS1
+parser.invalid_id_selector: Seletor ID inválido
+parser.import_not_allowed: Não é permitido o uso da diretiva @import após uma declaração que não seja @charset ou outra @import.
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/Messages.properties.ru	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,354 @@
+# Russian translation, last updated in sync with Messages.properties.en,v 1.31
+
+direction: ltr
+language_name: Русский
+more_options: Дополнительные возможности
+title_more_options: Показать/скрыть дополнительные возможности
+all: Все
+normal_report: Обычный отчет
+most_important: Наиболее важные
+no_warnings: Без предупреждений
+profile: Профиль
+no_special_profile: Без специальных настроек
+css1: CSS1
+css2: CSS2
+css21: CSS2.1
+css3: CSS3
+SVG: SVG
+SVG_basic: SVG Basic
+SVG_tiny: SVG tiny
+svgbasic: SVG Basic
+svgtiny: SVG tiny
+mobile: Мобильный
+ATSC_TV_profile: телевидение ATSC
+TV_profile: телевидение
+medium: Среда
+aural: аудио (aural)
+braille: терминал Брайля (braille)
+embossed: постраничный принтер Брайля (embossed)
+handheld: портативное устройство (handheld)
+print: печатная продукция (print)
+projection: проектор (projection)
+screen: дисплей (screen)
+tty: телетайп (tty)
+tv: телевизор (tv)
+presentation: презентация (presentation)
+type: Тип документа
+no_special_type: определить автоматически
+html_doc: HTML
+css_doc: CSS
+check: Проверить
+W3C_CSS_validation_service: сервис проверки CSS от W3C
+check_CSS: Проверка каскадных таблиц стилей (CSS) и документов (X)HTML с таблицами стилей
+by_URI: Проверить URI
+by_file_upload: Проверить загруженный файл
+by_direct_input: Проверить набранный текст
+validate_by_URI: Проверка по URI
+enter_uri: Введите URI документа (HTML с CSS или только CSS) для проверки
+page_address: Адрес страницы для проверки
+address: Адрес
+submit_uri: Отправить URI для проверки
+validate_by_file_upload: Проверить загруженный файл
+choose_document: Выберите документ, который вы хотели бы проверить
+choose_local_file: Выберите локальный файл для загрузки и проверки
+local_CSS_file: Локальный файл CSS
+submit_file: Отправить файл для проверки
+validate_by_input: Проверка набираемого текста
+enter_CSS: Введите код CSS, который вы хотели бы проверить на корректность
+submit_input: Проверить введенные данные
+note: Примечание
+note_xhtml_valid: Если вы хотите проверить каскадные таблицы стилей, встроенные в документ (X)HTML, вы должны сначала <a href="http://validator.w3.org/">проверить на корректность сам документ (X)HTML</a>
+# End of variables added along with Index page template
+
+W3C_validator_results: W3C результаты проверки CSS для
+# file_title: <!-- provided by the user -->
+CSS_validation_service: Сервис проверки CSS
+jump_to: Перейти к
+# errors_count: <!-- generated on the fly -->
+errors: Ошибки
+# warnings_count <!-- generated on the fly -->
+warnings: Предупреждения
+validated_CSS: Проверенный CSS
+congrats: Поздравляем! Ошибок не обнаружено.
+# The sentence defined by doc_validates_before_link and doc_validates_after_link variables goes: \
+# "This document validates as CSSXX!" where XX stands for the CSS version used \
+# Since the content of the link about the CSS version is generated on the fly, \
+# it is important to define what goes before the link and what goes afterwards in 2 separate \
+# variables because the position of the link in the sentence varies in different languages
+doc_validates_before_link: Этот документ проходит проверку по стандарту
+doc_validates_after_link: !
+no_errors_interoperable_msg: Для того, чтобы продемонстрировать посетителям, что вы заботитесь о создании корректных страниц, вы можете разместить этот знак на любой проверенной странице. Вот код XHTML \
+для размещения:
+valid_CSS: Правильный CSS!
+# <!-- close the img tag with > instead of /> if using HTML<= 4.01 -->
+no_errors_close_tags_msg: закройте тег img, используя &gt; вместо /&gt, если используете HTML &lt;= 4.01
+no_errors_dl_local_msg: Если хотите, то можете загрузить копию изображения для хранения непосредственно на сайте и изменить приведенный выше код XHTML, чтобы ссылаться на локальную версию.
+no_errors_create_link_msg: Если Вы хотите создать ссылку на эту страницу (т.е., на результаты этой \
+проверки) для облегчения последующих перепроверок вами или другими людьми, то воспользуйтесь следующим URI:
+no_errors_forHTML_only_msg: только для документов HTML/XML
+no_errors_bookmark_msg: Или можете просто добавить данную страницу в закладки.
+note_valide_html: Для корректной работы сервиса проверки CSS необходимо чтобы ваши документы \ 
+имели правильную древовидную разметку. Это обозначает, что вы должны использовать <a href="http://validator.w3.org/">корректный HTML</a>.
+top: Наверх
+# hook_html_validator <!-- generated on the fly -->
+not-css1-style: /* ОСТОРОЖНО! Не является свойством CSS1 ! */
+errors_sorry_msg: К сожалению, мы обнаружили следующие ошибки
+# errors_list: <!-- generated on the fly -->
+# warnings_list: <!-- generated on the fly -->
+# rules_count: <!-- generated on the fly -->
+valid_CSS_info: Информация о корректном CSS
+# charset: <!-- generated on the fly -->
+# rules_list: <!-- generated on the fly -->
+CSS_not_found: Не найдено ни одной каскадной таблицы стилей
+home: Главная
+about: О сервисе
+doc: Документация
+dl: Скачать
+feedback: Отзывы
+credits: Создатели
+home_title: Главная страница сервиса проверки CSS от W3C
+about_title: О данном сервисе
+doc_title: Документация по сервису проверки CSS от W3C
+dl_title: Загрузка и установка сервиса проверки CSS
+feedback_title: Как оставить отзыв о сервисе
+credits_title: Создатели
+W3C_quality_msg: Группа W3C по поддержке качества, предлагающая бесплатные инструменты вроверки качества и другие ресурсы
+learn_more_msg: Подробнее о таблицах каскадных стилей CSS
+support: Поддержите этот инструмент, станьте
+supporter: человеком, поддерживающим W3C
+# End of variables added along with Velocity
+
+# Defines your own error and warning message here
+content-type: text/html; charset=utf-8
+content-language: ru
+output-encoding-name: utf-8
+
+# You can change the level warning like this (example) :
+# warning.redefinition.level: 5
+#  level is an integer between 0 and 9 (all others values are ignored)
+warning.redefinition: Переопределение %s
+
+# used by xml parser 
+warning.style-inside-comment: Do not put style rules inside HTML comments as they may be removed by user agent
+
+# used by org.w3c.css.properties.Css1Style
+warning.same-colors: Одинаковые цвета для %s и %s
+warning.no-color: Вы не указали цвет атрибута color (или он установлен прозрачным), но указали атрибут background-color. Убедитесь, что последовательность цветов сохраняет текст читаемым.
+warning.no-background-color: Вы не указали цвет фона background-color (или background-color установлен прозрачным), но задали цвет color. Убедитесь, что последовательность цветов сохраняет текст читаемым.
+#warning.color.mixed-capitalization is now obsolete
+#warning.color.mixed-capitalization: Although color names are case-insensitive, it is recommended to use the mixed capitalization, to make the names more legible: %s
+warning.no-generic-family: %s: рекомендуется предлагать в качестве последней альтернативы базовое семейство шрифтов
+warning.with-space: Имена, содержащие пробелы, должны заключаться в кавычки. Если кавычки пропущены, любые пробелы до или после имени игнорируются, а последовательности пробелов внутри имени преобразуются в единичный пробел.
+warning.no-padding: С фоновым цветом рекомендуется использовать отступы (padding)
+warning.same-colors2: Одинаковые цвета для текста и фона используются в следующих местах: %s и %s
+warning.relative-absolute: В %s используется абсолютные и относительные значения длины. Это ненадежная таблица стилей.
+# used by org.w3c.css.properties.CssSelectors
+warning.unknown-html: %s не является элементом HTML
+warning.html-inside: элемент HTML не может быть внутри другого элемента
+warning.body-inside: элемент BODY не может встречаться внутри другого элемента, за исключением HTML
+warning.pseudo-classes: Якорь псевдокласса %s не используется для элементов, за исключением A
+
+# not used by org.w3c.css.properties.CssSelectors for the moment
+warning.noinside: %s не может быть внутри элемента строкового типа
+warning.withblock: Будьте осторожны! Псевдоэлементы могут быть привязаны только к блочным элементам
+warning.block-level: Это свойство применяется к блочным элементам.
+
+# used by org.w3c.css.parser.Frame
+warning.no-declaration: В правиле нет определений
+
+# used by org.w3c.css.parser.CssFouffa
+warning.unsupported-import: Импортируемые таблицы стилей не проверяются в режиме загрузки и прямого ввода
+
+# used by org.w3c.css.values.CssColor
+warning.out-of-range: %s лежит вне диапазона допустимых значений
+error.invalid-color: Неправильная функция RGB
+
+warning.marker: Свойство marker-offset применяется к элементам типа display: marker
+
+# used by org.w3c.css.properties.ACssStyle
+warning.relative: Использование относительных единиц измерения в свойстве %s делают таблицы стилей более надежными
+
+# used by org.w3c.css.css.StyleSheetParser and org.w3c.css.css.StyleSheetXMLParser
+error.at-rule: Извините, но правило %s не реализовано.
+
+# used by all properties and values
+error.operator: %s — некорректный оператор
+error.negative-value: %s отрицательные значения недопустимы
+error.few-value: слишком мало значений для свойства %s
+
+# be careful here, values comes first
+# You can't write something like this : For the color, blue is an incorrect value
+error.value: %s не является значением %s 
+
+#used by org.w3c.css.properties3.CssToggleGroup
+error.groupname: %s не является корректным именем группы. Используйте правильный идентификатор
+
+#used by org.w3c.css.properties3.CssGroupReset
+error.nogroup: %s не установлено свойством toggle-group 
+
+#used by org.w3c.css.properties3.CssGlyphOrVert
+error.anglevalue: Значение должно быть между -360 и 360 и кратно 90
+
+#used by org.w3c.css.properties3.CssTextKashidaSpace
+error.percentage: ожидается значение в процентах
+
+#used by org.w3c.css.properties.CssTextAlign
+warning.xsl: значение %s применяется только к XSL
+
+#used by org.w3c.css.parser.analyzer.CssParser
+warning.medialist: список сред должен начинаться с ‘media :’ %s
+error.nocomb: Комбинатор селекторов %s не допустим в этом профиле или в этой версии
+
+#used by org.w3c.css.properties.CssDirection
+warning.direction: для блочных элементов вместо direction используйте новое свойство CSS3 writing-mode
+
+# used by org.w3c.css.properties.CssTextDecoration
+error.same-value: %s объявлено дважды
+
+error.generic-family.quote: имена базовых семейств являются ключевыми словами и не должны заключаться в кавычки.
+
+# used by org.w3c.css.properties.CssClip
+error.shape: Неправильное определение положения rect(<top>,<right>,<bottom>,<left>)
+error.shape-separator: Неправильный разделитель в определении положения. Должна использоваться запятая.
+
+# used by org.w3c.css.properties.CssContent
+error.attr: Неправильное определение attr(X)
+error.function: Неправильное объявление функции
+error.counter: Неправильное объявление counter(<identifier>[,<list-style-type>]?)
+error.counters: Неправильное объявление counters(<identifier>,<string>[,<list-style-type>]?)
+
+# used by org.w3c.css.font.Src
+error.format: Неправильное объявление формата format(<string>[,<string>]*)
+error.local: Неправильное объявление формата local(<string>|<ident>+)
+
+# used by org.w3c.css.values.CssAngle, org.w3c.css.values.CssFrequency, org.w3c.css.values.CssTime, org.w3c.css.values.CssLength
+error.unit: %s некорректная единица измерения
+
+# used by org.w3c.css.aural.ACssAzimuth
+error.degree: Позиция должна задаваться в градусах.
+
+# used by org.w3c.css.aural.ACssElevation
+error.elevation.range: Указывает возвышение как угол между -90deg и 90deg.
+
+# used by org.w3c.css.aural.ACssPitchRange
+error.range: Значение вне допустимых пределов. Значение должно быть между 0 и 100.
+
+# used by org.w3c.css.properties.CssTextShadow
+error.two-lengths: Смещение тени задается двумя значениями длины (радиус размытия может быть дополнительно указан после смещения).
+
+error.integer: Это число должно быть целым
+error.comma: Пропущена разделительная запятая
+
+# used by org.w3c.css.values.CssPercentage
+error.percent: %s некорректное процентное значение
+
+# used by org.w3c.css.values.CssString
+error.string: %s некорректное строковое значение
+
+# used by org.w3c.css.values.CssURL
+error.url: %s некорректный URL
+
+# used by org.w3c.css.values.CssColor
+error.rgb: %s не является допустимым цветом из 3 или 6 шестнадцатеричных цифр
+error.angle: %s не является допустимым углом. Значение должно быть между 0 и 360
+
+# used by org.w3c.css.values.CssNumber
+error.zero: только 0 может быть %s. Вы должны указать после числа единицы измерения
+
+# used by org.w3c.css.parser.CssPropertyFactory
+error.noexistence-at-all: Свойство %s не существует
+error.noexistence-media: Свойство %s не существует для среды %s
+error.noexistence: Свойство %s не существует в %s, но существует в %s
+warning.noexistence: Свойство %s не существует в %s но существует в %s
+warning.noexistence-media: Свойство %s не существует для среды %s
+warning.notforusermedium : Свойство %s не существует для указанной пользователем среды
+##################
+warning.noothermedium : Свойства для других сред могут не работать в указанной пользователем среде
+# used by org.w3c.css.parser.AtRule*
+error.noatruleyet: Правила @rules, за исключением @import, не поддерживаются стандартом CSS1 %s
+# used by org.w3c.css.parser.analyzer.CssParser
+error.notforcss1: Значение %s не существует для CSS1
+warning.pseudo: Неизвестный псевдоэлемент или псевдокласс %s в профиле по умолчанию (%s)
+warning.nocomb: комбинатор селекторов %s не допустим в данном профиле (%s)
+warning.charsetspecial: Этот профиль использует особенный синтаксис @charset: после @charset идет ровно один пробел, после которого идет имя кодировки в кавычках, сразу же закрывающееся точкой с запятой.
+warning.notversion: %s не может быть использовано в CSS версии %s
+
+# used by org.w3c.css.parser.CssFouffa
+error.unrecognize: Слишком много значений или нераспознанное значение
+
+# used by org.w3c.css.parser.CssFouffa
+generator.unrecognize: Ошибка разбора
+
+# used by org.w3c.css.css.StyleSheetGeneratorHTML2
+error.unknown: Неизвестная ошибка
+
+# used by org.w3c.css.parser.CssSelectors
+error.pseudo-element: Псевдоэлемент %s не может появляться в %s
+error.pseudo-class: Псевдокласс %s не может располагаться здесь в HTML %s
+error.pseudo: Неизвестный псевдоэлемент или псевдокласс %s
+error.id: Неправильный идентификатор селектора #%s! В простом селекторе может быть указан только один идентификатор: %s.
+error.space: Если используется селектор атрибута ~=, то слово в значении %s не должно содержать пробелов.
+error.todo : К сожалению, %s еще не реализовано.
+error.incompatible: %s и %s не совместимы
+warning.incompatible: %s и %s не совместимы
+error.notformobile: %s не может быть использовано с профилем mobile
+error.notforatsc: %s не может быть использовано с профилем ATSC
+error.notfortv: %s не может быть использовано с профилем TV
+error.notversion: %s не может быть использовано с данной версией CSS %s
+
+error.media: нераспознаная среда %s
+error.page: нераспознанная псевдоименованная страница %s
+
+error.unrecognized.link: Нераспознанная ссылка или инструкция обработки с таблицей стилей XML.
+
+# used by StyleSheetGeneratorHTML
+generator.context: Контекст
+generator.request: В процессе вывода вашей таблицы стилей возникла ошибка. Пожалуйста, исправьте запрос или пошлите письмо на plh@w3.org.
+generator.unrecognized: Не распознано
+generator.invalid-number: Некорректное число
+generator.property: Ошибка значения
+generator.line: Строка
+generator.not-found: Файл не найден
+
+generator.doc-html:   <!-- removed this confusing message olivier 2006-12-14 -->
+generator.doc:  <!-- removed this confusing message olivier 2006-12-14 -->
+
+
+# used by the parser
+parser.semi-colon: попытка найти точку с запятой до имени свойства. добавьте ее
+
+parser.old_class: В CSS1 имя класса могло начинаться с цифры (#55ft), если это размерность (#55in). В CSS2 такие идентификаторы  считаются неизвестными размерами (для добавления единиц измерения в будущем). Чтобы “.%s” являлся правильным классом, CSS2 требует, чтобы начальные цифры были экранированы “.\3%s”
+
+parser.old_id: В CSS1 идентификатор мог начинаться с цифры (#55ft), если это не размерность (#55in). В CSS2 такие идентификаторы  считаются неизвестными размерами (для добавления единиц измерения в будущем).
+
+parser.class_dim: В CSS1 имя класса могло начинаться с цифры (.55ft), если это не размерность (.55in).
+
+parser.id_dim: В CSS1 идентификатор мог начинаться с цифры (#55ft), если это не размерность (#55in).
+
+parser.charset: Правило @charset может появляться только в начале описания стиля. Пожалуйста, проверьте, нет ли перед ним пробелов.
+
+parser.charsetspecial: Этот профиль имеет специфический синтаксис @charset: после @charset идет ровно один пробел, за которым следует название кодировки в кавычках, за которой сразу следует точка с запятой.
+
+warning.old_id: В CSS1 идентификатор мог начинаться с цифры (#55ft), если это не размерность (#55in). В CSS2 такие идентификаторы  считаются неизвестными размерами (для добавления единиц измерения в будущем).
+
+warning.old_class: В CSS1 имя класса могло начинаться с цифры (#55ft), если это не размерность (#55in). В CSS2 такие идентификаторы считаются неизвестными размерами (для добавления единиц измерения в будущем).
+
+# used by the servlet
+servlet.invalid-request: Передан неправильный запрос
+servlet.process: Не могу обработать объект
+
+warning.atsc: %s может не поддерживаться устройством atsc-tv
+error.onlyATSC: %s эта функция используется только в среде atsc-tv
+
+warning.otherprofile: свойство %s не существует для данного профиля, но оно проверяется в соответствии с другим профилем
+warning.deprecated: это значение является нежелательным
+
+generator.dontmixhtml: Ошибка парсера: в таблицах стилей не должно быть HTML разметки
+parser.unknown-dimension: Неизвестные размеры
+
+warning.float-no-width: В (x)HTML+CSS, у плавающих элементов должна быть объявленна ширина. Только элементы с внутренней шириной (html, img, input, textarea, select или object) не затрагиваются.
+parser.charsetcss1: Правила @charset не могут быть использованы в CSS1
+parser.attrcss1: Селекторы атрибутов недействительны в CSS1
+parser.invalid_id_selector: Неправильный ID селектора
+parser.import_not_allowed: @import не разрешен после любых правильных объявлений кроме @charset и @import.
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/Messages.properties.sv	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,376 @@
+# Swedish translation, last updated in sync with Messages.properties.en,v 1.31
+
+direction: ltr
+language_name: Svenska
+more_options: Fler val
+title_more_options: Visa/Dölj andra valideringsval
+all: Alla
+normal_report: Normal rapport
+most_important: Mest viktigt
+no_warnings: Inga varningar
+profile: Profil
+no_special_profile: Ingen speciell profil
+css1: CSS nivå 1
+css2: CSS nivå 2
+css21: CSS nivå 2.1
+css3: CSS nivå 3
+SVG: SVG
+svgbasic: SVG Basic
+svgtiny: SVG Tiny
+SVG_basic: SVG Basic
+SVG_tiny: SVG Tiny
+mobile: Mobil
+ATSC_TV_profile: ATSC TV-profil
+TV_profile: TV-profil
+medium: Medium
+aural: ljud
+braille: braille
+embossed: präglad
+handheld: handhållen
+print: skriv ut
+projection: projicering
+screen: skärm
+tty: TTY
+tv: TV
+presentation: presentation
+type: Typ
+no_special_type: Automatisk
+html_doc: HTML
+css_doc: CSS
+check: Granska
+W3C_CSS_validation_service: W3C:s CSS-valideringstjänst
+check_CSS: Granska Cascading Style Sheets (CSS) och (X)HTML-dokument med formatmallar
+by_URI: Genom URI
+by_file_upload: Genom filuppladdning
+by_direct_input: Genom direktinmatning
+validate_by_URI: Validera genom URI
+enter_uri: Mata in URI för det dokument (HTML med CSS eller enbart CSS) som du vill validera
+page_address: Adress för den sida som skall valideras
+address: Adress
+submit_uri: Skicka in URI för validering
+validate_by_file_upload: Validera genom att ladda upp fil
+choose_document: Välj det dokument som du vill validera
+choose_local_file: Välj en lokalt lagrad fil att ladda upp och validera
+local_CSS_file: Lokal CSS-fil
+submit_file: Skicka in fil för validering
+validate_by_input: Validera genom direkt inmatning
+enter_CSS: Mata in den CSS du vill validera
+submit_input: Skicka in data för validering
+note: Märk
+note_xhtml_valid: Om du vill validera din CSS-formatmall inbäddad i ett (X)HTML-dokument, så bör du först <a href="http://validator.w3.org/">kontrollera att den (X)HTML du använder är giltig</a>
+# End of variables added along with Index page template
+
+W3C_validator_results: W3C CSS-valideringsresultat för
+# file_title: <!-- provided by the user -->
+CSS_validation_service: CSS-valideringstjänst
+jump_to: Hoppa till
+# errors_count: <!-- generated on the fly -->
+errors: Fel
+# warnings_count <!-- generated on the fly -->
+warnings: Varningar
+validated_CSS: Validerad CSS
+congrats: Gratulerar! Inga fel har hittats
+# The sentence defined by doc_validates_before_link and doc_validates_after_link variables goes: \
+# "This document validates as CSSXX!" where XX stands for the CSS version used \
+# Since the content of the link about the CSS version is generated on the fly, \
+# it is important to define what goes before the link and what goes afterwards in 2 separate \
+# variables because the position of the link in the sentence varies in different languages
+doc_validates_before_link: Detta dokument valideras som
+doc_validates_after_link: !
+no_errors_interoperable_msg: För att visa dina läsare att du har lagt dig vinn om att skapa en interoperabel \
+webbsida, så kan du visa denna ikon på alla sidor som valideras. Här är den XHTML \
+du kan använda för att lägga till denna ikon på din webbsida:
+valid_CSS: Valid CSS!
+# <!-- close the img tag with > instead of /> if using HTML<= 4.01 -->
+no_errors_close_tags_msg: avsluta img-taggen med &gt; iställetr för med /&gt; om du använder HTML &lt;= 4.01
+no_errors_dl_local_msg: Om du vill så kan du ladda ner en kopia av denna bild och spara den i din lokala webb \
+katalog, och ändra XHTML-fragmentet ovan så att det refererar till din lokala bild \
+istället för bilden på denna server.
+no_errors_create_link_msg: Om du vill skapa en länk till denna sida (dvs detta validerings-\
+resultat) för att göra det lättare att validera denna sida i framtiden, eller för att låta \
+andra validera dina sidor, använd då URI:en: 
+no_errors_forHTML_only_msg: enbart för HTML-/XML-dokument
+no_errors_bookmark_msg: Eller så kan du helt enkelt lägga till denna sida till dina bokmärken eller snabblänkar.
+note_valide_html: För att fungera som avsett, så behöver din CSS-formatmall ett korrekt dokumentparseträd. Detta betyder att du bör använda <a href="http://validator.w3.org/">valid HTML</a>.
+top: Toppen
+# hook_html_validator <!-- generated on the fly -->
+not-css1-style: /* VAR FÖRSIKTIG! Detta är inte en CSS1-egenskap! */
+errors_sorry_msg: Ledsen! Vi har hittat följande fel
+# errors_list: <!-- generated on the fly -->
+# warnings_list: <!-- generated on the fly -->
+# rules_count: <!-- generated on the fly -->
+valid_CSS_info: Valid CSS-information
+# charset: <!-- generated on the fly -->
+# rules_list: <!-- generated on the fly -->
+CSS_not_found: Ingen formatmall upptäcktes
+home: Hem
+about: Om
+doc: Dokumentation
+dl: Ladda ner
+feedback: Synpunkter
+credits: Tack till
+home_title: Hemsida för W3C:s CSS-valideringstjänst
+about_title: Om denna tjänst
+doc_title: Dokumentation om W3C:s CSS-valideringstjänst
+dl_title: Ladda ner och installera CSS-valideraren
+feedback_title: Hur man kan ge synpunkter på denna tjänst
+credits_title: Hjälp och tack
+W3C_quality_msg: W3C:s kvalitetssäkringsaktivitet, ger dig gratis verktyg för webbkvalitet och annat
+learn_more_msg: Lär dig mer om Cascading Style Sheets
+support: Stöd detta verktyg, bli
+supporter: W3C Supporter
+# End of variables added along with Velocity
+
+# Defines your own error and warning message here
+content-type: text/html; charset=utf-8
+content-language: sv
+output-encoding-name: utf-8
+
+# You can change the level warning like this (example) :
+# warning.redefinition.level: 5
+# level is an integer between 0 and 9 (all others values are ignored)
+warning.redefinition: Omdefiniering av %s
+
+# used by xml parser 
+warning.style-inside-comment: Lägg inte stilregler inom HTML-kommentarer, eftersom de kan tas bort av användaragenten
+
+# used by org.w3c.css.properties.Css1Style
+warning.same-colors: Samma färg för %s och %s
+warning.no-color: Du har inte angett color (eller color anges som genomskinlig) men du har angett en background-color. Försäkra dig om att färgkaskader inte gör texten oläslig.
+warning.no-background-color: Du har inte angett background-color (eller background-color är angiven som genomskinlig) men du har angett color. Försäkra dig om att färgkaskader inte gär texten oläsbar.
+#warning.color.mixed-capitalization is now obsolete
+#warning.color.mixed-capitalization: Although color names are case-insensitive, it is recommended to use the mixed capitalization, to make the names more legible: %s
+warning.no-generic-family: %s: Du borde erbjuda en generisk familj som sista alternativ
+warning.with-space: Familjenamn som innehåller vita tecken skall anges inom citationstecken. Om citationstecken \
+utlämnas, så kommer inledande och avslutande vita tecken att ignoreras, och sekvenser av vita \
+tecken inom namnet att omvandlas till ett blanktecken. 
+warning.no-padding: Du bör ha ett utfyllnadsområde med bakgrundsfärg
+warning.same-colors2: Samma färg för color och background-color i två kontext %s och %s
+warning.relative-absolute: Du har använt både absolut och relativ längd i %s. Detta är inte en robust formatmall.
+# used by org.w3c.css.properties.CssSelectors
+warning.unknown-html: %s är inte ett HTML-element
+warning.html-inside: HTML-element kan inte förekomma inom ett annat element
+warning.body-inside: BODY-element kan inte vara inom ett annat element, förutom HTML
+warning.pseudo-classes: Anchor-pseudoklassen %s har ingen effekt på element andra än 'A'
+
+# not used by org.w3c.css.properties.CssSelectors for the moment
+warning.noinside: %s kan inte förekomma inom ett inline-element
+warning.withblock: Var försiktig. Pseudoelement kan bara knytas till blocknivåelement
+warning.block-level: Denna egenskap har effekt för blocknivåelement.
+
+# used by org.w3c.css.parser.Frame
+warning.no-declaration: Ingen deklaration i regeln
+
+# used by org.w3c.css.parser.CssFouffa
+warning.unsupported-import: Importerade formatmallar granskas inte vid direkt inmatning eller vid filuppladdning
+
+# used by org.w3c.css.values.CssColor
+warning.out-of-range: %s ligger utanför giltigt värdeområde
+error.invalid-color: Ogiltig RGB-funktion
+
+warning.marker: Egenskapen marker-offset är bara tillämpbar på element med 'display: marker'
+
+# used by org.w3c.css.properties.ACssStyle
+warning.relative: Relativa enheter ger mer robusta formatmallar i egenskap %s
+
+# used by org.w3c.css.css.StyleSheetParser and org.w3c.css.css.StyleSheetXMLParser
+error.at-rule: Tyvärr, at-regeln %s är inte implementerad.
+
+# used by all properties and values
+error.operator: %s är en ogiltig operator
+error.negative-value: %s negativa värden är inte tillåtna
+error.few-value: alltför få värden för egenskap %s
+
+# be careful here, values comes first
+# You can't write something like this : For the color, blue is an incorrect value
+error.value: %s är inte ett %s-värde
+
+#used by org.w3c.css.properties3.CssToggleGroup
+error.groupname: %s är inte ett giltigt gruppnamn. Använd en giltig identifierare
+
+#used by org.w3c.css.properties3.CssGroupReset
+error.nogroup: %s har inte satts av egenskapen toggle-group
+
+#used by org.w3c.css.properties3.CssGlyphOrVert
+error.anglevalue: Värdet måste vara mellan -360 och 360, och vara delbart med 90
+
+#used by org.w3c.css.properties3.CssTextKashidaSpace
+error.percentage: procentvärde förväntades
+
+#used by org.w3c.css.properties.CssTextAlign
+warning.xsl: värde %s är bara användbart för XSL
+
+#used by org.w3c.css.parser.analyzer.CssParser
+warning.medialist: medialista skall börja med 'media :' %s
+error.nocomb: Kombinator %s mellan selektorer kan inte användas i denna profil eller version
+
+#used by org.w3c.css.properties.CssDirection
+warning.direction: istället för att använda 'direction' för blocknivåelement, använd den nya CSS3-egenskapen 'writing-mode'
+
+# used by org.w3c.css.properties.CssTextDecoration
+error.same-value: %s förekommer två gånger
+
+error.generic-family.quote: Generiska familjenamn är nyckelord, och får därför inte anges inom citationstecken.
+
+# used by org.w3c.css.properties.CssClip
+error.shape: Ogiltig formdefinition rect(<top>,<right>,<bottom>,<left>)
+error.shape-separator: Ogiltig separator i formdefinition. Det måste vara ett kommatecken.
+
+# used by org.w3c.css.properties.CssContent
+error.attr: Ogiltig attr-definition attr(X)
+error.function: Ogiltig funktionsdefinition
+error.counter: Ogiltig counter-definition counter(<identifier>[,<list-style-type>]?)
+error.counters: Ogiltig counters-definition counters(<identifier>,<string>[,<list-style-type>]?)
+
+# used by org.w3c.css.font.Src
+error.format: Ogiltig format-definition format(<string>[,<string>]*)
+error.local: Ogiltig formatdefinition local(<string>|<ident>+)
+
+# used by org.w3c.css.values.CssAngle, org.w3c.css.values.CssFrequency, org.w3c.css.values.CssTime, org.w3c.css.values.CssLength
+error.unit: %s är en ogiltig enhet
+
+# used by org.w3c.css.aural.ACssAzimuth
+error.degree: Position måste anges i grader.
+
+# used by org.w3c.css.aural.ACssElevation
+error.elevation.range: Anger elevation som vinkel, mellan '-90deg' och '90deg'.
+
+# used by org.w3c.css.aural.ACssPitchRange
+error.range: Värdet ligger utanför giltigt värdeområde. Detta värde måste vara mellan '0' och '100'.
+
+# used by org.w3c.css.properties.CssTextShadow
+error.two-lengths: Ett skuggoffset anges med två <length>-värden (en suddradie kan anges efter skuggoffset.)
+
+error.integer: Detta tal måste vara ett heltal.
+error.comma: Kommatecken saknas.
+
+# used by org.w3c.css.values.CssPercentage
+error.percent: %s är en ogiltig procentsats
+
+# used by org.w3c.css.values.CssString
+error.string: %s är en ogiltig sträng
+
+# used by org.w3c.css.values.CssURL
+error.url: %s är en ogiltig URL
+
+# used by org.w3c.css.values.CssColor
+error.rgb: %s är inte en giltig färgangivelse som 3- eller 6-siffrigt hexadecimaltal
+error.angle: %s är inte en giltig vinkel. Värdet måste vara mellan 0 och 360
+
+# used by org.w3c.css.values.CssNumber
+error.zero: endast 0 kan vara en %s. Du måste ange en enhet efter ditt tal
+
+# used by org.w3c.css.parser.CssPropertyFactory
+error.noexistence-at-all: Egenskap %s finns inte
+error.noexistence-media: Egenskap %s finns inte för medium %s
+error.noexistence: Egenskap %s finns inte för %s men finns för %s
+warning.noexistence: Egenskap %s finns inte för %s men finns för %s
+warning.noexistence-media: Egenskap %s finns inte för medium %s
+warning.notforusermedium : Egenskap %s finns inte för detta usermedium
+warning.noothermedium : Egenskaper för andra media kanske inte fungerar för user-medium
+# used by org.w3c.css.parser.AtRule*
+error.noatruleyet: Andra @-regler än @import stöds inte av CSS1 %s
+# used by org.w3c.css.parser.analyzer.CssParser
+error.notforcss1: Värde %s finns inte i CSS1
+warning.pseudo: Okänt pseudoelement eller pseudoklass %s i default-profilen (%s)
+warning.nocomb: Kombinator %s mellan selektorer tillåts inte i denna profil (%s)
+warning.charsetspecial: Denna profil har en mycket speciell syntax för @charset: \
+@charset följt av exakt ett blanktecken, följt av kodnamnet \
+inom citationstecken, omedelbart följt av ett semikolon.
+warning.notversion: %s kan inte användas med denna version av CSS: %s
+
+# used by org.w3c.css.parser.CssFouffa
+error.unrecognize: Alltför många värden eller värden kan kännas igen
+
+# used by org.w3c.css.parser.CssFouffa
+generator.unrecognize: Parsningsfel
+
+# used by org.w3c.css.css.StyleSheetGeneratorHTML2
+error.unknown: Okänt fel
+
+# used by org.w3c.css.parser.CssSelectors
+error.pseudo-element: Pseudoelement %s kan inte förekomma här i kontextet %s
+error.pseudo-class: Pseudoklass .%s kan inte förekomma här i HTML-kontextet %s
+error.pseudo: Okänt pseudoelement eller pseudoklass %s
+error.id: ID-selektor #%s ogiltig ! Endast en ID-selektor kan anges i en enkel selektor: %s.
+error.space: Om attributselektor ~= används, så får ordet i värdet %s inte innehålla blanktecken.
+error.todo : Tyvärr är funktionalitet %s ännu inte implementerad.
+error.incompatible: %s och %s är inkompatibla
+warning.incompatible: %s och %s är inkompatibla
+error.notformobile: %s kan inte användas med mobil profil
+error.notforatsc: %s kan inte användas med ATSC-profil
+error.notfortv: %s kan inte användas med TV-profil
+error.notversion: %s kan inte användas med denna version av CSS : %s
+
+error.media: icke igenkänt medium %s
+error.page: icke igenkänd pseudonamnsida %s
+
+error.unrecognized.link: Icke igenkänt länkelement eller xml-formatmall PI.
+
+# used by StyleSheetGeneratorHTML
+generator.context: Kontext
+generator.request: Ett fel inträffade vid utmatning av din formatmall. \
+Korrigera din begäran eller sänd ett e-postmeddelande till plh@w3.org.
+generator.unrecognized: Icke igenkänd
+generator.invalid-number: Ogiltigt tal
+generator.property: Värdefel
+generator.line: Rad
+generator.not-found: Fil kunde inte hittas
+
+generator.doc-html: <!-- tog bort detta förvirrande meddelande olivier 2006-12-14 -->
+generator.doc: <!-- tog bort detta förvirrande meddelande olivier 2006-12-14 -->
+
+
+# used by the parser
+parser.semi-colon: försök att hitta ett semikolon före egenskapsnamn. Lägger till ett
+
+parser.old_class: I CSS1 kan ett klassnamn börja med en siffra (".55ft"), \
+om det inte är en dimension (".55in"). I CSS2 parsas sådana klasser som \
+okända dimensioner (för att göra det möjligt att i framtiden lägga till nya enheter) \
+För att göra ".%s" till en giltig klass så kräver CSS2 att den första siffran särmarkeras ".\3%s"
+
+parser.old_id: I CSS1 kan ett id-namn börja med en siffra ("#55ft"), \
+om det inte är en dimension ("#55in"). I CSS2 parsas sådana id:ar som \
+okända dimensioner (för att göra det möjligt att i framtiden lägga till nya enheter)
+
+parser.class_dim: I CSS1 kan ett klassnamn börja med en siffra (".55ft"), \
+om det inte är en dimension (".55in").
+
+parser.id_dim: I CSS1 kan ett id-namn börja med en siffra ("#55ft"), \
+om det inte är en dimension ("#55in").
+
+parser.charset: @charset-regeln kan endast förekomma i början av en \
+formatmall. Kontrollera att det inte finns blanktecken före den.
+
+parser.charsetspecial: Denna profil har en mycket speciell syntax för @charset: \
+@charset följt av exakt ett blanktecken, följt av kodningsnamnet \
+inom citationstecken, omedelbart följt av ett semikolon.
+
+warning.old_id: I CSS1 kan ett id-namn börja med en siffra ("#55ft"), \
+om det inte är en dimension ("#55in"). I CSS2 parsas sådana id:ar \
+som okända dimensioner (för att göra det möjligt att i framtiden lägga till nya enheter)
+
+warning.old_class: I CSS1 kan ett klassnamn börja med en siffra ("#55ft"), \
+om det inte är en dimension ("#55in"). I CSS2 parsas sådana id:ar som \
+okända dimensioner (för att göra det möjligt att i framtiden läga till nya enheter).
+
+# used by the servlet
+servlet.invalid-request: Du har sänt en ogiltig begäran.
+servlet.process: Kan inte bearbeta objektet
+
+warning.atsc: %s kanske inte stöds av medium atsc-tv
+error.onlyATSC: %s denna funktion enbart avsedd för medium atsc-tv
+
+warning.otherprofile: egenskap %s finns inte i denna profil, men valideras mot annan profil
+warning.deprecated: detta värde är föråldrat
+
+parser.unknown-dimension: Okänd dimension
+generator.dontmixhtml: Parsningsfel: Formatmallar bör inte innehålla HTML-syntax.
+
+warning.float-no-width: Flytande element utan inneboende bredd (dvs allt förutom html, img, input, textarea, select, och object) bör ges en bredd.
+
+parser.charsetcss1: @charset-regler kan inte användas i CSS1 
+parser.attrcss1: Attributselektorer är inte giltiga i CSS1
+parser.invalid_id_selector: Ogiltig ID-selektor
+parser.import_not_allowed: @import kan bara föregås av satser av typ @charset och @import. 
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/Messages.properties.uk	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,349 @@
+direction: ltr
+language_name: Українська
+more_options: Додаткові можливості
+title_more_options: Показати/сховати додаткові можливості
+all: Усі
+normal_report: Звичайний звіт
+most_important: Найбільш важливі
+no_warnings: Без попереджень
+profile: Профіль
+no_special_profile: Без спеціальних настройок
+css1: CSS1
+css2: CSS2
+css21: CSS2.1
+css3: CSS3
+SVG: SVG
+svgbasic: SVG Basic
+svgtiny: SVG tiny
+mobile: Мобільний
+ATSC_TV_profile: телебачення ATSC
+TV_profile: телебачення
+medium: Середовище
+aural: аудіо (aural)
+braille: термінал Брайля (braille)
+embossed: посторінковий принтер Брайля (embossed)
+handheld: портативний пристрій (handheld)
+print: друкарська продукція (print)
+projection: проектор (projection)
+screen: дисплей (screen)
+tty: телетайп (tty)
+tv: телевізор (tv)
+presentation: презентація (presentation)
+type: Тип документу
+no_special_type: визначити автоматично
+html_doc: HTML
+css_doc: CSS
+check: Перевірити
+W3C_CSS_validation_service: сервіс перевірки CSS від W3C
+check_CSS: Перевірка каскадних таблиць стилів (CSS) та документів (X)HTML з таблицями стилів
+by_URI: Перевірити URI
+by_file_upload: Перевірити завантажений файл
+by_direct_input: Перевірити набраний текст
+validate_by_URI: Перевірка по URI
+enter_uri: Уведіть  URI документу (HTML з CSS або лише CSS) для перевірки
+page_address: Адреса сторінки для перевірки
+address: Адреса
+submit_uri: Відправити URI для перевірки
+validate_by_file_upload: Перевірити завантажений файл
+choose_document: Оберіть документ, який ви хотіли б перевірити (лише CSS)
+choose_local_file: Оберіть локальний файл для завантаження й перевірки
+local_CSS_file: Локальний файл CSS
+submit_file: Відправити файл для перевірки
+validate_by_input: Перевірка тексту, що набирається
+enter_CSS: Уведіть код CSS, що ви хотіли б перевірити на коректність
+submit_input: Перевірити уведені дані
+note: Примітка
+note_xhtml_valid: Якщо ви хочете перевірити каскадні таблиці стилів, вбудовані до документу (X)HTML, ви повинні спершу <a href="http://validator.w3.org/">перевірити на коректність сам документ (X)HTML</a>
+# End of variables added along with Index page template
+
+W3C_validator_results: W3C результати перевірки CSS для
+# file_title: <!-- provided by the user -->
+CSS_validation_service: Сервіс перевірки CSS
+jump_to: Перейти до
+# errors_count: <!-- generated on the fly -->
+errors: Помилки
+# warnings_count <!-- generated on the fly -->
+warnings: Попередження
+validated_CSS: Перевірений CSS
+congrats: Поздоровляємо! Помилок не знайдено.
+# The sentence defined by doc_validates_before_link and doc_validates_after_link variables goes: \
+# "This document validates as CSSXX!" where XX stands for the CSS version used \
+# Since the content of the link about the CSS version is generated on the fly, \
+# it is important to define what goes before the link and what goes afterwards in 2 separate \
+# variables because the position of the link in the sentence varies in different languages
+doc_validates_before_link: Цей документ проходить перевірку згідно зі стандартом
+doc_validates_after_link: !
+no_errors_interoperable_msg: Для того, щоб продемонструвати відвідувачам, що ви піклуєтесь про створення коректних сторінок, ви можее розмістити цей знак на будь-якій перевіреній сторінці. Ось код XHTML \
+для розміщення:
+valid_CSS: Правильний CSS!
+# <!-- close the img tag with > instead of /> if using HTML<= 4.01 -->
+no_errors_close_tags_msg: закрийте тег img, використовуючи &gt; замість /&gt, якщо використовуєте HTML &lt;= 4.01
+no_errors_dl_local_msg: Якщо хочете, то можете завантажити копію зображення для зберігання безпосередньо на сайті й змінити наведений вище код XHTML, щоб послатися на локальну версію.
+no_errors_create_link_msg: Якщо Ви бажаєте створити посилання на цю сторінку (тобто, на результати цієї \
+перевірки) для полегшення подальших перевірок вами або іншими людьми, то скористайтеся наступним URI:
+no_errors_forHTML_only_msg: лише для документів HTML/XML
+no_errors_bookmark_msg: Або можее просто додати цю сторінку до закладок.
+note_valide_html: Для коректної роботи сервіса перевірки CSS необхідно щоб ваші документи \ 
+мали правильну деревоподібну размітку. Це означає, що ви повинні використовувати <a href="http://validator.w3.org/">коректний HTML</a>.
+top: Наверх
+# hook_html_validator <!-- generated on the fly -->
+not-css1-style: /* ОБЕРЕЖНО! Не є властивістю CSS1 ! */
+errors_sorry_msg: На жаль, ми знайшли наступні помилки
+# errors_list: <!-- generated on the fly -->
+# warnings_list: <!-- generated on the fly -->
+# rules_count: <!-- generated on the fly -->
+valid_CSS_info: Інформація про коректний CSS
+# charset: <!-- generated on the fly -->
+# rules_list: <!-- generated on the fly -->
+CSS_not_found: Не знайдено жодної каскадної таблиці стилів
+home: Головна
+about: Про сервіс
+doc: Документація
+dl: Завантажити
+feedback: Відгуки
+credits: Створювачи
+home_title: Головна сторінка сервісу перевірки CSS від W3C
+about_title: Про цей сервіс
+doc_title: Документація по сервісу перевірки CSS від W3C
+dl_title: Завантаження и встановлення сервісу перевірки CSS
+feedback_title: Как оставить відгук про сервіс
+credits_title: Створювачи
+W3C_quality_msg: Група W3C по підтримці якості, що пропонує безплатні інструменти перевірки якості й інші ресурси
+learn_more_msg: Докладніше про таблиці каскадних стилів CSS
+support: Підтримайте цей інструмент, станьте
+supporter: людиною, що підтримує W3C
+# End of variables added along with Velocity
+
+# Defines your own error and warning message here
+content-type: text/html; charset=utf-8
+content-language: ru
+output-encoding-name: utf-8
+
+# You can change the level warning like this (example) :
+# warning.redefinition.level: 5
+#  level is an integer between 0 and 9 (all others values are ignored)
+warning.redefinition: Перевизначення %s
+
+# used by xml parser 
+warning.style-inside-comment: Do not put style rules inside HTML comments as they may be removed by user agent
+
+# used by org.w3c.css.properties.Css1Style
+warning.same-colors: Однакові кольори для %s та %s
+warning.no-color: Ви не вказали колір атрибуту color (або його зроблено прозорим), але вказали атрибут background-color. Переконайтеся, що послідовність кольорів зберігає текст читабельним.
+warning.no-background-color: Ви не вказали колір фону background-color (або background-color зроблено прозорим), але вказали колір color. Переконайтеся, що послідовність кольорів зберігає текст читабельним.
+#warning.color.mixed-capitalization is now obsolete
+#warning.color.mixed-capitalization: Although color names are case-insensitive, it is recommended to use the mixed capitalization, to make the names more legible: %s
+warning.no-generic-family: %s: рекомендується пропонувати у якості останньої альтернативи базове сімейство шрифтів
+warning.with-space: Імена, що містять пробіли, повинні поміщатися у лапки. Якщо лапки пропущені, будь-яки пробіли до або після імені ігноруються, а послідовності пробілів усередині імені перетворюються у одиничний пробіл.
+warning.no-padding: З фоновим кольором рекомендуеться використовувати відступи (padding)
+warning.same-colors2: Однакові кольори для тексту й фону використовуються у наступних місцях: %s та %s
+warning.relative-absolute: В %s використовуються абсолютні й відносні значення довжини. Це ненадійна таблиця стилів.
+# used by org.w3c.css.properties.CssSelectors
+warning.unknown-html: %s не є елементом HTML
+warning.html-inside: елемент HTML не може бути всередині іншого елементу
+warning.body-inside: елемент BODY не може зустрічатися всередині іншого елементу, за виключенням HTML
+warning.pseudo-classes: Якір псевдокласу %s не використовується для елементів, за виключенням A
+
+# not used by org.w3c.css.properties.CssSelectors for the moment
+warning.noinside: %s не може бути всередині елементу рядкового типа
+warning.withblock: Будьте ообережні! Псевдоелементи можуть бути прив'язані лише до блочних елементів
+warning.block-level: Ця властивість застосовується до блочних елементів.
+
+# used by org.w3c.css.parser.Frame
+warning.no-declaration: У правилі немає визначень
+
+# used by org.w3c.css.parser.CssFouffa
+warning.unsupported-import: Таблиці стилів, що імпортуються, не перевіряються у режимі завантаження й прямого введення
+
+# used by org.w3c.css.values.CssColor
+warning.out-of-range: %s лежить поза діапазоном припустимих значень
+error.invalid-color: Неправильна функція RGB
+
+warning.marker: Властивість marker-offset застосовується до елементів типу display: marker
+
+# used by org.w3c.css.properties.ACssStyle
+warning.relative: Використання відносних одиниць вимірювання у властивості %s робить таблиці стилів більш надійними
+
+# used by org.w3c.css.css.StyleSheetParser and org.w3c.css.css.StyleSheetXMLParser
+error.at-rule: Вибачте, але правило %s не є реалізованим.
+
+# used by all properties and values
+error.operator: %s — некоректний оператор
+error.negative-value: %s від'ємні значення неприпустимі
+error.few-value: замало значень для властивості %s
+
+# be careful here, values comes first
+# You can't write something like this : For the color, blue is an incorrect value
+error.value: %s не є значенням %s 
+
+#used by org.w3c.css.properties3.CssToggleGroup
+error.groupname: %s не є коректним ім'ям групи. Використовуйте правильний ідентифікатор
+
+#used by org.w3c.css.properties3.CssGroupReset
+error.nogroup: %s не встановлено властивістю toggle-group 
+
+#used by org.w3c.css.properties3.CssGlyphOrVert
+error.anglevalue: Значення повинно бути між -360 та 360 та кратно 90
+
+#used by org.w3c.css.properties3.CssTextKashidaSpace
+error.percentage: очікується значення у процентах
+
+#used by org.w3c.css.properties.CssTextAlign
+warning.xsl: значення %s застосовується лише до XSL
+
+#used by org.w3c.css.parser.analyzer.CssParser
+warning.medialist: список середовищ повинен починатися з ‘media :’ %s
+error.nocomb: Комбінатор селекторів %s не припустим у цьому профілі або у цій версії
+
+#used by org.w3c.css.properties.CssDirection
+warning.direction: для блочних елементів замість direction використовуйте нову властивість CSS3 writing-mode
+
+# used by org.w3c.css.properties.CssTextDecoration
+error.same-value: %s оголошено двічі
+
+error.generic-family.quote: імена базових сімейств є ключовими словами та не повинні бути у лапках
+
+# used by org.w3c.css.properties.CssClip
+error.shape: Неправильне визначення положення rect(<top>,<right>,<bottom>,<left>)
+error.shape-separator: Неправильний роздільник у визначенні положення. Повинна використовуватися кома.
+
+# used by org.w3c.css.properties.CssContent
+error.attr: Неправильне визначення attr(X)
+error.function: Неправильне оголошення функції
+error.counter: Неправильне оголошення counter(<identifier>[,<list-style-type>]?)
+error.counters: Неправильне оголошення counters(<identifier>,<string>[,<list-style-type>]?)
+
+# used by org.w3c.css.font.Src
+error.format: Неправильне оголошення формату format(<string>[,<string>]*)
+error.local: Неправильне оголошення формату local(<string>|<ident>+)
+
+# used by org.w3c.css.values.CssAngle, org.w3c.css.values.CssFrequency, org.w3c.css.values.CssTime, org.w3c.css.values.CssLength
+error.unit: %s некоректна одиниця вимірювання
+
+# used by org.w3c.css.aural.ACssAzimuth
+error.degree: Позиція повинна задаватися у градусах.
+
+# used by org.w3c.css.aural.ACssElevation
+error.elevation.range: Вказує підняття як кут між -90deg та 90deg.
+
+# used by org.w3c.css.aural.ACssPitchRange
+error.range: Значення поза припустимих меж. Значення повинно бути між 0 и 100.
+
+# used by org.w3c.css.properties.CssTextShadow
+error.two-lengths: Зміщення тіні задається двома значеннями довжини (радіус розмиття може бути додатково вказано після зміщення).
+
+error.integer: Це число повинно бути цілим
+error.comma: Пропущено роздільну кому
+
+# used by org.w3c.css.values.CssPercentage
+error.percent: %s некоректне процентне значення
+
+# used by org.w3c.css.values.CssString
+error.string: %s некоректне рядкове значення
+
+# used by org.w3c.css.values.CssURL
+error.url: %s некоректний URL
+
+# used by org.w3c.css.values.CssColor
+error.rgb: %s не є припустимим кольором з 3 або 6 шістнадцяткових цифр
+error.angle: %s не є припустимим кутом. Значення повинно бути між 0 та 360
+
+# used by org.w3c.css.values.CssNumber
+error.zero: лише 0 може бути %s. Ви повинні вказати після числа одиниці вимірювання
+
+# used by org.w3c.css.parser.CssPropertyFactory
+error.noexistence-at-all: Властивість %s не існує
+error.noexistence-media: Властивість %s не існує для середовища %s
+error.noexistence: Властивість %s не існує в %s, але існує в %s
+warning.noexistence: Властивість %s не існує в %s але існує в %s
+warning.noexistence-media: Властивість %s не існує для середовища %s
+warning.notforusermedium : Властивість %s не існує для вказаного користувачем середовища
+##################
+warning.noothermedium : Властивості для інших середовищ можуть не функціонувати у вказаному користувачем середовищі
+# used by org.w3c.css.parser.AtRule*
+error.noatruleyet: Правила @rules, за виключенням @import, не підтримуються стандартом CSS1 %s
+# used by org.w3c.css.parser.analyzer.CssParser
+error.notforcss1: Значення %s не існує для CSS1
+warning.pseudo: Невідомий псевдоелемент або псевдоклас %s у профілі за замовчуванням (%s)
+warning.nocomb: комбінатор селекторів %s не припустим у даному профілі (%s)
+warning.charsetspecial: Цей профіль використовує особливий синтаксис @charset: після @charset йде рівно один пробіл, після якого йде им'я кодування у лапках, що відразу же замикається крапкой з комою.
+warning.notversion: %s не може бути використано у CSS версії %s
+
+# used by org.w3c.css.parser.CssFouffa
+error.unrecognize: Забагато значень або нерозпізнані значення
+
+# used by org.w3c.css.parser.CssFouffa
+generator.unrecognize: Помилка розбору
+generator.dontmixhtml: Помилка аналiзу синтаксису. Таблицi стилiв не повиннi містити HTML синтаксису.
+
+# used by org.w3c.css.css.StyleSheetGeneratorHTML2
+error.unknown: Невідома помилка
+
+# used by org.w3c.css.parser.CssSelectors
+error.pseudo-element: Псевдоелемент %s не може з'являться у %s
+error.pseudo-class: Псевдоклас %s не може розташовуватися тут у HTML %s
+error.pseudo: Невідомий псевдоелемент або псевдоклас %s
+error.id: Неправильний ідентифікатор селектору #%s! У простому селекторі може бути вказано лише один ідентифікатор: %s.
+error.space: Якщо використовується селектор атрибуту ~=, то слово у значенні %s не повинно містити пробіли.
+error.todo : На жаль, %s ще не реалізовано.
+error.incompatible: %s та %s не сумісні
+warning.incompatible: %s та %s не сумісні
+error.notformobile: %s не може бути використано з профілем mobile
+error.notforatsc: %s не може бути використано з профілем ATSC
+error.notfortv: %s не може бути використано з профілем TV
+error.notversion: %s не може бути використано з цією версією CSS %s
+
+error.media: нерозпізнане середовище %s
+error.page: нерозпізнана псевдоіменована сторінка %s
+
+error.unrecognized.link: Нерозпізнане посилання або інструкція обробки з таблицею стилів XML.
+
+# used by StyleSheetGeneratorHTML
+generator.context: Контекст
+generator.request: У процесі виводу вашої таблиці стилів виникла помилка. Будь ласка, виправьте запит або надішліть лист до plh@w3.org.
+generator.unrecognized: Не розпізнано
+generator.invalid-number: Некоректне число
+generator.property: Помилка значення
+generator.line: Рядок
+generator.not-found: Файл не знайдено
+
+generator.doc-html:   <!-- removed this confusing message olivier 2006-12-14 -->
+generator.doc:  <!-- removed this confusing message olivier 2006-12-14 -->
+
+
+# used by the parser
+parser.semi-colon: спроба знайти крапку з комою до імені властивості. додайте її
+
+parser.unknown-dimension: Невідома одиниця розміру
+
+parser.old_class: У CSS1 им'я класу могло починатися із цифри (#55ft), якщо це розмірність (#55in). У CSS2 такі ідентифікатори вважаються невідомими розмірами (для додання одиниць вимірювання у майбутньому). Щоб “.%s” був правильним класом, CSS2 потребує, щоб початкові цифри були екрановані “.\3%s”
+
+parser.old_id: У CSS1 ідентифікатор міг починатися із цифри (#55ft), якщо це не розмірність (#55in). У CSS2 такі ідентифікатори вважаються невідомими розмірами (для додання одиниць вимірювання у майбутньому).
+
+parser.class_dim: У CSS1 им'я класу могло починатися із цифри (.55ft), якщо це не розмірність (.55in).
+
+parser.id_dim: У CSS1 ідентифікатор міг починатися із цифри (#55ft), якщо це не розмірність (#55in).
+
+parser.charset: Правило @charset може з'являтися лише у початку описа стилю. Будь ласка, перевірте, чи є перед ним пробіли.
+
+parser.charsetspecial: Цей профіль має специфічний синтаксис @charset: після @charset йде рівно один пробіл, за яким йде назва кодування у лапках, за яким відразу йде крапка з комою.
+
+warning.old_id: У CSS1 ідентифікатор міг починатися із цифри (#55ft), якщо це не розмірність (#55in). У CSS2 такі ідентифікатори вважаються невідомими розмірами (для додання одиниць вимірювання у майбутньому).
+
+warning.old_class: У CSS1 им'я класу могло починатися із цифри (#55ft), якщо це не розмірність (#55in). У CSS2 такі ідентифікатори вважаються невідомими розмірами (для додання одиниць вимірювання у майбутньому).
+
+# used by the servlet
+servlet.invalid-request: Передано неправильний запит
+servlet.process: Не можу опрацювати об'єкт
+
+warning.atsc: %s може не підтримуватися пристроєм atsc-tv
+error.onlyATSC: %s ця функція використовується лише у середовищі atsc-tv
+
+warning.otherprofile: властивість %s не існує для даного профілю, але вона перевіряється у відповідності з іншим профілем
+warning.deprecated: це значення є небажаним
+
+warning.float-no-width: У (x)HTML+CSS рухомі елементи повинні мати оголошену ширину. Це не розповсюджується лише на елементи з вбудованою шириною (html, img, input, textarea, select, або object)
+parser.charsetcss1: @charset правила не можуть бути використані у CSS1
+parser.attrcss1: Селектори властивостей недійсні у CSS1
+parser.invalid_id_selector: Недійсний ID селектор
+parser.import_not_allowed: @import не дозволені після будь-якої валідної заяви, крім як @charset та @import.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/Messages.properties.zh-cn	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,378 @@
+# Chinese (simplified script) translation, last updated in sync with Messages.properties.en,v 1.31
+
+direction: ltr
+language_name: 简体中文
+more_options: 更多选项
+title_more_options: Show/Hide extra validation options
+all: 全部
+normal_report: 正常
+most_important: 最重要的
+no_warnings: 取消警告
+profile: 配置
+no_special_profile: 不指定配置文件
+css1: CSS 版本 1
+css2: CSS 版本 2
+css21: CSS 版本 2.1
+css3: CSS 版本 3
+SVG: SVG
+svgbasic: SVG Basic
+svgtiny: SVG Tiny
+mobile: Mobile
+ATSC_TV_profile: ATSC TV profile
+TV_profile: TV profile
+medium: 媒介
+aural: 听觉设备
+braille: 布莱叶点字
+embossed: 浮雕
+handheld: 手持设备
+print: 印刷设备
+projection: 投影设备
+screen: 银幕
+tty: TTY
+tv: 电视
+presentation: 演示设备
+
+type: 类别
+no_special_type: 自动
+html_doc: HTML
+css_doc: CSS
+
+check: Check
+W3C_CSS_validation_service: W3C CSS 验证服务
+check_CSS: 检查层叠样式表(CSS)文档和HTML或者XHTML文档中的CSS内容
+by_URI: 通过指定URI
+by_file_upload: 通过文件上传
+by_direct_input: 通过直接输入
+validate_by_URI: 验证指定URI的CSS内容
+enter_uri: 输入你想验证的文档(带CSS的HTML文档或者CSS文档)的URI
+page_address: 要验证的页面地址
+address: URI地址
+submit_uri: Submit URI for validation
+validate_by_file_upload: 验证上传文件
+choose_document: 选择需要验证的文件
+choose_local_file: Choose a Local File to Upload and Validate
+local_CSS_file: 本地CSS文件
+submit_file: Submit file for validation
+validate_by_input: 验证直接输入的内容
+enter_CSS: 输入你要验证的CSS代码
+submit_input: Submit your input for validation
+note: 注意
+note_xhtml_valid: 如果你想验证一段嵌入在HTML或者XHTML文档中的CSS,你首先要<a href="http://validator.w3.org/">验证你的HTML或者XHTML文档</a>是正确的。
+# End of variables added along with Index page template
+
+W3C_validator_results: W3C CSS 校验器结果:  
+# file_title: <!-- provided by the user -->
+CSS_validation_service: CSS 验证服务
+jump_to: 查看
+# errors_count: <!-- generated on the fly -->
+errors: 错误 
+# warnings_count <!-- generated on the fly -->
+warnings: 警告 
+validated_CSS: 已经校验的层叠样式表
+congrats: 恭喜恭喜
+# The sentence defined by doc_validates_before_link and doc_validates_after_link variables goes: \
+# "This document validates as CSSXX!" where XX stands for the CSS version used \
+# Since the content of the link about the CSS version is generated on the fly, \
+# it is important to define what goes before the link and what goes afterwards in 2 separate \
+# variables because the position of the link in the sentence varies in different languages
+doc_validates_before_link: 恭喜恭喜,此文档已经通过
+doc_validates_after_link: 校验!
+no_errors_interoperable_msg: 为了告诉你的访客你曾致力于建立交互性的网页 \
+你可以显示这个图标在任意经过检验的网页上。这里是 \
+你用作加入图标到你的网页上的HTML代码:
+valid_CSS: Valid CSS!
+# <!-- close the img tag with > instead of /> if using HTML<= 4.01 -->
+no_errors_close_tags_msg: close the img tag with &gt; instead of /&gt; if using HTML &lt;= 4.01
+no_errors_dl_local_msg: 如果你喜欢的话,你可以下载这个图象到你的网站目录下,并且 \
+改变以上的代码段以关联到你的当地图象而不是这个服务器。 
+no_errors_create_link_msg: 如果你愿意建立连接到此页 (例如,这个校验结果) \
+以便以后更加容易地再校验次页,或者容许其它人校验 \
+你的网页,其 URI 是:
+no_errors_forHTML_only_msg: 仅使用于HTML文档
+no_errors_bookmark_msg: 或者,你可以加入当前也到你的书签或列表中。
+note_valide_html: 如果你想验证一段嵌入在HTML或者XHTML文档中的CSS,你首先要<a href="http://validator.w3.org/">验证你的HTML或者XHTML文档</a>是正确的。 
+top: Top
+# hook_html_validator <!-- generated on the fly -->
+not-css1-style: /* 请注意!这不是CSS1的属性! */
+errors_sorry_msg: 错误:
+# errors_list: <!-- generated on the fly -->
+# warnings_list: <!-- generated on the fly -->
+# rules_count: <!-- generated on the fly -->
+valid_CSS_info: 你已经校验的层叠样式表:
+# charset: <!-- generated on the fly -->
+# rules_list: <!-- generated on the fly -->
+CSS_not_found: 没有找到样式表
+home: 首页
+about: 关于
+doc: 文档
+dl: 下载
+feedback: 反馈
+credits: 感谢
+home_title: Home page for the W3C CSS Validation Service
+about_title: About this service
+doc_title: Documentation for the W3C CSS Validation Service
+dl_title: Download and install the CSS validator
+feedback_title: How to provide feedback on this service
+credits_title: Credits and Acknowlegments
+W3C_quality_msg: W3C's Quality Assurance Activity, bringing you free Web quality tools and more
+learn_more_msg: Learn more about Cascading Style Sheets
+support: Support this tool, become a
+supporter: W3C Supporter
+# End of variables added along with Velocity
+
+# Defines your own error and warning message here
+content-type: text/html; charset=utf-8
+content-language: zh
+output-encoding-name: utf-8
+
+# You can change the level warning like this (example) :
+# warning.redefinition.level: 5
+#  level is an integer between 0 and 9 (all others values are ignored)
+warning.redefinition: 重定义了 %s
+
+# used by xml parser
+warning.style-inside-comment: 不要把样式表的规则放入HTML注释中,以避免被用户代理删掉。
+
+# used by org.w3c.css.properties.Css1Style
+warning.same-colors: 一样的颜色对于 %s 和 %s
+warning.no-color: 你没有为你的背景色设置(前景)颜色
+#warning.color.mixed-capitalization is now obsolete
+#warning.color.mixed-capitalization: Although color names are case-insensitive, it is recommended to use the mixed capitalization, to make the names more legible: %s
+warning.no-background-color: 你没有为你的(前景)颜色设置背景色
+warning.no-generic-family: %s: 建议你指定一个种类族科作为最后的选择
+error.generic-family.quote: 总族名称是保留字,所以不能被引用。
+warning.with-space: 包含空白的族科名称应该包含于蔻蔻中。如果省略了,任何 \
+名字前或后的空白符号都会被忽略而名字中所有连续的空白 \
+符号会被转换为单一个空格。
+warning.no-padding: 建议你使用有背景色的浮白区域(padding area)
+warning.same-colors2: 颜色和背景颜色使用了相同的颜色 %s 和 %s
+warning.relative-absolute: 你在 %s 使用了一些绝对和相对长度。这不是棒的样式表
+
+# used by org.w3c.css.properties.CssSelectors
+warning.unknown-html: %s 不是HTML元素
+warning.html-inside: HTML 元素不能嵌在其它元素中
+warning.body-inside: BODY 元素不能嵌在除了HTML元素的其它元素中
+warning.pseudo-classes: 定位锚伪类 %s 除了对'A'外,在元素上没有效果
+
+# not used by org.w3c.css.properties.CssSelectors for the moment
+warning.noinside: %s 不能嵌在内联元素中
+warning.withblock: 请小心。伪元素只能附于块级元素上
+warning.block-level: 这个属性应用于块级元素
+
+# used by org.w3c.css.parser.Frame
+warning.no-declaration: 在规则中没有声明
+
+# used by org.w3c.css.parser.CssFouffa 
+warning.unsupported-import: 通过直接输入及文件上传模式导入的样式表未经检查
+
+# used by org.w3c.css.values.CssColor
+warning.out-of-range: %s 超出范围
+error.invalid-color: 无效的 RGB 函数
+warning.marker: Marker-offset属性对标有’display: marker’的元素有效。
+
+# used by org.w3c.css.properties.ACssStyle
+warning.relative: 在属性 %s 使用相对单位令样式表更加棒
+
+# used by org.w3c.css.css.StyleSheetParser and org.w3c.css.css.StyleSheetXMLParser
+error.at-rule: 对不起,'@规则' %s 不能应用
+
+# used by all properties and values
+error.operator: %s 是一个错误的运算符
+error.negative-value: %s 不允许使用负值
+error.few-value: 属性 %s 的值太小
+
+# be careful here, values comes first
+# You can't write something like this : For the color, blue is an incorrect value
+error.value: %s 不是一个 %s 值
+
+#used by org.w3c.css.properties3.CssToggleGroup
+error.groupname: %s 不是正确的组名称. 请使用合法的标识符
+
+#used by org.w3c.css.properties3.CssGroupReset
+error.nogroup: %s 没有在 toggle-group 属性中指定
+
+#used by org.w3c.css.properties3.CssTextKashidaSpace
+error.percentage: 预期是百分比数值
+
+#used by org.w3c.css.properties.CssTextAlign
+warning.xsl: 值 %s 仅在XSL中生效
+
+# used by org.w3c.css.properties.CssTextDecoration
+error.same-value: %s 重复出现
+
+# used by org.w3c.css.properties.CssClip
+error.shape: 无效的形状定义 rect(<top>,<right>,<bottom>,<left>)
+error.shape-separator: 形状定义的分隔符无效,必须为逗号
+
+# used by org.w3c.css.properties.CssContent
+error.attr: 无效的属性定义 attr(X)
+error.function: 无效的函数定义
+error.counter: 无效的计数器定义 counter(<identifier>[,<list-style-type>]?)
+error.counters: 无效的计数器定义 counters(<identifier>,<string>[,<list-style-type>]?)
+
+# used by org.w3c.css.font.Src
+error.format: 无效的格式定义 format(<string>[,<string>]*)
+error.local: 无效的格式定义 local(<string>|<ident>+)
+
+#used by org.w3c.css.properties3.CssGlyphOrVert
+error.anglevalue: 值必须介于 -360 和 360 之间,并且能被 90 整除
+
+error.angle: %s 不是有效的角度数值。值应该介于 0 和 360 之间
+
+# used by org.w3c.css.values.CssAngle, org.w3c.css.values.CssFrequency, org.w3c.css.values.CssTime, org.w3c.css.values.CssLength
+error.unit: %s 是错误的单位
+
+# used by org.w3c.css.aural.ACssAzimuth
+error.degree: 位置必须描述为有效的角度范围
+
+# used by org.w3c.css.aural.ACssElevation
+error.elevation.range: 请指定仰角(elevation)以一个角度值,在'-90deg'和'90deg'之间("deg"为度).
+
+# used by org.w3c.css.aural.ACssPitchRange
+error.range: 此值超出范围。此值必须在'0'和'100'之间
+
+# used by org.w3c.css.properties.CssTextShadow
+error.two-lengths: 一个阴影位移由两个<length>值(一个模糊范围可以选择放于阴影位移之后)
+
+error.integer: This number should be an integer.
+error.comma: 缺少逗号分隔符
+
+# used by org.w3c.css.values.CssPercentage
+error.percent: %s 是错误的百分比
+
+# used by org.w3c.css.values.CssString
+error.string: %s 是错误的字符串
+
+# used by org.w3c.css.values.CssURL
+error.url: %s 是错误的URL
+
+# used by org.w3c.css.values.CssColor
+error.rgb: %s 不是有效的3或6伪十六进制数字的颜色
+
+# used by org.w3c.css.values.CssNumber
+error.zero: 只有0可以成为 %s. 你必须在你的数字后加入单位
+
+# used by org.w3c.css.parser.CssPropertyFactory 
+error.noexistence-at-all: 属性 %s 不存在
+error.noexistence-media: 媒体 %s 的属性 %s 不存在
+error.noexistence: 属性 %s 不存在于 %s , 但存在于 %s
+warning.noexistence: 属性 %s 不存在于 %s , 但存在于 %s
+warning.noexistence-media: 媒体 %s 的属性 %s 不存在
+error.notforcss1: 值 %s 不存在 CSS1 里
+warning.notforusermedium : 属性在该usermedium中不存在
+warning.noothermedium : 其他媒介中的属性在usermedium中未必正常工作
+error.noatruleyet: CSS1 没有支援 @import 以外的 @rule %s
+# used by org.w3c.css.parser.analyzer.CssParser
+warning.pseudo: 未知的伪元素或伪类 %s 出现在默认配置 (%s) 中
+warning.nocomb: 选择子之间的连接子 %s 不允许使用在该配置 (%s) 中
+warning.charsetspecial: 该配置的 @charset 具有特定的语法规则: 后边紧随一个空格, 之后紧随引号引起的编码名称, 最后跟一个分号.
+warning.notversion: %s 不能用于该版本的CSS : %s
+
+
+
+# used by org.w3c.css.parser.CssFouffa
+error.unrecognize: 太多值不能识别
+error.unknown: 未知错误
+
+# used by org.w3c.css.parser.CssSelectors
+error.pseudo-element: 伪元素%s 不能在次处的上下文 %s 中出现
+error.pseudo-class: 伪类 .%s 不能在此处的HTML上下文 %s 中出现
+error.pseudo: 不识别的伪元素或伪类 %s
+error.id: ID选择符 #%s 无效!只有一个ID选择符可以被指定到普通选择符: %s.
+error.space: 如果使用了属性选择符 ~= ,在值 %s 中的字必须不包含空格
+error.todo : 抱歉,特性 %s 还不能支持
+error.incompatible: %s 和 %s 不兼容
+warning.incompatible: %s 和 %s 不兼容
+error.notforatsc: %s 不能在 ATSC 配置中使用
+error.notformobile: %s 不能在 mobile 配置中使用
+error.notfortv: %s 不能在 TV 配置中使用
+error.notversion: %s 在这个 CSS 版本无法使用: %s
+error.media: 不能识别的媒体 %s 
+error.page: 不能职别的伪命名页 %s
+
+
+# used by StyleSheetGeneratorHTML
+generator.context: 上下文
+generator.request: 导出你的样式表时发生错误 \
+请更正你的请求或发送邮件到 plh@w3.org.
+generator.unrecognized: 不能识别的
+generator.unrecognize: 语法错误
+generator.dontmixhtml: 解析错误:样式表中不应包含HTML语法。 
+generator.invalid-number: 无效数字
+generator.property: 无效数字
+generator.line: 行
+generator.not-found: 找不到文件
+generator.doc-html: <!-- removed this confusing message olivier 2006-12-14 -->
+generator.doc:<!-- removed this confusing message olivier 2006-12-14 -->
+
+
+# used by the parser
+parser.semi-colon: 试图寻找属性名前面的冒号。加上!
+
+parser.unknown-dimension: 未知因素
+
+# Xu Ting commented out this translation @ 2006.6.9
+# I changed a little bit of this translation.
+#parser.old_class:在CSS1,类名应该以点开始 (".55ft"), \
+#除非它是一个尺寸值 (".55in")。在CSS2,以上的类 \
+#被解释为不识别的尺寸值(以允许将来加入新的单位)
+
+# Xu Ting's modification.
+parser.old_class:在CSS1,类名应该以点开始 (例如".55ft"), \
+但是不能是一个尺寸值 (例如".55in")。在CSS2,以上的类是不允许的,它会被解释成 \
+一个未知的尺寸(目的是为了以后可以增加新的单位)。
+
+# The following is translated by Xu Ting, you can contact me via tonny.xu@gmail.com
+
+parser.old_id:在CSS1中,一个id的名字可以是以数字开头(例如"#55ft"), \
+但是不能是一个尺寸值(例如"#55in")。 在CSS2中,这样的id是不允许的,它会被解释成 \
+一个未知的尺寸(目的是为了以后可以增加新的单位)。
+
+parser.class_dim:在CSS1中,一个类的名字可以是以数字开头(例如".55ft"), \
+但是不能是一个尺寸值(例如".55in")。
+
+parser.id_dim:在CSS1中,一个id的名字可以是以数字开头(例如"#55ft"),  \
+但是不能是一个尺寸值(例如"#55in")。
+
+parser.charset: @charset 条件只能在样式表的头部出现。 \
+请检查是否该条件前是否有空格。
+
+parser.charsetspecial:当前配置对@charset 而言,有个非常特殊的语法: \
+@charset 后面必须直接接一个空格,有且仅有一个空格,然后接上添加了引号的编码的名称 \
+在引号的后面直接接一个分号。
+
+warning.old_id:在CSS1中,一个id的名字可以是以数字开头(例如"#55ft"), \
+但是不能是一个尺寸值(例如"#55in")。 在CSS2中,这样的id是不允许的,它会被解释成 \
+一个未知的尺寸(目的是为了以后可以增加新的单位)。
+
+warning.old_class:在CSS1中,一个类的名字可以是以数字开头(例如".55ft"),\
+但是不能是一个尺寸值(例如".55in")。 在CSS2中,这样的类的名字是不允许的,它会被解释成 \
+一个未知的尺寸(目的是为了以后可以增加新的单位)。
+
+# used by the servlet
+servlet.invalid-request: 你发出了无效的请求
+servlet.process: 不能对对象进行处理
+
+error.unrecognized.link: 不可识别的链接元素或者XML样式 PI.
+
+#used by org.w3c.css.parser.analyzer.CssParser
+warning.medialist: 媒介列表应以 'media :' %s 开始
+error.nocomb: 在现有版本或者配置中,不允许在选择子之间使用连接子 %s 
+
+#used by org.w3c.css.properties.CssDirection
+warning.direction: 不应该在块级别的元素中使用 'direction' , 应使用新的 CSS3 属性 'writing-mode'
+
+
+warning.atsc: %s 也许没有被 atsc-tv 媒介所支持
+error.onlyATSC: %s 该函式只能在 atsc-tv 媒介中使用
+
+
+warning.otherprofile: 属性 %s 不存在于该配置中, 但在另一个配置中有效
+warning.deprecated: 该值已作废
+
+warning.float-no-width: 在 (x)HTML+CSS 框架下,浮动元素需要声明宽度。具有固有宽度的元素 (html, img, input, textarea, select 或 object) 不受影响
+parser.charsetcss1: @charset 条件不能在 CSS1 中使用
+parser.attrcss1: 属性选择符在 CSS1 中无效
+parser.invalid_id_selector: 无效的 ID 选择符
+parser.import_not_allowed: @import 不可以出现在除 @charset 和 @import 以外的任何有效语句之后。
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/NVPair.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,112 @@
+//
+// $Id: NVPair.java,v 1.3 2005-09-14 15:15:32 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
+/*
+ * Be Careful this version is not the original version.
+ * I modified some sources.          Philippe Le Hegaret
+ *
+ * @(#)NVPair.java					0.2-2 23/03/1997
+ *
+ *  This file is part of the HTTPClient package
+ *  Copyright (C) 1996,1997  Ronald Tschalaer
+ *
+ *  This library is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Library General Public
+ *  License as published by the Free Software Foundation; either
+ *  version 2 of the License, or (at your option) any later version.
+ *
+ *  This library is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Library General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Library General Public
+ *  License along with this library; if not, write to the Free
+ *  Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ *  MA 02111-1307, USA
+ *
+ *  For questions, suggestions, bug-reports, enhancement-requests etc.
+ *  I may be contacted at:
+ *
+ *  ronald@innovation.ch
+ *  Ronald.Tschalaer@psi.ch
+ *
+ */
+
+package org.w3c.css.util;
+
+/**
+  * This class holds a Name/Value pair of strings. It's used for form-data
+  * and various internal things.
+  *
+  * @version	0.2 (bug fix 2)  23/03/1997
+  * @author	Ronald Tschal&auml;r
+  */
+
+public class NVPair {
+  /** the name */
+  String name;
+
+  /** the value */
+  Object value;
+
+  // Constructors
+
+  /**
+    * Creates an empty name/value pair.
+    */
+  NVPair() {
+    this("", "");
+  }
+
+  /**
+    * Creates a copy of a given name/value pair.
+    * @param p the name/value pair to copy
+    */
+  public NVPair(NVPair p) {
+    this(p.name, p.value);
+  }
+
+  /**
+    * Creates a new name/value pair and initializes it to the
+    * specified name and value.
+    * @param name  the name
+    * @param value the value
+    */
+  public NVPair(String name, Object value) {
+    this.name  = name;
+    this.value = value;
+  }
+
+  // Methods
+
+  /**
+    * get the name
+    *
+    * @return the name
+    */
+  public final String getName() {
+    return name;
+  }
+
+  /**
+    * get the value
+    *
+    * @return the value
+    */
+  public final Object getValue() {
+    return value;
+  }
+
+  /**
+    * produces a string containing the name and value of this instance.
+    * @return a string containing the class name and the name and value
+    */
+  public String toString() {
+    return getClass().getName() + "[name=" + name + ",value=" + value + "]";
+  }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/QuickSortAlgorithm.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,70 @@
+//
+// $Id: QuickSortAlgorithm.java,v 1.5 2007-11-26 05:07:17 ot 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 org.w3c.css.util;
+
+/**
+ * The quicksort algorithm.
+ *
+ * @version $Revision: 1.5 $
+ * @author  Philippe Le Hegaret
+ */
+public class QuickSortAlgorithm extends SortAlgorithm {
+    int partition(Object[] objs,
+		  int part_low_ind, int part_high_ind,
+		  CompareFunction comp) {
+	int lastsmall;
+	int comp1;
+	Object median_val;
+	Object transit;
+
+	// swap median value an first value of array
+	comp1 = ( part_low_ind + part_high_ind ) / 2;
+
+	transit = objs[part_low_ind];
+	objs[part_low_ind] = objs[comp1];
+	objs[comp1] = transit;
+
+	median_val = objs[part_low_ind];
+
+	lastsmall = part_low_ind;
+	for (int i = part_low_ind + 1; i<=part_high_ind; i++) {
+	    if (comp.compare(objs[i], median_val)) {
+		lastsmall++;
+		// swap lastsmall and i
+		transit=objs[lastsmall];
+		objs[lastsmall]=objs[i];
+		objs[i]=transit;
+	    }
+	}
+	// swap part_low_ind and lastsmall
+	transit=objs[part_low_ind];
+	objs[part_low_ind]=objs[lastsmall];
+	objs[lastsmall]=transit;
+
+	return lastsmall;
+    }
+
+    /**
+     * The quicksort function.
+     *
+     * @param objs the array with all objects
+     * @param start the start offset in the array
+     * @param end the end offset in the array
+     * @param comp The comparaison function between objects
+     */
+    public void sort(Object[] objs,
+		     int start, int end,
+		     CompareFunction comp) {
+	if (start < end) {
+	    int median = partition(objs, start, end, comp);
+	    sort(objs, start, median, comp);
+	    sort(objs, median+1, end, comp);
+	}
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/SortAlgorithm.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,28 @@
+//
+// $Id: SortAlgorithm.java,v 1.5 2007-11-26 05:07:17 ot 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 org.w3c.css.util;
+
+/**
+ * This class is only to sort an array with an abstract algorithm.
+ *
+ * @version $Revision: 1.5 $
+ * @author  Philippe Le Hegaret
+ */
+public abstract class SortAlgorithm {
+
+    /**
+     * The sort function.
+     *
+     * @param objs the array with all objects
+     * @param start the start offset in the array
+     * @param end the end offset in the array
+     * @param comp The comparaison function between objects
+     */
+    public abstract void sort(Object[] objs,
+			      int start, int end,
+			      CompareFunction comp);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/SortedHashtable.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,68 @@
+//
+// $Id: SortedHashtable.java,v 1.5 2009-02-25 20:45:10 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 org.w3c.css.util;
+
+
+import java.util.Enumeration;
+import java.util.Hashtable;
+
+/**
+ * @version $Revision: 1.5 $
+ */
+public class SortedHashtable extends Hashtable {
+
+    /**
+     * Constructs a new, empty hashtable with the specified initial
+     * capacity and the specified load factor.
+     *
+     * @param      initialCapacity   the initial capacity of the hashtable.
+     * @param      loadFactor        a number between 0.0 and 1.0.
+     * @exception  IllegalArgumentException  if the initial capacity is less
+     *               than or equal to zero, or if the load factor is less than
+     *               or equal to zero.
+     */
+    public SortedHashtable(int initialCapacity, float loadFactor) {
+	super(initialCapacity, loadFactor);
+    }
+
+    /**
+     * Constructs a new, empty hashtable with the specified initial capacity
+     * and default load factor.
+     *
+     * @param   initialCapacity   the initial capacity of the hashtable.
+     */
+    public SortedHashtable(int initialCapacity) {
+        super(initialCapacity);
+    }
+
+    /**
+     * Constructs a new, empty hashtable with a default capacity and load
+     * factor.
+     *
+     * @since   JDK1.0
+     */
+    public SortedHashtable() {
+	super();
+    }
+
+    public Object[] getSortedArray() {
+	SortAlgorithm sort = new QuickSortAlgorithm();
+	Object[] sortedArray = new Object[size()];
+	int i = 0;
+
+	values().toArray(sortedArray);
+	sort.sort(sortedArray, 0, size()-1, new CompareString());
+
+	return sortedArray;
+    }
+}
+
+class CompareString extends CompareFunction {
+    public boolean compare(Object obj1, Object obj2) {
+	return (obj1.toString().compareTo(obj2.toString()) > 0);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/Utf8Properties.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,292 @@
+// $Id: Utf8Properties.java,v 1.4 2009-02-24 22:22:07 ylafon Exp $
+// From Jean-Guilhem Rouel
+//
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+
+package org.w3c.css.util;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.util.Date;
+import java.util.Enumeration;
+import java.util.Properties;
+
+/**
+ * This class extends the Properties class to provide the ability
+ * to load properties file using UTF-8 encoding (original Java Properties class
+ * uses ISO-8859-1, and unicode escaped characters)<br/>
+ *
+ * @see java.util.Properties
+ */
+public class Utf8Properties<K,V> extends Properties {
+
+    /**
+     * use serialVersionUID from JDK 1.1.X for interoperability
+     */
+    private static final long serialVersionUID = 5907218757225133892L;
+
+    /**
+     * Encoding used to read properties from a file
+     */
+    public static final String ENCODING	       		 = "UTF-8";
+
+    /**
+     * Characters used to write comment lines in a property file
+     */
+    private static final String COMMENT 	       		 = "#!";
+
+    /**
+     * Possible Separator between key and value of a property in a property
+     *  file
+     */
+    private static final String keyValueSeparators 	 = "=: \t\r\n\f";
+
+    /**
+     * Creates an empty property list with no default values.
+     *
+     * @see java.util.Properties#Properties()
+     */
+    public Utf8Properties() {
+	this(null);
+    }
+
+    /**
+     * Creates an empty property list with the specified defaults.
+     *
+     * @param   defaults   the defaults.
+     * @see java.util.Properties#Properties(java.util.Properties)
+     */
+    public Utf8Properties(Properties defaults) {
+	this.defaults = defaults;
+    }
+
+    /**
+     * Reads a property list (key and element pairs) from the input
+     * stream.  The stream is assumed to be using the UTF-8
+     * character encoding or compatible.
+     * Characters can be written with their unicode escape sequence.
+     *
+     * @param      inStream   the input stream.
+     * @exception  IOException  if an error occurred when reading from the
+     *               input stream.
+     * @throws	   IllegalArgumentException if the input stream contains a
+     * 		   malformed Unicode escape sequence.
+     * @see java.util.Properties#load(java.io.InputStream)
+     */
+    public synchronized void load(InputStream inStream) throws IOException {
+	BufferedReader in = new BufferedReader(new InputStreamReader(inStream, ENCODING));
+	String line = in.readLine();
+
+	while(line != null) {
+	    line = removeWhiteSpaces(line);
+	    if(!line.equals("") && COMMENT.indexOf(line.charAt(0)) == -1) {
+		// Removes the beginning separators
+		String property = line;
+		// Reads the whole property if it is on multiple lines
+		while(continueLine(line)) {
+		    property = property.substring(0, property.length() - 1);
+		    line = in.readLine();
+		    property += line;
+		}
+		//property = new String(property.getBytes(ENCODING), ENCODING);
+
+		if(!property.equals("")) {
+		    int endOfKey = 0;
+		    // calculates the ending index of the key
+		    while(endOfKey < property.length() &&
+		    	(keyValueSeparators.indexOf(property.charAt(endOfKey)) == -1)) {
+			endOfKey++;
+		    }
+		    String key   = property.substring(0, endOfKey);
+		    String value = property.substring(endOfKey + 1, property.length());
+
+		    key   = loadConversion(key);
+		    value = loadConversion(removeWhiteSpaces(value));
+
+		    put(key, value);
+		    //// For debugging only
+		    //System.out.println("key: " + key);
+		    //System.out.println("value: " + value);
+		    //System.out.println("-----------");
+		}
+	    }
+	    line = in.readLine();
+	}
+    }
+
+    /**
+     * A simple method to remove white spaces
+     *  at the beginning of a String
+     * @param 	line 	the String to treat
+     * @return 	the same String without white spaces at the beginning
+     */
+    public static String removeWhiteSpaces(String line) {
+	int index = 0;
+	while(index < line.length() && keyValueSeparators.indexOf(line.charAt(index)) != -1) {
+	    index++;
+	}
+	return line.substring(index, line.length());
+    }
+
+    /**
+     * Replaces all characters preceded by a '\' with the corresponding special
+     * character and converts unicode escape sequences to their value
+     * @param 	line 	the String to treat
+     * @return 	the converted line
+     */
+    private String loadConversion(String line) {
+	StringBuilder val = new StringBuilder(line.length());
+
+	int index = 0;
+
+	// Replace all the "\." substrings with their corresponding 
+	// escaped characters
+	for(; index < line.length(); index++) {
+	    char currentChar = line.charAt(index);
+	    if(currentChar == '\\') {
+		index++;
+		currentChar = line.charAt(index);
+		switch(currentChar) {
+		case 't':
+		    currentChar = '\t';
+		    break;
+		case 'r':
+		    currentChar = '\r';
+		    break;
+		case 'n':
+		    currentChar = '\n';
+		    break;
+		case 'f':
+		    currentChar = '\f';
+		    break;
+		case 'u':
+		    index++;
+		    // Read the xxxx
+		    int value=0;
+		    for (int i=0; i<4; i++) {
+			currentChar = line.charAt(index++);
+			//System.out.println(currentChar);
+			switch (currentChar) {
+			case '0': case '1': case '2': case '3': case '4':
+			case '5': case '6': case '7': case '8': case '9':
+			    value = (value << 4) + currentChar - '0';
+			    break;
+			case 'a': case 'b': case 'c':
+			case 'd': case 'e': case 'f':
+			    value = (value << 4) + 10 + currentChar - 'a';
+			    break;
+			case 'A': case 'B': case 'C':
+			case 'D': case 'E': case 'F':
+			    value = (value << 4) + 10 + currentChar - 'A';
+			    break;
+			default:
+			    throw new IllegalArgumentException(
+			    "Malformed \\uxxxx encoding.");
+			}
+		    }
+		    // index must point on the last character of the escaped
+		    // sequence to avoid missing the next character
+		    index--;
+		    currentChar = (char) value;
+		default:
+		    break;
+		}
+	    }
+	    val.append(currentChar);
+	}
+
+	return val.toString();
+    }
+
+    /**
+     * Replaces special characters with their '2-chars' representation.<br/>
+     * For example, '\n' becomes '\\' followed by 'n'
+     * @param 	line 	the String to treat
+     * @return 	the resulting String
+     */
+    private String storeConversion(String line) {
+	int length = line.length();
+	StringBuilder outBuffer = new StringBuilder(length*2);
+
+	for(int i = 0; i < length; i++) {
+	    char currentChar = line.charAt(i);
+	    switch(currentChar) {
+	    case '\\':
+		outBuffer.append('\\');
+		outBuffer.append('\\');
+		break;
+	    case '\t':
+		outBuffer.append('\\');
+		outBuffer.append('t');
+		break;
+	    case '\n':
+		outBuffer.append('\\');
+		outBuffer.append('n');
+		break;
+	    case '\r':
+		outBuffer.append('\\');
+		outBuffer.append('r');
+		break;
+	    case '\f':
+		outBuffer.append('\\');
+		outBuffer.append('f');
+		break;
+	    default:
+		outBuffer.append(currentChar);
+	    break;
+	    }
+	}
+	return outBuffer.toString();
+    }
+
+    /**
+     * Indicates wether the property continues on the next line or not
+     * @param 	line 	the beginning of the property that might be continued
+     * on the next line
+     * @return 	true if the propertiy continues on the following line, 
+     * false otherwise
+     */
+    private boolean continueLine(String line) {
+	if(line != null && !line.equals("")) {
+	    return line.charAt(line.length() - 1) == '\\';
+	}
+	return false;
+    }
+
+    /**
+     * The same method as java.util.Properties.store(...)
+     *
+     * @param out 	an output stream
+     * @param header 	a description of the property list
+     * @see java.util.Properties#store(java.io.OutputStream, java.lang.String)
+     */
+    public void store(OutputStream out, String header) throws IOException {
+	BufferedWriter output;
+	output = new BufferedWriter(new OutputStreamWriter(out, ENCODING));
+	if (header != null) {
+	    output.write("#" + header);
+	    output.newLine();
+	}
+	output.write("#" + new Date());
+	output.newLine();
+	// we do not want that a Thread could modify this Utf8Properties
+	// while storing it
+	synchronized (this)  {
+	    Enumeration e = keys();
+	    while(e.hasMoreElements()) {
+		String key = storeConversion((String)e.nextElement());
+		String val = storeConversion((String)get(key));
+
+		output.write(key + "=" + val);
+		output.newLine();
+	    }
+	}
+	output.flush();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/Util.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,384 @@
+//
+// $Id: Util.java,v 1.6 2008-03-17 17:52:54 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
+/*
+ * Be Careful this version is not the original version.
+ * I modified some sources.          Philippe Le Hegaret
+ *
+ * @(#)Util.java                    0.2-2 23/03/1997
+ *
+ *  This file is part of the HTTPClient package
+ *  Copyright (C) 1996,1997  Ronald Tschalaer
+ *
+ *  This library is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Library General Public
+ *  License as published by the Free Software Foundation; either
+ *  version 2 of the License, or (at your option) any later version.
+ *
+ *  This library is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Library General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Library General Public
+ *  License along with this library; if not, write to the Free
+ *  Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ *  MA 02111-1307, USA
+ *
+ *  For questions, suggestions, bug-reports, enhancement-requests etc.
+ *  I may be contacted at:
+ *
+ *  ronald@innovation.ch
+ *  Ronald.Tschalaer@psi.ch
+ *
+ */
+
+package org.w3c.css.util;
+
+
+/**
+ * This class holds various utility methods.
+ *
+ * @version $Revision: 1.6 $
+ */
+
+public final class Util {
+    // Constructors
+
+    /**
+     * This class isn't meant to be instantiated.
+     */
+    private Util() {}
+
+
+    // Methods
+
+    public final static NVPair[] resizeArray(NVPair[] src, int new_size) {
+    NVPair tmp[] = new NVPair[new_size];
+    System.arraycopy(src, 0, tmp, 0,
+             (src.length < new_size ? src.length : new_size));
+    return (NVPair[]) tmp;
+    }
+
+    /**
+     * Creates an array of distances to speed up the search in findStr().
+     * The returned array should be passed as the second argument to
+     * findStr().
+     *
+     * @param search the search string (same as the first argument to
+     *               findStr()).
+     * @return an array of distances (to be passed as the second argument to
+     *         findStr()).
+     */
+    public final static int[] compile_search(byte[] search) {
+    int[] cmp = {0, 1, 0, 1, 0, 1};
+    int   end;
+
+    for (int idx=0; idx<search.length; idx++) {
+        for (end=idx+1; end<search.length; end++) {
+        if (search[idx] == search[end])  break;
+        }
+        if (end < search.length) {
+        if ((end-idx) > cmp[1]) {
+            cmp[4] = cmp[2];
+            cmp[5] = cmp[3];
+            cmp[2] = cmp[0];
+            cmp[3] = cmp[1];
+            cmp[0] = idx;
+            cmp[1] = end - idx;
+        }
+        else if ((end-idx) > cmp[3]) {
+            cmp[4] = cmp[2];
+            cmp[5] = cmp[3];
+            cmp[2] = idx;
+            cmp[3] = end - idx;
+        }
+        else if ((end-idx) > cmp[3]) {
+            cmp[4] = idx;
+            cmp[5] = end - idx;
+        }
+        }
+    }
+
+    cmp[1] += cmp[0];
+    cmp[3] += cmp[2];
+    cmp[5] += cmp[4];
+    return cmp;
+    }
+
+    /**
+     * Search for a string. Use compile_search() to first generate the second
+     * argument.
+     *
+     * @param search  the string to search for.
+     * @param cmp     the the array returned by compile_search.
+     * @param str     the string in which to look for <var>search</var>.
+     * @param beg     the position at which to start the search in
+     *                <var>str</var>.
+     * @param end     the position at which to end the search in <var>str</var>.
+     * @return the position in <var>str</var> where <var>search</var> was
+     *         found, or -1 if not found.
+     */
+    public final static int findStr(byte[] search, int[] cmp, byte[] str,
+                 int beg, int end) {
+    int c1f  = cmp[0],
+        c1l  = cmp[1],
+        d1   = c1l - c1f,
+        c2f  = cmp[2],
+        c2l  = cmp[3],
+        d2   = c2l - c2f,
+        c3f  = cmp[4],
+        c3l  = cmp[5],
+        d3   = c3l - c3f;
+
+                 Find:
+    while (beg+search.length <= end) {
+        if (search[c1l] == str[beg+c1l]) {
+        Comp:
+        if (search[c1f] == str[beg+c1f]) {
+            for (int idx=0; idx<search.length; idx++)
+            if (search[idx] != str[beg+idx])  break Comp;
+
+            break Find;     // we found it
+        }
+        beg += d1;
+        }
+        else if (search[c2l] == str[beg+c2l])
+        beg += d2;
+        else if (search[c3l] == str[beg+c3l])
+        beg += d3;
+        else
+        beg++;
+    }
+
+    if (beg+search.length > end)
+        return -1;
+    else
+        return beg;
+    }
+
+    // ADD 09/15/97
+
+    public final static boolean isSpace(char c) {
+    return c == ' ';
+    }
+
+    /**
+     * Print a message on System.err only if the user wants debug trace.
+     */
+    public static final void verbose(String s) {
+    if (onDebug) {
+        System.err.println( s );
+    }
+    }
+
+    /**
+     * Suppressed all white spaces in the beginning of the string
+     */
+    public static final String suppressWhiteSpace(String s) {
+    if (s != null) {
+        int len = s.length();
+        int i = 0;
+        while ((i < len) &&
+           (isWhiteSpace(s.charAt(i)))) {
+        i++;
+        }
+        if (i == len) {
+        return null;
+        } else {
+        return s.substring(i);
+        }
+    } else {
+        return null;
+    }
+    }
+
+    /**
+     * Suppress all white spaces
+     *
+     * @param s the string.
+     */
+    public final static String strip(String s) {
+    int index = 0;
+    char[] olds = s.toCharArray();
+    char[] news = new char[olds.length];
+    for (int i = 0; i < olds.length; i++) {
+        if (!isWhiteSpace(olds[i])) { // inline isWhiteSpace
+        news[index++] = olds[i];
+        }
+    }
+    return new String(news, 0, index);
+    }
+
+    /**
+     * Returns <code>true</code> if the character is not a white space
+     *
+     * @param c the character
+     */
+    public final static boolean isWhiteSpace(char c) {
+    return c == ' ' || c == '\n' || c == '\r' || c == '\t';
+    }
+
+    /**
+     * Display a float without .0 if necessary
+     */
+    public final static String displayFloat(Float value) {
+    int intValue = value.intValue();
+    float floatValue = value.floatValue();
+    if (((float) intValue) == floatValue) {
+        return Integer.toString(intValue, 10);
+    } else {
+        return value.toString();
+    }
+    }
+
+    /**
+     * Display a float without .0 if necessary
+     */
+    public final static String displayFloat(float value) {
+    int intValue = (int) value;
+    if (((float) intValue) == value) {
+        return Integer.toString(intValue, 10);
+    } else {
+        return Float.toString(value);
+    }
+    }
+
+    /**
+     * Replaces characters that may be confused by a HTML
+     * parser with their equivalent character entity references
+     * to prevent inserted code to be executed while displaying
+     * the validation results in HTML format.
+     * <p>
+     * This method will replace HTML characters such as &gt; with their
+     * HTML entity reference (&amp;gt;) so that the html parser will
+     * be sure to interpret them as plain text rather than HTML or script.
+     * <p>
+     *
+     * @param s String to be escaped
+     * @return escaped String
+     * @throws NullPointerException if s is null.
+     *
+     */
+    public static String escapeHTML(String s){
+        int length = s.length();
+        int newLength = length;
+        boolean someCharacterEscaped = false;
+        // first check for characters that might
+        // be dangerous and calculate a length
+        // of the string that has escapes.
+        for (int i=0; i<length; i++){
+            char c = s.charAt(i);
+            int cint = 0xffff & c;
+            if (cint < 32){
+                switch(c){
+                    case '\r':
+                    case '\n':
+                    case '\t':
+                    case '\f':{
+                    } break;
+                    default: {
+                        newLength -= 1;
+                        someCharacterEscaped = true;
+                    }
+                }
+            } else {
+                switch(c){
+                    case '\"':{
+                        newLength += 5;
+                        someCharacterEscaped = true;
+                    } break;
+                    case '&':
+                    case '\'':{
+                        newLength += 4;
+                        someCharacterEscaped = true;
+                    } break;
+                    case '<':
+                    case '>':{
+                        newLength += 3;
+                        someCharacterEscaped = true;
+                    } break;
+                }
+            }
+        }
+        if (!someCharacterEscaped){
+            // nothing to escape in the string
+            return s;
+        }
+        StringBuilder sb = new StringBuilder(newLength);
+        for (int i=0; i<length; i++){
+            char c = s.charAt(i);
+            int cint = 0xffff & c;
+            if (cint < 32){
+                switch(c){
+                    case '\r':
+                    case '\n':
+                    case '\t':
+                    case '\f':{
+                        sb.append(c);
+                    } break;
+                    default: {
+                        // Remove this character
+                    }
+                }
+            } else {
+                switch(c){
+                    case '\"':{
+                        sb.append("&quot;");
+                    } break;
+                    case '\'':{
+                        sb.append("&#39;");
+                    } break;
+                    case '&':{
+                        sb.append("&amp;");
+                    } break;
+                    case '<':{
+                        sb.append("&lt;");
+                    } break;
+                    case '>':{
+                        sb.append("&gt;");
+                    } break;
+                    default: {
+                        sb.append(c);
+                    }
+                }
+            }
+            
+        }
+        return sb.toString();
+    }
+
+
+    /**
+     * <code>true</code> if the validator runs in a servlet (security pbs)
+     */
+    public static boolean servlet;
+
+    /**
+     * <code>true</code> if the validator can import URL.
+     */
+    public static boolean importSecurity;
+
+    /**
+     * <code>true</code> if the validator doesn't need errors
+     */
+    public static boolean noErrorTrace;
+
+    /**
+     * <code>true</code> if the input is a HTML file
+     * @@BUG in thread 'coz this a static variable ... :-]
+     */
+    public static boolean fromHTMLFile;
+
+    /**
+     * <code>true</code> if the user wants debug traces.
+     *
+     * @see #verbose
+     */
+    public static boolean onDebug = Boolean.getBoolean("CSS.debug");
+    //    public static boolean onDebug = false;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/Warning.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,234 @@
+//
+// $Id: Warning.java,v 1.10 2009-02-25 20:44:50 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 org.w3c.css.util;
+
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.properties.css1.CssProperty;
+
+/**
+ * This class is use to manage all warning every where
+ * @version $Revision: 1.10 $
+ */
+public class Warning {
+    String sourceFile;
+    int hashSource;
+    int line;
+    CssSelectors selector;
+    String warningMessage;
+
+    /**
+     * Create a new Warning with message parameters.
+     *
+     * @param sourceFile the source file
+     * @param line the line number in the source file
+     * @param warningMessage the warning message to find in the properties file
+     * @param level the warning level
+     * @param message1 the first message to add
+     * @param message2 the second message to add
+     *
+     * @see org.w3c.css.util.Messages
+     */
+    public Warning(String sourceFile, int line, String warningMessage, int level,
+		   String[] messages, ApplContext ac) {
+	this.sourceFile = sourceFile;
+	this.hashSource = sourceFile.hashCode() % 100;
+	this.line = line;
+	this.warningMessage = warm(warningMessage, messages, ac);
+	this.line = getLevel(warningMessage, level, ac) + (line * 10);
+    }
+
+    /**
+     * Create a new Warning.
+     *
+     * @param sourceFile the source file
+     * @param line the line number in the source file
+     * @param warningMessage the warning message to find in the properties file
+     * @param level the warning level
+     *
+     * @see org.w3c.css.util.Messages
+     */
+    public Warning(String sourceFile, int line,
+		   String warningMessage, int level, ApplContext ac) {
+	this(sourceFile, line, warningMessage, level, new String[] {}, ac);
+    }
+
+    /**
+     * Create a new Warning with a property and insert two messages inside.
+     *
+     * @param property The property where the warning came
+     * @param warningMessage The warning message to find in the properties file
+     * @param level the warning level
+     * @param message1 the first message to add
+     * @param message2 the second message to add
+     *
+     * @see org.w3c.css.util.Messages
+     */
+    public Warning(CssProperty property, String warningMessage, int level,
+		   String message1, String message2, ApplContext ac, int i) {
+	this.sourceFile = property.getSourceFile();
+	if (sourceFile != null) {
+	    this.hashSource = sourceFile.hashCode() % 100;
+	}
+	this.warningMessage = warm(warningMessage, new String[] { message1, message2 }, ac);
+	this.line = getLevel(warningMessage, level, ac)
+	    + (property.getLine() * 10);
+    }
+
+    /**
+     * Create a new Warning with a property and insert n message(s) inside.
+     *
+     * @param property The property where the warning came
+     * @param warningMessage The warning message to find in the properties file
+     * @param level the warning level
+     * @param messages the list of messages to add
+     *
+     * @see org.w3c.css.util.Messages
+     */
+    public Warning(CssProperty property, String warningMessage, int level,
+		   String[] messages, ApplContext ac) {
+	this.sourceFile = property.getSourceFile();
+	if (sourceFile != null) {
+	    this.hashSource = sourceFile.hashCode() % 100;
+	}
+	this.warningMessage = warm(warningMessage, messages, ac);
+	this.line = getLevel(warningMessage, level, ac)
+	    + (property.getLine() * 10);
+    }
+
+    /**
+     * Create a new Warning with a property.
+     * <P>Be careful ! Be sure that all informations in your property is
+     * available.
+     *
+     * @param property The property where the warning came
+     * @param warningMessage The warning message to find in the properties file
+     * @param level the warning level
+     *
+     * @see org.w3c.css.util.Messages
+     * @see org.w3c.css.properties.css1.CssProperty#setInfo
+     */
+    public Warning(CssProperty property, String warningMessage, int level,
+		   ApplContext ac) {	
+		this(property, warningMessage, level,
+		     new String[] { property.getPropertyName() }, ac);	
+		this.selector = property.getSelectors();
+    }
+
+    /**
+     * Create a new Warning with a property and insert an other property name
+     * inside.
+     *
+     * @param property The property where the warning came
+     * @param warningMessage The warning message to find in the properties file
+     * @param level the warning level
+     * @param property2 The property in conflicts with the first
+     *
+     * @see org.w3c.css.util.Messages
+     */
+    public Warning(CssProperty property, String warningMessage, int level,
+		   CssProperty property2, ApplContext ac) {
+		this(property, warningMessage, level,
+		     new String[] { property.getPropertyName(), property2.getPropertyName() }, ac);
+		this.selector = property.getSelectors();
+    }
+
+    /**
+     * Get the source file
+     */
+    public String getSourceFile() {
+	return sourceFile;
+    }
+
+    /**
+     * Get the source file
+     */
+    public String getSourceFileEscaped() {
+	return Messages.escapeString(sourceFile);
+    }
+
+    /**
+     * Get the line number.
+     */
+    public int getLine() {
+	return line / 10;
+    }
+
+    /**
+     * Get the message.
+     */
+    public String getWarningMessage() {
+	return warningMessage;
+    }
+
+    /**
+     * Get the message.
+     */
+    public String getWarningMessageEscaped() {
+	return Messages.escapeString(warningMessage);
+    }
+
+    /**
+     * Get the warning level.
+     */
+    public int getLevel() {
+	return line % 10;
+    }
+
+    /**
+     * Get the context.
+     */
+    public CssSelectors getContext() {
+	return selector;
+    }
+
+    public int getInternalOrder() {
+	return (hashSource * 100000) + line;
+    }
+
+    /**
+     * debug trace
+     */
+    public void dump() {
+	System.err.println( getSourceFile() );
+	System.err.println( getLine() );
+	System.err.println( getWarningMessage() );
+	System.err.println( getLevel() );
+    }
+
+    private String warm(String warning, String[] args, ApplContext ac) {
+	String str = ac.getMsg().getWarningString(warning);
+	if (str == null) {
+	    return "can't find the warning message for " + warning;
+	} else {
+	    // replace all parameters.
+		int j = 0;
+	    for (int i = 0; (i = str.indexOf("%s", i)) >= 0 && j < args.length; ) {
+			StringBuilder stb = new StringBuilder(str.substring(0, i));
+			str = stb.append(args[j++]).append(str.substring(i+2)).toString();
+	    }
+	    return str;
+	}
+    }
+
+    private int getLevel(String warning, int defaultLevel, ApplContext ac) {
+	String str = ac.getMsg().getWarningLevelString(warning);
+	if (str == null)
+	    return defaultLevel;
+	else {
+	    try {
+		int level = Integer.parseInt(str);
+		if (level > 9 || level < 0) {
+		    return defaultLevel;
+		}
+		return level;
+	    } catch (Exception e) {
+		return defaultLevel;
+	    }
+	}
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/Warnings.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,157 @@
+//
+// $Id: Warnings.java,v 1.6 2007-07-13 13:32:21 julien 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 org.w3c.css.util;
+
+/**
+ * Controls all warnings in the validator
+ *
+ * @version $Revision: 1.6 $
+ * @see java.util.Vector
+ */
+public final class Warnings {
+
+  private Warning[] warningData = new Warning[20];
+
+  private int       warningCount = 0;
+
+  private int ignoredWarningCount = 0;
+
+  private int warningLevel = 0;
+  
+  public Warnings() {
+	  
+  }
+  
+  public Warnings(int level) {
+	  this.warningLevel = level;
+  }
+  
+  	public int getWarningLevel() {
+  		return warningLevel;
+  	}
+
+  	public void setWarningLevel(int warningLevel) {
+  		this.warningLevel = warningLevel;
+  	}
+
+/**
+   * Add a warning.
+   *
+   * @param warm the warning
+   */
+  public final void addWarning(Warning warm) {
+	  if(warm.getLevel() > warningLevel) {
+		  ignoredWarningCount++;
+	  }
+	  else {
+		  resize(1);
+		  warningData[warningCount++] = warm;
+	  }
+  }
+
+  /**
+   * Add warnings.
+   *
+   * @param warnings All warnings
+   */
+  public final void addWarnings(Warnings warnings) {
+    //resize(warnings.warningCount);
+    for(int i=0; i < warnings.warningCount; i++) {
+    	addWarning(warnings.warningData[i]);
+    }
+  }
+
+  /**
+   * Get the number of warnings
+   */
+  public final int getWarningCount() {
+    return warningCount;
+  }
+
+  /**
+   * Get the number of ignored warnings (not corresponding to the warning level)
+   */
+  public final int getIgnoredWarningCount() {
+    return ignoredWarningCount;
+  }
+  
+  /**
+   * Get an array with all warnings.
+   */
+  public final Warning[] getWarnings() {
+    int oldCapacity = warningData.length;
+    if (warningCount < oldCapacity) {
+      Warning oldData[] = warningData;
+      warningData = new Warning[warningCount];
+      System.arraycopy(oldData, 0, warningData, 0, warningCount);
+    }
+    return warningData;
+  }
+
+  /**
+   * Sort all warnings by line and level
+   */
+  public final void sort() {
+    quickSort(0, warningCount-1);
+  }
+
+  private int partition(int part_low_ind, int part_high_ind) {
+    int lastsmall;
+    long median_val;
+    int comp1;
+    Warning transit;
+
+    // swap median value an first value of array
+    comp1 = ( part_low_ind + part_high_ind ) / 2;
+
+    transit = warningData[part_low_ind];
+    warningData[part_low_ind] = warningData[comp1];
+    warningData[comp1] = transit;
+    median_val = warningData[part_low_ind].getInternalOrder();
+    lastsmall = part_low_ind;
+    for (int i = part_low_ind + 1; i<=part_high_ind; i++) {
+      if (warningData[i].getInternalOrder() < median_val) {
+          lastsmall++;
+          // swap lastsmall and i
+          transit=warningData[lastsmall];
+          warningData[lastsmall]=warningData[i];
+          warningData[i]=transit;
+        }
+    }
+    // swap part_low_ind and lastsmall
+    transit=warningData[part_low_ind];
+    warningData[part_low_ind]=warningData[lastsmall];
+    warningData[lastsmall]=transit;
+
+    return lastsmall;
+  }
+
+  private void quickSort(int qk_low_ind, int qk_high_ind) {
+    if (qk_low_ind < qk_high_ind) {
+      int median = partition(qk_low_ind, qk_high_ind);
+      quickSort(qk_low_ind, median);
+      quickSort(median+1, qk_high_ind);
+    }
+  }
+
+  /**
+   * Get a warning with an index.
+   * @param index the warning index.
+   */
+  public final Warning getWarningAt(int index) {
+    return warningData[index];
+  }
+
+  private final void resize(int increment) {
+    int oldCapacity = warningData.length;
+    if (warningCount + increment + 1 > oldCapacity) {
+      Warning oldData[] = warningData;
+      warningData = new Warning[oldCapacity + increment + 1];
+      System.arraycopy(oldData, 0, warningData, 0, warningCount);
+    }
+  }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/XMLCatalog.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,124 @@
+/*
+ * Copyright (c) 2001 World Wide Web Consortium,
+ * (Massachusetts Institute of Technology, Institut National de
+ * Recherche en Informatique et en Automatique, Keio University). All
+ * Rights Reserved. This program is distributed under the W3C's Software
+ * Intellectual Property License. This program is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+ * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ * See W3C License http://www.w3.org/Consortium/Legal/ for more details.
+ *
+ * $Id: XMLCatalog.java,v 1.6 2009-01-19 16:59:37 jean-gui Exp $
+ */
+package org.w3c.css.util.xml;
+
+import java.net.URL;
+
+import org.w3c.css.util.Utf8Properties;
+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;
+
+/**
+ * @version $Revision: 1.6 $
+ * @author Philippe Le Hegaret
+ */
+public class XMLCatalog extends Utf8Properties implements ContentHandler {
+
+	URL baseURI;
+
+	/**
+	 * Creates a new XMLCatalog
+	 */
+	public XMLCatalog() {
+		try {
+			baseURI = XMLCatalog.class.getResource("catalog.xml");
+			parse(baseURI.toString());
+		} catch (Exception e) {
+			System.err.println("org.w3c.css.css.XMLStyleSheetHandler: "
+					+ "couldn't load catalog.xml");
+			System.err.println("  " + e.getMessage());
+		}
+	}
+
+	public void setDocumentLocator(Locator locator) {
+	}
+
+	public void startDocument() throws SAXException {
+	}
+
+	public void endDocument() throws SAXException {
+	}
+
+	public void startPrefixMapping(String prefix, String uri)
+			throws SAXException {
+	}
+
+	public void endPrefixMapping(String prefix) throws SAXException {
+	}
+
+	public void startElement(String namespaceURI, String localName,
+			String qName, Attributes atts) throws SAXException {
+		if ("system".equals(qName)) {
+			String systemId = atts.getValue("systemId");
+			String uri = atts.getValue("uri");
+			if ((systemId != null) && (uri != null)) {
+				try {
+					setProperty(systemId, (new URL(baseURI, uri)).toString());
+				} catch (Exception e) {
+					e.printStackTrace();
+				}
+			}
+		} else if ("public".equals(qName)) {
+			String publicId = atts.getValue("publicId");
+			String uri = atts.getValue("uri");
+			if ((publicId != null) && (uri != null)) {
+				try {
+					setProperty(publicId, (new URL(baseURI, uri)).toString());
+				} catch (Exception e) {
+					e.printStackTrace();
+				}
+			}
+		}
+	}
+
+	public void endElement(String namespaceURI, String localName, String qName)
+			throws SAXException {
+	}
+
+	public void characters(char ch[], int start, int length)
+			throws SAXException {
+	}
+
+	public void ignorableWhitespace(char ch[], int start, int length)
+			throws SAXException {
+	}
+
+	public void processingInstruction(String target, String data)
+			throws SAXException {
+	}
+
+	public void skippedEntity(String name) throws SAXException {
+	}
+
+	void parse(String urlString) throws Exception {
+		org.xml.sax.XMLReader xmlParser = new org.apache.xerces.parsers.SAXParser();
+
+		try {
+			xmlParser.setFeature(
+					"http://xml.org/sax/features/namespace-prefixes", true);
+
+			xmlParser.setFeature("http://xml.org/sax/features/validation",
+					false);
+		} catch (Exception ex) {
+			ex.printStackTrace();
+		}
+		xmlParser.setContentHandler(this);
+		InputSource source = new InputSource();
+		source.setSystemId(urlString);
+		xmlParser.parse(source);
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/catalog.xml	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,163 @@
+<?xml version='1.0' encoding='us-ascii'?>
+<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
+ <system
+   systemId='http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'
+   uri='xhtml1.0/xhtml1-transitional.dtd' />
+
+ <system
+   systemId='http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'
+   uri='xhtml1.0/xhtml1-strict.dtd' />
+
+ <system
+   systemId='http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd'
+   uri='xhtml1.0/xhtml1-frameset.dtd' />
+
+  <public
+    publicId="-//W3C//DTD XHTML 1.0 Transitional//EN"
+    uri='xhtml1.0/xhtml1-transitional.dtd' />
+  
+  <public
+    publicId="-//W3C//DTD XHTML 1.0 Strict//EN"
+    uri='xhtml1.0/xhtml1-strict.dtd' />
+
+  <public
+    publicId="-//W3C//DTD XHTML 1.0 Frameset//EN"
+    uri='xhtml1.0/xhtml1-frameset.dtd' />
+ 
+  <public 
+    publicId="-//W3C//DTD XHTML 1.1//EN"
+    uri='xhtml1.1/xhtml11.dtd' />
+
+  <system
+    systemId="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"
+    uri='xhtml1.1/xhtml11.dtd' />
+
+<!-- generated by sed - Yves -->
+<public publicId="-//W3C//ELEMENTS XHTML Inline Style 1.0//EN"
+uri='xhtml-modularization/xhtml-inlstyle-1.mod' />
+<public publicId="-//W3C//ENTITIES XHTML 1.1 Document Model 1.0//EN"
+            uri="xhtml1.1/xhtml11-model-1.mod" />
+<public publicId="-//W3C//ENTITIES XHTML Modular Framework 1.0//EN"
+uri='xhtml-modularization/xhtml-framework-1.mod' />
+<public publicId="-//W3C//ELEMENTS XHTML Text 1.0//EN"
+uri='xhtml-modularization/xhtml-text-1.mod' />
+<public publicId="-//W3C//ELEMENTS XHTML Hypertext 1.0//EN"
+uri='xhtml-modularization/xhtml-hypertext-1.mod' />
+<public publicId="-//W3C//ELEMENTS XHTML Lists 1.0//EN"
+uri='xhtml-modularization/xhtml-list-1.mod' />
+<public publicId="-//W3C//ELEMENTS XHTML Editing Elements 1.0//EN"
+uri='xhtml-modularization/xhtml-edit-1.mod' />
+<public publicId="-//W3C//ELEMENTS XHTML BIDI Override Element 1.0//EN"
+uri='xhtml-modularization/xhtml-bdo-1.mod' />
+<public publicId="-//W3C//ELEMENTS XHTML Ruby 1.0//EN"
+uri='ruby/xhtml-ruby-1.mod' />
+<public publicId="-//W3C//ENTITIES XHTML Datatypes 1.0//EN"
+uri='xhtml-modularization/xhtml-datatypes-1.mod' />
+<public publicId="-//W3C//ELEMENTS XHTML Presentation 1.0//EN"
+uri='xhtml-modularization/xhtml-pres-1.mod' />
+<public publicId="-//W3C//ELEMENTS XHTML Link Element 1.0//EN"
+uri='xhtml-modularization/xhtml-link-1.mod' />
+<public publicId="-//W3C//ELEMENTS XHTML Metainformation 1.0//EN"
+uri='xhtml-modularization/xhtml-meta-1.mod' />
+<public publicId="-//W3C//ELEMENTS XHTML Base Element 1.0//EN"
+uri='xhtml-modularization/xhtml-base-1.mod' />
+<public publicId="-//W3C//ELEMENTS XHTML Scripting 1.0//EN"
+uri='xhtml-modularization/xhtml-script-1.mod' />
+<public publicId="-//W3C//ELEMENTS XHTML Style Sheets 1.0//EN"
+uri='xhtml-modularization/xhtml-style-1.mod' />
+<public publicId="-//W3C//ELEMENTS XHTML Images 1.0//EN"
+uri='xhtml-modularization/xhtml-image-1.mod' />
+<public publicId="-//W3C//ELEMENTS XHTML Client-side Image Maps 1.0//EN"
+uri='xhtml-modularization/xhtml-csismap-1.mod' />
+<public publicId="-//W3C//ELEMENTS XHTML Server-side Image Maps 1.0//EN"
+uri='xhtml-modularization/xhtml-ssismap-1.mod' />
+<public publicId="-//W3C//ELEMENTS XHTML Param Element 1.0//EN"
+uri='xhtml-modularization/xhtml-param-1.mod' />
+<public publicId="-//W3C//ELEMENTS XHTML Embedded Object 1.0//EN"
+uri='xhtml-modularization/xhtml-object-1.mod' />
+<public publicId="-//W3C//ELEMENTS XHTML Tables 1.0//EN"
+uri='xhtml-modularization/xhtml-table-1.mod' />
+<public publicId="-//W3C//ELEMENTS XHTML Forms 1.0//EN"
+uri='xhtml-modularization/xhtml-form-1.mod' />
+<public publicId="-//W3C//ELEMENTS XHTML Legacy Markup 1.0//EN"
+uri='xhtml-modularization/xhtml-legacy-1.mod' />
+<public publicId="-//W3C//ELEMENTS XHTML Document Structure 1.0//EN"
+uri='xhtml-modularization/xhtml-struct-1.mod' />
+<public publicId="-//W3C//ENTITIES XHTML Qualified Names 1.0//EN"
+uri='xhtml-modularization/xhtml-qname-1.mod' />
+<public publicId="-//W3C//ELEMENTS XHTML Target 1.0//EN"
+uri='xhtml-modularization/xhtml-target-1.mod' />
+<public publicId="-//W3C//DTD XHTML Basic 1.0//EN"
+uri='xhtml-basic/xhtml-basic10.dtd' />
+<public publicId="-//W3C//ENTITIES XHTML Basic 1.0 Document Model 1.0//EN"
+uri='xhtml-basic/xhtml-basic10-model-1.mod' />
+<public publicId="-//W3C//ELEMENTS XHTML Basic Tables 1.0//EN"
+uri='xhtml-basic/xhtml-basic-table-1.mod' />
+<public publicId="-//W3C//ELEMENTS XHTML Basic Forms 1.0//EN"
+uri='xhtml-basic/xhtml-basic-form-1.mod' />
+
+<system systemId='http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-inlstyle-1.mod'
+uri='xhtml-modularization/xhtml-inlstyle-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-framework-1.mod'
+uri='xhtml-modularization/xhtml-framework-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-text-1.mod'
+uri='xhtml-modularization/xhtml-text-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-hypertext-1.mod'
+uri='xhtml-modularization/xhtml-hypertext-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-list-1.mod'
+uri='xhtml-modularization/xhtml-list-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-edit-1.mod'
+uri='xhtml-modularization/xhtml-edit-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-bdo-1.mod'
+uri='xhtml-modularization/xhtml-bdo-1.mod' />
+<system systemId='http://www.w3.org/TR/ruby/xhtml-ruby-1.mod'
+uri='ruby/xhtml-ruby-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-datatypes-1.mod'
+uri='xhtml-modularization/xhtml-datatypes-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-pres-1.mod'
+uri='xhtml-modularization/xhtml-pres-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-link-1.mod'
+uri='xhtml-modularization/xhtml-link-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-meta-1.mod'
+uri='xhtml-modularization/xhtml-meta-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-base-1.mod'
+uri='xhtml-modularization/xhtml-base-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-script-1.mod'
+uri='xhtml-modularization/xhtml-script-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-style-1.mod'
+uri='xhtml-modularization/xhtml-style-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-image-1.mod'
+uri='xhtml-modularization/xhtml-image-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-csismap-1.mod'
+uri='xhtml-modularization/xhtml-csismap-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-ssismap-1.mod'
+uri='xhtml-modularization/xhtml-ssismap-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-param-1.mod'
+uri='xhtml-modularization/xhtml-param-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-object-1.mod'
+uri='xhtml-modularization/xhtml-object-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-table-1.mod'
+uri='xhtml-modularization/xhtml-table-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-form-1.mod'
+uri='xhtml-modularization/xhtml-form-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-legacy-1.mod'
+uri='xhtml-modularization/xhtml-legacy-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-struct-1.mod'
+uri='xhtml-modularization/xhtml-struct-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-qname-1.mod'
+uri='xhtml-modularization/xhtml-qname-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-target-1.mo'
+uri='xhtml-modularization/xhtml-target-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd'
+uri='xhtml-basic/xhtml-basic10.dtd' />
+<system systemId='http://www.w3.org/TR/xhtml-basic/xhtml-basic10-model-1.mod'
+uri='xhtml-basic/xhtml-basic10-model-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-modulatization/DTD/xhtml-basic-table-1.mod'
+uri='xhtml-basic/xhtml-basic-table-1.mod' />
+<system systemId='http://www.w3.org/TR/xhtml-modulatization/DTD/xhtml-basic-form-1.mod'
+uri='xhtml-basic/xhtml-basic-form-1.mod' />
+
+<system systemId='http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd' uri='mathml/xhtml-math11-f.dtd' />
+<public publicId='"-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"' uri='mathml/xhtml-math11-f.dtd' />
+
+</catalog>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/mathml/xhtml-math11-f.dtd	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,9430 @@
+<!-- ....................................................................... -->
+<!-- XHTML plus Math 1.1 DTD  .............................................. -->
+<!-- file: xhtml-math11.dtd
+-->
+
+<!-- XHTML plus Math 1.1 DTD
+
+     This is a prototype extension of XHTML 1.1 incorporating MathML 2.0.
+
+     The Extensible HyperText Markup Language (XHTML)
+     Copyright 1998-2000 World Wide Web Consortium
+        (Massachusetts Institute of Technology, Institut National de
+         Recherche en Informatique et en Automatique, Keio University).
+         All Rights Reserved.
+
+     Permission to use, copy, modify and distribute the XHTML 1.1 DTD
+     and its accompanying documentation for any purpose and without fee is
+     hereby granted in perpetuity, provided that the above copyright notice
+     and this paragraph appear in all copies.  The copyright holders make
+     no representation about the suitability of the DTD for any purpose.
+
+     It is provided "as is" without expressed or implied warranty.
+
+        Author:     Murray M. Altheim <altheim@eng.sun.com>
+        Revision:   $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $
+
+-->
+<!-- This is the driver file for version 1.1 of the XHTML Namespace Test DTD.
+-->
+<!ENTITY % XHTML.version  "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN" >
+
+<!-- Use this URI to identify the XHTML default namespace:
+
+         "http://www.w3.org/1999/xhtml"
+
+     See the XHTML Qualified Names module for information
+     on the use of namespace prefixes in the DTD.
+-->
+<!ENTITY % NS.prefixed "IGNORE" >
+<!ENTITY % XHTML.prefix "" >
+
+<!-- Reserved for use with the XLink namespace:
+-->
+<!ENTITY % XLINK.xmlns "http://www.w3.org/1999/xlink" >
+<!ENTITY % XLINK.xmlns.attrib "xmlns:xlink  CDATA   #FIXED '%XLINK.xmlns;'" >
+
+
+
+<!-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
+
+<!ENTITY % xhtml-qname-extra.mod 
+     PUBLIC "-//W3C//ENTITIES MathML 2.0 Qualified Names 1.0//EN"
+            "mathml2-qname-1.mod" 
+>
+
+<!-- redeclare location of math content 
+-->
+<!ENTITY % Misc.extra 
+     "| &#37;math.qname;" 
+>
+
+<!-- instantiate XHTML 1.1 DTD  .................................. -->
+<!ENTITY % xhtml11.dtd 
+     PUBLIC "-//W3C//DTD XHTML 1.1//EN" 
+            "XHTML11.dtd" >
+<!-- ....................................................................... -->
+<!-- XHTML 1.1 DTD  ........................................................ -->
+<!-- file: xhtml11.dtd
+-->
+
+<!-- XHTML 1.1 DTD
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+
+     The Extensible HyperText Markup Language (XHTML)
+     Copyright 1998-2000 World Wide Web Consortium
+        (Massachusetts Institute of Technology, Institut National de
+         Recherche en Informatique et en Automatique, Keio University).
+         All Rights Reserved.
+
+     Permission to use, copy, modify and distribute the XHTML 1.1 DTD and
+     its accompanying documentation for any purpose and without fee is
+     hereby granted in perpetuity, provided that the above copyright notice
+     and this paragraph appear in all copies.  The copyright holders make
+     no representation about the suitability of the DTD for any purpose.
+
+     It is provided "as is" without expressed or implied warranty.
+
+        Author:     Murray M. Altheim <altheim@eng.sun.com>
+        Revision:   $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+-->
+<!-- This is the driver file for version 1.1 of the XHTML DTD.
+
+     Please use this formal public identifier to identify it:
+
+         "-//W3C//DTD XHTML 1.1//EN"
+-->
+<!ENTITY % XHTML.version  "-//W3C//DTD XHTML 1.1//EN" >
+
+<!-- Use this URI to identify the default namespace:
+
+         "http://www.w3.org/1999/xhtml"
+
+     See the Qualified Names module for information
+     on the use of namespace prefixes in the DTD.
+-->
+<!ENTITY % NS.prefixed "IGNORE" >
+<!ENTITY % XHTML.prefix "" >
+
+<!-- Reserved for use with the XLink namespace:
+-->
+<!ENTITY % XLINK.xmlns "" >
+<!ENTITY % XLINK.xmlns.attrib "" >
+
+<!-- For example, if you are using XHTML 1.1 directly, use the FPI
+     in the DOCTYPE declaration, with the xmlns attribute on the
+     document element to identify the default namespace:
+
+       <?xml version="1.0"?>
+       <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "xhtml11.dtd">
+       <html xmlns="http://www.w3.org/1999/xhtml"
+             xml:lang="en">
+       ...
+       </html>
+
+     Revisions:
+     (none)
+-->
+
+<!-- reserved for future use with document profiles -->
+<!ENTITY % XHTML.profile  "" >
+
+<!-- Bidirectional Text features
+     This feature-test entity is used to declare elements
+     and attributes used for bidirectional text support.
+-->
+<!ENTITY % XHTML.bidi  "INCLUDE" >
+
+<!-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
+
+<!-- Pre-Framework Redeclaration placeholder  .................... -->
+<!-- this serves as a location to insert markup declarations
+     into the DTD prior to the framework declarations.
+-->
+<!ENTITY % xhtml-prefw-redecl.module "IGNORE" >
+<![%xhtml-prefw-redecl.module;[
+%xhtml-prefw-redecl.mod;
+<!-- end of xhtml-prefw-redecl.module -->]]>
+
+<!ENTITY % xhtml-events.module "INCLUDE" >
+
+<!-- declare Document Model module instantiated in framework
+-->
+<!ENTITY % xhtml-model.mod
+     PUBLIC "-//W3C//ENTITIES XHTML 1.1 Document Model 1.0//EN"
+            "xhtml11-model-1.mod" >
+
+<!-- Modular Framework Module (required) ......................... -->
+<!ENTITY % xhtml-framework.module "INCLUDE" >
+<![%xhtml-framework.module;[
+<!ENTITY % xhtml-framework.mod
+     PUBLIC "-//W3C//ENTITIES XHTML Modular Framework 1.0//EN"
+            "xhtml-framework-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Modular Framework Module  ...................................... -->
+<!-- file: xhtml-framework-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ENTITIES XHTML Modular Framework 1.0//EN"
+       SYSTEM "xhtml-framework-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Modular Framework
+
+     This required module instantiates the modules needed
+     to support the XHTML modularization model, including:
+
+        +  notations
+        +  datatypes
+        +  namespace-qualified names
+        +  common attributes
+        +  document model
+        +  character entities
+
+     The Intrinsic Events module is ignored by default but
+     occurs in this module because it must be instantiated
+     prior to Attributes but after Datatypes.
+-->
+
+<!ENTITY % xhtml-arch.module "INCLUDE" >
+<![%xhtml-arch.module;[
+<!ENTITY % xhtml-arch.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Base Architecture 1.0//EN"
+            "xhtml-arch-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Base Architecture Module  ...................................... -->
+<!-- file: xhtml-arch-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Base Architecture 1.0//EN"
+       SYSTEM "xhtml-arch-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- This optional module includes declarations that enable XHTML to be used
+     as a base architecture according to the 'Architectural Forms Definition
+     Requirements' (Annex A.3, ISO/IEC 10744, 2nd edition). For more information
+     on use of architectural forms, see the HyTime web site at:
+
+         http://www.hytime.org/
+-->
+
+]]>
+
+<!ENTITY % xhtml-notations.module "INCLUDE" >
+<![%xhtml-notations.module;[
+<!ENTITY % xhtml-notations.mod
+     PUBLIC "-//W3C//NOTATIONS XHTML Notations 1.0//EN"
+            "xhtml-notations-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Notations Module  .............................................. -->
+<!-- file: xhtml-notations-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//NOTATIONS XHTML Notations 1.0//EN"
+       SYSTEM "xhtml-notations-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Notations
+
+     defines the following notations, many of these imported from 
+     other specifications and standards. When an existing FPI is
+     known, it is incorporated here.
+-->
+
+<!-- XML Notations ..................................... -->
+
+<!-- W3C XML 1.0 Recommendation -->
+<!NOTATION w3c-xml 
+     PUBLIC "ISO 8879//NOTATION Extensible Markup Language (XML) 1.0//EN" >
+
+<!-- XML 1.0 CDATA -->
+<!NOTATION cdata 
+     PUBLIC "-//W3C//NOTATION XML 1.0: CDATA//EN" >
+
+<!-- XHTML Notations ................................... -->
+
+<!-- Length defined for cellpadding/cellspacing -->
+
+<!-- nn for pixels or nn% for percentage length -->
+<!NOTATION length 
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: Length//EN" >
+
+<!-- space-separated list of link types -->
+<!NOTATION linkTypes 
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: LinkTypes//EN" >
+
+<!-- single or comma-separated list of media descriptors -->
+<!NOTATION mediaDesc 
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: MediaDesc//EN" >
+
+<!-- pixel, percentage, or relative -->
+<!NOTATION multiLength 
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: MultiLength//EN" >
+
+<!-- one or more digits (NUMBER) -->
+<!NOTATION number 
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: Number//EN" >
+
+<!-- integer representing length in pixels -->
+<!NOTATION pixels 
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: Pixels//EN" >
+
+<!-- script expression -->
+<!NOTATION script 
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: Script//EN" >
+
+<!-- textual content -->
+<!NOTATION text 
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: Text//EN" >
+
+<!-- Imported Notations ................................ -->
+
+<!-- a single character from [ISO10646] -->
+<!NOTATION character 
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: Character//EN" >
+
+<!-- a character encoding, as per [RFC2045] -->
+<!NOTATION charset 
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: Charset//EN" >
+
+<!-- a space separated list of character encodings, as per [RFC2045] -->
+<!NOTATION charsets 
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: Charsets//EN" >
+
+<!-- media type, as per [RFC2045] -->
+<!NOTATION contentType 
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: ContentType//EN" >
+
+<!-- comma-separated list of media types, as per [RFC2045] -->
+<!NOTATION contentTypes 
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: ContentTypes//EN" >
+
+<!-- date and time information. ISO date format -->
+<!NOTATION datetime 
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: Datetime//EN" >
+
+<!-- a language code, as per [RFC1766] -->
+<!NOTATION languageCode 
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: LanguageCode//EN" >
+
+<!-- a Uniform Resource Identifier, see [URI] -->
+<!NOTATION uri 
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: URI//EN" >
+
+<!-- a space-separated list of Uniform Resource Identifiers, see [URI] -->
+<!NOTATION uris 
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: URIs//EN" >
+
+<!-- end of xhtml-notations-1.mod -->
+]]>
+
+<!ENTITY % xhtml-datatypes.module "INCLUDE" >
+<![%xhtml-datatypes.module;[
+<!ENTITY % xhtml-datatypes.mod
+     PUBLIC "-//W3C//ENTITIES XHTML Datatypes 1.0//EN"
+            "xhtml-datatypes-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Datatypes Module  .............................................. -->
+<!-- file: xhtml-datatypes-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ENTITIES XHTML Datatypes 1.0//EN"
+       SYSTEM "xhtml-datatypes-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Datatypes
+
+     defines containers for the following datatypes, many of
+     these imported from other specifications and standards.
+-->
+
+<!-- Length defined for cellpadding/cellspacing -->
+
+<!-- nn for pixels or nn% for percentage length -->
+<!ENTITY % Length.datatype "CDATA" >
+
+<!-- space-separated list of link types -->
+<!ENTITY % LinkTypes.datatype "NMTOKENS" >
+
+<!-- single or comma-separated list of media descriptors -->
+<!ENTITY % MediaDesc.datatype "CDATA" >
+
+<!-- pixel, percentage, or relative -->
+<!ENTITY % MultiLength.datatype "CDATA" >
+
+<!-- one or more digits (NUMBER) -->
+<!ENTITY % Number.datatype "CDATA" >
+
+<!-- integer representing length in pixels -->
+<!ENTITY % Pixels.datatype "CDATA" >
+
+<!-- script expression -->
+<!ENTITY % Script.datatype "CDATA" >
+
+<!-- textual content -->
+<!ENTITY % Text.datatype "CDATA" >
+
+<!-- Imported Datatypes ................................ -->
+
+<!-- a single character from [ISO10646] -->
+<!ENTITY % Character.datatype "CDATA" >
+
+<!-- a character encoding, as per [RFC2045] -->
+<!ENTITY % Charset.datatype "CDATA" >
+
+<!-- a space separated list of character encodings, as per [RFC2045] -->
+<!ENTITY % Charsets.datatype "CDATA" >
+
+<!-- media type, as per [RFC2045] -->
+<!ENTITY % ContentType.datatype "CDATA" >
+
+<!-- comma-separated list of media types, as per [RFC2045] -->
+<!ENTITY % ContentTypes.datatype "CDATA" >
+
+<!-- date and time information. ISO date format -->
+<!ENTITY % Datetime.datatype "CDATA" >
+
+<!-- a language code, as per [RFC1766] -->
+<!ENTITY % LanguageCode.datatype "NMTOKEN" >
+
+<!-- a Uniform Resource Identifier, see [URI] -->
+<!ENTITY % URI.datatype "CDATA" >
+
+<!-- a space-separated list of Uniform Resource Identifiers, see [URI] -->
+<!ENTITY % URIs.datatype "CDATA" >
+
+<!-- end of xhtml-datatypes-1.mod -->
+]]>
+
+<!ENTITY % xhtml-qname.module "INCLUDE" >
+<![%xhtml-qname.module;[
+<!ENTITY % xhtml-qname.mod
+     PUBLIC "-//W3C//ENTITIES XHTML Qualified Names 1.0//EN"
+            "xhtml-qname-1.mod" >
+<!-- ....................................................................... -->
+<!-- XHTML Qualified Names Module  ......................................... -->
+<!-- file: xhtml-qname-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ENTITIES XHTML Qualified Names 1.0//EN"
+       SYSTEM "xhtml-qname-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- XHTML Qualified Names
+
+     This module is contained in two parts, labeled Section 'A' and 'B':
+
+       Section A declares parameter entities to support namespace-
+       qualified names, namespace declarations, and name prefixing 
+       for XHTML and extensions.
+    
+       Section B declares parameter entities used to provide
+       namespace-qualified names for all XHTML element types:
+
+         %applet.qname;   the xmlns-qualified name for <applet>
+         %base.qname;     the xmlns-qualified name for <base>
+         ...
+
+     XHTML extensions would create a module similar to this one, 
+     using the '%xhtml-qname-extra.mod;' parameter entity to insert 
+     it within Section A.  A template module suitable for this purpose 
+     ('template-qname-1.mod') is included in the XHTML distribution.
+-->
+
+<!-- Section A: XHTML XML Namespace Framework :::::::::::::::::::: -->
+
+<!-- 1. Declare the two parameter entities used to support XLink,
+        first the parameter entity container for the URI used to
+        identify the XLink namespace:
+-->
+<!ENTITY % XLINK.xmlns "http://www.w3.org/1999/xlink" >
+
+<!-- This contains the XLink namespace declaration attribute.
+-->
+<!ENTITY % XLINK.xmlns.attrib
+     "xmlns:xlink  %URI.datatype;           #FIXED '%XLINK.xmlns;'"
+>
+
+<!-- 2. Declare parameter entities (eg., %XHTML.xmlns;) containing 
+        the namespace URI for the XHTML namespace, and any namespaces
+        included by XHTML:
+-->
+<!ENTITY % XHTML.xmlns  "http://www.w3.org/1999/xhtml" >
+
+<!-- 3. Declare parameter entities (eg., %XHTML.prefix;) containing
+        the default namespace prefix string(s) to use when prefixing 
+        is enabled. This may be overridden in the DTD driver or the
+        internal subset of an document instance.
+
+     NOTE: As specified in [XMLNAMES], the namespace prefix serves 
+     as a proxy for the URI reference, and is not in itself significant.
+-->
+<!ENTITY % XHTML.prefix  "" >
+
+<!-- 4. Declare a %XHTML.prefixed; conditional section keyword, used
+        to activate namespace prefixing. The default value should 
+        inherit '%NS.prefixed;' from the DTD driver, so that unless 
+        overridden, the default behaviour follows the overall DTD 
+        prefixing scheme.
+-->
+<!ENTITY % NS.prefixed "IGNORE" >
+<!ENTITY % XHTML.prefixed "%NS.prefixed;" >
+
+<!-- 5. Declare parameter entities (eg., %XHTML.pfx;) containing the 
+        colonized prefix(es) (eg., '%XHTML.prefix;:') used when 
+        prefixing is active, an empty string when it is not.
+-->
+<![%XHTML.prefixed;[
+<!ENTITY % XHTML.pfx  "%XHTML.prefix;:" >
+]]>
+<!ENTITY % XHTML.pfx  "" >
+
+
+<!-- declare qualified name extensions here -->
+<!ENTITY % xhtml-qname-extra.mod "" >
+<!-- ....................................................................... -->
+<!-- MathML Qualified Names Module  ........................................ -->
+<!-- ....................................................................... -->
+<!-- MathML Qualified Names Module  ........................................ -->
+<!-- file: mathml2-qname-1.mod
+
+     This is the Mathematical Markup Language (MathML) 2.0, an XML 
+     application for describing mathematical notation and capturing 
+     both its structure and content.
+
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ 
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ENTITIES MathML 2.0 Qualified Names 1.0//EN"
+       SYSTEM "mathml2-qname-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- MathML Qualified Names
+
+     This module is contained in two parts, labeled Section 'A' and 'B':
+
+       Section A declares parameter entities to support namespace-
+       qualified names, namespace declarations, and name prefixing 
+       for MathML.
+    
+       Section B declares parameter entities used to provide
+       namespace-qualified names for all MathML element types.
+
+     This module is derived from the XHTML Qualified Names Template module.
+-->
+
+<!-- Section A: XHTML XML Namespace Framework :::::::::::::::::::: -->
+
+<!ENTITY % NS.prefixed     "IGNORE" >
+<!ENTITY % MATHML.prefixed "%NS.prefixed;" >
+
+<!-- XLink ............... -->
+
+<!ENTITY % XLINK.xmlns "http://www.w3.org/1999/xlink" >
+<!ENTITY % XLINK.xmlns.attrib
+     "xmlns:xlink  CDATA           #FIXED '%XLINK.xmlns;'"
+>
+
+<!-- MathML .............. -->
+
+<!ENTITY % MATHML.xmlns    "http://www.w3.org/1998/Math/MathML" >
+<!ENTITY % MATHML.prefix   "m" >
+<![%MATHML.prefixed;[
+<!ENTITY % MATHML.xmlns.extra.attrib  "" >
+]]>
+<!ENTITY % MATHML.xmlns.extra.attrib 
+     "%XLINK.xmlns.attrib;" >
+
+<![%MATHML.prefixed;[
+<!ENTITY % MATHML.pfx  "%MATHML.prefix;:" >
+<!ENTITY % MATHML.xmlns.attrib
+     "xmlns:%MATHML.prefix;  CDATA   #FIXED '%MATHML.xmlns;'
+      %MATHML.xmlns.extra.attrib;"
+>
+]]>
+<!ENTITY % MATHML.pfx  "" >
+<!ENTITY % MATHML.xmlns.attrib
+     "xmlns        CDATA           #FIXED '%MATHML.xmlns;'
+      %MATHML.xmlns.extra.attrib;"
+>
+
+<![%NS.prefixed;[
+<!ENTITY % XHTML.xmlns.extra.attrib 
+     "%MATHML.xmlns.attrib;" >
+]]>
+<!ENTITY % XHTML.xmlns.extra.attrib
+     "%XLINK.xmlns.attrib;"
+>
+
+<!-- Section B: MathML Qualified Names ::::::::::::::::::::::::::::: -->
+
+<!-- 9. This section declares parameter entities used to provide
+        namespace-qualified names for all MathML element types.
+-->
+
+<!ENTITY % abs.qname            "%MATHML.pfx;abs" >
+<!ENTITY % and.qname            "%MATHML.pfx;and" >
+<!ENTITY % annotation-xml.qname "%MATHML.pfx;annotation-xml" >
+<!ENTITY % annotation.qname     "%MATHML.pfx;annotation" >
+<!ENTITY % apply.qname          "%MATHML.pfx;apply" >
+<!ENTITY % approx.qname         "%MATHML.pfx;approx" >
+<!ENTITY % arccos.qname         "%MATHML.pfx;arccos" >
+<!ENTITY % arccosh.qname        "%MATHML.pfx;arccosh" >
+<!ENTITY % arccosh.qname        "%MATHML.pfx;arccosh" >
+<!ENTITY % arccot.qname         "%MATHML.pfx;arccot" >
+<!ENTITY % arccoth.qname        "%MATHML.pfx;arccoth" >
+<!ENTITY % arccsc.qname         "%MATHML.pfx;arccsc" >
+<!ENTITY % arccsch.qname        "%MATHML.pfx;arccsch" >
+<!ENTITY % arcsec.qname         "%MATHML.pfx;arcsec" >
+<!ENTITY % arcsech.qname        "%MATHML.pfx;arcsech" >
+<!ENTITY % arcsin.qname         "%MATHML.pfx;arcsin" >
+<!ENTITY % arcsinh.qname        "%MATHML.pfx;arcsinh" >
+<!ENTITY % arctan.qname         "%MATHML.pfx;arctan" >
+<!ENTITY % arctanh.qname        "%MATHML.pfx;arctanh" >
+<!ENTITY % arg.qname            "%MATHML.pfx;arg" >
+<!ENTITY % bvar.qname           "%MATHML.pfx;bvar" >
+<!ENTITY % card.qname           "%MATHML.pfx;card" >
+<!ENTITY % cartesianproduct.qname "%MATHML.pfx;cartesianproduct" >
+<!ENTITY % ceiling.qname         "%MATHML.pfx;ceiling" >
+<!ENTITY % ci.qname             "%MATHML.pfx;ci" >
+<!ENTITY % cn.qname             "%MATHML.pfx;cn" >
+<!ENTITY % codomain.qname       "%MATHML.pfx;codomain" >
+<!ENTITY % complexes.qname      "%MATHML.pfx;complexes" >
+<!ENTITY % compose.qname        "%MATHML.pfx;compose" >
+<!ENTITY % condition.qname      "%MATHML.pfx;condition" >
+<!ENTITY % conjugate.qname      "%MATHML.pfx;conjugate" >
+<!ENTITY % cos.qname            "%MATHML.pfx;cos" >
+<!ENTITY % cosh.qname           "%MATHML.pfx;cosh" >
+<!ENTITY % cot.qname            "%MATHML.pfx;cot" >
+<!ENTITY % coth.qname           "%MATHML.pfx;coth" >
+<!ENTITY % csc.qname            "%MATHML.pfx;csc" >
+<!ENTITY % csch.qname           "%MATHML.pfx;csch" >
+<!ENTITY % csymbol.qname        "%MATHML.pfx;csymbol" >
+<!ENTITY % curl.qname           "%MATHML.pfx;curl" >
+<!ENTITY % declare.qname        "%MATHML.pfx;declare" >
+<!ENTITY % degree.qname         "%MATHML.pfx;degree" >
+<!ENTITY % determinant.qname    "%MATHML.pfx;determinant" >
+<!ENTITY % diff.qname           "%MATHML.pfx;diff" >
+<!ENTITY % divergence.qname     "%MATHML.pfx;divergence" >
+<!ENTITY % divide.qname         "%MATHML.pfx;divide" >
+<!ENTITY % domain.qname         "%MATHML.pfx;domain" >
+<!ENTITY % domainofapplication.qname "%MATHML.pfx;domainofapplication" >
+<!ENTITY % emptyset.qname       "%MATHML.pfx;emptyset" >
+<!ENTITY % eq.qname             "%MATHML.pfx;eq" >
+<!ENTITY % equivalent.qname     "%MATHML.pfx;equivalent" >
+<!ENTITY % eulergamma.qname     "%MATHML.pfx;eulergamma" >
+<!ENTITY % exists.qname         "%MATHML.pfx;exists" >
+<!ENTITY % exp.qname            "%MATHML.pfx;exp" >
+<!ENTITY % exponentiale.qname   "%MATHML.pfx;exponentiale" >
+<!ENTITY % factorial.qname      "%MATHML.pfx;factorial" >
+<!ENTITY % factorof.qname       "%MATHML.pfx;factorof" >
+<!ENTITY % false.qname          "%MATHML.pfx;false" >
+<!ENTITY % floor.qname          "%MATHML.pfx;floor" >
+<!ENTITY % fn.qname             "%MATHML.pfx;fn" >
+<!ENTITY % forall.qname         "%MATHML.pfx;forall" >
+<!ENTITY % gcd.qname            "%MATHML.pfx;gcd" >
+<!ENTITY % geq.qname            "%MATHML.pfx;geq" >
+<!ENTITY % grad.qname           "%MATHML.pfx;grad" >
+<!ENTITY % gt.qname             "%MATHML.pfx;gt" >
+<!ENTITY % ident.qname          "%MATHML.pfx;ident" >
+<!ENTITY % image.qname          "%MATHML.pfx;image" >
+<!ENTITY % imaginary.qname      "%MATHML.pfx;imaginary" >
+<!ENTITY % imaginaryi.qname     "%MATHML.pfx;imaginaryi" >
+<!ENTITY % implies.qname        "%MATHML.pfx;implies" >
+<!ENTITY % in.qname             "%MATHML.pfx;in" >
+<!ENTITY % infinity.qname       "%MATHML.pfx;infinity" >
+<!ENTITY % int.qname            "%MATHML.pfx;int" >
+<!ENTITY % integers.qname       "%MATHML.pfx;integers" >
+<!ENTITY % intersect.qname      "%MATHML.pfx;intersect" >
+<!ENTITY % interval.qname       "%MATHML.pfx;interval" >
+<!ENTITY % inverse.qname        "%MATHML.pfx;inverse" >
+<!ENTITY % lambda.qname         "%MATHML.pfx;lambda" >
+<!ENTITY % laplacian.qname      "%MATHML.pfx;laplacian" >
+<!ENTITY % lcm.qname            "%MATHML.pfx;lcm" >
+<!ENTITY % leq.qname            "%MATHML.pfx;leq" >
+<!ENTITY % limit.qname          "%MATHML.pfx;limit" >
+<!ENTITY % list.qname           "%MATHML.pfx;list" >
+<!ENTITY % ln.qname             "%MATHML.pfx;ln" >
+<!ENTITY % log.qname            "%MATHML.pfx;log" >
+<!ENTITY % logbase.qname        "%MATHML.pfx;logbase" >
+<!ENTITY % lowlimit.qname       "%MATHML.pfx;lowlimit" >
+<!ENTITY % lt.qname             "%MATHML.pfx;lt" >
+<!ENTITY % maction.qname        "%MATHML.pfx;maction" >
+<!ENTITY % maligngroup.qname    "%MATHML.pfx;maligngroup" >
+<!ENTITY % malignmark.qname     "%MATHML.pfx;malignmark" >
+<!ENTITY % math.qname           "%MATHML.pfx;math" >
+<!ENTITY % matrix.qname         "%MATHML.pfx;matrix" >
+<!ENTITY % matrixrow.qname      "%MATHML.pfx;matrixrow" >
+<!ENTITY % max.qname            "%MATHML.pfx;max" >
+<!ENTITY % mean.qname           "%MATHML.pfx;mean" >
+<!ENTITY % median.qname         "%MATHML.pfx;median" >
+<!ENTITY % menclose.qname       "%MATHML.pfx;menclose" >
+<!ENTITY % merror.qname         "%MATHML.pfx;merror" >
+<!ENTITY % mfenced.qname        "%MATHML.pfx;mfenced" >
+<!ENTITY % mfrac.qname          "%MATHML.pfx;mfrac" >
+<!ENTITY % mglyph.qname         "%MATHML.pfx;mglyph" >
+<!ENTITY % mi.qname             "%MATHML.pfx;mi" >
+<!ENTITY % min.qname            "%MATHML.pfx;min" >
+<!ENTITY % minus.qname          "%MATHML.pfx;minus" >
+<!ENTITY % mlabeledtr.qname     "%MATHML.pfx;mlabeledtr" >
+<!ENTITY % mmultiscripts.qname  "%MATHML.pfx;mmultiscripts" >
+<!ENTITY % mn.qname             "%MATHML.pfx;mn" >
+<!ENTITY % mo.qname             "%MATHML.pfx;mo" >
+<!ENTITY % mode.qname           "%MATHML.pfx;mode" >
+<!ENTITY % moment.qname         "%MATHML.pfx;moment" >
+<!ENTITY % momentabout.qname    "%MATHML.pfx;momentabout" >
+<!ENTITY % mover.qname          "%MATHML.pfx;mover" >
+<!ENTITY % mpadded.qname        "%MATHML.pfx;mpadded" >
+<!ENTITY % mphantom.qname       "%MATHML.pfx;mphantom" >
+<!ENTITY % mprescripts.qname    "%MATHML.pfx;mprescripts" >
+<!ENTITY % mroot.qname          "%MATHML.pfx;mroot" >
+<!ENTITY % mrow.qname           "%MATHML.pfx;mrow" >
+<!ENTITY % ms.qname             "%MATHML.pfx;ms" >
+<!ENTITY % mspace.qname         "%MATHML.pfx;mspace" >
+<!ENTITY % msqrt.qname          "%MATHML.pfx;msqrt" >
+<!ENTITY % mstyle.qname         "%MATHML.pfx;mstyle" >
+<!ENTITY % msub.qname           "%MATHML.pfx;msub" >
+<!ENTITY % msubsup.qname        "%MATHML.pfx;msubsup" >
+<!ENTITY % msup.qname           "%MATHML.pfx;msup" >
+<!ENTITY % mtable.qname         "%MATHML.pfx;mtable" >
+<!ENTITY % mtd.qname            "%MATHML.pfx;mtd" >
+<!ENTITY % mtext.qname          "%MATHML.pfx;mtext" >
+<!ENTITY % mtr.qname            "%MATHML.pfx;mtr" >
+<!ENTITY % munder.qname         "%MATHML.pfx;munder" >
+<!ENTITY % munderover.qname     "%MATHML.pfx;munderover" >
+<!ENTITY % naturalnumbers.qname "%MATHML.pfx;naturalnumbers" >
+<!ENTITY % neq.qname            "%MATHML.pfx;neq" >
+<!ENTITY % none.qname           "%MATHML.pfx;none" >
+<!ENTITY % not.qname            "%MATHML.pfx;not" >
+<!ENTITY % notanumber.qname     "%MATHML.pfx;notanumber" >
+<!ENTITY % notin.qname          "%MATHML.pfx;notin" >
+<!ENTITY % notprsubset.qname    "%MATHML.pfx;notprsubset" >
+<!ENTITY % notsubset.qname      "%MATHML.pfx;notsubset" >
+<!ENTITY % or.qname             "%MATHML.pfx;or" >
+<!ENTITY % otherwise.qname      "%MATHML.pfx;otherwise" >
+<!ENTITY % outerproduct.qname   "%MATHML.pfx;outerproduct" >
+<!ENTITY % partialdiff.qname    "%MATHML.pfx;partialdiff" >
+<!ENTITY % pi.qname             "%MATHML.pfx;pi" >
+<!ENTITY % piece.qname          "%MATHML.pfx;piece" >
+<!ENTITY % piecewise.qname      "%MATHML.pfx;piecewise" >
+<!ENTITY % plus.qname           "%MATHML.pfx;plus" >
+<!ENTITY % power.qname          "%MATHML.pfx;power" >
+<!ENTITY % primes.qname         "%MATHML.pfx;primes" >
+<!ENTITY % product.qname        "%MATHML.pfx;product" >
+<!ENTITY % prsubset.qname       "%MATHML.pfx;prsubset" >
+<!ENTITY % quotient.qname       "%MATHML.pfx;quotient" >
+<!ENTITY % rationals.qname      "%MATHML.pfx;rationals" >
+<!ENTITY % real.qname           "%MATHML.pfx;real" >
+<!ENTITY % reals.qname          "%MATHML.pfx;reals" >
+<!ENTITY % reln.qname           "%MATHML.pfx;reln" >
+<!ENTITY % rem.qname            "%MATHML.pfx;rem" >
+<!ENTITY % root.qname           "%MATHML.pfx;root" >
+<!ENTITY % scalarproduct.qname  "%MATHML.pfx;scalarproduct" >
+<!ENTITY % sdev.qname           "%MATHML.pfx;sdev" >
+<!ENTITY % sec.qname            "%MATHML.pfx;sec" >
+<!ENTITY % sech.qname           "%MATHML.pfx;sech" >
+<!ENTITY % selector.qname       "%MATHML.pfx;selector" >
+<!ENTITY % semantics.qname      "%MATHML.pfx;semantics" >
+<!ENTITY % sep.qname            "%MATHML.pfx;sep" >
+<!ENTITY % set.qname            "%MATHML.pfx;set" >
+<!ENTITY % setdiff.qname        "%MATHML.pfx;setdiff" >
+<!ENTITY % sin.qname            "%MATHML.pfx;sin" >
+<!ENTITY % sinh.qname           "%MATHML.pfx;sinh" >
+<!ENTITY % subset.qname         "%MATHML.pfx;subset" >
+<!ENTITY % sum.qname            "%MATHML.pfx;sum" >
+<!ENTITY % tan.qname            "%MATHML.pfx;tan" >
+<!ENTITY % tanh.qname           "%MATHML.pfx;tanh" >
+<!ENTITY % tendsto.qname        "%MATHML.pfx;tendsto" >
+<!ENTITY % times.qname          "%MATHML.pfx;times" >
+<!ENTITY % transpose.qname      "%MATHML.pfx;transpose" >
+<!ENTITY % true.qname           "%MATHML.pfx;true" >
+<!ENTITY % union.qname          "%MATHML.pfx;union" >
+<!ENTITY % uplimit.qname        "%MATHML.pfx;uplimit" >
+<!ENTITY % variance.qname       "%MATHML.pfx;variance" >
+<!ENTITY % vector.qname         "%MATHML.pfx;vector" >
+<!ENTITY % vectorproduct.qname  "%MATHML.pfx;vectorproduct" >
+<!ENTITY % xor.qname            "%MATHML.pfx;xor" >
+
+
+<!-- ignores subsequent instantiation of this module when
+     used as external subset rather than module fragment.
+     NOTE: Do not modify this parameter entity, otherwise
+     a recursive parsing situation may result.
+-->
+<!ENTITY % mathml-qname.module "IGNORE" >
+
+<!-- end of template-qname-1.mod -->
+
+
+<!-- 6. The parameter entity %XHTML.xmlns.extra.attrib; may be
+        redeclared to contain any non-XHTML namespace declaration 
+        attributes for namespaces embedded in XHTML. The default 
+        is an empty string.  XLink should be included here if used 
+        in the DTD and not already included by a previously-declared 
+        %*.xmlns.extra.attrib;.
+-->
+<!ENTITY % XHTML.xmlns.extra.attrib "" >
+
+<!-- 7. Declare a parameter entity %XHTML.xmlns.attrib; containing 
+        all XML namespace declaration attributes used by XHTML, 
+        the form dependent on whether prefixing is active. Neither
+        XHTML nor XLink should be included here.
+-->
+<![%XHTML.prefixed;[
+<!ENTITY % XHTML.xmlns.attrib
+     "xmlns:%XHTML.prefix;  %URI.datatype;   #FIXED '%XHTML.xmlns;'
+      %XHTML.xmlns.extra.attrib;"
+>
+]]>
+<!ENTITY % XHTML.xmlns.attrib
+     "xmlns        %URI.datatype;           #FIXED '%XHTML.xmlns;'
+      %XHTML.xmlns.extra.attrib;"
+>
+
+<!-- 8. The %NamespaceDecl.attrib; parameter entity recursively 
+        aggregates all previous namespace declaration attributes
+        by including the %XHTML.xmlns.extra.attrib; parameter 
+        entity into that of its embedding vocabulary, in this 
+        case XHTML.  The default is an empty string.
+-->
+<![%NS.prefixed;[
+<!ENTITY % NamespaceDecl.attrib
+     "%XHTML.xmlns.attrib;" >
+]]>
+<!ENTITY % NamespaceDecl.attrib "" >
+
+
+<!-- Section B: XHTML Qualified Names ::::::::::::::::::::::::::::: -->
+
+<!-- This section declares parameter entities used to provide
+     namespace-qualified names for all XHTML element types.
+-->
+
+<!-- module:  xhtml-applet-1.mod -->
+<!ENTITY % applet.qname  "%XHTML.pfx;applet" >
+
+<!-- module:  xhtml-base-1.mod -->
+<!ENTITY % base.qname    "%XHTML.pfx;base" >
+
+<!-- module:  xhtml-bdo-1.mod -->
+<!ENTITY % bdo.qname     "%XHTML.pfx;bdo" >
+
+<!-- module:  xhtml-blkphras-1.mod -->
+<!ENTITY % address.qname "%XHTML.pfx;address" >
+<!ENTITY % blockquote.qname  "%XHTML.pfx;blockquote" >
+<!ENTITY % pre.qname     "%XHTML.pfx;pre" >
+<!ENTITY % h1.qname      "%XHTML.pfx;h1" >
+<!ENTITY % h2.qname      "%XHTML.pfx;h2" >
+<!ENTITY % h3.qname      "%XHTML.pfx;h3" >
+<!ENTITY % h4.qname      "%XHTML.pfx;h4" >
+<!ENTITY % h5.qname      "%XHTML.pfx;h5" >
+<!ENTITY % h6.qname      "%XHTML.pfx;h6" >
+
+<!-- module:  xhtml-blkpres-1.mod -->
+<!ENTITY % hr.qname      "%XHTML.pfx;hr" >
+
+<!-- module:  xhtml-blkstruct-1.mod -->
+<!ENTITY % div.qname     "%XHTML.pfx;div" >
+<!ENTITY % p.qname       "%XHTML.pfx;p" >
+
+<!-- module:  xhtml-edit-1.mod -->
+<!ENTITY % ins.qname     "%XHTML.pfx;ins" >
+<!ENTITY % del.qname     "%XHTML.pfx;del" >
+
+<!-- module:  xhtml-form-1.mod -->
+<!ENTITY % form.qname    "%XHTML.pfx;form" >
+<!ENTITY % label.qname   "%XHTML.pfx;label" >
+<!ENTITY % input.qname   "%XHTML.pfx;input" >
+<!ENTITY % select.qname  "%XHTML.pfx;select" >
+<!ENTITY % optgroup.qname  "%XHTML.pfx;optgroup" >
+<!ENTITY % option.qname  "%XHTML.pfx;option" >
+<!ENTITY % textarea.qname  "%XHTML.pfx;textarea" >
+<!ENTITY % fieldset.qname  "%XHTML.pfx;fieldset" >
+<!ENTITY % legend.qname  "%XHTML.pfx;legend" >
+<!ENTITY % button.qname  "%XHTML.pfx;button" >
+
+<!-- module:  xhtml-hypertext-1.mod -->
+<!ENTITY % a.qname       "%XHTML.pfx;a" >
+
+<!-- module:  xhtml-image-1.mod -->
+<!ENTITY % img.qname     "%XHTML.pfx;img" >
+
+<!-- module:  xhtml-inlphras-1.mod -->
+<!ENTITY % abbr.qname    "%XHTML.pfx;abbr" >
+<!ENTITY % acronym.qname "%XHTML.pfx;acronym" >
+<!ENTITY % cite.qname    "%XHTML.pfx;cite" >
+<!ENTITY % code.qname    "%XHTML.pfx;code" >
+<!ENTITY % dfn.qname     "%XHTML.pfx;dfn" >
+<!ENTITY % em.qname      "%XHTML.pfx;em" >
+<!ENTITY % kbd.qname     "%XHTML.pfx;kbd" >
+<!ENTITY % q.qname       "%XHTML.pfx;q" >
+<!ENTITY % samp.qname    "%XHTML.pfx;samp" >
+<!ENTITY % strong.qname  "%XHTML.pfx;strong" >
+<!ENTITY % var.qname     "%XHTML.pfx;var" >
+
+<!-- module:  xhtml-inlpres-1.mod -->
+<!ENTITY % b.qname       "%XHTML.pfx;b" >
+<!ENTITY % big.qname     "%XHTML.pfx;big" >
+<!ENTITY % i.qname       "%XHTML.pfx;i" >
+<!ENTITY % small.qname   "%XHTML.pfx;small" >
+<!ENTITY % sub.qname     "%XHTML.pfx;sub" >
+<!ENTITY % sup.qname     "%XHTML.pfx;sup" >
+<!ENTITY % tt.qname      "%XHTML.pfx;tt" >
+
+<!-- module:  xhtml-inlstruct-1.mod -->
+<!ENTITY % br.qname      "%XHTML.pfx;br" >
+<!ENTITY % span.qname    "%XHTML.pfx;span" >
+
+<!-- module:  xhtml-ismap-1.mod (also csismap, ssismap) -->
+<!ENTITY % map.qname     "%XHTML.pfx;map" >
+<!ENTITY % area.qname    "%XHTML.pfx;area" >
+
+<!-- module:  xhtml-link-1.mod -->
+<!ENTITY % link.qname    "%XHTML.pfx;link" >
+
+<!-- module:  xhtml-list-1.mod -->
+<!ENTITY % dl.qname      "%XHTML.pfx;dl" >
+<!ENTITY % dt.qname      "%XHTML.pfx;dt" >
+<!ENTITY % dd.qname      "%XHTML.pfx;dd" >
+<!ENTITY % ol.qname      "%XHTML.pfx;ol" >
+<!ENTITY % ul.qname      "%XHTML.pfx;ul" >
+<!ENTITY % li.qname      "%XHTML.pfx;li" >
+
+<!-- module:  xhtml-meta-1.mod -->
+<!ENTITY % meta.qname    "%XHTML.pfx;meta" >
+
+<!-- module:  xhtml-param-1.mod -->
+<!ENTITY % param.qname   "%XHTML.pfx;param" >
+
+<!-- module:  xhtml-object-1.mod -->
+<!ENTITY % object.qname  "%XHTML.pfx;object" >
+
+<!-- module:  xhtml-script-1.mod -->
+<!ENTITY % script.qname  "%XHTML.pfx;script" >
+<!ENTITY % noscript.qname  "%XHTML.pfx;noscript" >
+
+<!-- module:  xhtml-struct-1.mod -->
+<!ENTITY % html.qname    "%XHTML.pfx;html" >
+<!ENTITY % head.qname    "%XHTML.pfx;head" >
+<!ENTITY % title.qname   "%XHTML.pfx;title" >
+<!ENTITY % body.qname    "%XHTML.pfx;body" >
+
+<!-- module:  xhtml-style-1.mod -->
+<!ENTITY % style.qname   "%XHTML.pfx;style" >
+
+<!-- module:  xhtml-table-1.mod -->
+<!ENTITY % table.qname   "%XHTML.pfx;table" >
+<!ENTITY % caption.qname "%XHTML.pfx;caption" >
+<!ENTITY % thead.qname   "%XHTML.pfx;thead" >
+<!ENTITY % tfoot.qname   "%XHTML.pfx;tfoot" >
+<!ENTITY % tbody.qname   "%XHTML.pfx;tbody" >
+<!ENTITY % colgroup.qname  "%XHTML.pfx;colgroup" >
+<!ENTITY % col.qname     "%XHTML.pfx;col" >
+<!ENTITY % tr.qname      "%XHTML.pfx;tr" >
+<!ENTITY % th.qname      "%XHTML.pfx;th" >
+<!ENTITY % td.qname      "%XHTML.pfx;td" >
+
+<!-- module:  xhtml-ruby-1.mod -->
+<!ENTITY % ruby.qname    "%XHTML.pfx;ruby" >
+<!ENTITY % rbc.qname     "%XHTML.pfx;rbc" >
+<!ENTITY % rtc.qname     "%XHTML.pfx;rtc" >
+<!ENTITY % rb.qname      "%XHTML.pfx;rb" >
+<!ENTITY % rt.qname      "%XHTML.pfx;rt" >
+<!ENTITY % rp.qname      "%XHTML.pfx;rp" >
+
+<!-- Provisional XHTML 2.0 Qualified Names  ...................... -->
+
+<!-- module:  xhtml-image-2.mod -->
+<!ENTITY % alt.qname     "%XHTML.pfx;alt" >
+
+
+<!-- end of xhtml-qname-1.mod -->
+]]>
+
+<!ENTITY % xhtml-events.module "IGNORE" >
+<![%xhtml-events.module;[
+<!ENTITY % xhtml-events.mod
+     PUBLIC "-//W3C//ENTITIES XHTML Intrinsic Events 1.0//EN"
+            "xhtml-events-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Intrinsic Events Module  ....................................... -->
+<!-- file: xhtml-events-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ENTITIES XHTML Intrinsic Events 1.0//EN"
+       SYSTEM "xhtml-events-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Intrinsic Event Attributes
+
+     These are the event attributes defined in HTML 4.0,
+     Section 18.2.3 "Intrinsic Events". This module must be
+     instantiated prior to the Attributes Module but after
+     the Datatype Module in the Modular Framework module.
+
+    "Note: Authors of HTML documents are advised that changes
+     are likely to occur in the realm of intrinsic events
+     (e.g., how scripts are bound to events). Research in
+     this realm is carried on by members of the W3C Document
+     Object Model Working Group (see the W3C Web site at
+     http://www.w3.org/ for more information)."
+-->
+<!-- NOTE: Because the ATTLIST declarations in this module occur
+     before their respective ELEMENT declarations in other
+     modules, there may be a dependency on this module that
+     should be considered if any of the parameter entities used
+     for element type names (eg., %Foo.qname;) are redeclared.
+-->
+
+<!ENTITY % Events.attrib
+     "onclick      %Script.datatype;        #IMPLIED
+      ondblclick   %Script.datatype;        #IMPLIED
+      onmousedown  %Script.datatype;        #IMPLIED
+      onmouseup    %Script.datatype;        #IMPLIED
+      onmouseover  %Script.datatype;        #IMPLIED
+      onmousemove  %Script.datatype;        #IMPLIED
+      onmouseout   %Script.datatype;        #IMPLIED
+      onkeypress   %Script.datatype;        #IMPLIED
+      onkeydown    %Script.datatype;        #IMPLIED
+      onkeyup      %Script.datatype;        #IMPLIED"
+>
+
+<!-- additional attributes on anchor element
+-->
+<!ATTLIST %a.qname;
+     onfocus      %Script.datatype;         #IMPLIED
+     onblur       %Script.datatype;         #IMPLIED
+>
+
+<!-- additional attributes on form element
+-->
+<!ATTLIST %form.qname;
+      onsubmit     %Script.datatype;        #IMPLIED
+      onreset      %Script.datatype;        #IMPLIED
+>
+
+<!-- additional attributes on label element
+-->
+<!ATTLIST %label.qname;
+      onfocus      %Script.datatype;        #IMPLIED
+      onblur       %Script.datatype;        #IMPLIED
+>
+
+<!-- additional attributes on input element
+-->
+<!ATTLIST %input.qname;
+      onfocus      %Script.datatype;        #IMPLIED
+      onblur       %Script.datatype;        #IMPLIED
+      onselect     %Script.datatype;        #IMPLIED
+      onchange     %Script.datatype;        #IMPLIED
+>
+
+<!-- additional attributes on select element
+-->
+<!ATTLIST %select.qname;
+      onfocus      %Script.datatype;        #IMPLIED
+      onblur       %Script.datatype;        #IMPLIED
+      onchange     %Script.datatype;        #IMPLIED
+>
+
+<!-- additional attributes on textarea element
+-->
+<!ATTLIST %textarea.qname;
+      onfocus      %Script.datatype;        #IMPLIED
+      onblur       %Script.datatype;        #IMPLIED
+      onselect     %Script.datatype;        #IMPLIED
+      onchange     %Script.datatype;        #IMPLIED
+>
+
+<!-- additional attributes on button element
+-->
+<!ATTLIST %button.qname;
+      onfocus      %Script.datatype;        #IMPLIED
+      onblur       %Script.datatype;        #IMPLIED
+>
+
+<!-- additional attributes on body element
+-->
+<!ATTLIST %body.qname;
+      onload       %Script.datatype;        #IMPLIED
+      onunload     %Script.datatype;        #IMPLIED
+>
+
+<!-- additional attributes on area element
+-->
+<!ATTLIST %area.qname;
+      onfocus      %Script.datatype;        #IMPLIED
+      onblur       %Script.datatype;        #IMPLIED
+>
+
+<!-- end of xhtml-events-1.mod -->
+]]>
+
+<!ENTITY % xhtml-attribs.module "INCLUDE" >
+<![%xhtml-attribs.module;[
+<!ENTITY % xhtml-attribs.mod
+     PUBLIC "-//W3C//ENTITIES XHTML Common Attributes 1.0//EN"
+            "xhtml-attribs-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Common Attributes Module  ...................................... -->
+<!-- file: xhtml-attribs-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ENTITIES XHTML Common Attributes 1.0//EN"
+       SYSTEM "xhtml-attribs-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Common Attributes
+
+     This module declares many of the common attributes for the Strict DTD.
+-->
+
+<!ENTITY % Id.attrib
+     "id           ID                       #IMPLIED"
+>
+
+<!ENTITY % Class.attrib
+     "class        CDATA                    #IMPLIED"
+>
+
+<!ENTITY % Title.attrib
+     "title        %Text.datatype;          #IMPLIED"
+>
+
+<!-- used to declare xmlns attributes on each element type
+     (see the Qualified Names module for details)
+-->
+<!ENTITY % NamespaceDecl.attrib "" >
+
+<!ENTITY % Core.extra.attrib "" >
+
+<!ENTITY % Core.attrib
+     "%NamespaceDecl.attrib;
+      %Id.attrib;
+      %Class.attrib;
+      %Title.attrib;
+      %Core.extra.attrib;"
+>
+
+<!ENTITY % Lang.attrib
+     "xml:lang     %LanguageCode.datatype;  #IMPLIED"
+>
+
+<![%XHTML.bidi;[
+<!ENTITY % Dir.attrib
+     "dir          ( ltr | rtl )            #IMPLIED"
+>
+
+<!ENTITY % I18n.attrib
+     "%Dir.attrib;
+      %Lang.attrib;"
+>
+
+]]>
+<!ENTITY % I18n.attrib
+     "%Lang.attrib;"
+>
+
+<!-- intrinsic event attributes declared previously
+-->
+<!ENTITY % Events.attrib "" >
+
+<!ENTITY % Common.attrib
+     "%Core.attrib;
+      %I18n.attrib;
+      %Events.attrib;"
+>
+
+<!-- end of xhtml-attribs-1.mod -->
+]]>
+
+<!-- placeholder for content model redeclarations -->
+<!ENTITY % xhtml-model.redecl "" >
+
+
+<!ENTITY % xhtml-model.module "INCLUDE" >
+<![%xhtml-model.module;[
+<!-- instantiate the Document Model module declared in the DTD driver
+-->
+<!-- ....................................................................... -->
+<!-- XHTML Document Model Module  .......................................... -->
+<!-- file: xhtml11-model-1.mod
+
+     This is XHTML 1.1, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ENTITIES XHTML Document Model 1.0//EN"
+       SYSTEM "xhtml11-model-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- XHTML 1.1 Document Model
+
+     This module describes the groupings of elements that make up
+     common content models for XHTML elements.
+
+     XHTML has three basic content models:
+
+         %Inline.mix;  character-level elements
+         %Block.mix;   block-like elements, eg., paragraphs and lists
+         %Flow.mix;    any block or inline elements
+
+     Any parameter entities declared in this module may be used
+     to create element content models, but the above three are
+     considered 'global' (insofar as that term applies here).
+
+     The reserved word '#PCDATA' (indicating a text string) is now
+     included explicitly with each element declaration that is
+     declared as mixed content, as XML requires that this token
+     occur first in a content model specification.
+-->
+<!-- Extending the Model
+
+     While in some cases this module may need to be rewritten to
+     accommodate changes to the document model, minor extensions
+     may be accomplished by redeclaring any of the three *.extra;
+     parameter entities to contain extension element types as follows:
+
+         %Misc.extra;    whose parent may be any block or
+                         inline element.
+
+         %Inline.extra;  whose parent may be any inline element.
+
+         %Block.extra;   whose parent may be any block element.
+
+     If used, these parameter entities must be an OR-separated
+     list beginning with an OR separator ("|"), eg., "| a | b | c"
+
+     All block and inline *.class parameter entities not part
+     of the *struct.class classes begin with "| " to allow for
+     exclusion from mixes.
+-->
+
+<!-- ..............  Optional Elements in head  .................. -->
+
+<!ENTITY % Head-opts.mix  
+     "( %script.qname; | %style.qname; | %meta.qname; | %link.qname; )*"
+>
+
+<!-- .................  Miscellaneous Elements  .................. -->
+
+<!-- ins and del are used to denote editing changes
+-->
+<!ENTITY % Edit.class "| %ins.qname; | %del.qname;" >
+
+<!-- script and noscript are used to contain scripts
+     and alternative content
+-->
+<!ENTITY % Script.class "| %script.qname; | %noscript.qname;" >
+
+<!ENTITY % Misc.extra "" >
+
+<!-- These elements are neither block nor inline, and can
+     essentially be used anywhere in the document body.
+-->
+<!ENTITY % Misc.class
+     "%Edit.class;
+      %Script.class;
+      %Misc.extra;"
+>
+
+<!-- ....................  Inline Elements  ...................... -->
+
+<!ENTITY % Inlstruct.class "%br.qname; | %span.qname;" >
+
+<!ENTITY % Inlphras.class
+     "| %em.qname; | %strong.qname; | %dfn.qname; | %code.qname; 
+      | %samp.qname; | %kbd.qname; | %var.qname; | %cite.qname; 
+      | %abbr.qname; | %acronym.qname; | %q.qname;" >
+
+<!ENTITY % Inlpres.class
+     "| %tt.qname; | %i.qname; | %b.qname; | %big.qname; 
+      | %small.qname; | %sub.qname; | %sup.qname;" >
+
+<!ENTITY % I18n.class "| %bdo.qname;" >
+
+<!ENTITY % Anchor.class "| %a.qname;" >
+
+<!ENTITY % Inlspecial.class "| %img.qname; | %map.qname; | %applet.qname;" >
+
+<!ENTITY % Inlform.class 
+     "| %input.qname; | %select.qname; | %textarea.qname; 
+      | %label.qname; | %button.qname;" >
+
+<!ENTITY % Inline.extra "" >
+
+<!ENTITY % Ruby.class "| %ruby.qname;" >
+
+<!-- %Inline.class; includes all inline elements,
+     used as a component in mixes
+-->
+<!ENTITY % Inline.class
+     "%Inlstruct.class;
+      %Inlphras.class;
+      %Inlpres.class;
+      %I18n.class;
+      %Anchor.class;
+      %Inlspecial.class;
+      %Inlform.class;
+      %Ruby.class;
+      %Inline.extra;"
+>
+
+<!-- %Inline-noruby.class; includes all inline elements 
+     except ruby, used as a component in mixes
+-->
+<!ENTITY % Inline-noruby.class
+     "%Inlstruct.class;
+      %Inlphras.class;
+      %Inlpres.class;
+      %I18n.class;
+      %Anchor.class;
+      %Inlspecial.class;
+      %Inlform.class;
+      %Inline.extra;"
+>
+
+<!-- %Noruby.content; includes all inlines except ruby
+-->
+<!ENTITY % Noruby.content
+     "( #PCDATA 
+      | %Inline-noruby.class;
+      %Misc.class; )*"
+>
+
+<!-- %Inline-noA.class; includes all non-anchor inlines,
+     used as a component in mixes
+-->
+<!ENTITY % Inline-noA.class
+     "%Inlstruct.class;
+      %Inlphras.class;
+      %Inlpres.class;
+      %I18n.class;
+      %Inlspecial.class;
+      %Inlform.class;
+      %Ruby.class;
+      %Inline.extra;"
+>
+
+<!-- %Inline-noA.mix; includes all non-anchor inlines
+-->
+<!ENTITY % Inline-noA.mix
+     "%Inline-noA.class;
+      %Misc.class;"
+>
+
+<!-- %Inline.mix; includes all inline elements, including %Misc.class;
+-->
+<!ENTITY % Inline.mix
+     "%Inline.class;
+      %Misc.class;"
+>
+
+<!-- .....................  Block Elements  ...................... -->
+
+<!-- In the HTML 4.0 DTD, heading and list elements were included
+     in the %block; parameter entity. The %Heading.class; and
+     %List.class; parameter entities must now be included explicitly
+     on element declarations where desired.
+-->
+
+<!ENTITY % Heading.class 
+     "%h1.qname; | %h2.qname; | %h3.qname; 
+      | %h4.qname; | %h5.qname; | %h6.qname;" >
+
+<!ENTITY % List.class "%ul.qname; | %ol.qname; | %dl.qname;" >
+
+<!ENTITY % Blkstruct.class "%p.qname; | %div.qname;" >
+
+<!ENTITY % Blkphras.class 
+     "| %pre.qname; | %blockquote.qname; | %address.qname;" >
+
+<!ENTITY % Blkpres.class "| %hr.qname;" >
+
+<!ENTITY % Blkspecial.class 
+     "| %table.qname; | %form.qname; | %fieldset.qname;" >
+
+<!ENTITY % Block.extra "" >
+
+<!-- %Block.class; includes all block elements,
+     used as an component in mixes
+-->
+<!ENTITY % Block.class
+     "%Blkstruct.class;
+      %Blkphras.class;
+      %Blkpres.class;
+      %Blkspecial.class;
+      %Block.extra;"
+>
+
+<!-- %Block.mix; includes all block elements plus %Misc.class;
+-->
+<!ENTITY % Block.mix
+     "%Heading.class;
+      | %List.class;
+      | %Block.class;
+      %Misc.class;"
+>
+
+<!-- ................  All Content Elements  .................. -->
+
+<!-- %Flow.mix; includes all text content, block and inline
+-->
+<!ENTITY % Flow.mix
+     "%Heading.class;
+      | %List.class;
+      | %Block.class;
+      | %Inline.class;
+      %Misc.class;"
+>
+
+<!-- end of xhtml11-model-1.mod -->
+]]>
+
+<!ENTITY % xhtml-charent.module "INCLUDE" >
+<![%xhtml-charent.module;[
+<!ENTITY % xhtml-charent.mod
+     PUBLIC "-//W3C//ENTITIES XHTML Character Entities 1.0//EN"
+            "xhtml-charent-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Character Entities Module  ......................................... -->
+<!-- file: xhtml-charent-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ENTITIES XHTML Character Entities 1.0//EN"
+       SYSTEM "xhtml-charent-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Character Entities for XHTML
+
+     This module declares the set of character entities for XHTML,
+     including the Latin 1, Symbol and Special character collections.
+-->
+
+<!ENTITY % xhtml-lat1
+    PUBLIC "-//W3C//ENTITIES Latin 1 for XHTML//EN"
+           "xhtml-lat1.ent" >
+<!ENTITY % xhtml-symbol
+    PUBLIC "-//W3C//ENTITIES Symbols for XHTML//EN"
+           "xhtml-symbol.ent" >
+<!ENTITY % xhtml-special
+    PUBLIC "-//W3C//ENTITIES Special for XHTML//EN"
+           "xhtml-special.ent" >
+
+<!-- ...................................................................... -->
+<!-- XML-compatible ISO Latin 1 Character Entity Set for XHTML ............ -->
+<!-- file: xhtml-lat1.ent
+
+     Typical invocation:
+
+       <!ENTITY % xhtml-lat1
+           PUBLIC "-//W3C//ENTITIES Latin 1 for XHTML//EN"
+                  "xhtml-lat1.ent" >
+       %xhtml-lat1;
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+     PUBLIC "-//W3C//ENTITIES Latin 1 for XHTML//EN"
+     SYSTEM "xhtml-lat1.ent"
+
+     Revision:  $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     Portions (C) International Organization for Standardization 1986:
+     Permission to copy in any form is granted for use with conforming 
+     SGML systems and applications as defined in ISO 8879, provided 
+     this notice is included in all copies.
+-->
+
+<!ENTITY nbsp   "&#160;" ><!-- no-break space = non-breaking space, U+00A0 ISOnum -->
+<!ENTITY iexcl  "&#161;" ><!-- inverted exclamation mark, U+00A1 ISOnum -->
+<!ENTITY cent   "&#162;" ><!-- cent sign, U+00A2 ISOnum -->
+<!ENTITY pound  "&#163;" ><!-- pound sign, U+00A3 ISOnum -->
+<!ENTITY curren "&#164;" ><!-- currency sign, U+00A4 ISOnum -->
+<!ENTITY yen    "&#165;" ><!-- yen sign = yuan sign, U+00A5 ISOnum -->
+<!ENTITY brvbar "&#166;" ><!-- broken bar = broken vertical bar, U+00A6 ISOnum -->
+<!ENTITY sect   "&#167;" ><!-- section sign, U+00A7 ISOnum -->
+<!ENTITY uml    "&#168;" ><!-- diaeresis = spacing diaeresis, U+00A8 ISOdia -->
+<!ENTITY copy   "&#169;" ><!-- copyright sign, U+00A9 ISOnum -->
+<!ENTITY ordf   "&#170;" ><!-- feminine ordinal indicator, U+00AA ISOnum -->
+<!ENTITY laquo  "&#171;" ><!-- left-pointing double angle quotation mark = left pointing guillemet, U+00AB ISOnum -->
+<!ENTITY not    "&#172;" ><!-- not sign, U+00AC ISOnum -->
+<!ENTITY shy    "&#173;" ><!-- soft hyphen = discretionary hyphen, U+00AD ISOnum -->
+<!ENTITY reg    "&#174;" ><!-- registered sign = registered trade mark sign, U+00AE ISOnum -->
+<!ENTITY macr   "&#175;" ><!-- macron = spacing macron = overline = APL overbar, U+00AF ISOdia -->
+<!ENTITY deg    "&#176;" ><!-- degree sign, U+00B0 ISOnum -->
+<!ENTITY plusmn "&#177;" ><!-- plus-minus sign = plus-or-minus sign, U+00B1 ISOnum -->
+<!ENTITY sup2   "&#178;" ><!-- superscript two = superscript digit two = squared, U+00B2 ISOnum -->
+<!ENTITY sup3   "&#179;" ><!-- superscript three = superscript digit three = cubed, U+00B3 ISOnum -->
+<!ENTITY acute  "&#180;" ><!-- acute accent = spacing acute, U+00B4 ISOdia -->
+<!ENTITY micro  "&#181;" ><!-- micro sign, U+00B5 ISOnum -->
+<!ENTITY para   "&#182;" ><!-- pilcrow sign = paragraph sign, U+00B6 ISOnum -->
+<!ENTITY middot "&#183;" ><!-- middle dot = Georgian comma = Greek middle dot, U+00B7 ISOnum -->
+<!ENTITY cedil  "&#184;" ><!-- cedilla = spacing cedilla, U+00B8 ISOdia -->
+<!ENTITY sup1   "&#185;" ><!-- superscript one = superscript digit one, U+00B9 ISOnum -->
+<!ENTITY ordm   "&#186;" ><!-- masculine ordinal indicator, U+00BA ISOnum -->
+<!ENTITY raquo  "&#187;" ><!-- right-pointing double angle quotation mark = right pointing guillemet, U+00BB ISOnum -->
+<!ENTITY frac14 "&#188;" ><!-- vulgar fraction one quarter = fraction one quarter, U+00BC ISOnum -->
+<!ENTITY frac12 "&#189;" ><!-- vulgar fraction one half = fraction one half, U+00BD ISOnum -->
+<!ENTITY frac34 "&#190;" ><!-- vulgar fraction three quarters = fraction three quarters, U+00BE ISOnum -->
+<!ENTITY iquest "&#191;" ><!-- inverted question mark = turned question mark, U+00BF ISOnum -->
+<!ENTITY Agrave "&#192;" ><!-- latin capital A with grave = latin capital A grave, U+00C0 ISOlat1 -->
+<!ENTITY Aacute "&#193;" ><!-- latin capital A with acute, U+00C1 ISOlat1 -->
+<!ENTITY Acirc  "&#194;" ><!-- latin capital A with circumflex, U+00C2 ISOlat1 -->
+<!ENTITY Atilde "&#195;" ><!-- latin capital A with tilde, U+00C3 ISOlat1 -->
+<!ENTITY Auml   "&#196;" ><!-- latin capital A with diaeresis, U+00C4 ISOlat1 -->
+<!ENTITY Aring  "&#197;" ><!-- latin capital A with ring above = latin capital A ring, U+00C5 ISOlat1 -->
+<!ENTITY AElig  "&#198;" ><!-- latin capital AE = latin capital ligature AE, U+00C6 ISOlat1 -->
+<!ENTITY Ccedil "&#199;" ><!-- latin capital C with cedilla, U+00C7 ISOlat1 -->
+<!ENTITY Egrave "&#200;" ><!-- latin capital E with grave, U+00C8 ISOlat1 -->
+<!ENTITY Eacute "&#201;" ><!-- latin capital E with acute, U+00C9 ISOlat1 -->
+<!ENTITY Ecirc  "&#202;" ><!-- latin capital E with circumflex, U+00CA ISOlat1 -->
+<!ENTITY Euml   "&#203;" ><!-- latin capital E with diaeresis, U+00CB ISOlat1 -->
+<!ENTITY Igrave "&#204;" ><!-- latin capital I with grave, U+00CC ISOlat1 -->
+<!ENTITY Iacute "&#205;" ><!-- latin capital I with acute, U+00CD ISOlat1 -->
+<!ENTITY Icirc  "&#206;" ><!-- latin capital I with circumflex, U+00CE ISOlat1 -->
+<!ENTITY Iuml   "&#207;" ><!-- latin capital I with diaeresis, U+00CF ISOlat1 -->
+<!ENTITY ETH    "&#208;" ><!-- latin capital ETH, U+00D0 ISOlat1 -->
+<!ENTITY Ntilde "&#209;" ><!-- latin capital N with tilde, U+00D1 ISOlat1 -->
+<!ENTITY Ograve "&#210;" ><!-- latin capital O with grave, U+00D2 ISOlat1 -->
+<!ENTITY Oacute "&#211;" ><!-- latin capital O with acute, U+00D3 ISOlat1 -->
+<!ENTITY Ocirc  "&#212;" ><!-- latin capital O with circumflex, U+00D4 ISOlat1 -->
+<!ENTITY Otilde "&#213;" ><!-- latin capital O with tilde, U+00D5 ISOlat1 -->
+<!ENTITY Ouml   "&#214;" ><!-- latin capital O with diaeresis, U+00D6 ISOlat1 -->
+<!ENTITY times  "&#215;" ><!-- multiplication sign, U+00D7 ISOnum -->
+<!ENTITY Oslash "&#216;" ><!-- latin capital O with stroke = latin capital O slash, U+00D8 ISOlat1 -->
+<!ENTITY Ugrave "&#217;" ><!-- latin capital U with grave, U+00D9 ISOlat1 -->
+<!ENTITY Uacute "&#218;" ><!-- latin capital U with acute, U+00DA ISOlat1 -->
+<!ENTITY Ucirc  "&#219;" ><!-- latin capital U with circumflex, U+00DB ISOlat1 -->
+<!ENTITY Uuml   "&#220;" ><!-- latin capital U with diaeresis, U+00DC ISOlat1 -->
+<!ENTITY Yacute "&#221;" ><!-- latin capital Y with acute, U+00DD ISOlat1 -->
+<!ENTITY THORN  "&#222;" ><!-- latin capital THORN, U+00DE ISOlat1 -->
+<!ENTITY szlig  "&#223;" ><!-- latin small sharp s = ess-zed, U+00DF ISOlat1 -->
+<!ENTITY agrave "&#224;" ><!-- latin small a with grave = latin small a grave, U+00E0 ISOlat1 -->
+<!ENTITY aacute "&#225;" ><!-- latin small a with acute, U+00E1 ISOlat1 -->
+<!ENTITY acirc  "&#226;" ><!-- latin small a with circumflex, U+00E2 ISOlat1 -->
+<!ENTITY atilde "&#227;" ><!-- latin small a with tilde, U+00E3 ISOlat1 -->
+<!ENTITY auml   "&#228;" ><!-- latin small a with diaeresis, U+00E4 ISOlat1 -->
+<!ENTITY aring  "&#229;" ><!-- latin small a with ring above = latin small a ring, U+00E5 ISOlat1 -->
+<!ENTITY aelig  "&#230;" ><!-- latin small ae = latin small ligature ae, U+00E6 ISOlat1 -->
+<!ENTITY ccedil "&#231;" ><!-- latin small c with cedilla, U+00E7 ISOlat1 -->
+<!ENTITY egrave "&#232;" ><!-- latin small e with grave, U+00E8 ISOlat1 -->
+<!ENTITY eacute "&#233;" ><!-- latin small e with acute, U+00E9 ISOlat1 -->
+<!ENTITY ecirc  "&#234;" ><!-- latin small e with circumflex, U+00EA ISOlat1 -->
+<!ENTITY euml   "&#235;" ><!-- latin small e with diaeresis, U+00EB ISOlat1 -->
+<!ENTITY igrave "&#236;" ><!-- latin small i with grave, U+00EC ISOlat1 -->
+<!ENTITY iacute "&#237;" ><!-- latin small i with acute, U+00ED ISOlat1 -->
+<!ENTITY icirc  "&#238;" ><!-- latin small i with circumflex, U+00EE ISOlat1 -->
+<!ENTITY iuml   "&#239;" ><!-- latin small i with diaeresis, U+00EF ISOlat1 -->
+<!ENTITY eth    "&#240;" ><!-- latin small eth, U+00F0 ISOlat1 -->
+<!ENTITY ntilde "&#241;" ><!-- latin small n with tilde, U+00F1 ISOlat1 -->
+<!ENTITY ograve "&#242;" ><!-- latin small o with grave, U+00F2 ISOlat1 -->
+<!ENTITY oacute "&#243;" ><!-- latin small o with acute, U+00F3 ISOlat1 -->
+<!ENTITY ocirc  "&#244;" ><!-- latin small o with circumflex, U+00F4 ISOlat1 -->
+<!ENTITY otilde "&#245;" ><!-- latin small o with tilde, U+00F5 ISOlat1 -->
+<!ENTITY ouml   "&#246;" ><!-- latin small o with diaeresis, U+00F6 ISOlat1 -->
+<!ENTITY divide "&#247;" ><!-- division sign, U+00F7 ISOnum -->
+<!ENTITY oslash "&#248;" ><!-- latin small o with stroke, = latin small o slash, U+00F8 ISOlat1 -->
+<!ENTITY ugrave "&#249;" ><!-- latin small u with grave, U+00F9 ISOlat1 -->
+<!ENTITY uacute "&#250;" ><!-- latin small u with acute, U+00FA ISOlat1 -->
+<!ENTITY ucirc  "&#251;" ><!-- latin small u with circumflex, U+00FB ISOlat1 -->
+<!ENTITY uuml   "&#252;" ><!-- latin small u with diaeresis, U+00FC ISOlat1 -->
+<!ENTITY yacute "&#253;" ><!-- latin small y with acute, U+00FD ISOlat1 -->
+<!ENTITY thorn  "&#254;" ><!-- latin small thorn with, U+00FE ISOlat1 -->
+<!ENTITY yuml   "&#255;" ><!-- latin small y with diaeresis, U+00FF ISOlat1 -->
+<!-- end of xhtml-lat1.ent -->
+
+<!-- ...................................................................... -->
+<!-- ISO Math, Greek and Symbolic Character Entity Set for XHTML .......... -->
+<!-- file: xhtml-lat1.ent
+
+     Typical invocation:
+
+       <!ENTITY % xhtml-symbol
+           PUBLIC "-//W3C//ENTITIES Symbols for XHTML//EN"
+                  "xhtml-symbol.ent" >
+       %xhtml-symbol;
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ENTITIES Symbols for XHTML//EN"
+       SYSTEM "xhtml-symbol.ent"
+
+     Revision:  $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     Portions (C) International Organization for Standardization 1986:
+     Permission to copy in any form is granted for use with conforming 
+     SGML systems and applications as defined in ISO 8879, provided 
+     this notice is included in all copies.
+-->
+
+<!-- Relevant ISO entity set is given unless names are newly introduced.
+     New names (i.e., not in ISO 8879 list) do not clash with any
+     existing ISO 8879 entity names. ISO 10646 character numbers
+     are given for each character, in hex. CDATA values are decimal
+     conversions of the ISO 10646 values and refer to the document
+     character set. Names are Unicode 2.0 names.
+-->
+
+<!-- Latin Extended-B -->
+<!ENTITY fnof     "&#402;" ><!-- latin small f with hook = function
+                              = florin, U+0192 ISOtech -->
+
+<!-- Greek -->
+<!ENTITY Alpha    "&#913;" ><!-- greek capital letter alpha, U+0391 -->
+<!ENTITY Beta     "&#914;" ><!-- greek capital letter beta, U+0392 -->
+<!ENTITY Gamma    "&#915;" ><!-- greek capital letter gamma, U+0393 ISOgrk3 -->
+<!ENTITY Delta    "&#916;" ><!-- greek capital letter delta, U+0394 ISOgrk3 -->
+<!ENTITY Epsilon  "&#917;" ><!-- greek capital letter epsilon, U+0395 -->
+<!ENTITY Zeta     "&#918;" ><!-- greek capital letter zeta, U+0396 -->
+<!ENTITY Eta      "&#919;" ><!-- greek capital letter eta, U+0397 -->
+<!ENTITY Theta    "&#920;" ><!-- greek capital letter theta, U+0398 ISOgrk3 -->
+<!ENTITY Iota     "&#921;" ><!-- greek capital letter iota, U+0399 -->
+<!ENTITY Kappa    "&#922;" ><!-- greek capital letter kappa, U+039A -->
+<!ENTITY Lambda   "&#923;" ><!-- greek capital letter lambda, U+039B ISOgrk3 -->
+<!ENTITY Mu       "&#924;" ><!-- greek capital letter mu, U+039C -->
+<!ENTITY Nu       "&#925;" ><!-- greek capital letter nu, U+039D -->
+<!ENTITY Xi       "&#926;" ><!-- greek capital letter xi, U+039E ISOgrk3 -->
+<!ENTITY Omicron  "&#927;" ><!-- greek capital letter omicron, U+039F -->
+<!ENTITY Pi       "&#928;" ><!-- greek capital letter pi, U+03A0 ISOgrk3 -->
+<!ENTITY Rho      "&#929;" ><!-- greek capital letter rho, U+03A1 -->
+<!-- there is no Sigmaf, and no U+03A2 character either -->
+<!ENTITY Sigma    "&#931;" ><!-- greek capital letter sigma, U+03A3 ISOgrk3 -->
+<!ENTITY Tau      "&#932;" ><!-- greek capital letter tau, U+03A4 -->
+<!ENTITY Upsilon  "&#933;" ><!-- greek capital letter upsilon,
+                              U+03A5 ISOgrk3 -->
+<!ENTITY Phi      "&#934;" ><!-- greek capital letter phi, U+03A6 ISOgrk3 -->
+<!ENTITY Chi      "&#935;" ><!-- greek capital letter chi, U+03A7 -->
+<!ENTITY Psi      "&#936;" ><!-- greek capital letter psi, U+03A8 ISOgrk3 -->
+<!ENTITY Omega    "&#937;" ><!-- greek capital letter omega, U+03A9 ISOgrk3 -->
+<!ENTITY alpha    "&#945;" ><!-- greek small letter alpha, U+03B1 ISOgrk3 -->
+<!ENTITY beta     "&#946;" ><!-- greek small letter beta, U+03B2 ISOgrk3 -->
+<!ENTITY gamma    "&#947;" ><!-- greek small letter gamma, U+03B3 ISOgrk3 -->
+<!ENTITY delta    "&#948;" ><!-- greek small letter delta, U+03B4 ISOgrk3 -->
+<!ENTITY epsilon  "&#949;" ><!-- greek small letter epsilon, U+03B5 ISOgrk3 -->
+<!ENTITY zeta     "&#950;" ><!-- greek small letter zeta, U+03B6 ISOgrk3 -->
+<!ENTITY eta      "&#951;" ><!-- greek small letter eta, U+03B7 ISOgrk3 -->
+<!ENTITY theta    "&#952;" ><!-- greek small letter theta, U+03B8 ISOgrk3 -->
+<!ENTITY iota     "&#953;" ><!-- greek small letter iota, U+03B9 ISOgrk3 -->
+<!ENTITY kappa    "&#954;" ><!-- greek small letter kappa, U+03BA ISOgrk3 -->
+<!ENTITY lambda   "&#955;" ><!-- greek small letter lambda, U+03BB ISOgrk3 -->
+<!ENTITY mu       "&#956;" ><!-- greek small letter mu, U+03BC ISOgrk3 -->
+<!ENTITY nu       "&#957;" ><!-- greek small letter nu, U+03BD ISOgrk3 -->
+<!ENTITY xi       "&#958;" ><!-- greek small letter xi, U+03BE ISOgrk3 -->
+<!ENTITY omicron  "&#959;" ><!-- greek small letter omicron, U+03BF NEW -->
+<!ENTITY pi       "&#960;" ><!-- greek small letter pi, U+03C0 ISOgrk3 -->
+<!ENTITY rho      "&#961;" ><!-- greek small letter rho, U+03C1 ISOgrk3 -->
+<!ENTITY sigmaf   "&#962;" ><!-- greek small letter final sigma, U+03C2 ISOgrk3 -->
+<!ENTITY sigma    "&#963;" ><!-- greek small letter sigma, U+03C3 ISOgrk3 -->
+<!ENTITY tau      "&#964;" ><!-- greek small letter tau, U+03C4 ISOgrk3 -->
+<!ENTITY upsilon  "&#965;" ><!-- greek small letter upsilon, U+03C5 ISOgrk3 -->
+<!ENTITY phi      "&#966;" ><!-- greek small letter phi, U+03C6 ISOgrk3 -->
+<!ENTITY chi      "&#967;" ><!-- greek small letter chi, U+03C7 ISOgrk3 -->
+<!ENTITY psi      "&#968;" ><!-- greek small letter psi, U+03C8 ISOgrk3 -->
+<!ENTITY omega    "&#969;" ><!-- greek small letter omega, U+03C9 ISOgrk3 -->
+<!ENTITY thetasym "&#977;" ><!-- greek small letter theta symbol, U+03D1 NEW -->
+<!ENTITY upsih    "&#978;" ><!-- greek upsilon with hook symbol, U+03D2 NEW -->
+<!ENTITY piv      "&#982;" ><!-- greek pi symbol, U+03D6 ISOgrk3 -->
+
+<!-- General Punctuation -->
+<!ENTITY bull     "&#8226;" ><!-- bullet = black small circle, U+2022 ISOpub  -->
+<!-- bullet is NOT the same as bullet operator, U+2219 -->
+<!ENTITY hellip   "&#8230;" ><!-- horizontal ellipsis = three dot leader, U+2026 ISOpub  -->
+<!ENTITY prime    "&#8242;" ><!-- prime = minutes = feet, U+2032 ISOtech -->
+<!ENTITY Prime    "&#8243;" ><!-- double prime = seconds = inches, U+2033 ISOtech -->
+<!ENTITY oline    "&#8254;" ><!-- overline = spacing overscore, U+203E NEW -->
+<!ENTITY frasl    "&#8260;" ><!-- fraction slash, U+2044 NEW -->
+
+<!-- Letterlike Symbols -->
+<!ENTITY weierp   "&#8472;" ><!-- script capital P = power set = Weierstrass p, U+2118 ISOamso -->
+<!ENTITY image    "&#8465;" ><!-- blackletter capital I = imaginary part, U+2111 ISOamso -->
+<!ENTITY real     "&#8476;" ><!-- blackletter capital R = real part symbol, U+211C ISOamso -->
+<!ENTITY trade    "&#8482;" ><!-- trade mark sign, U+2122 ISOnum -->
+<!ENTITY alefsym  "&#8501;" ><!-- alef symbol = first transfinite cardinal, U+2135 NEW -->
+<!-- alef symbol is NOT the same as hebrew letter alef, U+05D0 although
+     the same glyph could be used to depict both characters -->
+
+<!-- Arrows -->
+<!ENTITY larr     "&#8592;" ><!-- leftwards arrow, U+2190 ISOnum -->
+<!ENTITY uarr     "&#8593;" ><!-- upwards arrow, U+2191 ISOnum-->
+<!ENTITY rarr     "&#8594;" ><!-- rightwards arrow, U+2192 ISOnum -->
+<!ENTITY darr     "&#8595;" ><!-- downwards arrow, U+2193 ISOnum -->
+<!ENTITY harr     "&#8596;" ><!-- left right arrow, U+2194 ISOamsa -->
+<!ENTITY crarr    "&#8629;" ><!-- downwards arrow with corner leftwards
+                               = carriage return, U+21B5 NEW -->
+<!ENTITY lArr     "&#8656;" ><!-- leftwards double arrow, U+21D0 ISOtech -->
+<!-- Unicode does not say that lArr is the same as the 'is implied by' arrow
+    but also does not have any other character for that function. So ? lArr can
+    be used for 'is implied by' as ISOtech suggests -->
+<!ENTITY uArr     "&#8657;" ><!-- upwards double arrow, U+21D1 ISOamsa -->
+<!ENTITY rArr     "&#8658;" ><!-- rightwards double arrow, U+21D2 ISOtech -->
+<!-- Unicode does not say this is the 'implies' character but does not have
+     another character with this function so ?
+     rArr can be used for 'implies' as ISOtech suggests -->
+<!ENTITY dArr     "&#8659;" ><!-- downwards double arrow, U+21D3 ISOamsa -->
+<!ENTITY hArr     "&#8660;" ><!-- left right double arrow, U+21D4 ISOamsa -->
+
+<!-- Mathematical Operators -->
+<!ENTITY forall   "&#8704;" ><!-- for all, U+2200 ISOtech -->
+<!ENTITY part     "&#8706;" ><!-- partial differential, U+2202 ISOtech  -->
+<!ENTITY exist    "&#8707;" ><!-- there exists, U+2203 ISOtech -->
+<!ENTITY empty    "&#8709;" ><!-- empty set = null set = diameter, U+2205 ISOamso -->
+<!ENTITY nabla    "&#8711;" ><!-- nabla = backward difference, U+2207 ISOtech -->
+<!ENTITY isin     "&#8712;" ><!-- element of, U+2208 ISOtech -->
+<!ENTITY notin    "&#8713;" ><!-- not an element of, U+2209 ISOtech -->
+<!ENTITY ni       "&#8715;" ><!-- contains as member, U+220B ISOtech -->
+<!-- should there be a more memorable name than 'ni'? -->
+<!ENTITY prod     "&#8719;" ><!-- n-ary product = product sign, U+220F ISOamsb -->
+<!-- prod is NOT the same character as U+03A0 'greek capital letter pi' though
+     the same glyph might be used for both -->
+<!ENTITY sum      "&#8721;" ><!-- n-ary sumation, U+2211 ISOamsb -->
+<!-- sum is NOT the same character as U+03A3 'greek capital letter sigma'
+     though the same glyph might be used for both -->
+<!ENTITY minus    "&#8722;" ><!-- minus sign, U+2212 ISOtech -->
+<!ENTITY lowast   "&#8727;" ><!-- asterisk operator, U+2217 ISOtech -->
+<!ENTITY radic    "&#8730;" ><!-- square root = radical sign, U+221A ISOtech -->
+<!ENTITY prop     "&#8733;" ><!-- proportional to, U+221D ISOtech -->
+<!ENTITY infin    "&#8734;" ><!-- infinity, U+221E ISOtech -->
+<!ENTITY ang      "&#8736;" ><!-- angle, U+2220 ISOamso -->
+<!ENTITY and      "&#8743;" ><!-- logical and = wedge, U+2227 ISOtech -->
+<!ENTITY or       "&#8744;" ><!-- logical or = vee, U+2228 ISOtech -->
+<!ENTITY cap      "&#8745;" ><!-- intersection = cap, U+2229 ISOtech -->
+<!ENTITY cup      "&#8746;" ><!-- union = cup, U+222A ISOtech -->
+<!ENTITY int      "&#8747;" ><!-- integral, U+222B ISOtech -->
+<!ENTITY there4   "&#8756;" ><!-- therefore, U+2234 ISOtech -->
+<!ENTITY sim      "&#8764;" ><!-- tilde operator = varies with = similar to, U+223C ISOtech -->
+<!-- tilde operator is NOT the same character as the tilde, U+007E,
+     although the same glyph might be used to represent both  -->
+<!ENTITY cong     "&#8773;" ><!-- approximately equal to, U+2245 ISOtech -->
+<!ENTITY asymp    "&#8776;" ><!-- almost equal to = asymptotic to, U+2248 ISOamsr -->
+<!ENTITY ne       "&#8800;" ><!-- not equal to, U+2260 ISOtech -->
+<!ENTITY equiv    "&#8801;" ><!-- identical to, U+2261 ISOtech -->
+<!ENTITY le       "&#8804;" ><!-- less-than or equal to, U+2264 ISOtech -->
+<!ENTITY ge       "&#8805;" ><!-- greater-than or equal to, U+2265 ISOtech -->
+<!ENTITY sub      "&#8834;" ><!-- subset of, U+2282 ISOtech -->
+<!ENTITY sup      "&#8835;" ><!-- superset of, U+2283 ISOtech -->
+<!-- note that nsup, 'not a superset of, U+2283' is not covered by the Symbol
+     font encoding and is not included. Should it be, for symmetry?
+     It is in ISOamsn  -->
+<!ENTITY nsub     "&#8836;" ><!-- not a subset of, U+2284 ISOamsn -->
+<!ENTITY sube     "&#8838;" ><!-- subset of or equal to, U+2286 ISOtech -->
+<!ENTITY supe     "&#8839;" ><!-- superset of or equal to, U+2287 ISOtech -->
+<!ENTITY oplus    "&#8853;" ><!-- circled plus = direct sum, U+2295 ISOamsb -->
+<!ENTITY otimes   "&#8855;" ><!-- circled times = vector product, U+2297 ISOamsb -->
+<!ENTITY perp     "&#8869;" ><!-- up tack = orthogonal to = perpendicular, U+22A5 ISOtech -->
+<!ENTITY sdot     "&#8901;" ><!-- dot operator, U+22C5 ISOamsb -->
+<!-- dot operator is NOT the same character as U+00B7 middle dot -->
+
+<!-- Miscellaneous Technical -->
+<!ENTITY lceil    "&#8968;" ><!-- left ceiling = apl upstile, U+2308 ISOamsc  -->
+<!ENTITY rceil    "&#8969;" ><!-- right ceiling, U+2309 ISOamsc  -->
+<!ENTITY lfloor   "&#8970;" ><!-- left floor = apl downstile, U+230A ISOamsc  -->
+<!ENTITY rfloor   "&#8971;" ><!-- right floor, U+230B ISOamsc  -->
+<!ENTITY lang     "&#9001;" ><!-- left-pointing angle bracket = bra, U+2329 ISOtech -->
+<!-- lang is NOT the same character as U+003C 'less than'
+     or U+2039 'single left-pointing angle quotation mark' -->
+<!ENTITY rang     "&#9002;" ><!-- right-pointing angle bracket = ket, U+232A ISOtech -->
+<!-- rang is NOT the same character as U+003E 'greater than'
+     or U+203A 'single right-pointing angle quotation mark' -->
+
+<!-- Geometric Shapes -->
+<!ENTITY loz      "&#9674;" ><!-- lozenge, U+25CA ISOpub -->
+
+<!-- Miscellaneous Symbols -->
+<!ENTITY spades   "&#9824;" ><!-- black spade suit, U+2660 ISOpub -->
+<!-- black here seems to mean filled as opposed to hollow -->
+<!ENTITY clubs    "&#9827;" ><!-- black club suit = shamrock, U+2663 ISOpub -->
+<!ENTITY hearts   "&#9829;" ><!-- black heart suit = valentine, U+2665 ISOpub -->
+<!ENTITY diams    "&#9830;" ><!-- black diamond suit, U+2666 ISOpub -->
+
+<!-- end of xhtml-symbol.ent -->
+
+<!-- ...................................................................... -->
+<!-- XML-compatible ISO Special Character Entity Set for XHTML ............ -->
+<!-- file: xhtml-lat1.ent
+
+     Typical invocation:
+
+       <!ENTITY % xhtml-special
+           PUBLIC "-//W3C//ENTITIES Special for XHTML//EN"
+                  "xhtml-special.ent" >
+       %xhtml-special;
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+     PUBLIC "-//W3C//ENTITIES Special for XHTML//EN"
+     SYSTEM "xhtml-special.ent"
+
+     Revision:  $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     Portions (C) International Organization for Standardization 1986:
+     Permission to copy in any form is granted for use with conforming 
+     SGML systems and applications as defined in ISO 8879, provided 
+     this notice is included in all copies.
+-->
+
+<!-- Relevant ISO entity set is given unless names are newly introduced.
+     New names (i.e., not in ISO 8879 list) do not clash with any
+     existing ISO 8879 entity names. ISO 10646 character numbers
+     are given for each character, in hex. CDATA values are decimal
+     conversions of the ISO 10646 values and refer to the document
+     character set. Names are Unicode 2.0 names.
+-->
+
+<!-- C0 Controls and Basic Latin -->
+<!ENTITY quot    "&#34;" ><!-- quotation mark = APL quote, U+0022 ISOnum -->
+<!ENTITY amp     "&#38;" ><!-- ampersand, U+0026 ISOnum -->
+<!ENTITY lt      "&#60;" ><!-- less-than sign, U+003C ISOnum -->
+<!ENTITY gt      "&#62;" ><!-- greater-than sign, U+003E ISOnum -->
+
+<!-- Latin Extended-A -->
+<!ENTITY OElig   "&#338;" ><!-- latin capital ligature OE, U+0152 ISOlat2 -->
+<!ENTITY oelig   "&#339;" ><!-- latin small ligature oe, U+0153 ISOlat2 -->
+
+<!-- ligature is a misnomer, this is a separate character in some languages -->
+<!ENTITY Scaron  "&#352;" ><!-- latin capital letter S with caron, U+0160 ISOlat2 -->
+<!ENTITY scaron  "&#353;" ><!-- latin small letter s with caron, U+0161 ISOlat2 -->
+<!ENTITY Yuml    "&#376;" ><!-- latin capital letter Y with diaeresis, U+0178 ISOlat2 -->
+
+<!-- Spacing Modifier Letters -->
+<!ENTITY circ    "&#710;" ><!-- modifier letter circumflex accent, U+02C6 ISOpub -->
+<!ENTITY tilde   "&#732;" ><!-- small tilde, U+02DC ISOdia -->
+
+<!-- General Punctuation -->
+<!ENTITY ensp    "&#8194;" ><!-- en space, U+2002 ISOpub -->
+<!ENTITY emsp    "&#8195;" ><!-- em space, U+2003 ISOpub -->
+<!ENTITY thinsp  "&#8201;" ><!-- thin space, U+2009 ISOpub -->
+<!ENTITY zwnj    "&#8204;" ><!-- zero width non-joiner, U+200C NEW RFC 2070 -->
+<!ENTITY zwj     "&#8205;" ><!-- zero width joiner, U+200D NEW RFC 2070 -->
+<!ENTITY lrm     "&#8206;" ><!-- left-to-right mark, U+200E NEW RFC 2070 -->
+<!ENTITY rlm     "&#8207;" ><!-- right-to-left mark, U+200F NEW RFC 2070 -->
+<!ENTITY ndash   "&#8211;" ><!-- en dash, U+2013 ISOpub -->
+<!ENTITY mdash   "&#8212;" ><!-- em dash, U+2014 ISOpub -->
+<!ENTITY lsquo   "&#8216;" ><!-- left single quotation mark, U+2018 ISOnum -->
+<!ENTITY rsquo   "&#8217;" ><!-- right single quotation mark, U+2019 ISOnum -->
+<!ENTITY sbquo   "&#8218;" ><!-- single low-9 quotation mark, U+201A NEW -->
+<!ENTITY ldquo   "&#8220;" ><!-- left double quotation mark, U+201C ISOnum -->
+<!ENTITY rdquo   "&#8221;" ><!-- right double quotation mark, U+201D ISOnum -->
+<!ENTITY bdquo   "&#8222;" ><!-- double low-9 quotation mark, U+201E NEW -->
+<!ENTITY dagger  "&#8224;" ><!-- dagger, U+2020 ISOpub -->
+<!ENTITY Dagger  "&#8225;" ><!-- double dagger, U+2021 ISOpub -->
+<!ENTITY permil  "&#8240;" ><!-- per mille sign, U+2030 ISOtech -->
+
+<!-- lsaquo is proposed but not yet ISO standardized -->
+<!ENTITY lsaquo  "&#8249;" ><!-- single left-pointing angle quotation mark, U+2039 ISO proposed -->
+<!-- rsaquo is proposed but not yet ISO standardized -->
+<!ENTITY rsaquo  "&#8250;" ><!-- single right-pointing angle quotation mark, U+203A ISO proposed -->
+<!ENTITY euro    "&#8364;" ><!-- euro sign, U+20AC NEW -->
+
+<!-- end of xhtml-special.ent -->
+
+
+<!-- end of xhtml-charent-1.mod -->
+]]>
+
+<!-- end of xhtml-framework-1.mod -->
+]]>
+
+<!-- Post-Framework Redeclaration placeholder  ................... -->
+<!-- this serves as a location to insert markup declarations
+     into the DTD following the framework declarations.
+-->
+<!ENTITY % xhtml-postfw-redecl.module "IGNORE" >
+<![%xhtml-postfw-redecl.module;[
+%xhtml-postfw-redecl.mod;
+<!-- end of xhtml-postfw-redecl.module -->]]>
+
+<!-- Text Module (Required)  ..................................... -->
+<!ENTITY % xhtml-text.module "INCLUDE" >
+<![%xhtml-text.module;[
+<!ENTITY % xhtml-text.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Text 1.0//EN"
+            "xhtml-text-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Text Module  ................................................... -->
+<!-- file: xhtml-text-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Text 1.0//EN"
+       SYSTEM "xhtml-text-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Textual Content
+
+     The Text module includes declarations for all core 
+     text container elements and their attributes.
+-->
+
+<!ENTITY % xhtml-inlstruct.module "INCLUDE" >
+<![%xhtml-inlstruct.module;[
+<!ENTITY % xhtml-inlstruct.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Inline Structural 1.0//EN"
+            "xhtml-inlstruct-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Inline Phrasal Module  ......................................... -->
+<!-- file: xhtml-inlstruct-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Inline Structural 1.0//EN"
+       SYSTEM "xhtml-inlstruct-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Inline Structural
+
+        br, span
+
+     This module declares the elements and their attributes 
+     used to support inline-level structural markup.
+-->
+
+<!-- br: forced line break ............................. -->
+
+<!ENTITY % br.element  "INCLUDE" >
+<![%br.element;[
+
+<!ENTITY % br.content  "EMPTY" >
+<!ENTITY % br.qname  "br" >
+<!ELEMENT %br.qname;  %br.content; >
+
+<!-- end of br.element -->]]>
+
+<!ENTITY % br.attlist  "INCLUDE" >
+<![%br.attlist;[
+<!ATTLIST %br.qname;
+      %Core.attrib;
+>
+<!-- end of br.attlist -->]]>
+
+<!-- span: generic inline container .................... -->
+
+<!ENTITY % span.element  "INCLUDE" >
+<![%span.element;[
+<!ENTITY % span.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % span.qname  "span" >
+<!ELEMENT %span.qname;  %span.content; >
+<!-- end of span.element -->]]>
+
+<!ENTITY % span.attlist  "INCLUDE" >
+<![%span.attlist;[
+<!ATTLIST %span.qname;
+      %Common.attrib;
+>
+<!-- end of span.attlist -->]]>
+
+<!-- end of xhtml-inlstruct-1.mod -->
+]]>
+
+<!ENTITY % xhtml-inlphras.module "INCLUDE" >
+<![%xhtml-inlphras.module;[
+<!ENTITY % xhtml-inlphras.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Inline Phrasal 1.0//EN"
+            "xhtml-inlphras-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Inline Phrasal Module  ......................................... -->
+<!-- file: xhtml-inlphras-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Inline Phrasal 1.0//EN"
+       SYSTEM "xhtml-inlphras-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Inline Phrasal
+
+        abbr, acronym, cite, code, dfn, em, kbd, q, samp, strong, var
+
+     This module declares the elements and their attributes used to
+     support inline-level phrasal markup.
+-->
+
+<!ENTITY % abbr.element  "INCLUDE" >
+<![%abbr.element;[
+<!ENTITY % abbr.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % abbr.qname  "abbr" >
+<!ELEMENT %abbr.qname;  %abbr.content; >
+<!-- end of abbr.element -->]]>
+
+<!ENTITY % abbr.attlist  "INCLUDE" >
+<![%abbr.attlist;[
+<!ATTLIST %abbr.qname;
+      %Common.attrib;
+>
+<!-- end of abbr.attlist -->]]>
+
+<!ENTITY % acronym.element  "INCLUDE" >
+<![%acronym.element;[
+<!ENTITY % acronym.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % acronym.qname  "acronym" >
+<!ELEMENT %acronym.qname;  %acronym.content; >
+<!-- end of acronym.element -->]]>
+
+<!ENTITY % acronym.attlist  "INCLUDE" >
+<![%acronym.attlist;[
+<!ATTLIST %acronym.qname;
+      %Common.attrib;
+>
+<!-- end of acronym.attlist -->]]>
+
+<!ENTITY % cite.element  "INCLUDE" >
+<![%cite.element;[
+<!ENTITY % cite.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % cite.qname  "cite" >
+<!ELEMENT %cite.qname;  %cite.content; >
+<!-- end of cite.element -->]]>
+
+<!ENTITY % cite.attlist  "INCLUDE" >
+<![%cite.attlist;[
+<!ATTLIST %cite.qname;
+      %Common.attrib;
+>
+<!-- end of cite.attlist -->]]>
+
+<!ENTITY % code.element  "INCLUDE" >
+<![%code.element;[
+<!ENTITY % code.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % code.qname  "code" >
+<!ELEMENT %code.qname;  %code.content; >
+<!-- end of code.element -->]]>
+
+<!ENTITY % code.attlist  "INCLUDE" >
+<![%code.attlist;[
+<!ATTLIST %code.qname;
+      %Common.attrib;
+>
+<!-- end of code.attlist -->]]>
+
+<!ENTITY % dfn.element  "INCLUDE" >
+<![%dfn.element;[
+<!ENTITY % dfn.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % dfn.qname  "dfn" >
+<!ELEMENT %dfn.qname;  %dfn.content; >
+<!-- end of dfn.element -->]]>
+
+<!ENTITY % dfn.attlist  "INCLUDE" >
+<![%dfn.attlist;[
+<!ATTLIST %dfn.qname;
+      %Common.attrib;
+>
+<!-- end of dfn.attlist -->]]>
+
+<!ENTITY % em.element  "INCLUDE" >
+<![%em.element;[
+<!ENTITY % em.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % em.qname  "em" >
+<!ELEMENT %em.qname;  %em.content; >
+<!-- end of em.element -->]]>
+
+<!ENTITY % em.attlist  "INCLUDE" >
+<![%em.attlist;[
+<!ATTLIST %em.qname;
+      %Common.attrib;
+>
+<!-- end of em.attlist -->]]>
+
+<!ENTITY % kbd.element  "INCLUDE" >
+<![%kbd.element;[
+<!ENTITY % kbd.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % kbd.qname  "kbd" >
+<!ELEMENT %kbd.qname;  %kbd.content; >
+<!-- end of kbd.element -->]]>
+
+<!ENTITY % kbd.attlist  "INCLUDE" >
+<![%kbd.attlist;[
+<!ATTLIST %kbd.qname;
+      %Common.attrib;
+>
+<!-- end of kbd.attlist -->]]>
+
+<!ENTITY % q.element  "INCLUDE" >
+<![%q.element;[
+<!ENTITY % q.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % q.qname  "q" >
+<!ELEMENT %q.qname;  %q.content; >
+<!-- end of q.element -->]]>
+
+<!ENTITY % q.attlist  "INCLUDE" >
+<![%q.attlist;[
+<!ATTLIST %q.qname;
+      %Common.attrib;
+      cite         %URI.datatype;           #IMPLIED
+>
+<!-- end of q.attlist -->]]>
+
+<!ENTITY % samp.element  "INCLUDE" >
+<![%samp.element;[
+<!ENTITY % samp.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % samp.qname  "samp" >
+<!ELEMENT %samp.qname;  %samp.content; >
+<!-- end of samp.element -->]]>
+
+<!ENTITY % samp.attlist  "INCLUDE" >
+<![%samp.attlist;[
+<!ATTLIST %samp.qname;
+      %Common.attrib;
+>
+<!-- end of samp.attlist -->]]>
+
+<!ENTITY % strong.element  "INCLUDE" >
+<![%strong.element;[
+<!ENTITY % strong.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % strong.qname  "strong" >
+<!ELEMENT %strong.qname;  %strong.content; >
+<!-- end of strong.element -->]]>
+
+<!ENTITY % strong.attlist  "INCLUDE" >
+<![%strong.attlist;[
+<!ATTLIST %strong.qname;
+      %Common.attrib;
+>
+<!-- end of strong.attlist -->]]>
+
+<!ENTITY % var.element  "INCLUDE" >
+<![%var.element;[
+<!ENTITY % var.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % var.qname  "var" >
+<!ELEMENT %var.qname;  %var.content; >
+<!-- end of var.element -->]]>
+
+<!ENTITY % var.attlist  "INCLUDE" >
+<![%var.attlist;[
+<!ATTLIST %var.qname;
+      %Common.attrib;
+>
+<!-- end of var.attlist -->]]>
+
+<!-- end of xhtml-inlphras-1.mod -->
+]]>
+
+<!ENTITY % xhtml-blkstruct.module "INCLUDE" >
+<![%xhtml-blkstruct.module;[
+<!ENTITY % xhtml-blkstruct.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Block Structural 1.0//EN"
+            "xhtml-blkstruct-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Block Structural Module  ....................................... -->
+<!-- file: xhtml-blkstruct-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Block Structural 1.0//EN"
+       SYSTEM "xhtml-blkstruct-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Block Structural
+
+        div, p
+
+     This module declares the elements and their attributes used to
+     support block-level structural markup.
+-->
+
+<!ENTITY % div.element  "INCLUDE" >
+<![%div.element;[
+<!ENTITY % div.content
+     "( #PCDATA | %Flow.mix; )*"
+>
+<!ENTITY % div.qname  "div" >
+<!ELEMENT %div.qname;  %div.content; >
+<!-- end of div.element -->]]>
+
+<!ENTITY % div.attlist  "INCLUDE" >
+<![%div.attlist;[
+<!-- end of div.attlist -->]]>
+<!ATTLIST %div.qname;
+      %Common.attrib;
+>
+
+<!ENTITY % p.element  "INCLUDE" >
+<![%p.element;[
+<!ENTITY % p.content
+     "( #PCDATA | %Inline.mix; )*" >
+<!ENTITY % p.qname  "p" >
+<!ELEMENT %p.qname;  %p.content; >
+<!-- end of p.element -->]]>
+
+<!ENTITY % p.attlist  "INCLUDE" >
+<![%p.attlist;[
+<!ATTLIST %p.qname;
+      %Common.attrib;
+>
+<!-- end of p.attlist -->]]>
+
+<!-- end of xhtml-blkstruct-1.mod -->
+]]>
+
+<!ENTITY % xhtml-blkphras.module "INCLUDE" >
+<![%xhtml-blkphras.module;[
+<!ENTITY % xhtml-blkphras.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Block Phrasal 1.0//EN"
+            "xhtml-blkphras-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Block Phrasal Module  .......................................... -->
+<!-- file: xhtml-blkphras-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Block Phrasal 1.0//EN"
+       SYSTEM "xhtml-blkphras-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Block Phrasal
+
+        address, blockquote, pre, h1, h2, h3, h4, h5, h6
+
+     This module declares the elements and their attributes used to
+     support block-level phrasal markup.
+-->
+
+<!ENTITY % address.element  "INCLUDE" >
+<![%address.element;[
+<!ENTITY % address.content
+     "( #PCDATA | %Inline.mix; )*" >
+<!ENTITY % address.qname  "address" >
+<!ELEMENT %address.qname;  %address.content; >
+<!-- end of address.element -->]]>
+
+<!ENTITY % address.attlist  "INCLUDE" >
+<![%address.attlist;[
+<!ATTLIST %address.qname;
+      %Common.attrib;
+>
+<!-- end of address.attlist -->]]>
+
+<!ENTITY % blockquote.element  "INCLUDE" >
+<![%blockquote.element;[
+<!ENTITY % blockquote.content
+     "( %Block.mix; )+"
+>
+<!ENTITY % blockquote.qname  "blockquote" >
+<!ELEMENT %blockquote.qname;  %blockquote.content; >
+<!-- end of blockquote.element -->]]>
+
+<!ENTITY % blockquote.attlist  "INCLUDE" >
+<![%blockquote.attlist;[
+<!ATTLIST %blockquote.qname;
+      %Common.attrib;
+      cite         %URI.datatype;           #IMPLIED
+>
+<!-- end of blockquote.attlist -->]]>
+
+<!ENTITY % pre.element  "INCLUDE" >
+<![%pre.element;[
+<!ENTITY % pre.content
+     "( #PCDATA 
+      | %Inlstruct.class;
+      %Inlphras.class;
+      | %tt.qname; | %i.qname; | %b.qname;
+      %I18n.class;
+      %Anchor.class;
+      | %script.qname; | %map.qname;
+      %Inline.extra; )*"
+>
+<!ENTITY % pre.qname  "pre" >
+<!ELEMENT %pre.qname;  %pre.content; >
+<!-- end of pre.element -->]]>
+
+<!ENTITY % pre.attlist  "INCLUDE" >
+<![%pre.attlist;[
+<!ATTLIST %pre.qname;
+      %Common.attrib;
+      xml:space    ( preserve )             #FIXED 'preserve'
+>
+<!-- end of pre.attlist -->]]>
+
+<!-- ...................  Heading Elements  ................... -->
+
+<!ENTITY % Heading.content  "( #PCDATA | %Inline.mix; )*" >
+
+<!ENTITY % h1.element  "INCLUDE" >
+<![%h1.element;[
+<!ENTITY % h1.qname  "h1" >
+<!ELEMENT %h1.qname;  %Heading.content; >
+<!-- end of h1.element -->]]>
+
+<!ENTITY % h1.attlist  "INCLUDE" >
+<![%h1.attlist;[
+<!ATTLIST %h1.qname;
+      %Common.attrib;
+>
+<!-- end of h1.attlist -->]]>
+
+<!ENTITY % h2.element  "INCLUDE" >
+<![%h2.element;[
+<!ENTITY % h2.qname  "h2" >
+<!ELEMENT %h2.qname;  %Heading.content; >
+<!-- end of h2.element -->]]>
+
+<!ENTITY % h2.attlist  "INCLUDE" >
+<![%h2.attlist;[
+<!ATTLIST %h2.qname;
+      %Common.attrib;
+>
+<!-- end of h2.attlist -->]]>
+
+<!ENTITY % h3.element  "INCLUDE" >
+<![%h3.element;[
+<!ENTITY % h3.qname  "h3" >
+<!ELEMENT %h3.qname;  %Heading.content; >
+<!-- end of h3.element -->]]>
+
+<!ENTITY % h3.attlist  "INCLUDE" >
+<![%h3.attlist;[
+<!ATTLIST %h3.qname;
+      %Common.attrib;
+>
+<!-- end of h3.attlist -->]]>
+
+<!ENTITY % h4.element  "INCLUDE" >
+<![%h4.element;[
+<!ENTITY % h4.qname  "h4" >
+<!ELEMENT %h4.qname;  %Heading.content; >
+<!-- end of h4.element -->]]>
+
+<!ENTITY % h4.attlist  "INCLUDE" >
+<![%h4.attlist;[
+<!ATTLIST %h4.qname;
+      %Common.attrib;
+>
+<!-- end of h4.attlist -->]]>
+
+<!ENTITY % h5.element  "INCLUDE" >
+<![%h5.element;[
+<!ENTITY % h5.qname  "h5" >
+<!ELEMENT %h5.qname;  %Heading.content; >
+<!-- end of h5.element -->]]>
+
+<!ENTITY % h5.attlist  "INCLUDE" >
+<![%h5.attlist;[
+<!ATTLIST %h5.qname;
+      %Common.attrib;
+>
+<!-- end of h5.attlist -->]]>
+
+<!ENTITY % h6.element  "INCLUDE" >
+<![%h6.element;[
+<!ENTITY % h6.qname  "h6" >
+<!ELEMENT %h6.qname;  %Heading.content; >
+<!-- end of h6.element -->]]>
+
+<!ENTITY % h6.attlist  "INCLUDE" >
+<![%h6.attlist;[
+<!ATTLIST %h6.qname;
+      %Common.attrib;
+>
+<!-- end of h6.attlist -->]]>
+
+<!-- end of xhtml-blkphras-1.mod -->
+]]>
+
+<!-- end of xhtml-text-1.mod -->
+]]>
+
+<!-- Hypertext Module (required) ................................. -->
+<!ENTITY % xhtml-hypertext.module "INCLUDE" >
+<![%xhtml-hypertext.module;[
+<!ENTITY % xhtml-hypertext.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Hypertext 1.0//EN"
+            "xhtml-hypertext-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Hypertext Module  .............................................. -->
+<!-- file: xhtml-hypertext-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Hypertext 1.0//EN"
+       SYSTEM "xhtml-hypertext-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Hypertext
+
+        a
+
+     This module declares the anchor ('a') element type, which
+     defines the source of a hypertext link. The destination
+     (or link 'target') is identified via its 'id' attribute 
+     rather than the 'name' attribute as was used in HTML.
+-->
+
+<!-- ............  Anchor Element  ............ -->
+
+<!ENTITY % a.element  "INCLUDE" >
+<![%a.element;[
+<!ENTITY % a.content
+     "( #PCDATA | %Inline-noA.mix; )*"
+>
+<!ENTITY % a.qname  "a" >
+<!ELEMENT %a.qname;  %a.content; >
+<!-- end of a.element -->]]>
+
+<!ENTITY % a.attlist  "INCLUDE" >
+<![%a.attlist;[
+<!ATTLIST %a.qname;
+      %Common.attrib;
+      href         %URI.datatype;           #IMPLIED
+      charset      %Charset.datatype;       #IMPLIED
+      type         %ContentType.datatype;   #IMPLIED
+      hreflang     %LanguageCode.datatype;  #IMPLIED
+      rel          %LinkTypes.datatype;     #IMPLIED
+      rev          %LinkTypes.datatype;     #IMPLIED
+      accesskey    %Character.datatype;     #IMPLIED
+      tabindex     %Number.datatype;        #IMPLIED
+>
+<!-- end of a.attlist -->]]>
+
+<!-- end of xhtml-hypertext-1.mod -->
+]]>
+
+<!-- Lists Module (required)  .................................... -->
+<!ENTITY % xhtml-list.module "INCLUDE" >
+<![%xhtml-list.module;[
+<!ENTITY % xhtml-list.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Lists 1.0//EN"
+            "xhtml-list-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Lists Module  .................................................. -->
+<!-- file: xhtml-list-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Lists 1.0//EN"
+       SYSTEM "xhtml-list-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Lists
+
+        dl, dt, dd, ol, ul, li
+
+     This module declares the list-oriented element types
+     and their attributes.
+-->
+
+<!ENTITY % dl.qname  "dl" >
+<!ENTITY % dt.qname  "dt" >
+<!ENTITY % dd.qname  "dd" >
+<!ENTITY % ol.qname  "ol" >
+<!ENTITY % ul.qname  "ul" >
+<!ENTITY % li.qname  "li" >
+
+<!-- dl: Definition List ............................... -->
+
+<!ENTITY % dl.element  "INCLUDE" >
+<![%dl.element;[
+<!ENTITY % dl.content  "( %dt.qname; | %dd.qname; )+" >
+<!ELEMENT %dl.qname;  %dl.content; >
+<!-- end of dl.element -->]]>
+
+<!ENTITY % dl.attlist  "INCLUDE" >
+<![%dl.attlist;[
+<!ATTLIST %dl.qname;
+      %Common.attrib;
+>
+<!-- end of dl.attlist -->]]>
+
+<!-- dt: Definition Term ............................... -->
+
+<!ENTITY % dt.element  "INCLUDE" >
+<![%dt.element;[
+<!ENTITY % dt.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ELEMENT %dt.qname;  %dt.content; >
+<!-- end of dt.element -->]]>
+
+<!ENTITY % dt.attlist  "INCLUDE" >
+<![%dt.attlist;[
+<!ATTLIST %dt.qname;
+      %Common.attrib;
+>
+<!-- end of dt.attlist -->]]>
+
+<!-- dd: Definition Description ........................ -->
+
+<!ENTITY % dd.element  "INCLUDE" >
+<![%dd.element;[
+<!ENTITY % dd.content
+     "( #PCDATA | %Flow.mix; )*"
+>
+<!ELEMENT %dd.qname;  %dd.content; >
+<!-- end of dd.element -->]]>
+
+<!ENTITY % dd.attlist  "INCLUDE" >
+<![%dd.attlist;[
+<!ATTLIST %dd.qname;
+      %Common.attrib;
+>
+<!-- end of dd.attlist -->]]>
+
+<!-- ol: Ordered List (numbered styles) ................ -->
+
+<!ENTITY % ol.element  "INCLUDE" >
+<![%ol.element;[
+<!ENTITY % ol.content  "( %li.qname; )+" >
+<!ELEMENT %ol.qname;  %ol.content; >
+<!-- end of ol.element -->]]>
+
+<!ENTITY % ol.attlist  "INCLUDE" >
+<![%ol.attlist;[
+<!ATTLIST %ol.qname;
+      %Common.attrib;
+>
+<!-- end of ol.attlist -->]]>
+
+<!-- ul: Unordered List (bullet styles) ................ -->
+
+<!ENTITY % ul.element  "INCLUDE" >
+<![%ul.element;[
+<!ENTITY % ul.content  "( %li.qname; )+" >
+<!ELEMENT %ul.qname;  %ul.content; >
+<!-- end of ul.element -->]]>
+
+<!ENTITY % ul.attlist  "INCLUDE" >
+<![%ul.attlist;[
+<!ATTLIST %ul.qname;
+      %Common.attrib;
+>
+<!-- end of ul.attlist -->]]>
+
+<!-- li: List Item ..................................... -->
+
+<!ENTITY % li.element  "INCLUDE" >
+<![%li.element;[
+<!ENTITY % li.content
+     "( #PCDATA | %Flow.mix; )*"
+>
+<!ELEMENT %li.qname;  %li.content; >
+<!-- end of li.element -->]]>
+
+<!ENTITY % li.attlist  "INCLUDE" >
+<![%li.attlist;[
+<!ATTLIST %li.qname;
+      %Common.attrib;
+>
+<!-- end of li.attlist -->]]>
+
+<!-- end of xhtml-list-1.mod -->
+]]>
+
+<!-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
+
+<!-- Edit Module  ................................................ -->
+<!ENTITY % xhtml-edit.module "INCLUDE" >
+<![%xhtml-edit.module;[
+<!ENTITY % xhtml-edit.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Editing Elements 1.0//EN"
+            "xhtml-edit-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Editing Elements Module  ....................................... -->
+<!-- file: xhtml-edit-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Editing Markup 1.0//EN"
+       SYSTEM "xhtml-edit-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Editing Elements
+
+        ins, del
+
+     This module declares element types and attributes used to indicate
+     inserted and deleted content while editing a document.
+-->
+
+<!-- ins: Inserted Text  ............................... -->
+
+<!ENTITY % ins.element  "INCLUDE" >
+<![%ins.element;[
+<!ENTITY % ins.content
+     "( #PCDATA | %Flow.mix; )*"
+>
+<!ENTITY % ins.qname  "ins" >
+<!ELEMENT %ins.qname;  %ins.content; >
+<!-- end of ins.element -->]]>
+
+<!ENTITY % ins.attlist  "INCLUDE" >
+<![%ins.attlist;[
+<!ATTLIST %ins.qname;
+      %Common.attrib;
+      cite         %URI.datatype;           #IMPLIED
+      datetime     %Datetime.datatype;      #IMPLIED
+>
+<!-- end of ins.attlist -->]]>
+
+<!-- del: Deleted Text  ................................ -->
+
+<!ENTITY % del.element  "INCLUDE" >
+<![%del.element;[
+<!ENTITY % del.content
+     "( #PCDATA | %Flow.mix; )*"
+>
+<!ENTITY % del.qname  "del" >
+<!ELEMENT %del.qname;  %del.content; >
+<!-- end of del.element -->]]>
+
+<!ENTITY % del.attlist  "INCLUDE" >
+<![%del.attlist;[
+<!ATTLIST %del.qname;
+      %Common.attrib;
+      cite         %URI.datatype;           #IMPLIED
+      datetime     %Datetime.datatype;      #IMPLIED
+>
+<!-- end of del.attlist -->]]>
+
+<!-- end of xhtml-edit-1.mod -->
+]]>
+
+<!-- BIDI Override Module  ....................................... -->
+<!ENTITY % xhtml-bdo.module "%XHTML.bidi;" >
+<![%xhtml-bdo.module;[
+<!ENTITY % xhtml-bdo.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML BIDI Override Element 1.0//EN"
+            "xhtml-bdo-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML BDO Element Module ............................................. -->
+<!-- file: xhtml-bdo-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML BDO Element 1.0//EN"
+       SYSTEM "xhtml-bdo-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Bidirectional Override (bdo) Element
+
+     This modules declares the element 'bdo', used to override the
+     Unicode bidirectional algorithm for selected fragments of text.
+
+     DEPENDENCIES:
+     Relies on the conditional section keyword %XHTML.bidi; declared
+     as "INCLUDE". Bidirectional text support includes both the bdo 
+     element and the 'dir' attribute.
+-->
+
+<!ENTITY % bdo.element  "INCLUDE" >
+<![%bdo.element;[
+<!ENTITY % bdo.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % bdo.qname  "bdo" >
+<!ELEMENT %bdo.qname;  %bdo.content; >
+<!-- end of bdo.element -->]]>
+
+<!ENTITY % bdo.attlist  "INCLUDE" >
+<![%bdo.attlist;[
+<!ATTLIST %bdo.qname;
+      %Core.attrib;
+      %I18n.attrib;
+>
+]]>
+
+<!-- end of xhtml-bdo-1.mod -->
+]]>
+
+<!-- Ruby Module  ................................................ -->
+<!ENTITY % Ruby.common.attlists "INCLUDE" >
+<!ENTITY % Ruby.common.attrib "%Common.attrib;" >
+<!ENTITY % xhtml-ruby.module "INCLUDE" >
+<![%xhtml-ruby.module;[
+<!ENTITY % xhtml-ruby.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Ruby 1.0//EN"
+            "xhtml-ruby-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Ruby Module .................................................... -->
+<!-- file: xhtml-ruby-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1999 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $
+
+     This module is based on the W3C Ruby Annotation Specification:
+
+        http://www.w3.org/TR/ruby
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Ruby 1.0//EN"
+       SYSTEM "xhtml-ruby-1.mod"
+
+     Revisions:
+     (none)
+     ...................................................................... -->
+
+<!-- Ruby Elements
+
+        ruby, rbc, rtc, rb, rt, rp
+
+     This module declares the elements and their attributes used to
+     support ruby annotation markup.
+-->
+
+<!-- declare qualified element type names:
+-->
+<!ENTITY % ruby.qname  "ruby" >
+<!ENTITY % rbc.qname  "rbc" >
+<!ENTITY % rtc.qname  "rtc" >
+<!ENTITY % rb.qname  "rb" >
+<!ENTITY % rt.qname  "rt" >
+<!ENTITY % rp.qname  "rp" >
+
+<!-- rp fallback is included by default.
+-->
+<!ENTITY % Ruby.fallback "INCLUDE" >
+
+<!-- Group ruby is included by default; it may be 
+     overridden by other modules to ignore it.
+-->
+<!ENTITY % Ruby.group "INCLUDE" >
+
+<!-- Fragments for the content model of the ruby element -->
+<![%Ruby.fallback;[
+<!ENTITY % ruby.content.simple 
+     "( %rb.qname;, %rp.qname;?, %rt.qname;, %rp.qname;? )"
+>
+]]>
+<!ENTITY % ruby.content.simple "( %rb.qname;, %rt.qname; )" >
+
+<![%Ruby.group;[
+<!ENTITY % ruby.content.group 
+     "| ( %rbc.qname;, %rtc.qname;, %rtc.qname;? )"
+>
+]]>
+<!ENTITY % ruby.content.group "" >
+
+<!-- Content models of the rb and the rt elements are intended to
+     allow other inline-level elements of its parent markup language,
+     but it should not include ruby descendent elements. The following
+     parameter entity %Noruby.content; can be used to redefine
+     those content models with minimum effort.  It's defined as
+     '( #PCDATA )' by default.
+-->
+<!ENTITY % Noruby.content "( #PCDATA )" >
+
+<!-- one or more digits (NUMBER) -->
+<!ENTITY % Number.datatype "CDATA" >
+
+<!-- ruby element ...................................... -->
+
+<!ENTITY % ruby.element  "INCLUDE" >
+<![%ruby.element;[
+<!ENTITY % ruby.content
+     "( %ruby.content.simple; %ruby.content.group; )"
+>
+<!ELEMENT %ruby.qname;  %ruby.content; >
+<!-- end of ruby.element -->]]>
+
+<![%Ruby.group;[
+<!-- rbc (ruby base component) element ................. -->
+
+<!ENTITY % rbc.element  "INCLUDE" >
+<![%rbc.element;[
+<!ENTITY % rbc.content
+     "(%rb.qname;)+"
+>
+<!ELEMENT %rbc.qname;  %rbc.content; >
+<!-- end of rbc.element -->]]>
+
+<!-- rtc (ruby text component) element ................. -->
+
+<!ENTITY % rtc.element  "INCLUDE" >
+<![%rtc.element;[
+<!ENTITY % rtc.content
+     "(%rt.qname;)+"
+>
+<!ELEMENT %rtc.qname;  %rtc.content; >
+<!-- end of rtc.element -->]]>
+]]>
+
+<!-- rb (ruby base) element ............................ -->
+
+<!ENTITY % rb.element  "INCLUDE" >
+<![%rb.element;[
+<!-- %rb.content; uses %Noruby.content; as its content model,
+     which is '( #PCDATA )' by default. It may be overridden
+     by other modules to allow other inline-level elements
+     of its parent markup language, but it should not include
+     ruby descendent elements.
+-->
+<!ENTITY % rb.content "%Noruby.content;" >
+<!ELEMENT %rb.qname;  %rb.content; >
+<!-- end of rb.element -->]]>
+
+<!-- rt (ruby text) element ............................ -->
+
+<!ENTITY % rt.element  "INCLUDE" >
+<![%rt.element;[
+<!-- %rt.content; uses %Noruby.content; as its content model,
+     which is '( #PCDATA )' by default. It may be overridden
+     by other modules to allow other inline-level elements
+     of its parent markup language, but it should not include
+     ruby descendent elements.
+-->
+<!ENTITY % rt.content "%Noruby.content;" >
+
+<!ELEMENT %rt.qname;  %rt.content; >
+<!-- end of rt.element -->]]>
+
+<!-- rbspan attribute is used for group ruby only ...... -->
+<![%Ruby.group;[
+<!ENTITY % rt.attlist  "INCLUDE" >
+<![%rt.attlist;[
+<!ATTLIST %rt.qname;
+      rbspan         %Number.datatype;      "1"
+>
+<!-- end of rt.attlist -->]]>
+]]>
+
+<!-- rp (ruby parenthesis) element ..................... -->
+
+<![%Ruby.fallback;[
+<!ENTITY % rp.element  "INCLUDE" >
+<![%rp.element;[
+<!ENTITY % rp.content
+     "( #PCDATA )"
+>
+<!ELEMENT %rp.qname;  %rp.content; >
+<!-- end of rp.element -->]]>
+]]>
+
+<!-- Ruby Common Attributes
+
+     The following optional ATTLIST declarations provide an easy way
+     to define common attributes for ruby elements.  These declarations
+     are ignored by default.
+
+     Ruby elements are intended to have common attributes of its
+     parent markup language.  For example, if a markup language defines
+     common attributes as a parameter entity %attrs;, you may add
+     those attributes by just declaring the following parameter entities
+
+         <!ENTITY % Ruby.common.attlists  "INCLUDE" >
+         <!ENTITY % Ruby.common.attrib  "%attrs;" >
+
+     before including the Ruby module.
+-->
+
+<!ENTITY % Ruby.common.attlists  "IGNORE" >
+<![%Ruby.common.attlists;[
+<!ENTITY % Ruby.common.attrib  "" >
+
+<!-- common attributes for ruby ........................ -->
+
+<!ENTITY % Ruby.common.attlist  "INCLUDE" >
+<![%Ruby.common.attlist;[
+<!ATTLIST %ruby.qname;
+      %Ruby.common.attrib;
+>
+<!-- end of Ruby.common.attlist -->]]>
+
+<![%Ruby.group;[
+<!-- common attributes for rbc ......................... -->
+
+<!ENTITY % Rbc.common.attlist  "INCLUDE" >
+<![%Rbc.common.attlist;[
+<!ATTLIST %rbc.qname;
+      %Ruby.common.attrib;
+>
+<!-- end of Rbc.common.attlist -->]]>
+
+<!-- common attributes for rtc ......................... -->
+
+<!ENTITY % Rtc.common.attlist  "INCLUDE" >
+<![%Rtc.common.attlist;[
+<!ATTLIST %rtc.qname;
+      %Ruby.common.attrib;
+>
+<!-- end of Rtc.common.attlist -->]]>
+]]>
+
+<!-- common attributes for rb .......................... -->
+
+<!ENTITY % Rb.common.attlist  "INCLUDE" >
+<![%Rb.common.attlist;[
+<!ATTLIST %rb.qname;
+      %Ruby.common.attrib;
+>
+<!-- end of Rb.common.attlist -->]]>
+
+<!-- common attributes for rt .......................... -->
+
+<!ENTITY % Rt.common.attlist  "INCLUDE" >
+<![%Rt.common.attlist;[
+<!ATTLIST %rt.qname;
+      %Ruby.common.attrib;
+>
+<!-- end of Rt.common.attlist -->]]>
+
+<![%Ruby.fallback;[
+<!-- common attributes for rp .......................... -->
+
+<!ENTITY % Rp.common.attlist  "INCLUDE" >
+<![%Rp.common.attlist;[
+<!ATTLIST %rp.qname;
+      %Ruby.common.attrib;
+>
+<!-- end of Rp.common.attlist -->]]>
+]]>
+]]>
+
+<!-- end of xhtml-ruby-1.mod -->
+]]>
+
+<!-- Presentation Module  ........................................ -->
+<!ENTITY % xhtml-pres.module "INCLUDE" >
+<![%xhtml-pres.module;[
+<!ENTITY % xhtml-pres.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Presentation 1.0//EN"
+            "xhtml-pres-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Presentation Module ............................................ -->
+<!-- file: xhtml-pres-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Presentation 1.0//EN"
+       SYSTEM "xhtml-pres-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Presentational Elements
+
+     This module defines elements and their attributes for
+     simple presentation-related markup.
+-->
+
+<!ENTITY % xhtml-inlpres.module "INCLUDE" >
+<![%xhtml-inlpres.module;[
+<!ENTITY % xhtml-inlpres.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Inline Presentation 1.0//EN"
+            "xhtml-inlpres-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Inline Presentation Module  .................................... -->
+<!-- file: xhtml-inlpres-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Inline Presentation 1.0//EN"
+       SYSTEM "xhtml-inlpres-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- 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.
+-->
+
+<!ENTITY % b.element  "INCLUDE" >
+<![%b.element;[
+<!ENTITY % b.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % b.qname  "b" >
+<!ELEMENT %b.qname;  %b.content; >
+<!-- end of b.element -->]]>
+
+<!ENTITY % b.attlist  "INCLUDE" >
+<![%b.attlist;[
+<!ATTLIST %b.qname;
+      %Common.attrib;
+>
+<!-- end of b.attlist -->]]>
+
+<!ENTITY % big.element  "INCLUDE" >
+<![%big.element;[
+<!ENTITY % big.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % big.qname  "big" >
+<!ELEMENT %big.qname;  %big.content; >
+<!-- end of big.element -->]]>
+
+<!ENTITY % big.attlist  "INCLUDE" >
+<![%big.attlist;[
+<!ATTLIST %big.qname;
+      %Common.attrib;
+>
+<!-- end of big.attlist -->]]>
+
+<!ENTITY % i.element  "INCLUDE" >
+<![%i.element;[
+<!ENTITY % i.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % i.qname  "i" >
+<!ELEMENT %i.qname;  %i.content; >
+<!-- end of i.element -->]]>
+
+<!ENTITY % i.attlist  "INCLUDE" >
+<![%i.attlist;[
+<!ATTLIST %i.qname;
+      %Common.attrib;
+>
+<!-- end of i.attlist -->]]>
+
+<!ENTITY % small.element  "INCLUDE" >
+<![%small.element;[
+<!ENTITY % small.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % small.qname  "small" >
+<!ELEMENT %small.qname;  %small.content; >
+<!-- end of small.element -->]]>
+
+<!ENTITY % small.attlist  "INCLUDE" >
+<![%small.attlist;[
+<!ATTLIST %small.qname;
+      %Common.attrib;
+>
+<!-- end of small.attlist -->]]>
+
+<!ENTITY % sub.element  "INCLUDE" >
+<![%sub.element;[
+<!ENTITY % sub.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % sub.qname  "sub" >
+<!ELEMENT %sub.qname;  %sub.content; >
+<!-- end of sub.element -->]]>
+
+<!ENTITY % sub.attlist  "INCLUDE" >
+<![%sub.attlist;[
+<!ATTLIST %sub.qname;
+      %Common.attrib;
+>
+<!-- end of sub.attlist -->]]>
+
+<!ENTITY % sup.element  "INCLUDE" >
+<![%sup.element;[
+<!ENTITY % sup.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % sup.qname  "sup" >
+<!ELEMENT %sup.qname;  %sup.content; >
+<!-- end of sup.element -->]]>
+
+<!ENTITY % sup.attlist  "INCLUDE" >
+<![%sup.attlist;[
+<!ATTLIST %sup.qname;
+      %Common.attrib;
+>
+<!-- end of sup.attlist -->]]>
+
+<!ENTITY % tt.element  "INCLUDE" >
+<![%tt.element;[
+<!ENTITY % tt.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % tt.qname  "tt" >
+<!ELEMENT %tt.qname;  %tt.content; >
+<!-- end of tt.element -->]]>
+
+<!ENTITY % tt.attlist  "INCLUDE" >
+<![%tt.attlist;[
+<!ATTLIST %tt.qname;
+      %Common.attrib;
+>
+<!-- end of tt.attlist -->]]>
+
+<!-- end of xhtml-inlpres-1.mod -->
+]]>
+
+<!ENTITY % xhtml-blkpres.module "INCLUDE" >
+<![%xhtml-blkpres.module;[
+<!ENTITY % xhtml-blkpres.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Block Presentation 1.0//EN"
+            "xhtml-blkpres-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Block Presentation Module  ..................................... -->
+<!-- file: xhtml-blkpres-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Block Presentation 1.0//EN"
+       SYSTEM "xhtml-blkpres-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Block Presentational Elements
+
+        hr
+
+     This module declares the elements and their attributes used to
+     support block-level presentational markup.
+-->
+
+<!ENTITY % hr.element  "INCLUDE" >
+<![%hr.element;[
+<!ENTITY % hr.content  "EMPTY" >
+<!ENTITY % hr.qname  "hr" >
+<!ELEMENT %hr.qname;  %hr.content; >
+<!-- end of hr.element -->]]>
+
+<!ENTITY % hr.attlist  "INCLUDE" >
+<![%hr.attlist;[
+<!ATTLIST %hr.qname;
+      %Common.attrib;
+>
+<!-- end of hr.attlist -->]]>
+
+<!-- end of xhtml-blkpres-1.mod -->
+]]>
+
+<!-- end of xhtml-pres-1.mod -->
+]]>
+
+<!-- Link Element Module  ........................................ -->
+<!ENTITY % xhtml-link.module "INCLUDE" >
+<![%xhtml-link.module;[
+<!ENTITY % xhtml-link.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Link Element 1.0//EN"
+            "xhtml-link-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Link Element Module  ........................................... -->
+<!-- file: xhtml-link-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Link Element 1.0//EN"
+       SYSTEM "xhtml-link-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Link element
+
+        link
+
+     This module declares the link element type and its attributes,
+     which could (in principle) be used to define document-level links
+     to external resources such as:
+
+     a) for document specific toolbars/menus, e.g. start, contents,
+        previous, next, index, end, help
+     b) to link to a separate style sheet (rel="stylesheet")
+     c) to make a link to a script (rel="script")
+     d) by stylesheets to control how collections of html nodes are
+        rendered into printed documents
+     e) to make a link to a printable version of this document
+        e.g. a postscript or pdf version (rel="alternate" media="print")
+-->
+
+<!-- link: Media-Independent Link ...................... -->
+
+<!ENTITY % link.element  "INCLUDE" >
+<![%link.element;[
+<!ENTITY % link.content  "EMPTY" >
+<!ENTITY % link.qname  "link" >
+<!ELEMENT %link.qname;  %link.content; >
+<!-- end of link.element -->]]>
+
+<!ENTITY % link.attlist  "INCLUDE" >
+<![%link.attlist;[
+<!ATTLIST %link.qname;
+      %Common.attrib;
+      charset      %Charset.datatype;       #IMPLIED
+      href         %URI.datatype;           #IMPLIED
+      hreflang     %LanguageCode.datatype;  #IMPLIED
+      type         %ContentType.datatype;   #IMPLIED
+      rel          %LinkTypes.datatype;     #IMPLIED
+      rev          %LinkTypes.datatype;     #IMPLIED
+      media        %MediaDesc.datatype;     #IMPLIED
+>
+<!-- end of link.attlist -->]]>
+
+<!-- end of xhtml-link-1.mod -->
+]]>
+
+<!-- Document Metainformation Module  ............................ -->
+<!ENTITY % xhtml-meta.module "INCLUDE" >
+<![%xhtml-meta.module;[
+<!ENTITY % xhtml-meta.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Metainformation 1.0//EN"
+            "xhtml-meta-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Document Metainformation Module  ............................... -->
+<!-- file: xhtml-meta-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Metainformation 1.0//EN"
+       SYSTEM "xhtml-meta-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Meta Information
+
+        meta
+
+     This module declares the meta element type and its attributes,
+     used to provide declarative document metainformation.
+-->
+
+<!-- meta: Generic Metainformation ..................... -->
+
+<!ENTITY % meta.element  "INCLUDE" >
+<![%meta.element;[
+<!ENTITY % meta.content  "EMPTY" >
+<!ENTITY % meta.qname  "meta" >
+<!ELEMENT %meta.qname;  %meta.content; >
+<!-- end of meta.element -->]]>
+
+<!ENTITY % meta.attlist  "INCLUDE" >
+<![%meta.attlist;[
+<!ATTLIST %meta.qname;
+      %I18n.attrib;
+      http-equiv   NMTOKEN                  #IMPLIED
+      name         NMTOKEN                  #IMPLIED
+      content      CDATA                    #REQUIRED
+      scheme       CDATA                    #IMPLIED
+>
+<!-- end of meta.attlist -->]]>
+
+<!-- end of xhtml-meta-1.mod -->
+]]>
+
+<!-- Base Element Module  ........................................ -->
+<!ENTITY % xhtml-base.module "INCLUDE" >
+<![%xhtml-base.module;[
+<!ENTITY % xhtml-base.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Base Element 1.0//EN"
+            "xhtml-base-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Base Element Module  ........................................... -->
+<!-- file: xhtml-base-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Base Element 1.0//EN"
+       SYSTEM "xhtml-base-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Base element
+
+        base
+
+     This module declares the base element type and its attributes,
+     used to define a base URI against which relative URIs in the
+     document will be resolved.
+
+     Note that this module also redeclares the content model for
+     the head element to include the base element.
+-->
+
+<!-- base: Document Base URI ........................... -->
+
+<!ENTITY % base.element  "INCLUDE" >
+<![%base.element;[
+<!ENTITY % base.content  "EMPTY" >
+<!ENTITY % base.qname  "base" >
+<!ELEMENT %base.qname;  %base.content; >
+<!-- end of base.element -->]]>
+
+<!ENTITY % base.attlist  "INCLUDE" >
+<![%base.attlist;[
+<!ATTLIST %base.qname;
+      href         %URI.datatype;           #REQUIRED
+>
+<!-- end of base.attlist -->]]>
+
+<!ENTITY % head.content
+    "( %Head-opts.mix;,
+     ( ( %title.qname;, %Head-opts.mix;, ( %base.qname;, %Head-opts.mix; )? )
+     | ( %base.qname;, %Head-opts.mix;, ( %title.qname;, %Head-opts.mix; ))))"
+>
+
+<!-- end of xhtml-base-1.mod -->
+]]>
+
+<!-- Scripting Module  ........................................... -->
+<!ENTITY % xhtml-script.module "INCLUDE" >
+<![%xhtml-script.module;[
+<!ENTITY % xhtml-script.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Scripting 1.0//EN"
+            "xhtml-script-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Document Scripting Module  ..................................... -->
+<!-- file: xhtml-script-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Scripting 1.0//EN"
+       SYSTEM "xhtml-script-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Scripting
+
+        script, noscript
+
+     This module declares element types and attributes used to provide
+     support for executable scripts as well as an alternate content
+     container where scripts are not supported.
+-->
+
+<!-- script: Scripting Statement ....................... -->
+
+<!ENTITY % script.element  "INCLUDE" >
+<![%script.element;[
+<!ENTITY % script.content  "( #PCDATA )" >
+<!ENTITY % script.qname  "script" >
+<!ELEMENT %script.qname;  %script.content; >
+<!-- end of script.element -->]]>
+
+<!ENTITY % script.attlist  "INCLUDE" >
+<![%script.attlist;[
+<!ATTLIST %script.qname;
+      charset      %Charset.datatype;       #IMPLIED
+      type         %ContentType.datatype;   #REQUIRED
+      src          %URI.datatype;           #IMPLIED
+      defer        ( defer )                #IMPLIED
+      xml:space    ( preserve )             #FIXED 'preserve'
+>
+<!-- end of script.attlist -->]]>
+
+<!-- noscript: No-Script Alternate Content ............. -->
+
+<!ENTITY % noscript.element  "INCLUDE" >
+<![%noscript.element;[
+<!ENTITY % noscript.content
+     "( %Block.mix; )+"
+>
+<!ENTITY % noscript.qname  "noscript" >
+<!ELEMENT %noscript.qname;  %noscript.content; >
+<!-- end of noscript.element -->]]>
+
+<!ENTITY % noscript.attlist  "INCLUDE" >
+<![%noscript.attlist;[
+<!ATTLIST %noscript.qname;
+      %Common.attrib;
+>
+<!-- end of noscript.attlist -->]]>
+
+<!-- end of xhtml-script-1.mod -->
+]]>
+
+<!-- Stylesheets Module  ......................................... -->
+<!ENTITY % xhtml-style.module "INCLUDE" >
+<![%xhtml-style.module;[
+<!ENTITY % xhtml-style.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Stylesheets 1.0//EN"
+            "xhtml-style-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Document Stylesheet Module  .................................... -->
+<!-- file: xhtml-style-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//DTD XHTML Stylesheets 1.0//EN"
+       SYSTEM "xhtml-style-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Stylesheets
+
+        style
+
+     This module declares the style element type and its attributes,
+     used to embed stylesheet information in the document head element.
+-->
+
+<!-- style: Stylesheet Information ..................... -->
+
+<!ENTITY % style.element  "INCLUDE" >
+<![%style.element;[
+<!ENTITY % style.content  "( #PCDATA )" >
+<!ENTITY % style.qname  "style" >
+<!ELEMENT %style.qname;  %style.content; >
+<!-- end of style.element -->]]>
+
+<!ENTITY % style.attlist  "INCLUDE" >
+<![%style.attlist;[
+<!ATTLIST %style.qname;
+      %Title.attrib;
+      %I18n.attrib;
+      type         %ContentType.datatype;   #REQUIRED
+      media        %MediaDesc.datatype;     #IMPLIED
+      xml:space    ( preserve )             #FIXED 'preserve'
+>
+<!-- end of style.attlist -->]]>
+
+<!-- end of xhtml-style-1.mod -->
+]]>
+
+<!-- Image Module  ............................................... -->
+<!ENTITY % xhtml-image.module "INCLUDE" >
+<![%xhtml-image.module;[
+<!ENTITY % xhtml-image.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Images 1.0//EN"
+            "xhtml-image-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Images Module  ................................................. -->
+<!-- file: xhtml-image-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Rovision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Images 1.0//EN"
+       SYSTEM "xhtml-image-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Images
+
+        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.
+-->
+
+<!ENTITY % img.element  "INCLUDE" >
+<![%img.element;[
+<!ENTITY % img.content  "EMPTY" >
+<!ENTITY % img.qname  "img" >
+<!ELEMENT %img.qname;  %img.content; >
+<!-- end of img.element -->]]>
+
+<!ENTITY % img.attlist  "INCLUDE" >
+<![%img.attlist;[
+<!ATTLIST %img.qname;
+      %Common.attrib;
+      src          %URI.datatype;           #REQUIRED
+      alt          %Text.datatype;          #REQUIRED
+      longdesc     %URI.datatype;           #IMPLIED
+      height       %Length.datatype;        #IMPLIED
+      width        %Length.datatype;        #IMPLIED
+>
+<!-- end of img.attlist -->]]>
+
+<!-- end of xhtml-image-1.mod -->
+]]>
+
+<!-- Client-side Image Map Module  ............................... -->
+<!ENTITY % xhtml-csismap.module "INCLUDE" >
+<![%xhtml-csismap.module;[
+<!ENTITY % xhtml-csismap.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Client-side Image Maps 1.0//EN"
+            "xhtml-csismap-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Client-side Image Map Module  .................................. -->
+<!-- file: xhtml-csismap-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Client-side Image Maps 1.0//EN"
+       SYSTEM "xhtml-csismap-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Client-side Image Maps
+
+        area, map
+
+     This module declares elements and attributes to support client-side
+     image maps. This requires that the Image Module (or a module
+     declaring the img element type) be included in the DTD.
+
+     These can be placed in the same document or grouped in a
+     separate document, although the latter isn't widely supported
+-->
+
+<!ENTITY % area.element  "INCLUDE" >
+<![%area.element;[
+<!ENTITY % area.content  "EMPTY" >
+<!ENTITY % area.qname  "area" >
+<!ELEMENT %area.qname;  %area.content; >
+<!-- end of area.element -->]]>
+
+<!ENTITY % Shape.datatype "( rect | circle | poly | default )">
+<!ENTITY % Coords.datatype "CDATA" >
+
+<!ENTITY % area.attlist  "INCLUDE" >
+<![%area.attlist;[
+<!ATTLIST %area.qname;
+      %Common.attrib;
+      href         %URI.datatype;           #IMPLIED
+      shape        %Shape.datatype;         'rect'
+      coords       %Coords.datatype;        #IMPLIED
+      nohref       ( nohref )               #IMPLIED
+      alt          %Text.datatype;          #REQUIRED
+      tabindex     %Number.datatype;        #IMPLIED
+      accesskey    %Character.datatype;     #IMPLIED
+>
+<!-- end of area.attlist -->]]>
+
+<!-- modify anchor attribute definition list
+     to allow for client-side image maps
+-->
+<!ATTLIST %a.qname;
+      shape        %Shape.datatype;         'rect'
+      coords       %Coords.datatype;        #IMPLIED
+>
+
+<!-- modify img attribute definition list
+     to allow for client-side image maps
+-->
+<!ATTLIST %img.qname;
+      usemap       IDREF                    #IMPLIED
+>
+<!-- 'usemap' points to the 'id' attribute of a MAP element,
+     which must be in the same document; support for external
+     document maps was not widely supported in HTML and is
+     eliminated in XHTML.
+
+     It is considered an error for the element pointed to by
+     a usemap IDREF to occur in anything but a map element.
+-->
+
+<!ENTITY % map.element  "INCLUDE" >
+<![%map.element;[
+<!ENTITY % map.content
+     "(( %Block.mix; ) | %area.qname; )+"
+>
+<!ENTITY % map.qname  "map" >
+<!ELEMENT %map.qname;  %map.content; >
+<!-- end of map.element -->]]>
+
+<!ENTITY % map.attlist  "INCLUDE" >
+<![%map.attlist;[
+<!ATTLIST %map.qname;
+      id           ID                       #REQUIRED
+      %Class.attrib;
+      %Title.attrib;
+      %Core.extra.attrib;
+      %I18n.attrib;
+      %Events.attrib;
+>
+<!-- end of map.attlist -->]]>
+
+<!-- end of xhtml-csismap-1.mod -->
+]]>
+
+<!-- Server-side Image Map Module  ............................... -->
+<!ENTITY % xhtml-ssismap.module "INCLUDE" >
+<![%xhtml-ssismap.module;[
+<!ENTITY % xhtml-ssismap.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Server-side Image Maps 1.0//EN"
+            "xhtml-ssismap-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Server-side Image Map Module  .................................. -->
+<!-- file: xhtml-ssismap-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Server-side Image Maps 1.0//EN"
+       SYSTEM "xhtml-ssismap-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Server-side Image Maps
+
+     This adds the 'ismap' attribute to the img element to 
+     support server-side processing of a user selection.
+-->
+
+<!ATTLIST %img.qname;
+      ismap        ( ismap )                #IMPLIED
+>
+
+<!-- end of xhtml-ssismap-1.mod -->
+]]>
+
+<!-- Param Element Module  ....................................... -->
+<!ENTITY % xhtml-param.module "INCLUDE" >
+<![%xhtml-param.module;[
+<!ENTITY % xhtml-param.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Param Element 1.0//EN"
+            "xhtml-param-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Param Element Module  ..................................... -->
+<!-- file: xhtml-param-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Param Element 1.0//EN"
+       SYSTEM "xhtml-param-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Parameters for Java Applets and Embedded Objects
+
+        param
+
+     This module provides declarations for the param element, 
+     used to provide named property values for the applet
+     and object elements. 
+-->
+
+<!-- param: Named Property Value ....................... -->
+
+<!ENTITY % param.element  "INCLUDE" >
+<![%param.element;[
+<!ENTITY % param.content  "EMPTY" >
+<!ENTITY % param.qname  "param" >
+<!ELEMENT %param.qname;  %param.content; >
+<!-- end of param.element -->]]>
+
+<!ENTITY % param.attlist  "INCLUDE" >
+<![%param.attlist;[
+<!ATTLIST %param.qname;
+      %Id.attrib;
+      name         CDATA                    #REQUIRED
+      value        CDATA                    #IMPLIED
+      valuetype    ( data | ref | object )  'data'
+      type         %ContentType.datatype;   #IMPLIED
+>
+<!-- end of param.attlist -->]]>
+
+<!-- end of xhtml-param-1.mod -->
+]]>
+
+<!-- Java Applet Element Module  ................................. -->
+<!ENTITY % xhtml-applet.module "INCLUDE" >
+<![%xhtml-applet.module;[
+<!ENTITY % xhtml-applet.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Java Applets 1.0//EN"
+            "xhtml-applet-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Java Applet Module  ............................................ -->
+<!-- file: xhtml-applet-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Java Applets 1.0//EN"
+       SYSTEM "xhtml-applet-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Java Applets
+
+        applet
+
+     This module declares the applet element type and its attributes, 
+     used to provide support for Java applets. The 'alt' attribute 
+     is now required (as it is on images). One of either code or 
+     object attributes must be present. In the document, place param 
+     elements before the object elements that require their content.
+
+     Note that use of this module requires instantiation of the 
+     Param Element Module prior to this module.
+-->
+
+<!-- applet: Java Applet ............................... -->
+
+<!ENTITY % applet.element  "INCLUDE" >
+<![%applet.element;[
+<!ENTITY % applet.content
+     "( %param.qname; | %Flow.mix; )*"
+>
+<!ENTITY % applet.qname  "applet" >
+<!ELEMENT %applet.qname;  %applet.content; >
+<!-- end of applet.element -->]]>
+
+<!ENTITY % applet.attlist  "INCLUDE" >
+<![%applet.attlist;[
+<!ATTLIST %applet.qname;
+      %Core.attrib;
+      alt          %Text.datatype;          #REQUIRED
+      name         CDATA                    #IMPLIED
+      archive      CDATA                    #IMPLIED
+      code         CDATA                    #IMPLIED
+      codebase     %URI.datatype;           #IMPLIED
+      object       CDATA                    #IMPLIED
+      width        %Length.datatype;        #REQUIRED
+      height       %Length.datatype;        #REQUIRED
+>
+<!-- end of applet.attlist -->]]>
+
+<!-- end of xhtml-applet-1.mod -->
+]]>
+
+<!-- Embedded Object Module  ..................................... -->
+<!ENTITY % xhtml-object.module "INCLUDE" >
+<![%xhtml-object.module;[
+<!ENTITY % xhtml-object.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Embedded Object 1.0//EN"
+            "xhtml-object-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Embedded Object Module  ........................................ -->
+<!-- file: xhtml-object-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Embedded Object 1.0//EN"
+       SYSTEM "xhtml-object-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Embedded Objects
+
+        object
+
+     This module declares the object element type and its attributes,
+     used to embed external objects as part of XHTML pages. In the
+     document, place param elements prior to the object elements 
+     that require their content.
+
+     Note that use of this module requires instantiation of the 
+     Param Element Module prior to this module.
+-->
+
+<!-- object: Generic Embedded Object ................... -->
+
+<!ENTITY % object.element  "INCLUDE" >
+<![%object.element;[
+<!ENTITY % object.content
+     "( #PCDATA | %Flow.mix; | %param.qname; )*"
+>
+<!ENTITY % object.qname  "object" >
+<!ELEMENT %object.qname;  %object.content; >
+<!-- end of object.element -->]]>
+
+<!ENTITY % object.attlist  "INCLUDE" >
+<![%object.attlist;[
+<!ATTLIST %object.qname;
+      %Common.attrib;
+      declare      ( declare )              #IMPLIED
+      classid      %URI.datatype;           #IMPLIED
+      codebase     %URI.datatype;           #IMPLIED
+      data         %URI.datatype;           #IMPLIED
+      type         %ContentType.datatype;   #IMPLIED
+      codetype     %ContentType.datatype;   #IMPLIED
+      archive      %URIs.datatype;          #IMPLIED
+      standby      %Text.datatype;          #IMPLIED
+      height       %Length.datatype;        #IMPLIED
+      width        %Length.datatype;        #IMPLIED
+      usemap       IDREF                    #IMPLIED
+      name         CDATA                    #IMPLIED
+      tabindex     %Number.datatype;        #IMPLIED
+>
+<!-- end of object.attlist -->]]>
+
+<!-- end of xhtml-object-1.mod -->
+]]>
+
+<!-- Tables Module ............................................... -->
+<!ENTITY % xhtml-table.module "INCLUDE" >
+<![%xhtml-table.module;[
+<!ENTITY % xhtml-table.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Tables 1.0//EN"
+            "xhtml-table-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Table Module  .................................................. -->
+<!-- file: xhtml-table-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Tables 1.0//EN"
+       SYSTEM "xhtml-table-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- 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.
+-->
+
+<!-- declare qualified element type names:
+-->
+<!ENTITY % table.qname  "table" >
+<!ENTITY % caption.qname  "caption" >
+<!ENTITY % thead.qname  "thead" >
+<!ENTITY % tfoot.qname  "tfoot" >
+<!ENTITY % tbody.qname  "tbody" >
+<!ENTITY % colgroup.qname  "colgroup" >
+<!ENTITY % col.qname  "col" >
+<!ENTITY % tr.qname  "tr" >
+<!ENTITY % th.qname  "th" >
+<!ENTITY % td.qname  "td" >
+
+<!-- The frame attribute specifies which parts of the frame around
+     the table should be rendered. The values are not the same as
+     CALS to avoid a name clash with the valign attribute.
+-->
+<!ENTITY % TFrame.attrib
+     "frame        ( void
+                   | above
+                   | below
+                   | hsides
+                   | lhs
+                   | rhs
+                   | vsides
+                   | box
+                   | border )               #IMPLIED"
+>
+
+<!-- The rules attribute defines which rules to draw between cells:
+
+     If rules is absent then assume:
+
+       "none" if border is absent or border="0" otherwise "all"
+-->
+<!ENTITY % TRules.attrib
+     "rules        ( none
+                   | groups
+                   | rows
+                   | cols
+                   | all )                  #IMPLIED"
+>
+
+<!-- horizontal alignment attributes for cell contents
+-->
+<!ENTITY % CellHAlign.attrib
+     "align        ( left
+                   | center
+                   | right
+                   | justify
+                   | char )                 #IMPLIED
+      char         %Character.datatype;     #IMPLIED
+      charoff      %Length.datatype;        #IMPLIED"
+>
+
+<!-- vertical alignment attributes for cell contents
+-->
+<!ENTITY % CellVAlign.attrib
+     "valign       ( top
+                   | middle
+                   | bottom
+                   | baseline )             #IMPLIED"
+>
+
+<!-- scope is simpler than axes attribute for common tables
+-->
+<!ENTITY % Scope.attrib
+     "scope        ( row
+                   | col
+                   | rowgroup
+                   | colgroup )             #IMPLIED"
+>
+
+<!-- table: Table Element .............................. -->
+
+<!ENTITY % table.element  "INCLUDE" >
+<![%table.element;[
+<!ENTITY % table.content
+     "( %caption.qname;?, ( %col.qname;* | %colgroup.qname;* ),
+      (( %thead.qname;?, %tfoot.qname;?, %tbody.qname;+ ) | ( %tr.qname;+ )))"
+>
+<!ELEMENT %table.qname;  %table.content; >
+<!-- end of table.element -->]]>
+
+<!ENTITY % table.attlist  "INCLUDE" >
+<![%table.attlist;[
+<!ATTLIST %table.qname;
+      %Common.attrib;
+      summary      %Text.datatype;          #IMPLIED
+      width        %Length.datatype;        #IMPLIED
+      border       %Pixels.datatype;        #IMPLIED
+      %TFrame.attrib;
+      %TRules.attrib;
+      cellspacing  %Length.datatype;        #IMPLIED
+      cellpadding  %Length.datatype;        #IMPLIED
+>
+<!-- end of table.attlist -->]]>
+
+<!-- caption: Table Caption ............................ -->
+
+<!ENTITY % caption.element  "INCLUDE" >
+<![%caption.element;[
+<!ENTITY % caption.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ELEMENT %caption.qname;  %caption.content; >
+<!-- end of caption.element -->]]>
+
+<!ENTITY % caption.attlist  "INCLUDE" >
+<![%caption.attlist;[
+<!ATTLIST %caption.qname;
+      %Common.attrib;
+>
+<!-- end of caption.attlist -->]]>
+
+<!-- thead: Table Header ............................... -->
+
+<!-- Use thead to duplicate headers when breaking table
+     across page boundaries, or for static headers when
+     tbody sections are rendered in scrolling panel.
+-->
+
+<!ENTITY % thead.element  "INCLUDE" >
+<![%thead.element;[
+<!-- end of thead.element -->]]>
+<!ENTITY % thead.content  "( %tr.qname; )+" >
+<!ELEMENT %thead.qname;  %thead.content; >
+
+<!ENTITY % thead.attlist  "INCLUDE" >
+<![%thead.attlist;[
+<!ATTLIST %thead.qname;
+      %Common.attrib;
+      %CellHAlign.attrib;
+      %CellVAlign.attrib;
+>
+<!-- end of thead.attlist -->]]>
+
+<!-- tfoot: Table Footer ............................... -->
+
+<!-- Use tfoot to duplicate footers when breaking table
+     across page boundaries, or for static footers when
+     tbody sections are rendered in scrolling panel.
+-->
+
+<!ENTITY % tfoot.element  "INCLUDE" >
+<![%tfoot.element;[
+<!ENTITY % tfoot.content  "( %tr.qname; )+" >
+<!ELEMENT %tfoot.qname;  %tfoot.content; >
+<!-- end of tfoot.element -->]]>
+
+<!ENTITY % tfoot.attlist  "INCLUDE" >
+<![%tfoot.attlist;[
+<!ATTLIST %tfoot.qname;
+      %Common.attrib;
+      %CellHAlign.attrib;
+      %CellVAlign.attrib;
+>
+<!-- end of tfoot.attlist -->]]>
+
+<!-- tbody: Table Body ................................. -->
+
+<!-- Use multiple tbody sections when rules are needed
+     between groups of table rows.
+-->
+
+<!ENTITY % tbody.element  "INCLUDE" >
+<![%tbody.element;[
+<!ENTITY % tbody.content  "( %tr.qname; )+" >
+<!ELEMENT %tbody.qname;  %tbody.content; >
+<!-- end of tbody.element -->]]>
+
+<!ENTITY % tbody.attlist  "INCLUDE" >
+<![%tbody.attlist;[
+<!ATTLIST %tbody.qname;
+      %Common.attrib;
+      %CellHAlign.attrib;
+      %CellVAlign.attrib;
+>
+<!-- end of tbody.attlist -->]]>
+
+<!-- colgroup: Table Column Group ...................... -->
+
+<!-- colgroup groups a set of col elements. It allows you
+     to group several semantically-related columns together.
+-->
+
+<!ENTITY % colgroup.element  "INCLUDE" >
+<![%colgroup.element;[
+<!ENTITY % colgroup.content  "( %col.qname; )*" >
+<!ELEMENT %colgroup.qname;  %colgroup.content; >
+<!-- end of colgroup.element -->]]>
+
+<!ENTITY % colgroup.attlist  "INCLUDE" >
+<![%colgroup.attlist;[
+<!-- end of colgroup.attlist -->]]>
+<!ATTLIST %colgroup.qname;
+      %Common.attrib;
+      span         %Number.datatype;        '1'
+      width        %MultiLength.datatype;   #IMPLIED
+      %CellHAlign.attrib;
+      %CellVAlign.attrib;
+>
+
+<!-- col: Table Column ................................. -->
+
+<!-- col elements define the alignment properties for
+     cells in one or more columns.
+
+     The width attribute specifies the width of the
+     columns, e.g.
+
+       width="64"        width in screen pixels
+       width="0.5*"      relative width of 0.5
+
+     The span attribute causes the attributes of one
+     col element to apply to more than one column.
+-->
+
+<!ENTITY % col.element  "INCLUDE" >
+<![%col.element;[
+<!ENTITY % col.content  "EMPTY" >
+<!ELEMENT %col.qname;  %col.content; >
+<!-- end of col.element -->]]>
+
+<!ENTITY % col.attlist  "INCLUDE" >
+<![%col.attlist;[
+<!ATTLIST %col.qname;
+      %Common.attrib;
+      span         %Number.datatype;        '1'
+      width        %MultiLength.datatype;   #IMPLIED
+      %CellHAlign.attrib;
+      %CellVAlign.attrib;
+>
+<!-- end of col.attlist -->]]>
+
+<!-- tr: Table Row ..................................... -->
+
+<!ENTITY % tr.element  "INCLUDE" >
+<![%tr.element;[
+<!ENTITY % tr.content  "( %th.qname; | %td.qname; )+" >
+<!ELEMENT %tr.qname;  %tr.content; >
+<!-- end of tr.element -->]]>
+
+<!ENTITY % tr.attlist  "INCLUDE" >
+<![%tr.attlist;[
+<!ATTLIST %tr.qname;
+      %Common.attrib;
+      %CellHAlign.attrib;
+      %CellVAlign.attrib;
+>
+<!-- end of tr.attlist -->]]>
+
+<!-- th: Table Header Cell ............................. -->
+
+<!-- th is for header cells, td for data,
+     but for cells acting as both use td
+-->
+
+<!ENTITY % th.element  "INCLUDE" >
+<![%th.element;[
+<!ENTITY % th.content
+     "( #PCDATA | %Flow.mix; )*"
+>
+<!ELEMENT %th.qname;  %th.content; >
+<!-- end of th.element -->]]>
+
+<!ENTITY % th.attlist  "INCLUDE" >
+<![%th.attlist;[
+<!ATTLIST %th.qname;
+      %Common.attrib;
+      abbr         %Text.datatype;          #IMPLIED
+      axis         CDATA                    #IMPLIED
+      headers      IDREFS                   #IMPLIED
+      %Scope.attrib;
+      rowspan      %Number.datatype;        '1'
+      colspan      %Number.datatype;        '1'
+      %CellHAlign.attrib;
+      %CellVAlign.attrib;
+>
+<!-- end of th.attlist -->]]>
+
+<!-- td: Table Data Cell ............................... -->
+
+<!ENTITY % td.element  "INCLUDE" >
+<![%td.element;[
+<!ENTITY % td.content
+     "( #PCDATA | %Flow.mix; )*"
+>
+<!ELEMENT %td.qname;  %td.content; >
+<!-- end of td.element -->]]>
+
+<!ENTITY % td.attlist  "INCLUDE" >
+<![%td.attlist;[
+<!ATTLIST %td.qname;
+      %Common.attrib;
+      abbr         %Text.datatype;          #IMPLIED
+      axis         CDATA                    #IMPLIED
+      headers      IDREFS                   #IMPLIED
+      %Scope.attrib;
+      rowspan      %Number.datatype;        '1'
+      colspan      %Number.datatype;        '1'
+      %CellHAlign.attrib;
+      %CellVAlign.attrib;
+>
+<!-- end of td.attlist -->]]>
+
+<!-- end of xhtml-table-1.mod -->
+]]>
+
+<!-- Forms Module  ............................................... -->
+<!ENTITY % xhtml-form.module "INCLUDE" >
+<![%xhtml-form.module;[
+<!ENTITY % xhtml-form.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Forms 1.0//EN"
+            "xhtml-form-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Forms Module  .................................................. -->
+<!-- file: xhtml-form-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Forms 1.0//EN"
+       SYSTEM "xhtml-form-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Forms
+
+        form, label, input, select, optgroup, option,
+        textarea, fieldset, legend, button
+
+     This module declares markup to provide support for online
+     forms, based on the features found in HTML 4.0 forms.
+-->
+
+<!-- declare qualified element type names:
+-->
+<!ENTITY % form.qname  "form" >
+<!ENTITY % label.qname  "label" >
+<!ENTITY % input.qname  "input" >
+<!ENTITY % select.qname  "select" >
+<!ENTITY % optgroup.qname  "optgroup" >
+<!ENTITY % option.qname  "option" >
+<!ENTITY % textarea.qname  "textarea" >
+<!ENTITY % fieldset.qname  "fieldset" >
+<!ENTITY % legend.qname  "legend" >
+<!ENTITY % button.qname  "button" >
+
+<!-- %Block-noform.mix; includes all non-form block elements,
+     plus %Misc.class;
+-->
+<!ENTITY % Block-noform.mix
+     "%Heading.class;
+      | %List.class;
+      | %Blkstruct.class;
+      %Blkphras.class;
+      %Blkpres.class;
+      | %table.qname; 
+      %Block.extra;
+      %Misc.class;"
+>
+
+<!-- form: Form Element ................................ -->
+
+<!ENTITY % form.element  "INCLUDE" >
+<![%form.element;[
+<!ENTITY % form.content
+     "( %Block-noform.mix;
+      | %fieldset.qname; )+"
+>
+<!ELEMENT %form.qname;  %form.content; >
+<!-- end of form.element -->]]>
+
+<!ENTITY % form.attlist  "INCLUDE" >
+<![%form.attlist;[
+<!ATTLIST %form.qname;
+      %Common.attrib;
+      action       %URI.datatype;           #REQUIRED
+      method       ( get | post )           'get'
+      enctype      %ContentType.datatype;   'application/x-www-form-urlencoded'
+      accept-charset %Charsets.datatype;    #IMPLIED
+      accept       %ContentTypes.datatype;  #IMPLIED
+>
+<!-- end of form.attlist -->]]>
+
+<!-- label: Form Field Label Text ...................... -->
+
+<!-- Each label must not contain more than ONE field
+-->
+
+<!ENTITY % label.element  "INCLUDE" >
+<![%label.element;[
+<!ENTITY % label.content
+     "( #PCDATA 
+      | %input.qname; | %select.qname; | %textarea.qname; | %button.qname;
+      | %Inlstruct.class;
+      %Inlphras.class;
+      %I18n.class;
+      %Inlpres.class;
+      %Anchor.class;
+      %Inlspecial.class;
+      %Inline.extra;
+      %Misc.class; )*"
+>
+<!ELEMENT %label.qname;  %label.content; >
+<!-- end of label.element -->]]>
+
+<!ENTITY % label.attlist  "INCLUDE" >
+<![%label.attlist;[
+<!ATTLIST %label.qname;
+      %Common.attrib;
+      for          IDREF                    #IMPLIED
+      accesskey    %Character.datatype;     #IMPLIED
+>
+<!-- end of label.attlist -->]]>
+
+<!-- input: Form Control ............................... -->
+
+<!ENTITY % input.element  "INCLUDE" >
+<![%input.element;[
+<!ENTITY % input.content  "EMPTY" >
+<!ELEMENT %input.qname;  %input.content; >
+<!-- end of input.element -->]]>
+
+<!ENTITY % input.attlist  "INCLUDE" >
+<![%input.attlist;[
+<!ENTITY % InputType.class
+     "( text | password | checkbox | radio | submit 
+      | reset | file | hidden | image | button )"
+>
+<!-- attribute 'name' required for all but submit & reset
+-->
+<!ATTLIST %input.qname;
+      %Common.attrib;
+      type         %InputType.class;        'text'
+      name         CDATA                    #IMPLIED
+      value        CDATA                    #IMPLIED
+      checked      ( checked )              #IMPLIED
+      disabled     ( disabled )             #IMPLIED
+      readonly     ( readonly )             #IMPLIED
+      size         %Number.datatype;        #IMPLIED
+      maxlength    %Number.datatype;        #IMPLIED
+      src          %URI.datatype;           #IMPLIED
+      alt          CDATA                    #IMPLIED
+      usemap       IDREF                    #IMPLIED
+      tabindex     %Number.datatype;        #IMPLIED
+      accesskey    %Character.datatype;     #IMPLIED
+      accept       %ContentTypes.datatype;  #IMPLIED
+>
+<!-- end of input.attlist -->]]>
+
+<!-- select: Option Selector ........................... -->
+
+<!ENTITY % select.element  "INCLUDE" >
+<![%select.element;[
+<!ENTITY % select.content
+     "( %optgroup.qname; | %option.qname; )+"
+>
+<!ELEMENT %select.qname;  %select.content; >
+<!-- end of select.element -->]]>
+
+<!ENTITY % select.attlist  "INCLUDE" >
+<![%select.attlist;[
+<!ATTLIST %select.qname;
+      %Common.attrib;
+      name         CDATA                    #IMPLIED
+      size         %Number.datatype;        #IMPLIED
+      multiple     ( multiple )             #IMPLIED
+      disabled     ( disabled )             #IMPLIED
+      tabindex     %Number.datatype;        #IMPLIED
+>
+<!-- end of select.attlist -->]]>
+
+<!-- optgroup: Option Group ............................ -->
+
+<!ENTITY % optgroup.element  "INCLUDE" >
+<![%optgroup.element;[
+<!ENTITY % optgroup.content  "( %option.qname; )+" >
+<!ELEMENT %optgroup.qname;  %optgroup.content; >
+<!-- end of optgroup.element -->]]>
+
+<!ENTITY % optgroup.attlist  "INCLUDE" >
+<![%optgroup.attlist;[
+<!ATTLIST %optgroup.qname;
+      %Common.attrib;
+      disabled     ( disabled )             #IMPLIED
+      label        %Text.datatype;          #REQUIRED
+>
+<!-- end of optgroup.attlist -->]]>
+
+<!-- option: Selectable Choice ......................... -->
+
+<!ENTITY % option.element  "INCLUDE" >
+<![%option.element;[
+<!ENTITY % option.content  "( #PCDATA )" >
+<!ELEMENT %option.qname;  %option.content; >
+<!-- end of option.element -->]]>
+
+<!ENTITY % option.attlist  "INCLUDE" >
+<![%option.attlist;[
+<!ATTLIST %option.qname;
+      %Common.attrib;
+      selected     ( selected )             #IMPLIED
+      disabled     ( disabled )             #IMPLIED
+      label        %Text.datatype;          #IMPLIED
+      value        CDATA                    #IMPLIED
+>
+<!-- end of option.attlist -->]]>
+
+<!-- textarea: Multi-Line Text Field ................... -->
+
+<!ENTITY % textarea.element  "INCLUDE" >
+<![%textarea.element;[
+<!ENTITY % textarea.content  "( #PCDATA )" >
+<!ELEMENT %textarea.qname;  %textarea.content; >
+<!-- end of textarea.element -->]]>
+
+<!ENTITY % textarea.attlist  "INCLUDE" >
+<![%textarea.attlist;[
+<!ATTLIST %textarea.qname;
+      %Common.attrib;
+      name         CDATA                    #IMPLIED
+      rows         %Number.datatype;        #REQUIRED
+      cols         %Number.datatype;        #REQUIRED
+      disabled     ( disabled )             #IMPLIED
+      readonly     ( readonly )             #IMPLIED
+      tabindex     %Number.datatype;        #IMPLIED
+      accesskey    %Character.datatype;     #IMPLIED
+>
+<!-- end of textarea.attlist -->]]>
+
+<!-- fieldset: Form Control Group ...................... -->
+
+<!-- #PCDATA is to solve the mixed content problem,
+     per specification only whitespace is allowed
+-->
+
+<!ENTITY % fieldset.element  "INCLUDE" >
+<![%fieldset.element;[
+<!ENTITY % fieldset.content
+     "( #PCDATA | %legend.qname; | %Flow.mix; )*"
+>
+<!ELEMENT %fieldset.qname;  %fieldset.content; >
+<!-- end of fieldset.element -->]]>
+
+<!ENTITY % fieldset.attlist  "INCLUDE" >
+<![%fieldset.attlist;[
+<!ATTLIST %fieldset.qname;
+      %Common.attrib;
+>
+<!-- end of fieldset.attlist -->]]>
+
+<!-- legend: Fieldset Legend ........................... -->
+
+<!ENTITY % legend.element  "INCLUDE" >
+<![%legend.element;[
+<!ENTITY % legend.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ELEMENT %legend.qname;  %legend.content; >
+<!-- end of legend.element -->]]>
+
+<!ENTITY % legend.attlist  "INCLUDE" >
+<![%legend.attlist;[
+<!ATTLIST %legend.qname;
+      %Common.attrib;
+      accesskey    %Character.datatype;     #IMPLIED
+>
+<!-- end of legend.attlist -->]]>
+
+<!-- button: Push Button ............................... -->
+
+<!ENTITY % button.element  "INCLUDE" >
+<![%button.element;[
+<!ENTITY % button.content
+     "( #PCDATA
+      | %Block-noform.mix;
+      | %Inlstruct.class;
+      %Inlphras.class;
+      %Inlpres.class;
+      %I18n.class;
+      %Inlspecial.class;
+      %Inline.extra; )*"
+>
+<!ELEMENT %button.qname;  %button.content; >
+<!-- end of button.element -->]]>
+
+<!ENTITY % button.attlist  "INCLUDE" >
+<![%button.attlist;[
+<!ATTLIST %button.qname;
+      %Common.attrib;
+      name         CDATA                    #IMPLIED
+      value        CDATA                    #IMPLIED
+      type         ( button | submit | reset ) 'submit'
+      disabled     ( disabled )             #IMPLIED
+      tabindex     %Number.datatype;        #IMPLIED
+      accesskey    %Character.datatype;     #IMPLIED
+>
+<!-- end of button.attlist -->]]>
+
+<!-- end of xhtml-form-1.mod -->
+]]>
+
+<!-- Legacy Markup ............................................... -->
+<!ENTITY % xhtml-legacy.module "IGNORE" >
+<![%xhtml-legacy.module;[
+<!ENTITY % xhtml-legacy.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Legacy Markup 1.0//EN"
+            "xhtml-legacy-1.mod" >
+%xhtml-legacy.mod;]]>
+
+<!-- Document Structure Module (required)  ....................... -->
+<!ENTITY % xhtml-struct.module "INCLUDE" >
+<![%xhtml-struct.module;[
+<!ENTITY % xhtml-struct.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Document Structure 1.0//EN"
+            "xhtml-struct-1.mod" >
+<!-- ...................................................................... -->
+<!-- XHTML Structure Module  .............................................. -->
+<!-- file: xhtml-struct-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Document Structure 1.0//EN"
+       SYSTEM "xhtml-struct-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Document Structure
+
+        title, head, body, html
+
+     The Structure Module defines the major structural elements and 
+     their attributes.
+
+     Note that the content model of the head element type is redeclared 
+     when the Base Module is included in the DTD.
+
+     The parameter entity containing the XML namespace URI value used 
+     for XHTML is '%XHTML.xmlns;', defined in the Qualified Names module.
+-->
+
+<!-- title: Document Title ............................. -->
+
+<!-- The title element is not considered part of the flow of text.
+     It should be displayed, for example as the page header or
+     window title. Exactly one title is required per document.
+-->
+
+<!ENTITY % title.element  "INCLUDE" >
+<![%title.element;[
+<!ENTITY % title.content  "( #PCDATA )" >
+<!ENTITY % title.qname  "title" >
+<!ELEMENT %title.qname;  %title.content; >
+<!-- end of title.element -->]]>
+
+<!ENTITY % title.attlist  "INCLUDE" >
+<![%title.attlist;[
+<!ATTLIST %title.qname;
+      %I18n.attrib;
+>
+<!-- end of title.attlist -->]]>
+
+<!-- head: Document Head ............................... -->
+
+<!ENTITY % head.element  "INCLUDE" >
+<![%head.element;[
+<!ENTITY % head.content
+    "( %Head-opts.mix;, %title.qname;, %Head-opts.mix; )"
+>
+<!ENTITY % head.qname  "head" >
+<!ELEMENT %head.qname;  %head.content; >
+<!-- end of head.element -->]]>
+
+<!ENTITY % head.attlist  "INCLUDE" >
+<![%head.attlist;[
+<!-- reserved for future use with document profiles
+-->
+<!ENTITY % Profile.attrib
+     "profile      %URI.datatype;           '%XHTML.profile;'"
+>
+
+<!ATTLIST %head.qname;
+      %I18n.attrib;
+      %Profile.attrib;
+>
+<!-- end of head.attlist -->]]>
+
+<!-- body: Document Body ............................... -->
+
+<!ENTITY % body.element  "INCLUDE" >
+<![%body.element;[
+<!ENTITY % body.content
+     "( %Block.mix; )+"
+>
+<!ENTITY % body.qname  "body" >
+<!ELEMENT %body.qname;  %body.content; >
+<!-- end of body.element -->]]>
+
+<!ENTITY % body.attlist  "INCLUDE" >
+<![%body.attlist;[
+<!ATTLIST %body.qname;
+      %Common.attrib;
+>
+<!-- end of body.attlist -->]]>
+
+<!-- html: XHTML Document Element ...................... -->
+
+<!ENTITY % html.element  "INCLUDE" >
+<![%html.element;[
+<!ENTITY % html.content  "( %head.qname;, %body.qname; )" >
+<!ENTITY % html.qname  "html" >
+<!ELEMENT %html.qname;  %html.content; >
+<!-- end of html.element -->]]>
+
+<!ENTITY % html.attlist  "INCLUDE" >
+<![%html.attlist;[
+<!-- version attribute value defined in driver
+-->
+<!ENTITY % XHTML.version.attrib
+     "version      CDATA                    #FIXED '%XHTML.version;'"
+>
+
+<!-- see the Qualified Names module for information 
+     on how to extend XHTML using XML namespaces 
+-->
+<!ATTLIST %html.qname;
+      %XHTML.xmlns.attrib; 
+      %XHTML.version.attrib;
+      %I18n.attrib;
+>
+<!-- end of html.attlist -->]]>
+
+<!-- end of xhtml-struct-1.mod -->
+]]>
+
+<!-- end of XHTML 1.1 DTD  ................................................. -->
+<!-- ....................................................................... -->
+
+
+<!ENTITY % mathml.mod 
+     PUBLIC "-//W3C//DTD MathML 2.0//EN"
+            "mathml2.dtd" >
+<!-- ....................................................................... -->
+<!-- MathML 2.0 DTD  ....................................................... -->
+<!-- file: mathml2.dtd
+-->
+
+<!-- MathML 2.0 DTD
+
+     This is the Mathematical Markup Language (MathML) 2.0, an XML
+     application for describing mathematical notation and capturing
+     both its structure and content.
+
+     Copyright 1998-2000 World Wide Web Consortium
+        (Massachusetts Institute of Technology, Institut National de
+         Recherche en Informatique et en Automatique, Keio University).
+         All Rights Reserved.
+
+     Permission to use, copy, modify and distribute the XHTML 1.1 DTD and
+     its accompanying documentation for any purpose and without fee is
+     hereby granted in perpetuity, provided that the above copyright notice
+     and this paragraph appear in all copies.  The copyright holders make
+     no representation about the suitability of the DTD for any purpose.
+
+     It is provided "as is" without expressed or implied warranty.
+
+        Revision:   $Id: xhtml-math11-f.dtd,v 1.2 2009-02-26 15:45:59 ylafon Exp $
+
+     This entity may be identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//DTD MathML 2.0//EN"
+       SYSTEM "mathml2.dtd"
+
+     Revisions: editor and revision history at EOF
+-->
+
+
+<!-- MathML Qualified Names module ............................... -->
+<!ENTITY % mathml-qname.module "INCLUDE" >
+<![%mathml-qname.module;[
+<!ENTITY % mathml-qname.mod
+     PUBLIC "-//W3C//ENTITIES MathML 2.0 Qualified Names 1.0//EN"
+            "mathml2-qname-1.mod" >
+%mathml-qname.mod;]]>
+
+<!-- if %NS.prefixed; is INCLUDE, include all NS attributes, 
+     otherwise just those associated with MathML
+-->
+<![%NS.prefixed;[
+<!ENTITY % MATHML.NamespaceDecl.attrib 
+     "%NamespaceDecl.attrib;"
+>
+]]>
+<!ENTITY % MATHML.NamespaceDecl.attrib 
+     "%MATHML.xmlns.attrib;"
+>
+
+<!-- Attributes shared by all elements  .......................... -->
+
+<!ENTITY % MATHML.Common.attrib
+     "%MATHML.NamespaceDecl.attrib;
+      xlink:href   CDATA                    #IMPLIED
+      class        CDATA                    #IMPLIED
+      style        CDATA                    #IMPLIED
+      id           ID                       #IMPLIED
+      xref         IDREF                    #IMPLIED
+      other        CDATA                    #IMPLIED"
+>
+
+<!-- Presentation element set  ................................... -->
+
+<!-- Attribute definitions -->
+
+<!ENTITY % att-fontsize
+     "fontsize     CDATA                    #IMPLIED" >
+<!ENTITY % att-fontweight
+     "fontweight   ( normal | bold )        #IMPLIED" >
+<!ENTITY % att-fontstyle
+     "fontstyle    ( normal | italic )      #IMPLIED" >
+<!ENTITY % att-fontfamily
+     "fontfamily   CDATA                    #IMPLIED" >
+<!ENTITY % att-color
+     "color        CDATA                    #IMPLIED" >
+
+<!-- MathML2 typographically-distinguished symbol attributes -->
+
+<!ENTITY % att-mathvariant
+     "mathvariant     CDATA                    #IMPLIED" >
+<!ENTITY % att-mathsize
+     "mathsize     CDATA                    #IMPLIED" >
+<!ENTITY % att-mathcolor
+     "mathcolor     CDATA                    #IMPLIED" >
+<!ENTITY % att-mathbackground
+     "mathbackground     CDATA                    #IMPLIED" >
+
+<!ENTITY % att-fontinfo
+     "%att-fontsize;
+      %att-fontweight;
+      %att-fontstyle;
+      %att-fontfamily;
+      %att-color;
+      %att-mathvariant;
+      %att-mathsize;
+      %att-mathcolor;
+      %att-mathbackground;"
+>
+
+<!ENTITY % att-form
+     "form         ( prefix | infix | postfix )  #IMPLIED" >
+<!ENTITY % att-fence
+     "fence        ( true | false )         #IMPLIED" >
+<!ENTITY % att-separator
+     "separator    ( true | false )         #IMPLIED" >
+<!ENTITY % att-lspace
+     "lspace       CDATA                    #IMPLIED" >
+<!ENTITY % att-rspace
+     "rspace       CDATA                    #IMPLIED" >
+<!ENTITY % att-stretchy
+     "stretchy     ( true | false )         #IMPLIED" >
+<!ENTITY % att-symmetric
+     "symmetric    ( true | false )         #IMPLIED" >
+<!ENTITY % att-maxsize
+     "maxsize      CDATA                    #IMPLIED" >
+<!ENTITY % att-minsize
+     "minsize      CDATA                    #IMPLIED" >
+<!ENTITY % att-largeop
+     "largeop      ( true | false)          #IMPLIED" >
+<!ENTITY % att-movablelimits
+     "movablelimits ( true | false )        #IMPLIED" >
+<!ENTITY % att-accent
+     "accent       ( true | false )         #IMPLIED" >
+
+<!ENTITY % att-opinfo
+     "%att-form;
+      %att-fence;
+      %att-separator;
+      %att-lspace;
+      %att-rspace;
+      %att-stretchy;
+      %att-symmetric;
+      %att-maxsize;
+      %att-minsize;
+      %att-largeop;
+      %att-movablelimits;
+      %att-accent;"
+>
+<!ENTITY % att-width
+     "width        CDATA                    #IMPLIED" >
+<!ENTITY % att-height
+     "height       CDATA                    #IMPLIED" >
+<!ENTITY % att-depth
+     "depth        CDATA                    #IMPLIED" >
+<!ENTITY % att-linebreak
+     "linebreak    CDATA                    #IMPLIED" >
+<!ENTITY % att-sizeinfo
+     "%att-width;
+      %att-height;
+      %att-depth;"
+>
+<!ENTITY % att-lquote               
+     "lquote       CDATA                    #IMPLIED" >
+<!ENTITY % att-rquote               
+     "rquote       CDATA                    #IMPLIED" >
+<!ENTITY % att-linethickness        
+     "linethickness CDATA                   #IMPLIED" >
+<!ENTITY % att-scriptlevel          
+     "scriptlevel  CDATA                    #IMPLIED" >
+<!ENTITY % att-displaystyle         
+     "displaystyle ( true | false )         #IMPLIED" >
+<!ENTITY % att-scriptsizemultiplier 
+     "scriptsizemultiplier CDATA            #IMPLIED" >
+<!ENTITY % att-scriptminsize        
+     "scriptminsize CDATA                   #IMPLIED" >
+<!ENTITY % att-background           
+     "background   CDATA                    #IMPLIED" >
+<!ENTITY % att-veryverythinmathspace           
+     "veryverythinmathspace   CDATA         #IMPLIED" >
+<!ENTITY % att-verythinmathspace           
+     "verythinmathspace   CDATA             #IMPLIED" >
+<!ENTITY % att-thinmathspace           
+     "thinmathspace   CDATA                 #IMPLIED" >
+<!ENTITY % att-mediummathspace           
+     "mediummathspace   CDATA               #IMPLIED" >
+<!ENTITY % att-thickmathspace           
+     "thickmathspace   CDATA                #IMPLIED" >
+<!ENTITY % att-verythickmathspace           
+     "verythickmathspace   CDATA            #IMPLIED" >
+<!ENTITY % att-veryverythickmathspace           
+     "veryverythickmathspace   CDATA        #IMPLIED" >
+<!ENTITY % att-open                 
+     "open         CDATA                    #IMPLIED" >
+<!ENTITY % att-close                
+     "close        CDATA                    #IMPLIED" >
+<!ENTITY % att-separators          
+     "separators   CDATA                    #IMPLIED" >
+<!ENTITY % att-subscriptshift       
+     "subscriptshift CDATA                  #IMPLIED" >
+<!ENTITY % att-superscriptshift     
+     "superscriptshift CDATA                #IMPLIED" >
+<!ENTITY % att-accentunder          
+     "accentunder  ( true | false )         #IMPLIED" >
+<!ENTITY % att-align       
+     "align        CDATA                    #IMPLIED" >
+<!ENTITY % att-rowalign      
+     "rowalign     CDATA                    #IMPLIED" >
+<!ENTITY % att-columnalign     
+     "columnalign  CDATA                    #IMPLIED" >
+<!ENTITY % att-columnwidth   
+     "columnwidth  CDATA                    #IMPLIED" >
+<!ENTITY % att-groupalign      
+     "groupalign   CDATA                    #IMPLIED" >
+<!ENTITY % att-alignmentscope 
+     "alignmentscope CDATA                  #IMPLIED" >
+<!ENTITY % att-rowspacing           
+     "rowspacing   CDATA                    #IMPLIED" >
+<!ENTITY % att-columnspacing      
+     "columnspacing CDATA                   #IMPLIED" >
+<!ENTITY % att-rowlines            
+     "rowlines     CDATA                    #IMPLIED" >
+<!ENTITY % att-columnlines        
+     "columnlines  CDATA                    #IMPLIED" >
+<!ENTITY % att-frame            
+     "frame       ( none | solid | dashed ) #IMPLIED" >
+<!ENTITY % att-framespacing         
+     "framespacing CDATA                    #IMPLIED" >
+<!ENTITY % att-equalrows        
+     "equalrows    CDATA                    #IMPLIED" >
+<!ENTITY % att-equalcolumns         
+     "equalcolumns CDATA                    #IMPLIED" >
+
+<!ENTITY % att-tableinfo            
+     "%att-align;
+      %att-rowalign;
+      %att-columnalign;
+      %att-columnwidth;
+      %att-groupalign;
+      %att-alignmentscope;
+      %att-rowspacing;
+      %att-columnspacing;
+      %att-rowlines;
+      %att-columnlines;
+      %att-frame;
+      %att-framespacing;
+      %att-equalrows;
+      %att-equalcolumns;
+      %att-displaystyle;" 
+>
+
+<!ENTITY % att-rowspan              
+     "rowspan      CDATA                    #IMPLIED" >
+<!ENTITY % att-columnspan           
+     "columnspan   CDATA                    #IMPLIED" >
+<!ENTITY % att-edge        
+     "edge         ( left | right )         #IMPLIED" >
+<!ENTITY % att-actiontype          
+     "actiontype   CDATA                    #IMPLIED" >
+<!ENTITY % att-selection       
+     "selection    CDATA                    #IMPLIED" >
+
+<!ENTITY % att-name                 
+     "name         CDATA                    #IMPLIED" >
+<!ENTITY % att-alt              
+     "alt          CDATA                    #IMPLIED" >
+<!ENTITY % att-index           
+     "index        CDATA                    #IMPLIED" >
+
+<!ENTITY % att-bevelled       
+     "bevelled      CDATA                    #IMPLIED" >
+
+<!-- Presentation schemata with content -->
+
+<!ENTITY % ptoken                   
+     "%mi.qname; | %mn.qname; | %mo.qname;
+      | %mtext.qname; | %ms.qname;" >
+
+<!ATTLIST %mi.qname;
+      %MATHML.Common.attrib;
+      %att-fontinfo;
+>
+
+<!ATTLIST %mn.qname;      
+      %MATHML.Common.attrib; 
+      %att-fontinfo;
+>
+
+<!ATTLIST %mo.qname;     
+      %MATHML.Common.attrib; 
+      %att-fontinfo;
+      %att-opinfo;
+>
+
+<!ATTLIST %mtext.qname;  
+      %MATHML.Common.attrib;
+      %att-fontinfo;
+>
+
+<!ATTLIST %ms.qname;     
+      %MATHML.Common.attrib;
+      %att-fontinfo;
+      %att-lquote;
+      %att-rquote;
+>
+
+<!-- Empty presentation schemata -->
+
+<!ENTITY % petoken                  
+     "%mspace.qname;" >
+<!ELEMENT %mspace.qname;  EMPTY >
+
+<!ATTLIST %mspace.qname; 
+      %att-sizeinfo;
+      %att-linebreak;
+      %MATHML.Common.attrib;
+>
+
+<!-- Presentation: general layout schemata -->
+
+<!ENTITY % pgenschema               
+     "%mrow.qname; | %mfrac.qname; | %msqrt.qname; | %mroot.qname; 
+      | %menclose.qname; | %mstyle.qname; | %merror.qname; 
+      | %mpadded.qname; | %mphantom.qname; | %mfenced.qname;" >
+
+<!ATTLIST %mrow.qname;        
+      %MATHML.Common.attrib;
+>
+
+<!ATTLIST %mfrac.qname;     
+      %MATHML.Common.attrib;
+      %att-bevelled;
+      %att-linethickness;
+>
+
+<!ATTLIST %msqrt.qname;     
+      %MATHML.Common.attrib;
+>
+
+<!ATTLIST %menclose.qname;  
+      %MATHML.Common.attrib;
+      notation CDATA 'longdiv' >
+
+<!ATTLIST %mroot.qname;    
+      %MATHML.Common.attrib;
+>
+
+<!ATTLIST %mstyle.qname;  
+      %MATHML.Common.attrib;
+      %att-fontinfo;
+      %att-opinfo;
+      %att-lquote;
+      %att-rquote;
+      %att-linethickness;
+      %att-scriptlevel;
+      %att-scriptsizemultiplier;
+      %att-scriptminsize;
+      %att-background;
+      %att-veryverythinmathspace;
+      %att-verythinmathspace;
+      %att-thinmathspace;
+      %att-mediummathspace;
+      %att-thickmathspace;
+      %att-verythickmathspace;
+      %att-veryverythickmathspace;
+      %att-open;
+      %att-close;
+      %att-separators;
+      %att-subscriptshift;
+      %att-superscriptshift;
+      %att-accentunder;
+      %att-tableinfo;
+      %att-rowspan;
+      %att-columnspan;
+      %att-edge;
+      %att-actiontype;
+      %att-selection;
+>
+
+<!ATTLIST %merror.qname;   
+      %MATHML.Common.attrib;
+>
+
+<!ATTLIST %mpadded.qname;     
+      %MATHML.Common.attrib;
+      %att-sizeinfo;
+      %att-lspace;
+>
+
+<!ATTLIST %mphantom.qname;      
+      %MATHML.Common.attrib;
+>
+
+<!ATTLIST %mfenced.qname;     
+      %MATHML.Common.attrib;
+      %att-open;
+      %att-close;
+      %att-separators;
+>
+
+<!-- Presentation layout schemata: scripts and limits -->
+
+<!ENTITY % pscrschema               
+     "%msub.qname; | %msup.qname; | %msubsup.qname; | %munder.qname; 
+      | %mover.qname; | %munderover.qname; | %mmultiscripts.qname;" >
+
+<!ATTLIST %msub.qname;      
+      %MATHML.Common.attrib;
+      %att-subscriptshift;
+>
+
+<!ATTLIST %msup.qname;         
+      %MATHML.Common.attrib;
+      %att-superscriptshift;
+>
+
+<!ATTLIST %msubsup.qname;    
+      %MATHML.Common.attrib;
+      %att-subscriptshift;
+      %att-superscriptshift;
+>
+
+<!ATTLIST %munder.qname;   
+      %MATHML.Common.attrib;
+      %att-accentunder;
+>
+
+<!ATTLIST %mover.qname;   
+      %MATHML.Common.attrib;
+      %att-accent;
+>
+
+<!ATTLIST %munderover.qname;   
+      %MATHML.Common.attrib;
+      %att-accent;
+      %att-accentunder;
+>
+
+<!ATTLIST %mmultiscripts.qname;   
+      %MATHML.Common.attrib;
+      %att-subscriptshift;
+      %att-superscriptshift;
+>
+
+<!-- Presentation layout schemata: empty elements for scripts -->
+
+<!ENTITY % pscreschema              
+     "%mprescripts.qname; | %none.qname;" >
+
+<!ELEMENT %mprescripts.qname;  EMPTY >
+<!ATTLIST %mprescripts.qname;   
+      %MATHML.xmlns.attrib; >
+
+<!ELEMENT %none.qname;  EMPTY >
+<!ATTLIST %none.qname;    
+      %MATHML.xmlns.attrib; >
+
+<!-- Presentation layout schemata: tables -->
+
+<!ENTITY % ptabschema               
+     "%mtable.qname; | %mtr.qname; | %mlabeledtr.qname; | %mtd.qname;" >
+
+<!ATTLIST %mtable.qname;
+      %MATHML.Common.attrib;
+      %att-tableinfo;
+>
+
+<!ATTLIST %mtr.qname;    
+      %MATHML.Common.attrib;
+      %att-rowalign;
+      %att-columnalign;
+      %att-groupalign;
+>
+
+<!ATTLIST %mlabeledtr.qname;  
+      %MATHML.Common.attrib;
+      %att-rowalign;
+      %att-columnalign;
+      %att-groupalign;
+>
+
+<!ATTLIST %mtd.qname;   
+      %MATHML.Common.attrib;
+      %att-rowalign;
+      %att-columnalign;
+      %att-groupalign;
+      %att-rowspan;
+      %att-columnspan;
+>
+
+<!ENTITY % plschema                 
+     "%pgenschema; | %pscrschema; | %ptabschema;" >
+
+<!-- Empty presentation layout schemata -->
+
+<!ENTITY % peschema                 
+     "%maligngroup.qname; | %malignmark.qname;" >
+
+<!ELEMENT %malignmark.qname;  EMPTY >
+
+<!ATTLIST %malignmark.qname;  
+      %att-edge; >
+
+<!ELEMENT %maligngroup.qname;  EMPTY >
+<!ATTLIST %maligngroup.qname;  
+      %MATHML.Common.attrib;
+      %att-groupalign;
+>
+
+
+<!ELEMENT %mglyph.qname;  EMPTY >
+<!ATTLIST %mglyph.qname;    
+      %att-alt;
+      %att-fontfamily;
+      %att-index; >
+
+<!-- Presentation action schemata -->
+
+<!ENTITY % pactions                 
+     "%maction.qname;" >
+<!ATTLIST %maction.qname;    
+      %MATHML.Common.attrib;
+      %att-actiontype;
+      %att-selection;
+>
+
+<!-- The following entity for substitution into
+     content constructs excludes elements that
+     are not valid as expressions.
+-->
+
+<!ENTITY % PresInCont               
+     "%ptoken; | %petoken; |
+      %plschema; | %peschema; | %pactions;" >
+
+<!-- Presentation entity: all presentation constructs -->
+
+<!ENTITY % Presentation             
+     "%ptoken; | %petoken; | %pscreschema; |
+      %plschema; | %peschema; | %pactions;">
+
+<!-- Content element set  ........................................ -->
+
+<!-- Attribute definitions -->
+
+<!ENTITY % att-base                 
+     "base         CDATA                    '10'" >
+<!ENTITY % att-closure              
+     "closure      CDATA                    'closed'" >
+<!ENTITY % att-definition           
+     "definitionURL CDATA                   ''" >
+<!ENTITY % att-encoding             
+     "encoding     CDATA                    ''" >
+<!ENTITY % att-nargs             
+     "nargs        CDATA                    '1'" >
+<!ENTITY % att-occurrence           
+     "occurrence   CDATA                    'function-model'" >
+<!ENTITY % att-order   
+     "order        CDATA                    'numeric'" >
+<!ENTITY % att-scope                
+     "scope        CDATA                    'local'" >
+<!ENTITY % att-type                 
+     "type         CDATA                    #IMPLIED" >
+
+<!-- Content elements: leaf nodes -->
+
+<!ENTITY % ctoken               
+     "%csymbol.qname; | %ci.qname; | %cn.qname;" >
+
+<!ATTLIST %ci.qname;     
+      %MATHML.Common.attrib;
+      %att-type;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ATTLIST %csymbol.qname;   
+      %MATHML.Common.attrib;
+      %att-encoding;
+      %att-type;
+      %att-definition;
+>
+
+<!ATTLIST %cn.qname;    
+      %MATHML.Common.attrib;
+      %att-type;
+      %att-base;
+      %att-definition;
+      %att-encoding;
+>
+
+<!-- Content elements: specials -->
+
+<!ENTITY % cspecial                 
+     "%apply.qname; | %reln.qname; |
+      %lambda.qname;" >
+
+<!ATTLIST %apply.qname;   
+      %MATHML.Common.attrib;
+>
+
+<!ATTLIST %reln.qname;   
+      %MATHML.Common.attrib;
+>
+
+<!ATTLIST %lambda.qname;      
+      %MATHML.Common.attrib;
+>
+
+<!-- Content elements: others -->
+
+<!ENTITY % cother                   
+     "%condition.qname; | %declare.qname; | %sep.qname;" >
+
+<!ATTLIST %condition.qname;     
+      %MATHML.Common.attrib;
+>
+
+<!ATTLIST %declare.qname;    
+      %MATHML.Common.attrib;
+      %att-type;
+      %att-scope;
+      %att-nargs;
+      %att-occurrence;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %sep.qname;  EMPTY >
+<!ATTLIST %sep.qname;         
+      %MATHML.xmlns.attrib; >
+
+<!-- Content elements: semantic mapping -->
+
+<!ENTITY % csemantics               
+     "%semantics.qname; | %annotation.qname; |
+      %annotation-xml.qname;" >
+
+<!ATTLIST %semantics.qname;  
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ATTLIST %annotation.qname;  
+      %MATHML.Common.attrib;
+      %att-encoding;
+>
+
+<!ATTLIST %annotation-xml.qname; 
+      %MATHML.Common.attrib;
+      %att-encoding;
+>
+
+<!-- Content elements: constructors -->
+
+<!ENTITY % cconstructor             
+     "%interval.qname; | %list.qname; | %matrix.qname; 
+      | %matrixrow.qname; | %set.qname; | %vector.qname;
+      | %piecewise.qname; " >
+
+<!ATTLIST %interval.qname;   
+      %MATHML.Common.attrib;
+      %att-closure;
+>
+
+<!ATTLIST %set.qname;        
+      %MATHML.Common.attrib;
+      %att-type;
+>
+
+<!ATTLIST %list.qname;          
+      %MATHML.Common.attrib;
+      %att-order;
+>
+
+<!ATTLIST %vector.qname;    
+      %MATHML.Common.attrib;
+>
+
+<!ATTLIST %matrix.qname;    
+      %MATHML.Common.attrib;
+>
+
+<!ATTLIST %matrixrow.qname;     
+      %MATHML.Common.attrib;
+>
+
+<!ATTLIST %piecewise.qname;   
+      %MATHML.Common.attrib;
+>
+
+<!ATTLIST %piece.qname;   
+      %MATHML.Common.attrib;
+>
+
+<!ATTLIST %otherwise.qname;   
+      %MATHML.Common.attrib;
+>
+
+
+<!-- Content elements: symbols -->
+
+<!ENTITY % c0ary              
+    "%integers.qname; |
+     %reals.qname; |
+     %rationals.qname; |
+     %naturalnumbers.qname; |
+     %complexes.qname; |
+     %primes.qname; |
+     %exponentiale.qname; |
+     %imaginaryi.qname; |
+     %notanumber.qname; |
+     %true.qname; |
+     %false.qname; |
+     %emptyset.qname; |
+     %pi.qname; |
+     %eulergamma.qname; |
+     %infinity.qname;" >
+
+<!ELEMENT %integers.qname;  EMPTY >
+<!ATTLIST %integers.qname;   
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %reals.qname;  EMPTY >
+<!ATTLIST %reals.qname;   
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %rationals.qname;  EMPTY >
+<!ATTLIST %rationals.qname;   
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %naturalnumbers.qname;  EMPTY >
+<!ATTLIST %naturalnumbers.qname;   
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %complexes.qname;  EMPTY >
+<!ATTLIST %complexes.qname;   
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %primes.qname;  EMPTY >
+<!ATTLIST %primes.qname;   
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %exponentiale.qname;  EMPTY >
+<!ATTLIST %exponentiale.qname;   
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %imaginaryi.qname;  EMPTY >
+<!ATTLIST %imaginaryi.qname;   
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %notanumber.qname;  EMPTY >
+<!ATTLIST %notanumber.qname;   
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %true.qname;  EMPTY >
+<!ATTLIST %true.qname;   
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %false.qname;  EMPTY >
+<!ATTLIST %false.qname;   
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %emptyset.qname;  EMPTY >
+<!ATTLIST %emptyset.qname;   
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %pi.qname;  EMPTY >
+<!ATTLIST %pi.qname;   
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %eulergamma.qname;  EMPTY >
+<!ATTLIST %eulergamma.qname;   
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %infinity.qname;  EMPTY >
+<!ATTLIST %infinity.qname;   
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!-- Content elements: operators -->
+
+<!ENTITY % cfuncop1ary              
+     "%inverse.qname; | %ident.qname;|
+      %domain.qname; |  %codomain.qname; | 
+      %image.qname;  " >
+
+<!ELEMENT %inverse.qname;  EMPTY >
+<!ATTLIST %inverse.qname;    
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %domain.qname;  EMPTY >
+<!ATTLIST %domain.qname;    
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %codomain.qname;  EMPTY >
+<!ATTLIST %codomain.qname;    
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %image.qname;  EMPTY >
+<!ATTLIST %image.qname;    
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+
+
+<!ENTITY % cfuncopnary              
+     "%fn.qname; | %compose.qname;" >
+
+<!ATTLIST %fn.qname;     
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %ident.qname;  EMPTY >
+<!ATTLIST %ident.qname;   
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %compose.qname;  EMPTY >
+<!ATTLIST %compose.qname;  
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ENTITY % carithop1ary             
+     "%abs.qname; | %conjugate.qname; | %exp.qname; | %factorial.qname; |
+      %arg.qname; | %real.qname; | %imaginary.qname; |
+      %floor.qname; | %ceiling.qname;" >
+
+<!ELEMENT %exp.qname;  EMPTY >
+<!ATTLIST %exp.qname;   
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %abs.qname;  EMPTY >
+<!ATTLIST %abs.qname;        
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %arg.qname;  EMPTY >
+<!ATTLIST %arg.qname;     
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %real.qname;  EMPTY >
+<!ATTLIST %real.qname;    
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %imaginary.qname;  EMPTY >
+<!ATTLIST %imaginary.qname;   
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %conjugate.qname;  EMPTY >
+<!ATTLIST %conjugate.qname;  
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %factorial.qname;  EMPTY >
+<!ATTLIST %factorial.qname;    
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+
+<!ELEMENT %floor.qname;  EMPTY >
+<!ATTLIST %floor.qname;     
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %ceiling.qname;  EMPTY >
+<!ATTLIST %ceiling.qname;     
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+<!ENTITY % carithop1or2ary          
+     "%minus.qname;" >
+
+<!ELEMENT %minus.qname;  EMPTY >
+<!ATTLIST %minus.qname;     
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ENTITY % carithop2ary             
+     "%quotient.qname; | %divide.qname; | %power.qname; | %rem.qname;" >
+
+<!ELEMENT %quotient.qname;  EMPTY >
+<!ATTLIST %quotient.qname;       
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %divide.qname;  EMPTY >
+<!ATTLIST %divide.qname;   
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %power.qname;  EMPTY >
+<!ATTLIST %power.qname;   
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %rem.qname;  EMPTY >
+<!ATTLIST %rem.qname;       
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ENTITY % carithopnary             
+     "%plus.qname; | %times.qname; | %max.qname; 
+      | %min.qname; | %gcd.qname; | %lcm.qname;" >
+
+<!ELEMENT %plus.qname;  EMPTY >
+<!ATTLIST %plus.qname;   
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %max.qname;  EMPTY >
+<!ATTLIST %max.qname;    
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %min.qname;  EMPTY >
+<!ATTLIST %min.qname;   
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %times.qname;  EMPTY >
+<!ATTLIST %times.qname;      
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %gcd.qname;  EMPTY >
+<!ATTLIST %gcd.qname;    
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %lcm.qname;  EMPTY >
+<!ATTLIST %lcm.qname;    
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ENTITY % carithoproot             
+     "%root.qname;" >
+
+<!ELEMENT %root.qname;  EMPTY >
+<!ATTLIST %root.qname;     
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ENTITY % clogicopquant            
+     "%exists.qname; | %forall.qname;" >
+
+<!ELEMENT %exists.qname;  EMPTY >
+<!ATTLIST %exists.qname;   
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %forall.qname;  EMPTY >
+<!ATTLIST %forall.qname;     
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ENTITY % clogicopnary             
+     "%and.qname; | %or.qname; | %xor.qname;" >
+
+<!ELEMENT %and.qname;  EMPTY >
+<!ATTLIST %and.qname;    
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %or.qname;  EMPTY >
+<!ATTLIST %or.qname;    
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %xor.qname;  EMPTY >
+<!ATTLIST %xor.qname;    
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ENTITY % clogicop1ary             
+     "%not.qname;" >
+
+<!ELEMENT %not.qname;  EMPTY >
+<!ATTLIST %not.qname;    
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ENTITY % clogicop2ary             
+     "%implies.qname;" >
+
+<!ELEMENT %implies.qname;  EMPTY >
+<!ATTLIST %implies.qname;    
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ENTITY % ccalcop                  
+     "%log.qname; | %int.qname; | %diff.qname; | %partialdiff.qname; |
+      %divergence.qname; | %grad.qname; | %curl.qname; | %laplacian.qname;" >
+
+<!ELEMENT %divergence.qname;  EMPTY >
+<!ATTLIST %divergence.qname;     
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %grad.qname;  EMPTY >
+<!ATTLIST %grad.qname;  
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %curl.qname;  EMPTY >
+<!ATTLIST %curl.qname;     
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %laplacian.qname;  EMPTY >
+<!ATTLIST %laplacian.qname;     
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %log.qname;  EMPTY >
+<!ATTLIST %log.qname;   
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %int.qname;  EMPTY >
+<!ATTLIST %int.qname;    
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %diff.qname;  EMPTY >
+<!ATTLIST %diff.qname;   
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %partialdiff.qname;  EMPTY >
+<!ATTLIST %partialdiff.qname;  
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ENTITY % ccalcop1ary              
+     "%ln.qname;" >
+
+<!ELEMENT %ln.qname;  EMPTY >
+<!ATTLIST %ln.qname;   
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ENTITY % csetop1ary               
+     "%card.qname;" >
+
+<!ELEMENT %card.qname;  EMPTY >
+<!ATTLIST %card.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ENTITY % csetop2ary               
+     "%setdiff.qname;" >
+
+<!ELEMENT %setdiff.qname;  EMPTY >
+<!ATTLIST %setdiff.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ENTITY % csetopnary               
+     "%union.qname; | %intersect.qname; | %cartesianproduct.qname; " >
+
+<!ELEMENT %union.qname;  EMPTY >
+<!ATTLIST %union.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %intersect.qname;  EMPTY >
+<!ATTLIST %intersect.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %cartesianproduct.qname;  EMPTY >
+<!ATTLIST %cartesianproduct.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ENTITY % cseqop                   
+     "%sum.qname; | %product.qname; | %limit.qname;" >
+
+<!ELEMENT %sum.qname;  EMPTY >
+<!ATTLIST %sum.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %product.qname;  EMPTY >
+<!ATTLIST %product.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %limit.qname;  EMPTY >
+<!ATTLIST %limit.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ENTITY % ctrigop                  
+     "%sin.qname; | %cos.qname; | %tan.qname; 
+      | %sec.qname; | %csc.qname; | %cot.qname; 
+      | %sinh.qname; | %cosh.qname; | %tanh.qname; 
+      | %sech.qname; | %csch.qname; | %coth.qname; 
+      | %arcsin.qname; | %arccos.qname; | %arctan.qname;
+      | %arccosh.qname; | %arccot.qname; | %arccoth.qname;
+      | %arccsc.qname; | %arccsch.qname; | %arcsec.qname;
+      | %arcsech.qname; | %arcsinh.qname; | %arctanh.qname;
+      " >
+
+<!ELEMENT %sin.qname;  EMPTY >
+<!ATTLIST %sin.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %cos.qname;  EMPTY >
+<!ATTLIST %cos.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %tan.qname;  EMPTY >
+<!ATTLIST %tan.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %sec.qname;  EMPTY >
+<!ATTLIST %sec.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %csc.qname;  EMPTY >
+<!ATTLIST %csc.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %cot.qname;  EMPTY >
+<!ATTLIST %cot.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %sinh.qname;  EMPTY >
+<!ATTLIST %sinh.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %cosh.qname;  EMPTY >
+<!ATTLIST %cosh.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %tanh.qname;  EMPTY >
+<!ATTLIST %tanh.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %sech.qname;  EMPTY >
+<!ATTLIST %sech.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %csch.qname;  EMPTY >
+<!ATTLIST %csch.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %coth.qname;  EMPTY >
+<!ATTLIST %coth.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %arcsin.qname;  EMPTY >
+<!ATTLIST %arcsin.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %arccos.qname;  EMPTY >
+<!ATTLIST %arccos.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %arctan.qname;  EMPTY >
+<!ATTLIST %arctan.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %arccosh.qname;  EMPTY >
+<!ATTLIST %arccosh.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+
+<!ELEMENT %arccot.qname;  EMPTY >
+<!ATTLIST %arccot.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %arccoth.qname;  EMPTY >
+<!ATTLIST %arccoth.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+
+<!ELEMENT %arccsc.qname;  EMPTY >
+<!ATTLIST %arccsc.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %arccsch.qname;  EMPTY >
+<!ATTLIST %arccsch.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %arcsec.qname;  EMPTY >
+<!ATTLIST %arcsec.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %arcsech.qname;  EMPTY >
+<!ATTLIST %arcsech.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %arcsinh.qname;  EMPTY >
+<!ATTLIST %arcsinh.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %arctanh.qname;  EMPTY >
+<!ATTLIST %arctanh.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+
+
+<!ENTITY % cstatopnary              
+     "%mean.qname; | %sdev.qname; |
+      %variance.qname; | %median.qname; |
+      %mode.qname;" >
+
+<!ELEMENT %mean.qname;  EMPTY >
+<!ATTLIST %mean.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %sdev.qname;  EMPTY >
+<!ATTLIST %sdev.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %variance.qname;  EMPTY >
+<!ATTLIST %variance.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %median.qname;  EMPTY >
+<!ATTLIST %median.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %mode.qname;  EMPTY >
+<!ATTLIST %mode.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ENTITY % cstatopmoment            
+     "%moment.qname;" >
+
+<!ELEMENT %moment.qname;  EMPTY >
+<!ATTLIST %moment.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ENTITY % clalgop1ary              
+     "%determinant.qname; |
+      %transpose.qname;" >
+
+<!ELEMENT %determinant.qname;  EMPTY >
+<!ATTLIST %determinant.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %transpose.qname;  EMPTY >
+<!ATTLIST %transpose.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ENTITY % clalgop2ary              
+     "%vectorproduct.qname; 
+      | %scalarproduct.qname; 
+      | %outerproduct.qname;" >
+
+<!ELEMENT %vectorproduct.qname;  EMPTY >
+<!ATTLIST %vectorproduct.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %scalarproduct.qname;  EMPTY >
+<!ATTLIST %scalarproduct.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %outerproduct.qname;  EMPTY >
+<!ATTLIST %outerproduct.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ENTITY % clalgopnary              
+     "%selector.qname;" >
+
+<!ELEMENT %selector.qname;  EMPTY >
+<!ATTLIST %selector.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!-- Content elements: relations -->
+
+<!ENTITY % cgenrel2ary             
+     "%neq.qname; | %factorof.qname;" >
+
+<!ELEMENT %neq.qname;  EMPTY >
+<!ATTLIST %neq.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %factorof.qname;  EMPTY >
+<!ATTLIST %factorof.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ENTITY % cgenrelnary              
+     "%eq.qname; | %leq.qname; | %lt.qname; | %geq.qname; 
+      | %gt.qname;| %equivalent.qname; | %approx.qname;" >
+
+<!ELEMENT %eq.qname;  EMPTY >
+<!ATTLIST %eq.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %equivalent.qname;  EMPTY >
+<!ATTLIST %equivalent.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %approx.qname;  EMPTY >
+<!ATTLIST %approx.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %gt.qname;  EMPTY >
+<!ATTLIST %gt.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %lt.qname;  EMPTY >
+<!ATTLIST %lt.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %geq.qname;  EMPTY >
+<!ATTLIST %geq.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %leq.qname;  EMPTY >
+<!ATTLIST %leq.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ENTITY % csetrel2ary              
+     "%in.qname; | %notin.qname; | %notsubset.qname; | %notprsubset.qname;" >
+
+<!ELEMENT %in.qname;  EMPTY >
+<!ATTLIST %in.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %notin.qname;  EMPTY >
+<!ATTLIST %notin.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %notsubset.qname;  EMPTY >
+<!ATTLIST %notsubset.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %notprsubset.qname;  EMPTY >
+<!ATTLIST %notprsubset.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ENTITY % csetrelnary       
+     "%subset.qname; | %prsubset.qname;" >
+
+<!ELEMENT %subset.qname;  EMPTY >
+<!ATTLIST %subset.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ELEMENT %prsubset.qname;  EMPTY >
+<!ATTLIST %prsubset.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+>
+
+<!ENTITY % cseqrel2ary              
+     "%tendsto.qname;" >
+
+<!ELEMENT %tendsto.qname;  EMPTY >
+<!ATTLIST %tendsto.qname;
+      %MATHML.Common.attrib;
+      %att-definition;
+      %att-encoding;
+      %att-type;
+>
+
+<!-- Content elements: quantifiers -->
+
+<!ENTITY % cquantifier            
+     "%lowlimit.qname; | %uplimit.qname; | %bvar.qname; 
+      | %degree.qname; | %logbase.qname;
+      | %momentabout.qname; | %domainofapplication.qname; " >
+
+<!ATTLIST %lowlimit.qname;
+      %MATHML.Common.attrib;
+>
+
+<!ATTLIST %uplimit.qname;
+      %MATHML.Common.attrib;
+>
+
+<!ATTLIST %bvar.qname;
+      %MATHML.Common.attrib;
+>
+
+<!ATTLIST %degree.qname;
+      %MATHML.Common.attrib;
+>
+
+<!ATTLIST %logbase.qname;
+      %MATHML.Common.attrib;
+>
+
+<!ATTLIST %momentabout.qname;
+      %MATHML.Common.attrib;
+>
+
+<!ATTLIST %domainofapplication.qname;
+      %MATHML.Common.attrib;
+>
+
+<!-- Operator groups -->
+
+<!ENTITY % cop1ary                  
+     "%cfuncop1ary; | %carithop1ary; | %clogicop1ary; |
+      %ccalcop1ary; | %ctrigop; | %clalgop1ary; |
+      %csetop1ary;" >
+
+<!ENTITY % cop2ary                  
+     "%carithop2ary; | %clogicop2ary;| %clalgop2ary; | %csetop2ary;" >
+
+<!ENTITY % copnary                  
+     "%cfuncopnary; | %carithopnary; | %clogicopnary; |
+      %csetopnary; | %cstatopnary; | %clalgopnary;" >
+
+<!ENTITY % copmisc                  
+     "%carithoproot; | %carithop1or2ary; | %ccalcop; |
+      %cseqop; | %cstatopmoment; | %clogicopquant;" >
+
+<!-- Relation groups -->
+
+<!ENTITY % crel2ary                 
+     "%cgenrel2ary; | %csetrel2ary; | %cseqrel2ary;" >
+
+<!ENTITY % crelnary                 
+     "%cgenrelnary; | %csetrelnary;" >
+
+<!-- Content constructs: all -->
+
+<!ENTITY % Content                  
+     "%ctoken; | %cspecial; | %cother; | %csemantics; | %c0ary;
+      | %cconstructor; | %cquantifier; | %cop1ary; | %cop2ary; 
+      | %copnary; |%copmisc; | %crel2ary; | %crelnary;" >
+
+<!-- Content constructs for substitution in presentation structures -->
+
+<!ENTITY % ContInPres               
+     "%ci.qname; |%csymbol.qname;| %cn.qname; | %c0ary; |
+      %apply.qname; | %fn.qname; |
+      %lambda.qname; | %reln.qname; |
+      %cconstructor; |
+      %semantics.qname; |%declare.qname;" >
+
+<!-- ............................................................. -->
+<!-- Recursive definition for content of expressions. Include
+     presentation constructs at lowest level so presentation
+     layout schemata hold presentation or content elements.
+     Include content constructs at lowest level so content
+     elements hold PCDATA or presentation elements at leaf
+     level (for permitted substitutable elements in context)
+-->
+
+<!ENTITY % ContentExpression        
+     "(%Content; | %PresInCont;)*" >
+<!ENTITY % PresExpression      
+     "(%Presentation; | %ContInPres;)*" >
+<!ENTITY % MathExpression           
+     "(%PresInCont; | %ContInPres;)*" >
+
+<!-- PCDATA or MathML character elements -->
+<!ENTITY % MathMLCharacters         
+     "#PCDATA | %mglyph.qname; " >
+
+<!-- Content elements: tokens                       -->
+<!-- (may contain embedded presentation constructs) -->
+
+<!ELEMENT %ci.qname;                 (%MathMLCharacters; | %PresInCont;)* >
+<!ELEMENT %csymbol.qname;            (%MathMLCharacters; | %PresInCont;)* >
+<!ELEMENT %cn.qname;                 (%MathMLCharacters; | %sep.qname; | %PresInCont;)* >
+
+<!-- Content elements: special -->
+
+<!ELEMENT %apply.qname;              (%ContentExpression;) >
+<!ELEMENT %reln.qname;               (%ContentExpression;) >
+<!ELEMENT %lambda.qname;             (%ContentExpression;) >
+
+<!-- Content elements: other -->
+
+<!ELEMENT %condition.qname;          (%ContentExpression;) >
+<!ELEMENT %declare.qname;            (%ContentExpression;) >
+
+<!-- Content elements: semantics -->
+
+<!ELEMENT %semantics.qname;          (%ContentExpression;) >
+<!ENTITY % Annotation.content  "( #PCDATA )" >
+<!ELEMENT %annotation.qname;         %Annotation.content; >
+
+<!ENTITY % Annotation-xml.content "ANY" >
+<!ELEMENT %annotation-xml.qname;     %Annotation-xml.content; >
+
+<!-- Content elements: constructors -->
+
+<!ELEMENT %interval.qname;           (%ContentExpression;) >
+<!ELEMENT %set.qname;                (%ContentExpression;) >
+<!ELEMENT %list.qname;               (%ContentExpression;) >
+<!ELEMENT %vector.qname;             (%ContentExpression;) >
+<!ELEMENT %matrix.qname;             (%ContentExpression;) >
+<!ELEMENT %matrixrow.qname;          (%ContentExpression;) >
+
+<!ELEMENT %piecewise.qname;          ((%piece.qname;)*, (%otherwise.qname;)? ) >
+<!ELEMENT %piece.qname;              (%ContentExpression;) >
+<!ELEMENT %otherwise.qname;          (%ContentExpression;) >
+
+<!-- Content elements: operator (user-defined) -->
+
+<!ELEMENT %fn.qname;                 (%ContentExpression;) >
+
+<!-- Content elements: quantifiers -->
+
+<!ELEMENT %lowlimit.qname;           (%ContentExpression;) >
+<!ELEMENT %uplimit.qname;            (%ContentExpression;) >
+<!ELEMENT %bvar.qname;               (%ContentExpression;) >
+<!ELEMENT %degree.qname;             (%ContentExpression;) >
+<!ELEMENT %logbase.qname;            (%ContentExpression;) >
+<!ELEMENT %momentabout.qname;        (%ContentExpression;) >
+<!ELEMENT %domainofapplication.qname; (%ContentExpression;) >
+
+<!-- ............................................................. -->
+<!-- Presentation layout schemata contain tokens,
+     layout and content schemata.
+-->
+
+<!ELEMENT %mstyle.qname;             (%PresExpression;) >
+<!ELEMENT %merror.qname;             (%PresExpression;) >
+<!ELEMENT %mphantom.qname;           (%PresExpression;) >
+<!ELEMENT %mrow.qname;               (%PresExpression;) >
+<!ELEMENT %mfrac.qname;              (%PresExpression;) >
+<!ELEMENT %msqrt.qname;              (%PresExpression;) >
+<!ELEMENT %menclose.qname;           (%PresExpression;) >
+<!ELEMENT %mroot.qname;              (%PresExpression;) >
+<!ELEMENT %msub.qname;               (%PresExpression;) >
+<!ELEMENT %msup.qname;               (%PresExpression;) >
+<!ELEMENT %msubsup.qname;            (%PresExpression;) >
+<!ELEMENT %mmultiscripts.qname;      (%PresExpression;) >
+<!ELEMENT %munder.qname;             (%PresExpression;) >
+<!ELEMENT %mover.qname;              (%PresExpression;) >
+<!ELEMENT %munderover.qname;         (%PresExpression;) >
+<!ELEMENT %mtable.qname;             (%PresExpression;) >
+<!ELEMENT %mtr.qname;                (%PresExpression;) >
+<!ELEMENT %mlabeledtr.qname;         (%PresExpression;) >
+<!ELEMENT %mtd.qname;                (%PresExpression;) >
+<!ELEMENT %maction.qname;            (%PresExpression;) >
+<!ELEMENT %mfenced.qname;            (%PresExpression;) >
+<!ELEMENT %mpadded.qname;            (%PresExpression;) >
+
+<!-- Presentation elements contain PCDATA or malignmark constructs. -->
+
+<!ELEMENT %mi.qname;                 (%MathMLCharacters; |
+      %malignmark.qname;)* >
+<!ELEMENT %mn.qname;                 (%MathMLCharacters; |
+      %malignmark.qname;)* >
+<!ELEMENT %mo.qname;                 (%MathMLCharacters; |
+      %malignmark.qname;)* >
+<!ELEMENT %mtext.qname;              (%MathMLCharacters; |
+      %malignmark.qname;)* >
+<!ELEMENT %ms.qname;                 (%MathMLCharacters; |
+      %malignmark.qname;)* >
+
+<!-- Browser interface definition  ............................... -->
+
+<!-- Attributes for top-level element "math" -->
+
+<!ENTITY % att-macros               
+     "macros       CDATA                    #IMPLIED" >
+<!ENTITY % att-mode                 
+     "mode         CDATA                    #IMPLIED" >
+<!ENTITY % att-display                
+     "display      CDATA                    #IMPLIED" >
+
+<!ENTITY % att-topinfo          
+     "%MATHML.Common.attrib;
+      %att-macros;
+      %att-mode;
+      %att-display;" >
+
+<!-- Attributes for browser interface element -->
+
+<!ENTITY % att-baseline             
+     "baseline     CDATA                    #IMPLIED" >
+<!ENTITY % att-overflow            
+     "overflow  ( scroll | elide | truncate | scale ) 'scroll'" >
+<!ENTITY % att-altimg               
+     "altimg       CDATA                    #IMPLIED" >
+<!ENTITY % att-alttext           
+     "alttext      CDATA                    #IMPLIED" >
+
+<!ENTITY % att-browif           
+     "%att-type;
+      %att-name;
+      %att-height;
+      %att-width;
+      %att-baseline;
+      %att-overflow;
+      %att-altimg;
+      %att-alttext;" >
+
+<!-- ............................................................. -->
+<!-- The top-level element "math" contains MathML encoded
+     mathematics. The "math" element has the browser info
+     attributes iff it is also the browser interface element.
+-->
+
+<!ELEMENT %math.qname;               (%MathExpression;) >
+
+<!ATTLIST %math.qname;
+      %att-topinfo;
+      %att-browif; >
+
+<!-- MathML Character Entities .............................................. -->
+<!ENTITY % mathml-charent.module "INCLUDE" >
+<![%mathml-charent.module;[
+<!-- Entity sets from ISO Technical Report 9573-13 ..... -->
+
+<!ENTITY % ent-isoamsa
+      PUBLIC "-//W3C//ENTITIES Added Math Symbols: Arrow Relations for MathML 2.0//EN"
+             "isoamsa.ent" >
+
+
+<!ENTITY % ent-isoamsb
+      PUBLIC "-//W3C//ENTITIES Added Math Symbols: Binary Operators for MathML 2.0//EN"
+             "isoamsb.ent" >
+
+
+<!ENTITY % ent-isoamsc
+      PUBLIC "-//W3C//ENTITIES Added Math Symbols: Delimiters for MathML 2.0//EN"
+             "isoamsc.ent" >
+
+
+<!ENTITY % ent-isoamsn
+      PUBLIC "-//W3C//ENTITIES Added Math Symbols: Negated Relations for MathML 2.0//EN"
+             "isoamsn.ent" >
+
+
+<!ENTITY % ent-isoamso
+      PUBLIC "-//W3C//ENTITIES Added Math Symbols: Ordinary for MathML 2.0//EN"
+             "isoamso.ent" >
+
+
+<!ENTITY % ent-isoamsr
+      PUBLIC "-//W3C//ENTITIES Added Math Symbols: Relations for MathML 2.0//EN"
+             "isoamsr.ent" >
+
+
+<!ENTITY % ent-isogrk3
+      PUBLIC "-//W3C//ENTITIES Greek Symbols for MathML 2.0//EN"
+             "isogrk3.ent" >
+
+
+<!ENTITY % ent-isomfrk
+      PUBLIC "-//W3C//ENTITIES Math Alphabets: Fraktur for MathML 2.0//EN"
+             "isomfrk.ent" >
+
+
+<!ENTITY % ent-isomopf
+      PUBLIC "-//W3C//ENTITIES Math Alphabets: Open Face for MathML 2.0//EN"
+             "isomopf.ent" >
+
+
+<!ENTITY % ent-isomscr
+      PUBLIC "-//W3C//ENTITIES Math Alphabets: Script for MathML 2.0//EN"
+             "isomscr.ent" >
+
+
+<!ENTITY % ent-isotech
+      PUBLIC "-//W3C//ENTITIES General Technical for MathML 2.0//EN"
+             "isotech.ent" >
+
+
+<!-- Entity sets from informative annex to ISO 8879:1986 (SGML) ....... -->
+
+<!ENTITY % ent-isobox
+      PUBLIC "-//W3C//ENTITIES Box and Line Drawing for MathML 2.0//EN"
+             "isobox.ent" >
+
+
+<!ENTITY % ent-isocyr1
+      PUBLIC "-//W3C//ENTITIES Russian Cyrillic for MathML 2.0//EN"
+             "isocyr1.ent" >
+
+
+<!ENTITY % ent-isocyr2
+      PUBLIC "-//W3C//ENTITIES Non-Russian Cyrillic for MathML 2.0//EN"
+             "isocyr2.ent" >
+
+
+<!ENTITY % ent-isodia
+      PUBLIC "-//W3C//ENTITIES Diacritical Marks for MathML 2.0//EN"
+             "isodia.ent" >
+
+
+<!ENTITY % ent-isolat1
+      PUBLIC "-//W3C//ENTITIES Added Latin 1 for MathML 2.0//EN"
+             "isolat1.ent" >
+
+
+<!ENTITY % ent-isolat2
+      PUBLIC "-//W3C//ENTITIES Added Latin 2 for MathML 2.0//EN"
+             "isolat2.ent" >
+
+
+<!ENTITY % ent-isonum
+      PUBLIC "-//W3C//ENTITIES Numeric and Special Graphic for MathML 2.0//EN"
+             "isonum.ent" >
+
+
+<!ENTITY % ent-isopub
+      PUBLIC "-//W3C//ENTITIES Publishing for MathML 2.0//EN"
+             "isopub.ent" >
+
+
+<!-- New characters defined by MathML ............................ -->
+
+<!ENTITY % ent-mmlextra
+      PUBLIC "-//W3C//ENTITIES Extra for MathML 2.0//EN"
+             "mmlextra.ent" >
+
+
+<!-- MathML aliases for characters defined above ................. -->
+
+<!ENTITY % ent-mmlalias
+      PUBLIC "-//W3C//ENTITIES Aiases for MathML 2.0//EN"
+             "mmlalias.ent" >
+
+
+<!-- end of MathML Character Entity section -->]]>
+
+<!-- Revision History:
+
+       Initial draft (syntax = XML) 1997-05-09
+          Stephen Buswell
+       Revised 1997-05-14
+          Robert Miner
+       Revised 1997-06-29 and 1997-07-02
+          Stephen Buswell
+       Revised 1997-12-15
+          Stephen Buswell
+       Revised 1998-02-08
+          Stephen Buswell
+       Revised 1998-04-04
+          Stephen Buswell
+       Entities and small revisions 1999-02-21
+          David Carlisle
+       Added attribute definitionURL to ci and cn 1999-10-11
+          Nico Poppelier
+       Additions for MathML 2  1999-12-16
+          David Carlisle
+       Namespace support 2000-01-14
+          David Carlisle
+       XHTML Compatibility 2000-02-23
+          Murray Altheim
+       New content elements 2000-03-26
+          David Carlisle
+       Further revisions for MathML2 CR draft 2000-07-11
+          David Carlisle
+       Further revisions for MathML2 CR draft 2000-10-31
+          David Carlisle
+
+-->
+
+<!-- end of MathML 2.0 DTD  ................................................ -->
+<!-- ....................................................................... -->
+
+
+<!--
+     File isoamsa.ent produced by the XSL script mmldtd.xsl
+     from input data in unicode.xml.
+
+     Please report any errors to 
+     David Carlisle <davidc@nag.co.uk>.
+
+     The numeric character values assigned to each entity
+     (should) match either official Unicode assignments
+     or assignments provisionally allocated by the
+     Unicode Consortium based on the characters in the `STIX'
+     propsal for mathematics. Note that these assignments
+     have not been ratified by the corresponding ISO
+     committee and thus should be considered liable to
+     change.
+
+     Entity names in this file are derived from files carrying the
+     following notice:
+
+     (C) International Organization for Standardization 1991
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY angzarr          "&#x0237C;" ><!--angle with down zig-zag arrow -->
+<!ENTITY cirmid           "&#x02AEF;" ><!--circle, mid below -->
+<!ENTITY cudarrl          "&#x02938;" ><!--left, curved, down arrow -->
+<!ENTITY cudarrr          "&#x02935;" ><!--right, curved, down arrow -->
+<!ENTITY cularr           "&#x021B6;" ><!--/curvearrowleft A: left curved arrow -->
+<!ENTITY cularrp          "&#x0293D;" ><!--curved left arrow with plus -->
+<!ENTITY curarr           "&#x021B7;" ><!--/curvearrowright A: rt curved arrow -->
+<!ENTITY curarrm          "&#x0293C;" ><!--curved right arrow with minus -->
+<!ENTITY dArr             "&#x021D3;" ><!--/Downarrow A: down dbl arrow -->
+<!ENTITY Darr             "&#x021A1;" ><!--down two-headed arrow -->
+<!ENTITY ddarr            "&#x021CA;" ><!--/downdownarrows A: two down arrows -->
+<!ENTITY DDotrahd         "&#x02911;" ><!--right arrow with dotted stem -->
+<!ENTITY dfisht           "&#x0297F;" ><!--down fish tail -->
+<!ENTITY dHar             "&#x02965;" ><!--down harpoon-left, down harpoon-right -->
+<!ENTITY dharl            "&#x021C3;" ><!--/downharpoonleft A: dn harpoon-left -->
+<!ENTITY dharr            "&#x021C2;" ><!--/downharpoonright A: down harpoon-rt -->
+<!ENTITY duarr            "&#x021F5;" ><!--down arrow, up arrow -->
+<!ENTITY duhar            "&#x0296F;" ><!--down harp, up harp -->
+<!ENTITY dzigrarr         "&#x0F5A2;" ><!--right long zig-zag arrow -->
+<!ENTITY erarr            "&#x02971;" ><!--equal, right arrow below -->
+<!ENTITY harr             "&#x02194;" ><!--/leftrightarrow A: l&r arrow -->
+<!ENTITY hArr             "&#x021D4;" ><!--/Leftrightarrow A: l&r dbl arrow -->
+<!ENTITY harrcir          "&#x02948;" ><!--left and right arrow with a circle -->
+<!ENTITY harrw            "&#x021AD;" ><!--/leftrightsquigarrow A: l&r arr-wavy -->
+<!ENTITY hoarr            "&#x021FF;" ><!--horizontal open arrow -->
+<!ENTITY imof             "&#x022B7;" ><!--image of -->
+<!ENTITY lAarr            "&#x021DA;" ><!--/Lleftarrow A: left triple arrow -->
+<!ENTITY Larr             "&#x0219E;" ><!--/twoheadleftarrow A: -->
+<!ENTITY larrbfs          "&#x0291F;" ><!--left arrow-bar, filled square -->
+<!ENTITY larrfs           "&#x0291D;" ><!--left arrow, filled square -->
+<!ENTITY larrhk           "&#x021A9;" ><!--/hookleftarrow A: left arrow-hooked -->
+<!ENTITY larrlp           "&#x021AB;" ><!--/looparrowleft A: left arrow-looped -->
+<!ENTITY larrpl           "&#x02939;" ><!--left arrow, plus -->
+<!ENTITY larrsim          "&#x02973;" ><!--left arrow, similar -->
+<!ENTITY larrtl           "&#x021A2;" ><!--/leftarrowtail A: left arrow-tailed -->
+<!ENTITY latail           "&#x02919;" ><!--left arrow-tail -->
+<!ENTITY lAtail           "&#x0291B;" ><!--left double arrow-tail -->
+<!ENTITY lbarr            "&#x0290C;" ><!--left broken arrow -->
+<!ENTITY lBarr            "&#x0290E;" ><!--left doubly broken arrow -->
+<!ENTITY ldca             "&#x02936;" ><!--left down curved arrow -->
+<!ENTITY ldrdhar          "&#x02967;" ><!--left harpoon-down over right harpoon-down -->
+<!ENTITY ldrushar         "&#x0294B;" ><!--left-down-right-up harpoon -->
+<!ENTITY ldsh             "&#x021B2;" ><!--left down angled arrow -->
+<!ENTITY lfisht           "&#x0297C;" ><!--left fish tail -->
+<!ENTITY lHar             "&#x02962;" ><!--left harpoon-up over left harpoon-down -->
+<!ENTITY lhard            "&#x021BD;" ><!--/leftharpoondown A: l harpoon-down -->
+<!ENTITY lharu            "&#x021BC;" ><!--/leftharpoonup A: left harpoon-up -->
+<!ENTITY lharul           "&#x0296A;" ><!--left harpoon-up over long dash -->
+<!ENTITY llarr            "&#x021C7;" ><!--/leftleftarrows A: two left arrows -->
+<!ENTITY llhard           "&#x0296B;" ><!--left harpoon-down below long dash -->
+<!ENTITY loarr            "&#x021FD;" ><!--left open arrow -->
+<!ENTITY lrarr            "&#x021C6;" ><!--/leftrightarrows A: l arr over r arr -->
+<!ENTITY lrhar            "&#x021CB;" ><!--/leftrightharpoons A: l harp over r -->
+<!ENTITY lrhard           "&#x0296D;" ><!--right harpoon-down below long dash -->
+<!ENTITY lsh              "&#x021B0;" ><!--/Lsh A: -->
+<!ENTITY lurdshar         "&#x0294A;" ><!--left-up-right-down harpoon -->
+<!ENTITY luruhar          "&#x02966;" ><!--left harpoon-up over right harpoon-up -->
+<!ENTITY map              "&#x021A6;" ><!--/mapsto A: -->
+<!ENTITY Map              "&#x02905;" ><!--twoheaded mapsto -->
+<!ENTITY midcir           "&#x02AF0;" ><!--mid, circle below  -->
+<!ENTITY mumap            "&#x022B8;" ><!--/multimap A: -->
+<!ENTITY nearhk           "&#x02924;" ><!--NE arrow-hooked -->
+<!ENTITY nearr            "&#x02197;" ><!--/nearrow A: NE pointing arrow -->
+<!ENTITY neArr            "&#x021D7;" ><!--NE pointing dbl arrow -->
+<!ENTITY nesear           "&#x02928;" ><!--/toea A: NE & SE arrows -->
+<!ENTITY nharr            "&#x021AE;" ><!--/nleftrightarrow A: not l&r arrow -->
+<!ENTITY nhArr            "&#x021CE;" ><!--/nLeftrightarrow A: not l&r dbl arr -->
+<!ENTITY nlarr            "&#x0219A;" ><!--/nleftarrow A: not left arrow -->
+<!ENTITY nlArr            "&#x021CD;" ><!--/nLeftarrow A: not implied by -->
+<!ENTITY nrarr            "&#x0219B;" ><!--/nrightarrow A: not right arrow -->
+<!ENTITY nrArr            "&#x021CF;" ><!--/nRightarrow A: not implies -->
+<!ENTITY nrarrc           "&#x02933;&#x00338;" ><!--not right arrow-curved -->
+<!ENTITY nrarrw           "&#x0219D;&#x00338;" ><!--not right arrow-wavy -->
+<!ENTITY nvHarr           "&#x021CE;" ><!--not, vert, left and right double arrow  -->
+<!ENTITY nvlArr           "&#x021CD;" ><!--not, vert, left double arrow -->
+<!ENTITY nvrArr           "&#x021CF;" ><!--not, vert, right double arrow -->
+<!ENTITY nwarhk           "&#x02923;" ><!--NW arrow-hooked -->
+<!ENTITY nwarr            "&#x02196;" ><!--/nwarrow A: NW pointing arrow -->
+<!ENTITY nwArr            "&#x021D6;" ><!--NW pointing dbl arrow -->
+<!ENTITY nwnear           "&#x02927;" ><!--NW & NE arrows -->
+<!ENTITY olarr            "&#x021BA;" ><!--/circlearrowleft A: l arr in circle -->
+<!ENTITY orarr            "&#x021BB;" ><!--/circlearrowright A: r arr in circle -->
+<!ENTITY origof           "&#x022B6;" ><!--original of -->
+<!ENTITY rAarr            "&#x021DB;" ><!--/Rrightarrow A: right triple arrow -->
+<!ENTITY Rarr             "&#x021A0;" ><!--/twoheadrightarrow A: -->
+<!ENTITY rarrap           "&#x02975;" ><!--approximate, right arrow above -->
+<!ENTITY rarrbfs          "&#x02920;" ><!--right arrow-bar, filled square -->
+<!ENTITY rarrc            "&#x02933;" ><!--right arrow-curved -->
+<!ENTITY rarrfs           "&#x0291E;" ><!--right arrow, filled square -->
+<!ENTITY rarrhk           "&#x021AA;" ><!--/hookrightarrow A: rt arrow-hooked -->
+<!ENTITY rarrlp           "&#x021AC;" ><!--/looparrowright A: rt arrow-looped -->
+<!ENTITY rarrpl           "&#x02945;" ><!--right arrow, plus -->
+<!ENTITY rarrsim          "&#x02974;" ><!--right arrow, similar -->
+<!ENTITY rarrtl           "&#x021A3;" ><!--/rightarrowtail A: rt arrow-tailed -->
+<!ENTITY Rarrtl           "&#x02916;" ><!--right two-headed arrow with tail -->
+<!ENTITY rarrw            "&#x0219D;" ><!--/rightsquigarrow A: rt arrow-wavy -->
+<!ENTITY ratail           "&#x021A3;" ><!--right arrow-tail -->
+<!ENTITY rAtail           "&#x0291C;" ><!--right double arrow-tail -->
+<!ENTITY rbarr            "&#x0290D;" ><!--/bkarow A: right broken arrow -->
+<!ENTITY rBarr            "&#x0290F;" ><!--/dbkarow A: right doubly broken arrow -->
+<!ENTITY RBarr            "&#x02910;" ><!--/drbkarow A: twoheaded right broken arrow -->
+<!ENTITY rdca             "&#x02937;" ><!--right down curved arrow -->
+<!ENTITY rdldhar          "&#x02969;" ><!--right harpoon-down over left harpoon-down -->
+<!ENTITY rdsh             "&#x021B3;" ><!--right down angled arrow -->
+<!ENTITY rfisht           "&#x0297D;" ><!--right fish tail -->
+<!ENTITY rHar             "&#x02964;" ><!--right harpoon-up over right harpoon-down -->
+<!ENTITY rhard            "&#x021C1;" ><!--/rightharpoondown A: rt harpoon-down -->
+<!ENTITY rharu            "&#x021C0;" ><!--/rightharpoonup A: rt harpoon-up -->
+<!ENTITY rharul           "&#x0296C;" ><!--right harpoon-up over long dash -->
+<!ENTITY rlarr            "&#x021C4;" ><!--/rightleftarrows A: r arr over l arr -->
+<!ENTITY rlhar            "&#x021CC;" ><!--/rightleftharpoons A: r harp over l -->
+<!ENTITY roarr            "&#x021FE;" ><!--right open arrow -->
+<!ENTITY rrarr            "&#x021C9;" ><!--/rightrightarrows A: two rt arrows -->
+<!ENTITY rsh              "&#x021B1;" ><!--/Rsh A: -->
+<!ENTITY ruluhar          "&#x02968;" ><!--right harpoon-up over left harpoon-up -->
+<!ENTITY searhk           "&#x02925;" ><!--/hksearow A: SE arrow-hooken -->
+<!ENTITY searr            "&#x02198;" ><!--/searrow A: SE pointing arrow -->
+<!ENTITY seArr            "&#x021D8;" ><!--SE pointing dbl arrow -->
+<!ENTITY seswar           "&#x02929;" ><!--/tosa A: SE & SW arrows -->
+<!ENTITY simrarr          "&#x02972;" ><!--similar, right arrow below -->
+<!ENTITY slarr            "&#x02190;&#x0FE00;" ><!--short left arrow -->
+<!ENTITY srarr            "&#x02192;&#x0FE00;" ><!--short right arrow -->
+<!ENTITY swarhk           "&#x02926;" ><!--/hkswarow A: SW arrow-hooked -->
+<!ENTITY swarr            "&#x02199;" ><!--/swarrow A: SW pointing arrow -->
+<!ENTITY swArr            "&#x021D9;" ><!--SW pointing dbl arrow -->
+<!ENTITY swnwar           "&#x0292A;" ><!--SW & NW arrows -->
+<!ENTITY uArr             "&#x021D1;" ><!--/Uparrow A: up dbl arrow -->
+<!ENTITY Uarr             "&#x0219F;" ><!--up two-headed arrow -->
+<!ENTITY Uarrocir         "&#x02949;" ><!--up two-headed arrow above circle -->
+<!ENTITY udarr            "&#x021C5;" ><!--up arrow, down arrow -->
+<!ENTITY udhar            "&#x0296E;" ><!--up harp, down harp -->
+<!ENTITY ufisht           "&#x0297E;" ><!--up fish tail -->
+<!ENTITY uHar             "&#x02963;" ><!--up harpoon-left, up harpoon-right -->
+<!ENTITY uharl            "&#x021BF;" ><!--/upharpoonleft A: up harpoon-left -->
+<!ENTITY uharr            "&#x021BE;" ><!--/upharpoonright /restriction A: up harp-r -->
+<!ENTITY uuarr            "&#x021C8;" ><!--/upuparrows A: two up arrows -->
+<!ENTITY varr             "&#x02195;" ><!--/updownarrow A: up&down arrow -->
+<!ENTITY vArr             "&#x021D5;" ><!--/Updownarrow A: up&down dbl arrow -->
+<!ENTITY xharr            "&#x0F578;" ><!--/longleftrightarrow A: long l&r arr -->
+<!ENTITY xhArr            "&#x0F57B;" ><!--/Longleftrightarrow A: long l&r dbl arr -->
+<!ENTITY xlarr            "&#x0F576;" ><!--/longleftarrow A: long left arrow -->
+<!ENTITY xlArr            "&#x0F579;" ><!--/Longleftarrow A: long l dbl arrow -->
+<!ENTITY xmap             "&#x0F57D;" ><!--/longmapsto A: -->
+<!ENTITY xrarr            "&#x0F577;" ><!--/longrightarrow A: long right arrow -->
+<!ENTITY xrArr            "&#x0F57A;" ><!--/Longrightarrow A: long rt dbl arr -->
+<!ENTITY zigrarr          "&#x021DD;" ><!--right zig-zag arrow -->
+
+<!--
+     File isoamsb.ent produced by the XSL script mmldtd.xsl
+     from input data in unicode.xml.
+
+     Please report any errors to 
+     David Carlisle <davidc@nag.co.uk>.
+
+     The numeric character values assigned to each entity
+     (should) match either official Unicode assignments
+     or assignments provisionally allocated by the
+     Unicode Consortium based on the characters in the `STIX'
+     propsal for mathematics. Note that these assignments
+     have not been ratified by the corresponding ISO
+     committee and thus should be considered liable to
+     change.
+
+     Entity names in this file are derived from files carrying the
+     following notice:
+
+     (C) International Organization for Standardization 1991
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY ac               "&#x0290F;" ><!--most positive -->
+<!ENTITY acE              "&#x029DB;" ><!--most positive, two lines below -->
+<!ENTITY amalg            "&#x02A3F;" ><!--/amalg B: amalgamation or coproduct -->
+<!ENTITY barvee           "&#x022BD;" ><!--bar, vee -->
+<!ENTITY barwed           "&#x022BC;" ><!--/barwedge B: logical and, bar above -->
+<!ENTITY Barwed           "&#x02306;" ><!--/doublebarwedge B: log and, dbl bar above -->
+<!ENTITY bsolb            "&#x029C5;" ><!--reverse solidus in square -->
+<!ENTITY Cap              "&#x022D2;" ><!--/Cap /doublecap B: dbl intersection -->
+<!ENTITY capand           "&#x02A44;" ><!--intersection, and -->
+<!ENTITY capbrcup         "&#x02A49;" ><!--intersection, bar, union -->
+<!ENTITY capcap           "&#x02A4B;" ><!--intersection, intersection, joined -->
+<!ENTITY capcup           "&#x02A47;" ><!--intersection above union -->
+<!ENTITY capdot           "&#x02A40;" ><!--intersection, with dot -->
+<!ENTITY caps             "&#x02229;&#x0FE00;" ><!--intersection, serifs -->
+<!ENTITY ccaps            "&#x02A4D;" ><!--closed intersection, serifs -->
+<!ENTITY ccups            "&#x02A4C;" ><!--closed union, serifs -->
+<!ENTITY ccupssm          "&#x02A50;" ><!--closed union, serifs, smash product -->
+<!ENTITY coprod           "&#x02210;" ><!--/coprod L: coproduct operator -->
+<!ENTITY Cup              "&#x022D3;" ><!--/Cup /doublecup B: dbl union -->
+<!ENTITY cupbrcap         "&#x02A48;" ><!--union, bar, intersection -->
+<!ENTITY cupcap           "&#x02A46;" ><!--union above intersection -->
+<!ENTITY cupcup           "&#x02A4A;" ><!--union, union, joined -->
+<!ENTITY cupdot           "&#x0228D;" ><!--union, with dot -->
+<!ENTITY cupor            "&#x02A45;" ><!--union, or -->
+<!ENTITY cups             "&#x0222A;&#x0FE00;" ><!--union, serifs -->
+<!ENTITY cuvee            "&#x022CE;" ><!--/curlyvee B: curly logical or -->
+<!ENTITY cuwed            "&#x022CF;" ><!--/curlywedge B: curly logical and -->
+<!ENTITY dagger           "&#x02020;" ><!--/dagger B: dagger relation -->
+<!ENTITY Dagger           "&#x02021;" ><!--/ddagger B: double dagger relation -->
+<!ENTITY diam             "&#x022C4;" ><!--/diamond B: open diamond -->
+<!ENTITY divonx           "&#x022C7;" ><!--/divideontimes B: division on times -->
+<!ENTITY eplus            "&#x02A71;" ><!--equal, plus -->
+<!ENTITY hercon           "&#x022B9;" ><!--hermitian conjugate matrix -->
+<!ENTITY intcal           "&#x022BA;" ><!--/intercal B: intercal -->
+<!ENTITY iprod            "&#x02A3C;" ><!--/intprod -->
+<!ENTITY loplus           "&#x02A2D;" ><!--plus sign in left half circle -->
+<!ENTITY lotimes          "&#x02A34;" ><!--multiply sign in left half circle  -->
+<!ENTITY lthree           "&#x022CB;" ><!--/leftthreetimes B: -->
+<!ENTITY ltimes           "&#x022C9;" ><!--/ltimes B: times sign, left closed -->
+<!ENTITY midast           "&#x0002A;" ><!--/ast B: asterisk -->
+<!ENTITY minusb           "&#x0229F;" ><!--/boxminus B: minus sign in box -->
+<!ENTITY minusd           "&#x02238;" ><!--/dotminus B: minus sign, dot above -->
+<!ENTITY minusdu          "&#x02A2A;" ><!--minus sign, dot below -->
+<!ENTITY ncap             "&#x02A43;" ><!--bar, intersection -->
+<!ENTITY ncup             "&#x02A42;" ><!--bar, union -->
+<!ENTITY oast             "&#x0229B;" ><!--/circledast B: asterisk in circle -->
+<!ENTITY ocir             "&#x0229A;" ><!--/circledcirc B: small circle in circle -->
+<!ENTITY odash            "&#x0229D;" ><!--/circleddash B: hyphen in circle -->
+<!ENTITY odiv             "&#x02A38;" ><!--divide in circle -->
+<!ENTITY odot             "&#x02299;" ><!--/odot B: middle dot in circle -->
+<!ENTITY odsold           "&#x029BC;" ><!--dot, solidus, dot in circle -->
+<!ENTITY ofcir            "&#x029BF;" ><!--filled circle in circle -->
+<!ENTITY ogt              "&#x029C1;" ><!--greater-than in circle -->
+<!ENTITY ohbar            "&#x029B5;" ><!--circle with horizontal bar -->
+<!ENTITY olcir            "&#x029BE;" ><!--large circle in circle -->
+<!ENTITY olt              "&#x029C0;" ><!--less-than in circle -->
+<!ENTITY omid             "&#x029B6;" ><!--vertical bar in circle -->
+<!ENTITY ominus           "&#x02296;" ><!--/ominus B: minus sign in circle -->
+<!ENTITY opar             "&#x029B7;" ><!--parallel in circle -->
+<!ENTITY operp            "&#x029B9;" ><!--perpendicular in circle -->
+<!ENTITY oplus            "&#x02295;" ><!--/oplus B: plus sign in circle -->
+<!ENTITY osol             "&#x02298;" ><!--/oslash B: solidus in circle -->
+<!ENTITY otimes           "&#x02297;" ><!--/otimes B: multiply sign in circle -->
+<!ENTITY Otimes           "&#x02A37;" ><!--multiply sign in double circle -->
+<!ENTITY otimesas         "&#x02A36;" ><!--multiply sign in circle, circumflex accent -->
+<!ENTITY ovbar            "&#x0233D;" ><!--circle with vertical bar -->
+<!ENTITY plusacir         "&#x02A23;" ><!--plus, circumflex accent above -->
+<!ENTITY plusb            "&#x0229E;" ><!--/boxplus B: plus sign in box -->
+<!ENTITY pluscir          "&#x02A22;" ><!--plus, small circle above -->
+<!ENTITY plusdo           "&#x02214;" ><!--/dotplus B: plus sign, dot above -->
+<!ENTITY plusdu           "&#x02A25;" ><!--plus sign, dot below -->
+<!ENTITY pluse            "&#x02A72;" ><!--plus, equals -->
+<!ENTITY plussim          "&#x02A26;" ><!--plus, similar below -->
+<!ENTITY plustwo          "&#x02A27;" ><!--plus, two; Nim-addition -->
+<!ENTITY prod             "&#x0220F;" ><!--/prod L: product operator -->
+<!ENTITY race             "&#x029DA;" ><!--reverse most positive, line below -->
+<!ENTITY roplus           "&#x02A2E;" ><!--plus sign in right half circle -->
+<!ENTITY rotimes          "&#x02A35;" ><!--multiply sign in right half circle -->
+<!ENTITY rthree           "&#x022CC;" ><!--/rightthreetimes B: -->
+<!ENTITY rtimes           "&#x022CA;" ><!--/rtimes B: times sign, right closed -->
+<!ENTITY sdot             "&#x022C5;" ><!--/cdot B: small middle dot -->
+<!ENTITY sdotb            "&#x022A1;" ><!--/dotsquare /boxdot B: small dot in box -->
+<!ENTITY setmn            "&#x02216;" ><!--/setminus B: reverse solidus -->
+<!ENTITY simplus          "&#x02A24;" ><!--plus, similar above -->
+<!ENTITY smashp           "&#x02A33;" ><!--smash product -->
+<!ENTITY solb             "&#x029C4;" ><!--solidus in square -->
+<!ENTITY sqcap            "&#x02293;" ><!--/sqcap B: square intersection -->
+<!ENTITY sqcaps           "&#x02293;&#x0FE00;" ><!--square intersection, serifs -->
+<!ENTITY sqcup            "&#x02294;" ><!--/sqcup B: square union -->
+<!ENTITY sqcups           "&#x02294;&#x0FE00;" ><!--square union, serifs -->
+<!ENTITY ssetmn           "&#x02216;&#x0FE00;" ><!--/smallsetminus B: sm reverse solidus -->
+<!ENTITY sstarf           "&#x022C6;" ><!--/star B: small star, filled -->
+<!ENTITY subdot           "&#x02ABD;" ><!--subset, with dot -->
+<!ENTITY sum              "&#x02211;" ><!--/sum L: summation operator -->
+<!ENTITY supdot           "&#x02ABE;" ><!--superset, with dot -->
+<!ENTITY timesb           "&#x022A0;" ><!--/boxtimes B: multiply sign in box -->
+<!ENTITY timesbar         "&#x02A31;" ><!--multiply sign, bar below -->
+<!ENTITY timesd           "&#x02A30;" ><!--times, dot -->
+<!ENTITY tridot           "&#x025EC;" ><!--dot in triangle -->
+<!ENTITY triminus         "&#x02A3A;" ><!--minus in triangle -->
+<!ENTITY triplus          "&#x02A39;" ><!--plus in triangle -->
+<!ENTITY trisb            "&#x029CD;" ><!--triangle, serifs at bottom -->
+<!ENTITY tritime          "&#x02A3B;" ><!--multiply in triangle -->
+<!ENTITY uplus            "&#x0228E;" ><!--/uplus B: plus sign in union -->
+<!ENTITY veebar           "&#x022BB;" ><!--/veebar B: logical or, bar below -->
+<!ENTITY wedbar           "&#x02A5F;" ><!--wedge, bar below -->
+<!ENTITY wreath           "&#x02240;" ><!--/wr B: wreath product -->
+<!ENTITY xcap             "&#x022C2;" ><!--/bigcap L: intersection operator -->
+<!ENTITY xcirc            "&#x025EF;" ><!--/bigcirc B: large circle -->
+<!ENTITY xcup             "&#x022C3;" ><!--/bigcup L: union operator -->
+<!ENTITY xdtri            "&#x025BD;" ><!--/bigtriangledown B: big dn tri, open -->
+<!ENTITY xodot            "&#x02299;" ><!--/bigodot L: circle dot operator -->
+<!ENTITY xoplus           "&#x02295;" ><!--/bigoplus L: circle plus operator -->
+<!ENTITY xotime           "&#x02297;" ><!--/bigotimes L: circle times operator -->
+<!ENTITY xsqcup           "&#x02294;" ><!--/bigsqcup L: square union operator -->
+<!ENTITY xuplus           "&#x0228E;" ><!--/biguplus L: -->
+<!ENTITY xutri            "&#x025B3;" ><!--/bigtriangleup B: big up tri, open -->
+<!ENTITY xvee             "&#x022C1;" ><!--/bigvee L: logical and operator -->
+<!ENTITY xwedge           "&#x022C0;" ><!--/bigwedge L: logical or operator -->
+
+<!--
+     File isoamsc.ent produced by the XSL script mmldtd.xsl
+     from input data in unicode.xml.
+
+     Please report any errors to 
+     David Carlisle <davidc@nag.co.uk>.
+
+     The numeric character values assigned to each entity
+     (should) match either official Unicode assignments
+     or assignments provisionally allocated by the
+     Unicode Consortium based on the characters in the `STIX'
+     propsal for mathematics. Note that these assignments
+     have not been ratified by the corresponding ISO
+     committee and thus should be considered liable to
+     change.
+
+     Entity names in this file are derived from files carrying the
+     following notice:
+
+     (C) International Organization for Standardization 1991
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY dlcorn           "&#x0231E;" ><!--/llcorner O: lower left corner -->
+<!ENTITY drcorn           "&#x0231F;" ><!--/lrcorner C: lower right corner -->
+<!ENTITY gtlPar           "&#x02995;" ><!--dbl left parenthesis, greater -->
+<!ENTITY langd            "&#x02991;" ><!--left angle, dot -->
+<!ENTITY lbrke            "&#x0298B;" ><!--left bracket, equal -->
+<!ENTITY lbrksld          "&#x0298F;" ><!--left bracket, solidus bottom corner -->
+<!ENTITY lbrkslu          "&#x0298D;" ><!--left bracket, solidus top corner -->
+<!ENTITY lceil            "&#x02308;" ><!--/lceil O: left ceiling -->
+<!ENTITY lfloor           "&#x0230A;" ><!--/lfloor O: left floor -->
+<!ENTITY lmoust           "&#x023B0;" ><!--/lmoustache -->
+<!ENTITY lparlt           "&#x02993;" ><!--O: left parenthesis, lt -->
+<!ENTITY ltrPar           "&#x02996;" ><!--dbl right parenthesis, less -->
+<!ENTITY rangd            "&#x02992;" ><!--right angle, dot -->
+<!ENTITY rbrke            "&#x0298C;" ><!--right bracket, equal -->
+<!ENTITY rbrksld          "&#x0298E;" ><!--right bracket, solidus bottom corner -->
+<!ENTITY rbrkslu          "&#x02990;" ><!--right bracket, solidus top corner -->
+<!ENTITY rceil            "&#x02309;" ><!--/rceil C: right ceiling -->
+<!ENTITY rfloor           "&#x0230B;" ><!--/rfloor C: right floor -->
+<!ENTITY rmoust           "&#x023B1;" ><!--/rmoustache -->
+<!ENTITY rpargt           "&#x02994;" ><!--C: right paren, gt -->
+<!ENTITY ulcorn           "&#x0231C;" ><!--/ulcorner O: upper left corner -->
+<!ENTITY urcorn           "&#x0231D;" ><!--/urcorner C: upper right corner -->
+
+<!--
+     File isoamsn.ent produced by the XSL script mmldtd.xsl
+     from input data in unicode.xml.
+
+     Please report any errors to 
+     David Carlisle <davidc@nag.co.uk>.
+
+     The numeric character values assigned to each entity
+     (should) match either official Unicode assignments
+     or assignments provisionally allocated by the
+     Unicode Consortium based on the characters in the `STIX'
+     propsal for mathematics. Note that these assignments
+     have not been ratified by the corresponding ISO
+     committee and thus should be considered liable to
+     change.
+
+     Entity names in this file are derived from files carrying the
+     following notice:
+
+     (C) International Organization for Standardization 1991
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY gnap             "&#x02A8A;" ><!--/gnapprox N: greater, not approximate -->
+<!ENTITY gne              "&#x02269;" ><!--/gneq N: greater, not equals -->
+<!ENTITY gnE              "&#x02269;" ><!--/gneqq N: greater, not dbl equals -->
+<!ENTITY gnsim            "&#x022E7;" ><!--/gnsim N: greater, not similar -->
+<!ENTITY gvnE             "&#x02269;&#x0FE00;" ><!--/gvertneqq N: gt, vert, not dbl eq -->
+<!ENTITY lnap             "&#x02A89;" ><!--/lnapprox N: less, not approximate -->
+<!ENTITY lne              "&#x02268;" ><!--/lneq N: less, not equals -->
+<!ENTITY lnE              "&#x02268;" ><!--/lneqq N: less, not double equals -->
+<!ENTITY lnsim            "&#x022E6;" ><!--/lnsim N: less, not similar -->
+<!ENTITY lvnE             "&#x02268;&#x0FE00;" ><!--/lvertneqq N: less, vert, not dbl eq -->
+<!ENTITY nap              "&#x02249;" ><!--/napprox N: not approximate -->
+<!ENTITY napE             "&#x02A70;&#x00338;" ><!--not approximately equal or equal to -->
+<!ENTITY napid            "&#x0224B;&#x00338;" ><!--not approximately identical to -->
+<!ENTITY ncong            "&#x02247;" ><!--/ncong N: not congruent with -->
+<!ENTITY ncongdot         "&#x02A6D;&#x00338;" ><!--not congruent, dot -->
+<!ENTITY nequiv           "&#x02262;" ><!--/nequiv N: not identical with -->
+<!ENTITY nge              "&#x02271;&#x020E5;" ><!--/ngeq N: not greater-than-or-equal -->
+<!ENTITY ngE              "&#x02271;" ><!--/ngeqq N: not greater, dbl equals -->
+<!ENTITY nges             "&#x02271;" ><!--/ngeqslant N: not gt-or-eq, slanted -->
+<!ENTITY nGg              "&#x022D9;&#x00338;" ><!--not triple greater than -->
+<!ENTITY ngsim            "&#x02275;" ><!--not greater, similar -->
+<!ENTITY ngt              "&#x0226F;" ><!--/ngtr N: not greater-than -->
+<!ENTITY nGt              "&#x0226B;&#x00338;" ><!--not, vert, much greater than -->
+<!ENTITY nGtv             "&#x0226B;&#x00338;&#x0FE00;" ><!--not much greater than, variant -->
+<!ENTITY nle              "&#x02270;&#x020E5;" ><!--/nleq N: not less-than-or-equal -->
+<!ENTITY nlE              "&#x02270;" ><!--/nleqq N: not less, dbl equals -->
+<!ENTITY nles             "&#x02270;" ><!--/nleqslant N: not less-or-eq, slant -->
+<!ENTITY nLl              "&#x022D8;&#x00338;" ><!--not triple less than -->
+<!ENTITY nlsim            "&#x02274;" ><!--not less, similar -->
+<!ENTITY nlt              "&#x0226E;" ><!--/nless N: not less-than -->
+<!ENTITY nLt              "&#x0226A;&#x00338;" ><!--not, vert, much less than -->
+<!ENTITY nltri            "&#x022EA;" ><!--/ntriangleleft N: not left triangle -->
+<!ENTITY nltrie           "&#x022EC;" ><!--/ntrianglelefteq N: not l tri, eq -->
+<!ENTITY nLtv             "&#x0226A;&#x00338;&#x0FE00;" ><!--not much less than, variant -->
+<!ENTITY nmid             "&#x02224;" ><!--/nmid -->
+<!ENTITY npar             "&#x02226;" ><!--/nparallel N: not parallel -->
+<!ENTITY npr              "&#x02280;" ><!--/nprec N: not precedes -->
+<!ENTITY nprcue           "&#x022E0;" ><!--not curly precedes, eq -->
+<!ENTITY npre             "&#x02AAF;&#x00338;" ><!--/npreceq N: not precedes, equals -->
+<!ENTITY nrtri            "&#x022EB;" ><!--/ntriangleright N: not rt triangle -->
+<!ENTITY nrtrie           "&#x022ED;" ><!--/ntrianglerighteq N: not r tri, eq -->
+<!ENTITY nsc              "&#x02281;" ><!--/nsucc N: not succeeds -->
+<!ENTITY nsccue           "&#x022E1;" ><!--not succeeds, curly eq -->
+<!ENTITY nsce             "&#x02AB0;&#x00338;" ><!--/nsucceq N: not succeeds, equals -->
+<!ENTITY nsim             "&#x02241;" ><!--/nsim N: not similar -->
+<!ENTITY nsime            "&#x02244;" ><!--/nsimeq N: not similar, equals -->
+<!ENTITY nsmid            "&#x02224;&#x0FE00;" ><!--/nshortmid -->
+<!ENTITY nspar            "&#x02226;&#x0FE00;" ><!--/nshortparallel N: not short par -->
+<!ENTITY nsqsube          "&#x022E2;" ><!--not, square subset, equals -->
+<!ENTITY nsqsupe          "&#x022E3;" ><!--not, square superset, equals -->
+<!ENTITY nsub             "&#x02284;" ><!--not subset -->
+<!ENTITY nsube            "&#x02288;" ><!--/nsubseteq N: not subset, equals -->
+<!ENTITY nsubE            "&#x02288;" ><!--/nsubseteqq N: not subset, dbl eq -->
+<!ENTITY nsup             "&#x02285;" ><!--not superset -->
+<!ENTITY nsupe            "&#x02289;" ><!--/nsupseteq N: not superset, equals -->
+<!ENTITY nsupE            "&#x02289;" ><!--/nsupseteqq N: not superset, dbl eq -->
+<!ENTITY ntgl             "&#x02279;" ><!--not greater, less -->
+<!ENTITY ntlg             "&#x02278;" ><!--not less, greater -->
+<!ENTITY nvap             "&#x02249;&#x00338;" ><!--not, vert, approximate -->
+<!ENTITY nvdash           "&#x022AC;" ><!--/nvdash N: not vertical, dash -->
+<!ENTITY nvDash           "&#x022AD;" ><!--/nvDash N: not vertical, dbl dash -->
+<!ENTITY nVdash           "&#x022AE;" ><!--/nVdash N: not dbl vertical, dash -->
+<!ENTITY nVDash           "&#x022AF;" ><!--/nVDash N: not dbl vert, dbl dash -->
+<!ENTITY nvge             "&#x02271;" ><!--not, vert, greater-than-or-equal -->
+<!ENTITY nvgt             "&#x0226F;" ><!--not, vert, greater-than -->
+<!ENTITY nvle             "&#x02270;" ><!--not, vert, less-than-or-equal -->
+<!ENTITY nvlt             "&#x0226E;" ><!--not, vert, less-than -->
+<!ENTITY nvltrie          "&#x022EC;&#x00338;" ><!--not, vert, left triangle, equals -->
+<!ENTITY nvrtrie          "&#x022ED;&#x00338;" ><!--not, vert, right triangle, equals -->
+<!ENTITY nvsim            "&#x02241;&#x00338;" ><!--not, vert, similar -->
+<!ENTITY parsim           "&#x02AF3;" ><!--parallel, similar -->
+<!ENTITY prnap            "&#x022E8;" ><!--/precnapprox N: precedes, not approx -->
+<!ENTITY prnE             "&#x02AB5;" ><!--/precneqq N: precedes, not dbl eq -->
+<!ENTITY prnsim           "&#x022E8;" ><!--/precnsim N: precedes, not similar -->
+<!ENTITY rnmid            "&#x02AEE;" ><!--reverse /nmid -->
+<!ENTITY scnap            "&#x022E9;" ><!--/succnapprox N: succeeds, not approx -->
+<!ENTITY scnE             "&#x02AB6;" ><!--/succneqq N: succeeds, not dbl eq -->
+<!ENTITY scnsim           "&#x022E9;" ><!--/succnsim N: succeeds, not similar -->
+<!ENTITY simne            "&#x02246;" ><!--similar, not equals -->
+<!ENTITY solbar           "&#x0233F;" ><!--solidus, bar through -->
+<!ENTITY subne            "&#x0228A;" ><!--/subsetneq N: subset, not equals -->
+<!ENTITY subnE            "&#x0228A;" ><!--/subsetneqq N: subset, not dbl eq -->
+<!ENTITY supne            "&#x0228B;" ><!--/supsetneq N: superset, not equals -->
+<!ENTITY supnE            "&#x0228B;" ><!--/supsetneqq N: superset, not dbl eq -->
+<!ENTITY vnsub            "&#x02284;" ><!--/nsubset N: not subset, var -->
+<!ENTITY vnsup            "&#x02285;" ><!--/nsupset N: not superset, var -->
+<!ENTITY vsubne           "&#x0228A;&#x0FE00;" ><!--/varsubsetneq N: subset, not eq, var -->
+<!ENTITY vsubnE           "&#x0228A;&#x0FE00;" ><!--/varsubsetneqq N: subset not dbl eq, var -->
+<!ENTITY vsupne           "&#x0228B;&#x0FE00;" ><!--/varsupsetneq N: superset, not eq, var -->
+<!ENTITY vsupnE           "&#x0228B;&#x0FE00;" ><!--/varsupsetneqq N: super not dbl eq, var -->
+
+<!--
+     File isoamso.ent produced by the XSL script mmldtd.xsl
+     from input data in unicode.xml.
+
+     Please report any errors to 
+     David Carlisle <davidc@nag.co.uk>.
+
+     The numeric character values assigned to each entity
+     (should) match either official Unicode assignments
+     or assignments provisionally allocated by the
+     Unicode Consortium based on the characters in the `STIX'
+     propsal for mathematics. Note that these assignments
+     have not been ratified by the corresponding ISO
+     committee and thus should be considered liable to
+     change.
+
+     Entity names in this file are derived from files carrying the
+     following notice:
+
+     (C) International Organization for Standardization 1991
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY ang              "&#x02220;" ><!--/angle - angle -->
+<!ENTITY ange             "&#x029A4;" ><!--angle, equal -->
+<!ENTITY angmsd           "&#x02221;" ><!--/measuredangle - angle-measured -->
+<!ENTITY angmsdaa         "&#x029A8;" ><!--angle-measured, arrow, up, right -->
+<!ENTITY angmsdab         "&#x029A9;" ><!--angle-measured, arrow, up, left -->
+<!ENTITY angmsdac         "&#x029AA;" ><!--angle-measured, arrow, down, right -->
+<!ENTITY angmsdad         "&#x029AB;" ><!--angle-measured, arrow, down, left -->
+<!ENTITY angmsdae         "&#x029AC;" ><!--angle-measured, arrow, right, up -->
+<!ENTITY angmsdaf         "&#x029AD;" ><!--angle-measured, arrow, left, up -->
+<!ENTITY angmsdag         "&#x029AE;" ><!--angle-measured, arrow, right, down -->
+<!ENTITY angmsdah         "&#x029AF;" ><!--angle-measured, arrow, left, down -->
+<!ENTITY angrtvb          "&#x0299D;&#x0FE00;" ><!--right angle-measured -->
+<!ENTITY angrtvbd         "&#x0299D;" ><!--right angle-measured, dot -->
+<!ENTITY bbrk             "&#x023B5;" ><!--bottom square bracket -->
+<!ENTITY bemptyv          "&#x029B0;" ><!--reversed circle, slash -->
+<!ENTITY beth             "&#x02136;" ><!--/beth - beth, Hebrew -->
+<!ENTITY boxbox           "&#x029C9;" ><!--two joined squares -->
+<!ENTITY bprime           "&#x02035;" ><!--/backprime - reverse prime -->
+<!ENTITY bsemi            "&#x0204F;" ><!--reverse semi-colon -->
+<!ENTITY cemptyv          "&#x029B2;" ><!--circle, slash, small circle above -->
+<!ENTITY cirE             "&#x029C3;" ><!--circle, two horizontal stroked to the right -->
+<!ENTITY cirscir          "&#x029C2;" ><!--circle, small circle to the right -->
+<!ENTITY comp             "&#x02201;" ><!--/complement - complement sign -->
+<!ENTITY daleth           "&#x02138;" ><!--/daleth - daleth, Hebrew -->
+<!ENTITY demptyv          "&#x029B1;" ><!--circle, slash, bar above -->
+<!ENTITY ell              "&#x02113;" ><!--/ell - cursive small l -->
+<!ENTITY empty            "&#x02205;&#x0FE00;" ><!--/emptyset - zero, slash -->
+<!ENTITY emptyv           "&#x02205;" ><!--/varnothing - circle, slash -->
+<!ENTITY gimel            "&#x02137;" ><!--/gimel - gimel, Hebrew -->
+<!ENTITY iiota            "&#x02129;" ><!--inverted iota -->
+<!ENTITY image            "&#x02111;" ><!--/Im - imaginary   -->
+<!ENTITY imath            "&#x00131;" ><!--/imath - small i, no dot -->
+<!ENTITY jmath            "&#x0006A;&#x0FE00;" ><!--/jmath - small j, no dot -->
+<!ENTITY laemptyv         "&#x029B4;" ><!--circle, slash, left arrow above -->
+<!ENTITY lltri            "&#x025FA;" ><!--lower left triangle -->
+<!ENTITY lrtri            "&#x022BF;" ><!--lower right triangle -->
+<!ENTITY mho              "&#x02127;" ><!--/mho - conductance -->
+<!ENTITY nang             "&#x02220;&#x00338;" ><!--not, vert, angle -->
+<!ENTITY nexist           "&#x02204;" ><!--/nexists - negated exists -->
+<!ENTITY oS               "&#x024C8;" ><!--/circledS - capital S in circle -->
+<!ENTITY planck           "&#x0210F;&#x0FE00;" ><!--/hbar - Planck's over 2pi -->
+<!ENTITY plankv           "&#x0210F;" ><!--/hslash - variant Planck's over 2pi -->
+<!ENTITY raemptyv         "&#x029B3;" ><!--circle, slash, right arrow above -->
+<!ENTITY range            "&#x029A5;" ><!--reverse angle, equal -->
+<!ENTITY real             "&#x0211C;" ><!--/Re - real -->
+<!ENTITY tbrk             "&#x023B4;" ><!--top square bracket -->
+<!ENTITY ultri            "&#x025F8;" ><!--upper left triangle -->
+<!ENTITY urtri            "&#x025F9;" ><!--upper right triangle -->
+<!ENTITY vzigzag          "&#x0299A;" ><!--vertical zig-zag line -->
+<!ENTITY weierp           "&#x02118;" ><!--/wp - Weierstrass p -->
+
+<!--
+     File isoamsr.ent produced by the XSL script mmldtd.xsl
+     from input data in unicode.xml.
+
+     Please report any errors to 
+     David Carlisle <davidc@nag.co.uk>.
+
+     The numeric character values assigned to each entity
+     (should) match either official Unicode assignments
+     or assignments provisionally allocated by the
+     Unicode Consortium based on the characters in the `STIX'
+     propsal for mathematics. Note that these assignments
+     have not been ratified by the corresponding ISO
+     committee and thus should be considered liable to
+     change.
+
+     Entity names in this file are derived from files carrying the
+     following notice:
+
+     (C) International Organization for Standardization 1991
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY ape              "&#x0224A;" ><!--/approxeq R: approximate, equals -->
+<!ENTITY apE              "&#x0224A;" ><!--approximately equal or equal to -->
+<!ENTITY apid             "&#x0224B;" ><!--approximately identical to -->
+<!ENTITY asymp            "&#x0224D;" ><!--/asymp R: asymptotically equal to -->
+<!ENTITY Barv             "&#x02AE7;" ><!--vert, dbl bar (over) -->
+<!ENTITY bcong            "&#x0224C;" ><!--/backcong R: reverse congruent -->
+<!ENTITY bepsi            "&#x003F6;" ><!--/backepsilon R: such that -->
+<!ENTITY bowtie           "&#x022C8;" ><!--/bowtie R: -->
+<!ENTITY bsim             "&#x0223D;" ><!--/backsim R: reverse similar -->
+<!ENTITY bsime            "&#x022CD;" ><!--/backsimeq R: reverse similar, eq -->
+<!ENTITY bsolhsub         "&#x0005C;&#x02282;" ><!--reverse solidus, subset -->
+<!ENTITY bump             "&#x0224E;" ><!--/Bumpeq R: bumpy equals -->
+<!ENTITY bumpe            "&#x0224F;" ><!--/bumpeq R: bumpy equals, equals -->
+<!ENTITY bumpE            "&#x02AAE;" ><!--bump, equals -->
+<!ENTITY cire             "&#x02257;" ><!--/circeq R: circle, equals -->
+<!ENTITY Colon            "&#x02237;" ><!--/Colon, two colons -->
+<!ENTITY colone           "&#x02254;" ><!--/coloneq R: colon, equals -->
+<!ENTITY Colone           "&#x02A74;" ><!--double colon, equals -->
+<!ENTITY congdot          "&#x02A6D;" ><!--congruent, dot -->
+<!ENTITY csub             "&#x02ACF;" ><!--subset, closed -->
+<!ENTITY csube            "&#x02AD1;" ><!--subset, closed, equals -->
+<!ENTITY csup             "&#x02AD0;" ><!--superset, closed -->
+<!ENTITY csupe            "&#x02AD2;" ><!--superset, closed, equals -->
+<!ENTITY cuepr            "&#x022DE;" ><!--/curlyeqprec R: curly eq, precedes -->
+<!ENTITY cuesc            "&#x022DF;" ><!--/curlyeqsucc R: curly eq, succeeds -->
+<!ENTITY dashv            "&#x022A3;" ><!--/dashv R: dash, vertical -->
+<!ENTITY Dashv            "&#x02AE4;" ><!--dbl dash, vertical -->
+<!ENTITY easter           "&#x0225B;" ><!--equal, asterisk above -->
+<!ENTITY ecir             "&#x02256;" ><!--/eqcirc R: circle on equals sign -->
+<!ENTITY ecolon           "&#x02255;" ><!--/eqcolon R: equals, colon -->
+<!ENTITY eDDot            "&#x02A77;" ><!--/ddotseq R: equal with four dots -->
+<!ENTITY eDot             "&#x02251;" ><!--/doteqdot /Doteq R: eq, even dots -->
+<!ENTITY efDot            "&#x02252;" ><!--/fallingdotseq R: eq, falling dots -->
+<!ENTITY eg               "&#x02A9A;" ><!--equal-or-greater -->
+<!ENTITY egs              "&#x022DD;" ><!--/eqslantgtr R: equal-or-gtr, slanted -->
+<!ENTITY egsdot           "&#x02A98;" ><!--equal-or-greater, slanted, dot inside -->
+<!ENTITY el               "&#x02A99;" ><!--equal-or-less -->
+<!ENTITY els              "&#x022DC;" ><!--/eqslantless R: eq-or-less, slanted -->
+<!ENTITY elsdot           "&#x02A97;" ><!--equal-or-less, slanted, dot inside -->
+<!ENTITY equest           "&#x0225F;" ><!--/questeq R: equal with questionmark -->
+<!ENTITY equivDD          "&#x02A78;" ><!--equivalent, four dots above -->
+<!ENTITY erDot            "&#x02253;" ><!--/risingdotseq R: eq, rising dots -->
+<!ENTITY esdot            "&#x02250;" ><!--/doteq R: equals, single dot above -->
+<!ENTITY esim             "&#x02242;" ><!--/esim R: equals, similar -->
+<!ENTITY Esim             "&#x02A73;" ><!--equal, similar -->
+<!ENTITY fork             "&#x022D4;" ><!--/pitchfork R: pitchfork -->
+<!ENTITY forkv            "&#x02AD9;" ><!--fork, variant -->
+<!ENTITY frown            "&#x02322;" ><!--/frown R: down curve -->
+<!ENTITY gap              "&#x02273;" ><!--/gtrapprox R: greater, approximate -->
+<!ENTITY gE               "&#x02267;" ><!--/geqq R: greater, double equals -->
+<!ENTITY gel              "&#x022DB;" ><!--/gtreqless R: greater, equals, less -->
+<!ENTITY gEl              "&#x022DB;" ><!--/gtreqqless R: gt, dbl equals, less -->
+<!ENTITY ges              "&#x02A7E;" ><!--/geqslant R: gt-or-equal, slanted -->
+<!ENTITY gescc            "&#x02AA9;" ><!--greater than, closed by curve, equal, slanted -->
+<!ENTITY gesdot           "&#x02A80;" ><!--greater-than-or-equal, slanted, dot inside -->
+<!ENTITY gesdoto          "&#x02A82;" ><!--greater-than-or-equal, slanted, dot above -->
+<!ENTITY gesdotol         "&#x02A84;" ><!--greater-than-or-equal, slanted, dot above left -->
+<!ENTITY gesl             "&#x022DB;&#x0FE00;" ><!--greater, equal, slanted, less -->
+<!ENTITY gesles           "&#x02A94;" ><!--greater, equal, slanted, less, equal, slanted -->
+<!ENTITY Gg               "&#x022D9;" ><!--/ggg /Gg /gggtr R: triple gtr-than -->
+<!ENTITY gl               "&#x02277;" ><!--/gtrless R: greater, less -->
+<!ENTITY gla              "&#x02AA5;" ><!--greater, less, apart -->
+<!ENTITY glE              "&#x02A92;" ><!--greater, less, equal -->
+<!ENTITY glj              "&#x02AA4;" ><!--greater, less, overlapping -->
+<!ENTITY gsim             "&#x02273;" ><!--/gtrsim R: greater, similar -->
+<!ENTITY gsime            "&#x02A8E;" ><!--greater, similar, equal -->
+<!ENTITY gsiml            "&#x02A90;" ><!--greater, similar, less -->
+<!ENTITY Gt               "&#x0226B;" ><!--/gg R: dbl greater-than sign -->
+<!ENTITY gtcc             "&#x02AA7;" ><!--greater than, closed by curve -->
+<!ENTITY gtcir            "&#x02A7A;" ><!--greater than, circle inside -->
+<!ENTITY gtdot            "&#x022D7;" ><!--/gtrdot R: greater than, with dot -->
+<!ENTITY gtquest          "&#x02A7C;" ><!--greater than, questionmark above -->
+<!ENTITY gtrarr           "&#x02978;" ><!--greater than, right arrow -->
+<!ENTITY homtht           "&#x0223B;" ><!--homothetic -->
+<!ENTITY lap              "&#x02272;" ><!--/lessapprox R: less, approximate -->
+<!ENTITY lat              "&#x02AAB;" ><!--larger than -->
+<!ENTITY late             "&#x02AAD;" ><!--larger than or equal -->
+<!ENTITY lates            "&#x02AAD;&#x0FE00;" ><!--larger than or equal, slanted -->
+<!ENTITY lE               "&#x02266;" ><!--/leqq R: less, double equals -->
+<!ENTITY leg              "&#x022DA;" ><!--/lesseqgtr R: less, eq, greater -->
+<!ENTITY lEg              "&#x022DA;" ><!--/lesseqqgtr R: less, dbl eq, greater -->
+<!ENTITY les              "&#x02A7D;" ><!--/leqslant R: less-than-or-eq, slant -->
+<!ENTITY lescc            "&#x02AA8;" ><!--less than, closed by curve, equal, slanted -->
+<!ENTITY lesdot           "&#x02A7F;" ><!--less-than-or-equal, slanted, dot inside -->
+<!ENTITY lesdoto          "&#x02A81;" ><!--less-than-or-equal, slanted, dot above -->
+<!ENTITY lesdotor         "&#x02A83;" ><!--less-than-or-equal, slanted, dot above right -->
+<!ENTITY lesg             "&#x022DA;&#x0FE00;" ><!--less, equal, slanted, greater -->
+<!ENTITY lesges           "&#x02A93;" ><!--less, equal, slanted, greater, equal, slanted -->
+<!ENTITY lg               "&#x02276;" ><!--/lessgtr R: less, greater -->
+<!ENTITY lgE              "&#x02A91;" ><!--less, greater, equal -->
+<!ENTITY Ll               "&#x022D8;" ><!--/Ll /lll /llless R: triple less-than -->
+<!ENTITY lsim             "&#x02272;" ><!--/lesssim R: less, similar -->
+<!ENTITY lsime            "&#x02A8D;" ><!--less, similar, equal -->
+<!ENTITY lsimg            "&#x02A8F;" ><!--less, similar, greater -->
+<!ENTITY Lt               "&#x0226A;" ><!--/ll R: double less-than sign -->
+<!ENTITY ltcc             "&#x02AA6;" ><!--less than, closed by curve -->
+<!ENTITY ltcir            "&#x02A79;" ><!--less than, circle inside -->
+<!ENTITY ltdot            "&#x022D6;" ><!--/lessdot R: less than, with dot -->
+<!ENTITY ltlarr           "&#x02976;" ><!--less than, left arrow -->
+<!ENTITY ltquest          "&#x02A7B;" ><!--less than, questionmark above -->
+<!ENTITY ltrie            "&#x022B4;" ><!--/trianglelefteq R: left triangle, eq -->
+<!ENTITY mcomma           "&#x02A29;" ><!--minus, comma above -->
+<!ENTITY mDDot            "&#x0223A;" ><!--minus with four dots, geometric properties -->
+<!ENTITY mid              "&#x02223;" ><!--/mid R: -->
+<!ENTITY mlcp             "&#x02ADB;" ><!--/mlcp -->
+<!ENTITY models           "&#x022A7;" ><!--/models R: -->
+<!ENTITY mstpos           "&#x0223E;" ><!--most positive -->
+<!ENTITY pr               "&#x0227A;" ><!--/prec R: precedes -->
+<!ENTITY Pr               "&#x02ABB;" ><!--dbl precedes -->
+<!ENTITY prap             "&#x0227E;" ><!--/precapprox R: precedes, approximate -->
+<!ENTITY prcue            "&#x0227C;" ><!--/preccurlyeq R: precedes, curly eq -->
+<!ENTITY pre              "&#x02AAF;" ><!--/preceq R: precedes, equals -->
+<!ENTITY prE              "&#x02AAF;" ><!--precedes, dbl equals -->
+<!ENTITY prsim            "&#x0227E;" ><!--/precsim R: precedes, similar -->
+<!ENTITY prurel           "&#x022B0;" ><!--element precedes under relation -->
+<!ENTITY ratio            "&#x02236;" ><!--/ratio -->
+<!ENTITY rtrie            "&#x022B5;" ><!--/trianglerighteq R: right tri, eq -->
+<!ENTITY rtriltri         "&#x029CE;" ><!--right triangle above left triangle -->
+<!ENTITY sc               "&#x0227B;" ><!--/succ R: succeeds -->
+<!ENTITY Sc               "&#x02ABC;" ><!--dbl succeeds -->
+<!ENTITY scap             "&#x0227F;" ><!--/succapprox R: succeeds, approximate -->
+<!ENTITY sccue            "&#x0227D;" ><!--/succcurlyeq R: succeeds, curly eq -->
+<!ENTITY sce              "&#x0227D;" ><!--/succeq R: succeeds, equals -->
+<!ENTITY scE              "&#x0227E;" ><!--succeeds, dbl equals -->
+<!ENTITY scsim            "&#x0227F;" ><!--/succsim R: succeeds, similar -->
+<!ENTITY sdote            "&#x02A66;" ><!--equal, dot below -->
+<!ENTITY simg             "&#x02A9E;" ><!--similar, greater -->
+<!ENTITY simgE            "&#x02AA0;" ><!--similar, greater, equal -->
+<!ENTITY siml             "&#x02A9D;" ><!--similar, less -->
+<!ENTITY simlE            "&#x02A9F;" ><!--similar, less, equal -->
+<!ENTITY smid             "&#x02223;&#x0FE00;" ><!--/shortmid R: -->
+<!ENTITY smile            "&#x02323;" ><!--/smile R: up curve -->
+<!ENTITY smt              "&#x02AAA;" ><!--smaller than -->
+<!ENTITY smte             "&#x02AAC;" ><!--smaller than or equal -->
+<!ENTITY smtes            "&#x02AAC;&#x0FE00;" ><!--smaller than or equal, slanted -->
+<!ENTITY spar             "&#x02225;&#x0FE00;" ><!--/shortparallel R: short parallel -->
+<!ENTITY sqsub            "&#x0228F;" ><!--/sqsubset R: square subset -->
+<!ENTITY sqsube           "&#x02291;" ><!--/sqsubseteq R: square subset, equals -->
+<!ENTITY sqsup            "&#x02290;" ><!--/sqsupset R: square superset -->
+<!ENTITY sqsupe           "&#x02292;" ><!--/sqsupseteq R: square superset, eq -->
+<!ENTITY Sub              "&#x022D0;" ><!--/Subset R: double subset -->
+<!ENTITY subE             "&#x02286;" ><!--/subseteqq R: subset, dbl equals -->
+<!ENTITY subedot          "&#x02AC3;" ><!--subset, equals, dot -->
+<!ENTITY submult          "&#x02AC1;" ><!--subset, multiply -->
+<!ENTITY subplus          "&#x02ABF;" ><!--subset, plus -->
+<!ENTITY subrarr          "&#x02979;" ><!--subset, right arrow -->
+<!ENTITY subsim           "&#x02AC7;" ><!--subset, similar -->
+<!ENTITY subsub           "&#x02AD5;" ><!--subset above subset -->
+<!ENTITY subsup           "&#x02AD3;" ><!--subset above superset -->
+<!ENTITY Sup              "&#x022D1;" ><!--/Supset R: dbl superset -->
+<!ENTITY supdsub          "&#x02AD8;" ><!--superset, subset, dash joining them -->
+<!ENTITY supE             "&#x02287;" ><!--/supseteqq R: superset, dbl equals -->
+<!ENTITY supedot          "&#x02AC4;" ><!--superset, equals, dot -->
+<!ENTITY suphsol          "&#x02283;&#x0002F;" ><!--superset, solidus -->
+<!ENTITY suphsub          "&#x02AD7;" ><!--superset, subset -->
+<!ENTITY suplarr          "&#x0297B;" ><!--superset, left arrow -->
+<!ENTITY supmult          "&#x02AC2;" ><!--superset, multiply -->
+<!ENTITY supplus          "&#x02AC0;" ><!--superset, plus -->
+<!ENTITY supsim           "&#x02AC8;" ><!--superset, similar -->
+<!ENTITY supsub           "&#x02AD4;" ><!--superset above subset -->
+<!ENTITY supsup           "&#x02AD6;" ><!--superset above superset -->
+<!ENTITY thkap            "&#x02248;&#x0FE00;" ><!--/thickapprox R: thick approximate -->
+<!ENTITY thksim           "&#x0223C;&#x0FE00;" ><!--/thicksim R: thick similar -->
+<!ENTITY topfork          "&#x02ADA;" ><!--fork with top -->
+<!ENTITY trie             "&#x0225C;" ><!--/triangleq R: triangle, equals -->
+<!ENTITY twixt            "&#x0226C;" ><!--/between R: between -->
+<!ENTITY vBar             "&#x02AE8;" ><!--vert, dbl bar (under) -->
+<!ENTITY Vbar             "&#x02AEB;" ><!--dbl vert, bar (under) -->
+<!ENTITY vBarv            "&#x02AE9;" ><!--dbl bar, vert over and under -->
+<!ENTITY vdash            "&#x022A2;" ><!--/vdash R: vertical, dash -->
+<!ENTITY vDash            "&#x022A8;" ><!--/vDash R: vertical, dbl dash -->
+<!ENTITY Vdash            "&#x022A9;" ><!--/Vdash R: dbl vertical, dash -->
+<!ENTITY VDash            "&#x022AB;" ><!--dbl vert, dbl dash -->
+<!ENTITY Vdashl           "&#x02AE6;" ><!--vertical, dash (long) -->
+<!ENTITY vltri            "&#x022B2;" ><!--/vartriangleleft R: l tri, open, var -->
+<!ENTITY vprop            "&#x0221D;" ><!--/varpropto R: proportional, variant -->
+<!ENTITY vrtri            "&#x022B3;" ><!--/vartriangleright R: r tri, open, var -->
+<!ENTITY Vvdash           "&#x022AA;" ><!--/Vvdash R: triple vertical, dash -->
+
+<!--
+     File isobox.ent produced by the XSL script mmldtd.xsl
+     from input data in unicode.xml.
+
+     Please report any errors to 
+     David Carlisle <davidc@nag.co.uk>.
+
+     The numeric character values assigned to each entity
+     (should) match either official Unicode assignments
+     or assignments provisionally allocated by the
+     Unicode Consortium based on the characters in the `STIX'
+     propsal for mathematics. Note that these assignments
+     have not been ratified by the corresponding ISO
+     committee and thus should be considered liable to
+     change.
+
+     Entity names in this file are derived from files carrying the
+     following notice:
+
+     (C) International Organization for Standardization 1986
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY boxdl            "&#x02510;" ><!--lower left quadrant -->
+<!ENTITY boxdL            "&#x02555;" ><!--lower left quadrant -->
+<!ENTITY boxDl            "&#x02556;" ><!--lower left quadrant -->
+<!ENTITY boxDL            "&#x02557;" ><!--lower left quadrant -->
+<!ENTITY boxdr            "&#x0250C;" ><!--lower right quadrant -->
+<!ENTITY boxdR            "&#x02552;" ><!--lower right quadrant -->
+<!ENTITY boxDr            "&#x02553;" ><!--lower right quadrant -->
+<!ENTITY boxDR            "&#x02554;" ><!--lower right quadrant -->
+<!ENTITY boxh             "&#x02500;" ><!--horizontal line  -->
+<!ENTITY boxH             "&#x02550;" ><!--horizontal line -->
+<!ENTITY boxhd            "&#x0252C;" ><!--lower left and right quadrants -->
+<!ENTITY boxhD            "&#x02565;" ><!--lower left and right quadrants -->
+<!ENTITY boxHd            "&#x02564;" ><!--lower left and right quadrants -->
+<!ENTITY boxHD            "&#x02566;" ><!--lower left and right quadrants -->
+<!ENTITY boxhu            "&#x02534;" ><!--upper left and right quadrants -->
+<!ENTITY boxhU            "&#x02568;" ><!--upper left and right quadrants -->
+<!ENTITY boxHu            "&#x02567;" ><!--upper left and right quadrants -->
+<!ENTITY boxHU            "&#x02569;" ><!--upper left and right quadrants -->
+<!ENTITY boxul            "&#x02518;" ><!--upper left quadrant -->
+<!ENTITY boxuL            "&#x0255B;" ><!--upper left quadrant -->
+<!ENTITY boxUl            "&#x0255C;" ><!--upper left quadrant -->
+<!ENTITY boxUL            "&#x0255D;" ><!--upper left quadrant -->
+<!ENTITY boxur            "&#x02514;" ><!--upper right quadrant -->
+<!ENTITY boxuR            "&#x02558;" ><!--upper right quadrant -->
+<!ENTITY boxUr            "&#x02559;" ><!--upper right quadrant -->
+<!ENTITY boxUR            "&#x0255A;" ><!--upper right quadrant -->
+<!ENTITY boxv             "&#x02502;" ><!--vertical line -->
+<!ENTITY boxV             "&#x02551;" ><!--vertical line -->
+<!ENTITY boxvh            "&#x0253C;" ><!--all four quadrants -->
+<!ENTITY boxvH            "&#x0256A;" ><!--all four quadrants -->
+<!ENTITY boxVh            "&#x0256B;" ><!--all four quadrants -->
+<!ENTITY boxVH            "&#x0256C;" ><!--all four quadrants -->
+<!ENTITY boxvl            "&#x02524;" ><!--upper and lower left quadrants -->
+<!ENTITY boxvL            "&#x02561;" ><!--upper and lower left quadrants -->
+<!ENTITY boxVl            "&#x02562;" ><!--upper and lower left quadrants -->
+<!ENTITY boxVL            "&#x02563;" ><!--upper and lower left quadrants -->
+<!ENTITY boxvr            "&#x0251C;" ><!--upper and lower right quadrants -->
+<!ENTITY boxvR            "&#x0255E;" ><!--upper and lower right quadrants -->
+<!ENTITY boxVr            "&#x0255F;" ><!--upper and lower right quadrants -->
+<!ENTITY boxVR            "&#x02560;" ><!--upper and lower right quadrants -->
+
+<!--
+     File isocyr1.ent produced by the XSL script mmldtd.xsl
+     from input data in unicode.xml.
+
+     Please report any errors to 
+     David Carlisle <davidc@nag.co.uk>.
+
+     The numeric character values assigned to each entity
+     (should) match either official Unicode assignments
+     or assignments provisionally allocated by the
+     Unicode Consortium based on the characters in the `STIX'
+     propsal for mathematics. Note that these assignments
+     have not been ratified by the corresponding ISO
+     committee and thus should be considered liable to
+     change.
+
+     Entity names in this file are derived from files carrying the
+     following notice:
+
+     (C) International Organization for Standardization 1986
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY acy              "&#x00430;" ><!--=small a, Cyrillic -->
+<!ENTITY Acy              "&#x00410;" ><!--=capital A, Cyrillic -->
+<!ENTITY bcy              "&#x00431;" ><!--=small be, Cyrillic -->
+<!ENTITY Bcy              "&#x00411;" ><!--=capital BE, Cyrillic -->
+<!ENTITY chcy             "&#x00447;" ><!--=small che, Cyrillic -->
+<!ENTITY CHcy             "&#x00427;" ><!--=capital CHE, Cyrillic -->
+<!ENTITY dcy              "&#x00434;" ><!--=small de, Cyrillic -->
+<!ENTITY Dcy              "&#x00414;" ><!--=capital DE, Cyrillic -->
+<!ENTITY ecy              "&#x0044D;" ><!--=small e, Cyrillic -->
+<!ENTITY Ecy              "&#x0042D;" ><!--=capital E, Cyrillic -->
+<!ENTITY fcy              "&#x00444;" ><!--=small ef, Cyrillic -->
+<!ENTITY Fcy              "&#x00424;" ><!--=capital EF, Cyrillic -->
+<!ENTITY gcy              "&#x00433;" ><!--=small ghe, Cyrillic -->
+<!ENTITY Gcy              "&#x00413;" ><!--=capital GHE, Cyrillic -->
+<!ENTITY hardcy           "&#x0044A;" ><!--=small hard sign, Cyrillic -->
+<!ENTITY HARDcy           "&#x0042A;" ><!--=capital HARD sign, Cyrillic -->
+<!ENTITY icy              "&#x00438;" ><!--=small i, Cyrillic -->
+<!ENTITY Icy              "&#x00418;" ><!--=capital I, Cyrillic -->
+<!ENTITY iecy             "&#x00435;" ><!--=small ie, Cyrillic -->
+<!ENTITY IEcy             "&#x00415;" ><!--=capital IE, Cyrillic -->
+<!ENTITY iocy             "&#x00451;" ><!--=small io, Russian -->
+<!ENTITY IOcy             "&#x00401;" ><!--=capital IO, Russian -->
+<!ENTITY jcy              "&#x00439;" ><!--=small short i, Cyrillic -->
+<!ENTITY Jcy              "&#x00419;" ><!--=capital short I, Cyrillic -->
+<!ENTITY kcy              "&#x0043A;" ><!--=small ka, Cyrillic -->
+<!ENTITY Kcy              "&#x0041A;" ><!--=capital KA, Cyrillic -->
+<!ENTITY khcy             "&#x00445;" ><!--=small ha, Cyrillic -->
+<!ENTITY KHcy             "&#x00425;" ><!--=capital HA, Cyrillic -->
+<!ENTITY lcy              "&#x0043B;" ><!--=small el, Cyrillic -->
+<!ENTITY Lcy              "&#x0041B;" ><!--=capital EL, Cyrillic -->
+<!ENTITY mcy              "&#x0043C;" ><!--=small em, Cyrillic -->
+<!ENTITY Mcy              "&#x0041C;" ><!--=capital EM, Cyrillic -->
+<!ENTITY ncy              "&#x0043D;" ><!--=small en, Cyrillic -->
+<!ENTITY Ncy              "&#x0041D;" ><!--=capital EN, Cyrillic -->
+<!ENTITY numero           "&#x02116;" ><!--=numero sign -->
+<!ENTITY ocy              "&#x0043E;" ><!--=small o, Cyrillic -->
+<!ENTITY Ocy              "&#x0041E;" ><!--=capital O, Cyrillic -->
+<!ENTITY pcy              "&#x0043F;" ><!--=small pe, Cyrillic -->
+<!ENTITY Pcy              "&#x0041F;" ><!--=capital PE, Cyrillic -->
+<!ENTITY rcy              "&#x00440;" ><!--=small er, Cyrillic -->
+<!ENTITY Rcy              "&#x00420;" ><!--=capital ER, Cyrillic -->
+<!ENTITY scy              "&#x00441;" ><!--=small es, Cyrillic -->
+<!ENTITY Scy              "&#x00421;" ><!--=capital ES, Cyrillic -->
+<!ENTITY shchcy           "&#x00449;" ><!--=small shcha, Cyrillic -->
+<!ENTITY SHCHcy           "&#x00429;" ><!--=capital SHCHA, Cyrillic -->
+<!ENTITY shcy             "&#x00448;" ><!--=small sha, Cyrillic -->
+<!ENTITY SHcy             "&#x00428;" ><!--=capital SHA, Cyrillic -->
+<!ENTITY softcy           "&#x0044C;" ><!--=small soft sign, Cyrillic -->
+<!ENTITY SOFTcy           "&#x0042C;" ><!--=capital SOFT sign, Cyrillic -->
+<!ENTITY tcy              "&#x00442;" ><!--=small te, Cyrillic -->
+<!ENTITY Tcy              "&#x00422;" ><!--=capital TE, Cyrillic -->
+<!ENTITY tscy             "&#x00446;" ><!--=small tse, Cyrillic -->
+<!ENTITY TScy             "&#x00426;" ><!--=capital TSE, Cyrillic -->
+<!ENTITY ucy              "&#x00443;" ><!--=small u, Cyrillic -->
+<!ENTITY Ucy              "&#x00423;" ><!--=capital U, Cyrillic -->
+<!ENTITY vcy              "&#x00432;" ><!--=small ve, Cyrillic -->
+<!ENTITY Vcy              "&#x00412;" ><!--=capital VE, Cyrillic -->
+<!ENTITY yacy             "&#x0044F;" ><!--=small ya, Cyrillic -->
+<!ENTITY YAcy             "&#x0042F;" ><!--=capital YA, Cyrillic -->
+<!ENTITY ycy              "&#x0044B;" ><!--=small yeru, Cyrillic -->
+<!ENTITY Ycy              "&#x0042B;" ><!--=capital YERU, Cyrillic -->
+<!ENTITY yucy             "&#x0044E;" ><!--=small yu, Cyrillic -->
+<!ENTITY YUcy             "&#x0042E;" ><!--=capital YU, Cyrillic -->
+<!ENTITY zcy              "&#x00437;" ><!--=small ze, Cyrillic -->
+<!ENTITY Zcy              "&#x00417;" ><!--=capital ZE, Cyrillic -->
+<!ENTITY zhcy             "&#x00436;" ><!--=small zhe, Cyrillic -->
+<!ENTITY ZHcy             "&#x00416;" ><!--=capital ZHE, Cyrillic -->
+
+<!--
+     File isocyr2.ent produced by the XSL script mmldtd.xsl
+     from input data in unicode.xml.
+
+     Please report any errors to 
+     David Carlisle <davidc@nag.co.uk>.
+
+     The numeric character values assigned to each entity
+     (should) match either official Unicode assignments
+     or assignments provisionally allocated by the
+     Unicode Consortium based on the characters in the `STIX'
+     propsal for mathematics. Note that these assignments
+     have not been ratified by the corresponding ISO
+     committee and thus should be considered liable to
+     change.
+
+     Entity names in this file are derived from files carrying the
+     following notice:
+
+     (C) International Organization for Standardization 1986
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY djcy             "&#x00452;" ><!--=small dje, Serbian -->
+<!ENTITY DJcy             "&#x00402;" ><!--=capital DJE, Serbian -->
+<!ENTITY dscy             "&#x00455;" ><!--=small dse, Macedonian -->
+<!ENTITY DScy             "&#x00405;" ><!--=capital DSE, Macedonian -->
+<!ENTITY dzcy             "&#x0045F;" ><!--=small dze, Serbian -->
+<!ENTITY DZcy             "&#x0040F;" ><!--=capital dze, Serbian -->
+<!ENTITY gjcy             "&#x00453;" ><!--=small gje, Macedonian -->
+<!ENTITY GJcy             "&#x00403;" ><!--=capital GJE Macedonian -->
+<!ENTITY iukcy            "&#x00456;" ><!--=small i, Ukrainian -->
+<!ENTITY Iukcy            "&#x00406;" ><!--=capital I, Ukrainian -->
+<!ENTITY jsercy           "&#x00458;" ><!--=small je, Serbian -->
+<!ENTITY Jsercy           "&#x00408;" ><!--=capital JE, Serbian -->
+<!ENTITY jukcy            "&#x00454;" ><!--=small je, Ukrainian -->
+<!ENTITY Jukcy            "&#x00404;" ><!--=capital JE, Ukrainian -->
+<!ENTITY kjcy             "&#x0045C;" ><!--=small kje Macedonian -->
+<!ENTITY KJcy             "&#x0040C;" ><!--=capital KJE, Macedonian -->
+<!ENTITY ljcy             "&#x00459;" ><!--=small lje, Serbian -->
+<!ENTITY LJcy             "&#x00409;" ><!--=capital LJE, Serbian -->
+<!ENTITY njcy             "&#x0045A;" ><!--=small nje, Serbian -->
+<!ENTITY NJcy             "&#x0040A;" ><!--=capital NJE, Serbian -->
+<!ENTITY tshcy            "&#x0045B;" ><!--=small tshe, Serbian -->
+<!ENTITY TSHcy            "&#x0040B;" ><!--=capital TSHE, Serbian -->
+<!ENTITY ubrcy            "&#x0045E;" ><!--=small u, Byelorussian -->
+<!ENTITY Ubrcy            "&#x0040E;" ><!--=capital U, Byelorussian -->
+<!ENTITY yicy             "&#x00457;" ><!--=small yi, Ukrainian -->
+<!ENTITY YIcy             "&#x00407;" ><!--=capital YI, Ukrainian -->
+
+<!--
+     File isodia.ent produced by the XSL script mmldtd.xsl
+     from input data in unicode.xml.
+
+     Please report any errors to 
+     David Carlisle <davidc@nag.co.uk>.
+
+     The numeric character values assigned to each entity
+     (should) match either official Unicode assignments
+     or assignments provisionally allocated by the
+     Unicode Consortium based on the characters in the `STIX'
+     propsal for mathematics. Note that these assignments
+     have not been ratified by the corresponding ISO
+     committee and thus should be considered liable to
+     change.
+
+     Entity names in this file are derived from files carrying the
+     following notice:
+
+     (C) International Organization for Standardization 1986
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY acute            "&#x000B4;" ><!--=acute accent -->
+<!ENTITY breve            "&#x002D8;" ><!--=breve -->
+<!ENTITY caron            "&#x002C7;" ><!--=caron -->
+<!ENTITY cedil            "&#x000B8;" ><!--=cedilla -->
+<!ENTITY circ             "&#x0005E;" ><!--circumflex accent -->
+<!ENTITY dblac            "&#x002DD;" ><!--=double acute accent -->
+<!ENTITY die              "&#x000A8;" ><!--=dieresis -->
+<!ENTITY dot              "&#x002D9;" ><!--=dot above -->
+<!ENTITY grave            "&#x00060;" ><!--=grave accent -->
+<!ENTITY macr             "&#x000AF;" ><!--=macron -->
+<!ENTITY ogon             "&#x002DB;" ><!--=ogonek -->
+<!ENTITY ring             "&#x002DA;" ><!--=ring -->
+<!ENTITY tilde            "&#x002DC;" ><!--=tilde -->
+<!ENTITY uml              "&#x000A8;" ><!--=umlaut mark -->
+
+<!--
+     File isogrk3.ent produced by the XSL script mmldtd.xsl
+     from input data in unicode.xml.
+
+     Please report any errors to 
+     David Carlisle <davidc@nag.co.uk>.
+
+     The numeric character values assigned to each entity
+     (should) match either official Unicode assignments
+     or assignments provisionally allocated by the
+     Unicode Consortium based on the characters in the `STIX'
+     propsal for mathematics. Note that these assignments
+     have not been ratified by the corresponding ISO
+     committee and thus should be considered liable to
+     change.
+
+     Entity names in this file are derived from files carrying the
+     following notice:
+
+     (C) International Organization for Standardization 1991
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY alpha            "&#x003B1;" ><!--/alpha small alpha, Greek -->
+<!ENTITY beta             "&#x003B2;" ><!--/beta small beta, Greek -->
+<!ENTITY chi              "&#x003C7;" ><!--/chi small chi, Greek -->
+<!ENTITY delta            "&#x003B4;" ><!--/delta small delta, Greek -->
+<!ENTITY Delta            "&#x00394;" ><!--/Delta capital Delta, Greek -->
+<!ENTITY epsi             "&#x003B5;" ><!--/straightepsilon, small epsilon, Greek -->
+<!ENTITY epsiv            "&#x0025B;" ><!--/varepsilon -->
+<!ENTITY eta              "&#x003B7;" ><!--/eta small eta, Greek -->
+<!ENTITY gamma            "&#x003B3;" ><!--/gamma small gamma, Greek -->
+<!ENTITY Gamma            "&#x00393;" ><!--/Gamma capital Gamma, Greek -->
+<!ENTITY gammad           "&#x003DC;" ><!--/digamma -->
+<!ENTITY Gammad           "&#x003DC;" ><!--capital digamma -->
+<!ENTITY iota             "&#x003B9;" ><!--/iota small iota, Greek -->
+<!ENTITY kappa            "&#x003BA;" ><!--/kappa small kappa, Greek -->
+<!ENTITY kappav           "&#x003F0;" ><!--/varkappa -->
+<!ENTITY lambda           "&#x003BB;" ><!--/lambda small lambda, Greek -->
+<!ENTITY Lambda           "&#x0039B;" ><!--/Lambda capital Lambda, Greek -->
+<!ENTITY mu               "&#x003BC;" ><!--/mu small mu, Greek -->
+<!ENTITY nu               "&#x003BD;" ><!--/nu small nu, Greek -->
+<!ENTITY omega            "&#x003C9;" ><!--/omega small omega, Greek -->
+<!ENTITY Omega            "&#x003A9;" ><!--/Omega capital Omega, Greek -->
+<!ENTITY phi              "&#x003C6;" ><!--/straightphi - small phi, Greek -->
+<!ENTITY Phi              "&#x003A6;" ><!--/Phi capital Phi, Greek -->
+<!ENTITY phiv             "&#x003D5;" ><!--/varphi - curly or open phi -->
+<!ENTITY pi               "&#x003C0;" ><!--/pi small pi, Greek -->
+<!ENTITY Pi               "&#x003A0;" ><!--/Pi capital Pi, Greek -->
+<!ENTITY piv              "&#x003D6;" ><!--/varpi -->
+<!ENTITY psi              "&#x003C8;" ><!--/psi small psi, Greek -->
+<!ENTITY Psi              "&#x003A8;" ><!--/Psi capital Psi, Greek -->
+<!ENTITY rho              "&#x003C1;" ><!--/rho small rho, Greek -->
+<!ENTITY rhov             "&#x003F1;" ><!--/varrho -->
+<!ENTITY sigma            "&#x003C3;" ><!--/sigma small sigma, Greek -->
+<!ENTITY Sigma            "&#x003A3;" ><!--/Sigma capital Sigma, Greek -->
+<!ENTITY sigmav           "&#x003C2;" ><!--/varsigma -->
+<!ENTITY tau              "&#x003C4;" ><!--/tau small tau, Greek -->
+<!ENTITY theta            "&#x003B8;" ><!--/theta straight theta, small theta, Greek -->
+<!ENTITY Theta            "&#x00398;" ><!--/Theta capital Theta, Greek -->
+<!ENTITY thetav           "&#x003D1;" ><!--/vartheta - curly or open theta -->
+<!ENTITY upsi             "&#x003C5;" ><!--/upsilon small upsilon, Greek -->
+<!ENTITY Upsi             "&#x003D2;" ><!--/Upsilon capital Upsilon, Greek -->
+<!ENTITY xi               "&#x003BE;" ><!--/xi small xi, Greek -->
+<!ENTITY Xi               "&#x0039E;" ><!--/Xi capital Xi, Greek -->
+<!ENTITY zeta             "&#x003B6;" ><!--/zeta small zeta, Greek -->
+
+<!--
+     File isolat1.ent produced by the XSL script mmldtd.xsl
+     from input data in unicode.xml.
+
+     Please report any errors to 
+     David Carlisle <davidc@nag.co.uk>.
+
+     The numeric character values assigned to each entity
+     (should) match either official Unicode assignments
+     or assignments provisionally allocated by the
+     Unicode Consortium based on the characters in the `STIX'
+     propsal for mathematics. Note that these assignments
+     have not been ratified by the corresponding ISO
+     committee and thus should be considered liable to
+     change.
+
+     Entity names in this file are derived from files carrying the
+     following notice:
+
+     (C) International Organization for Standardization 1986
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY aacute           "&#x000E1;" ><!--=small a, acute accent -->
+<!ENTITY Aacute           "&#x000C1;" ><!--=capital A, acute accent -->
+<!ENTITY acirc            "&#x000E2;" ><!--=small a, circumflex accent -->
+<!ENTITY Acirc            "&#x000C2;" ><!--=capital A, circumflex accent -->
+<!ENTITY aelig            "&#x000E6;" ><!--=small ae diphthong (ligature) -->
+<!ENTITY AElig            "&#x000C6;" ><!--=capital AE diphthong (ligature) -->
+<!ENTITY agrave           "&#x000E0;" ><!--=small a, grave accent -->
+<!ENTITY Agrave           "&#x000C0;" ><!--=capital A, grave accent -->
+<!ENTITY aring            "&#x000E5;" ><!--=small a, ring -->
+<!ENTITY Aring            "&#x000C5;" ><!--=capital A, ring -->
+<!ENTITY atilde           "&#x000E3;" ><!--=small a, tilde -->
+<!ENTITY Atilde           "&#x000C3;" ><!--=capital A, tilde -->
+<!ENTITY auml             "&#x000E4;" ><!--=small a, dieresis or umlaut mark -->
+<!ENTITY Auml             "&#x000C4;" ><!--=capital A, dieresis or umlaut mark -->
+<!ENTITY ccedil           "&#x000E7;" ><!--=small c, cedilla -->
+<!ENTITY Ccedil           "&#x000C7;" ><!--=capital C, cedilla -->
+<!ENTITY eacute           "&#x000E9;" ><!--=small e, acute accent -->
+<!ENTITY Eacute           "&#x000C9;" ><!--=capital E, acute accent -->
+<!ENTITY ecirc            "&#x000EA;" ><!--=small e, circumflex accent -->
+<!ENTITY Ecirc            "&#x000CA;" ><!--=capital E, circumflex accent -->
+<!ENTITY egrave           "&#x000E8;" ><!--=small e, grave accent -->
+<!ENTITY Egrave           "&#x000C8;" ><!--=capital E, grave accent -->
+<!ENTITY eth              "&#x000F0;" ><!--=small eth, Icelandic -->
+<!ENTITY ETH              "&#x000D0;" ><!--=capital Eth, Icelandic -->
+<!ENTITY euml             "&#x000EB;" ><!--=small e, dieresis or umlaut mark -->
+<!ENTITY Euml             "&#x000CB;" ><!--=capital E, dieresis or umlaut mark -->
+<!ENTITY iacute           "&#x000ED;" ><!--=small i, acute accent -->
+<!ENTITY Iacute           "&#x000CD;" ><!--=capital I, acute accent -->
+<!ENTITY icirc            "&#x000EE;" ><!--=small i, circumflex accent -->
+<!ENTITY Icirc            "&#x000CE;" ><!--=capital I, circumflex accent -->
+<!ENTITY igrave           "&#x000EC;" ><!--=small i, grave accent -->
+<!ENTITY Igrave           "&#x000CC;" ><!--=capital I, grave accent -->
+<!ENTITY iuml             "&#x000EF;" ><!--=small i, dieresis or umlaut mark -->
+<!ENTITY Iuml             "&#x000CF;" ><!--=capital I, dieresis or umlaut mark -->
+<!ENTITY ntilde           "&#x000F1;" ><!--=small n, tilde -->
+<!ENTITY Ntilde           "&#x000D1;" ><!--=capital N, tilde -->
+<!ENTITY oacute           "&#x000F3;" ><!--=small o, acute accent -->
+<!ENTITY Oacute           "&#x000D3;" ><!--=capital O, acute accent -->
+<!ENTITY ocirc            "&#x000F4;" ><!--=small o, circumflex accent -->
+<!ENTITY Ocirc            "&#x000D4;" ><!--=capital O, circumflex accent -->
+<!ENTITY ograve           "&#x000F2;" ><!--=small o, grave accent -->
+<!ENTITY Ograve           "&#x000D2;" ><!--=capital O, grave accent -->
+<!ENTITY oslash           "&#x000F8;" ><!--latin small letter o with stroke -->
+<!ENTITY Oslash           "&#x000D8;" ><!--=capital O, slash -->
+<!ENTITY otilde           "&#x000F5;" ><!--=small o, tilde -->
+<!ENTITY Otilde           "&#x000D5;" ><!--=capital O, tilde -->
+<!ENTITY ouml             "&#x000F6;" ><!--=small o, dieresis or umlaut mark -->
+<!ENTITY Ouml             "&#x000D6;" ><!--=capital O, dieresis or umlaut mark -->
+<!ENTITY szlig            "&#x000DF;" ><!--=small sharp s, German (sz ligature) -->
+<!ENTITY thorn            "&#x000FE;" ><!--=small thorn, Icelandic -->
+<!ENTITY THORN            "&#x000DE;" ><!--=capital THORN, Icelandic -->
+<!ENTITY uacute           "&#x000FA;" ><!--=small u, acute accent -->
+<!ENTITY Uacute           "&#x000DA;" ><!--=capital U, acute accent -->
+<!ENTITY ucirc            "&#x000FB;" ><!--=small u, circumflex accent -->
+<!ENTITY Ucirc            "&#x000DB;" ><!--=capital U, circumflex accent -->
+<!ENTITY ugrave           "&#x000F9;" ><!--=small u, grave accent -->
+<!ENTITY Ugrave           "&#x000D9;" ><!--=capital U, grave accent -->
+<!ENTITY uuml             "&#x000FC;" ><!--=small u, dieresis or umlaut mark -->
+<!ENTITY Uuml             "&#x000DC;" ><!--=capital U, dieresis or umlaut mark -->
+<!ENTITY yacute           "&#x000FD;" ><!--=small y, acute accent -->
+<!ENTITY Yacute           "&#x000DD;" ><!--=capital Y, acute accent -->
+<!ENTITY yuml             "&#x000FF;" ><!--=small y, dieresis or umlaut mark -->
+
+<!--
+     File isolat2.ent produced by the XSL script mmldtd.xsl
+     from input data in unicode.xml.
+
+     Please report any errors to 
+     David Carlisle <davidc@nag.co.uk>.
+
+     The numeric character values assigned to each entity
+     (should) match either official Unicode assignments
+     or assignments provisionally allocated by the
+     Unicode Consortium based on the characters in the `STIX'
+     propsal for mathematics. Note that these assignments
+     have not been ratified by the corresponding ISO
+     committee and thus should be considered liable to
+     change.
+
+     Entity names in this file are derived from files carrying the
+     following notice:
+
+     (C) International Organization for Standardization 1986
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY abreve           "&#x00103;" ><!--=small a, breve -->
+<!ENTITY Abreve           "&#x00102;" ><!--=capital A, breve -->
+<!ENTITY amacr            "&#x00101;" ><!--=small a, macron -->
+<!ENTITY Amacr            "&#x00100;" ><!--=capital A, macron -->
+<!ENTITY aogon            "&#x00105;" ><!--=small a, ogonek -->
+<!ENTITY Aogon            "&#x00104;" ><!--=capital A, ogonek -->
+<!ENTITY cacute           "&#x00107;" ><!--=small c, acute accent -->
+<!ENTITY Cacute           "&#x00106;" ><!--=capital C, acute accent -->
+<!ENTITY ccaron           "&#x0010D;" ><!--=small c, caron -->
+<!ENTITY Ccaron           "&#x0010C;" ><!--=capital C, caron -->
+<!ENTITY ccirc            "&#x00109;" ><!--=small c, circumflex accent -->
+<!ENTITY Ccirc            "&#x00108;" ><!--=capital C, circumflex accent -->
+<!ENTITY cdot             "&#x0010B;" ><!--=small c, dot above -->
+<!ENTITY Cdot             "&#x0010A;" ><!--=capital C, dot above -->
+<!ENTITY dcaron           "&#x0010F;" ><!--=small d, caron -->
+<!ENTITY Dcaron           "&#x0010E;" ><!--=capital D, caron -->
+<!ENTITY dstrok           "&#x00111;" ><!--=small d, stroke -->
+<!ENTITY Dstrok           "&#x00110;" ><!--=capital D, stroke -->
+<!ENTITY ecaron           "&#x0011B;" ><!--=small e, caron -->
+<!ENTITY Ecaron           "&#x0011A;" ><!--=capital E, caron -->
+<!ENTITY edot             "&#x00117;" ><!--=small e, dot above -->
+<!ENTITY Edot             "&#x00116;" ><!--=capital E, dot above -->
+<!ENTITY emacr            "&#x00113;" ><!--=small e, macron -->
+<!ENTITY Emacr            "&#x00112;" ><!--=capital E, macron -->
+<!ENTITY eng              "&#x0014B;" ><!--=small eng, Lapp -->
+<!ENTITY ENG              "&#x0014A;" ><!--=capital ENG, Lapp -->
+<!ENTITY eogon            "&#x00119;" ><!--=small e, ogonek -->
+<!ENTITY Eogon            "&#x00118;" ><!--=capital E, ogonek -->
+<!ENTITY gacute           "&#x001F5;" ><!--=small g, acute accent -->
+<!ENTITY gbreve           "&#x0011F;" ><!--=small g, breve -->
+<!ENTITY Gbreve           "&#x0011E;" ><!--=capital G, breve -->
+<!ENTITY Gcedil           "&#x00122;" ><!--=capital G, cedilla -->
+<!ENTITY gcirc            "&#x0011D;" ><!--=small g, circumflex accent -->
+<!ENTITY Gcirc            "&#x0011C;" ><!--=capital G, circumflex accent -->
+<!ENTITY gdot             "&#x00121;" ><!--=small g, dot above -->
+<!ENTITY Gdot             "&#x00120;" ><!--=capital G, dot above -->
+<!ENTITY hcirc            "&#x00125;" ><!--=small h, circumflex accent -->
+<!ENTITY Hcirc            "&#x00124;" ><!--=capital H, circumflex accent -->
+<!ENTITY hstrok           "&#x00127;" ><!--=small h, stroke -->
+<!ENTITY Hstrok           "&#x00126;" ><!--=capital H, stroke -->
+<!ENTITY Idot             "&#x00130;" ><!--=capital I, dot above -->
+<!ENTITY ijlig            "&#x00133;" ><!--=small ij ligature -->
+<!ENTITY IJlig            "&#x00132;" ><!--=capital IJ ligature -->
+<!ENTITY imacr            "&#x0012B;" ><!--=small i, macron -->
+<!ENTITY Imacr            "&#x0012A;" ><!--=capital I, macron -->
+<!ENTITY inodot           "&#x00131;" ><!--=small i without dot -->
+<!ENTITY iogon            "&#x0012F;" ><!--=small i, ogonek -->
+<!ENTITY Iogon            "&#x0012E;" ><!--=capital I, ogonek -->
+<!ENTITY itilde           "&#x00129;" ><!--=small i, tilde -->
+<!ENTITY Itilde           "&#x00128;" ><!--=capital I, tilde -->
+<!ENTITY jcirc            "&#x00135;" ><!--=small j, circumflex accent -->
+<!ENTITY Jcirc            "&#x00134;" ><!--=capital J, circumflex accent -->
+<!ENTITY kcedil           "&#x00137;" ><!--=small k, cedilla -->
+<!ENTITY Kcedil           "&#x00136;" ><!--=capital K, cedilla -->
+<!ENTITY kgreen           "&#x00138;" ><!--=small k, Greenlandic -->
+<!ENTITY lacute           "&#x0013A;" ><!--=small l, acute accent -->
+<!ENTITY Lacute           "&#x00139;" ><!--=capital L, acute accent -->
+<!ENTITY lcaron           "&#x0013E;" ><!--=small l, caron -->
+<!ENTITY Lcaron           "&#x0013D;" ><!--=capital L, caron -->
+<!ENTITY lcedil           "&#x0013C;" ><!--=small l, cedilla -->
+<!ENTITY Lcedil           "&#x0013B;" ><!--=capital L, cedilla -->
+<!ENTITY lmidot           "&#x00140;" ><!--=small l, middle dot -->
+<!ENTITY Lmidot           "&#x0013F;" ><!--=capital L, middle dot -->
+<!ENTITY lstrok           "&#x00142;" ><!--=small l, stroke -->
+<!ENTITY Lstrok           "&#x00141;" ><!--=capital L, stroke -->
+<!ENTITY nacute           "&#x00144;" ><!--=small n, acute accent -->
+<!ENTITY Nacute           "&#x00143;" ><!--=capital N, acute accent -->
+<!ENTITY napos            "&#x00149;" ><!--=small n, apostrophe -->
+<!ENTITY ncaron           "&#x00148;" ><!--=small n, caron -->
+<!ENTITY Ncaron           "&#x00147;" ><!--=capital N, caron -->
+<!ENTITY ncedil           "&#x00146;" ><!--=small n, cedilla -->
+<!ENTITY Ncedil           "&#x00145;" ><!--=capital N, cedilla -->
+<!ENTITY odblac           "&#x00151;" ><!--=small o, double acute accent -->
+<!ENTITY Odblac           "&#x00150;" ><!--=capital O, double acute accent -->
+<!ENTITY oelig            "&#x00153;" ><!--=small oe ligature -->
+<!ENTITY OElig            "&#x00152;" ><!--=capital OE ligature -->
+<!ENTITY omacr            "&#x0014D;" ><!--=small o, macron -->
+<!ENTITY Omacr            "&#x0014C;" ><!--=capital O, macron -->
+<!ENTITY racute           "&#x00155;" ><!--=small r, acute accent -->
+<!ENTITY Racute           "&#x00154;" ><!--=capital R, acute accent -->
+<!ENTITY rcaron           "&#x00159;" ><!--=small r, caron -->
+<!ENTITY Rcaron           "&#x00158;" ><!--=capital R, caron -->
+<!ENTITY rcedil           "&#x00157;" ><!--=small r, cedilla -->
+<!ENTITY Rcedil           "&#x00156;" ><!--=capital R, cedilla -->
+<!ENTITY sacute           "&#x0015B;" ><!--=small s, acute accent -->
+<!ENTITY Sacute           "&#x0015A;" ><!--=capital S, acute accent -->
+<!ENTITY scaron           "&#x00161;" ><!--=small s, caron -->
+<!ENTITY Scaron           "&#x00160;" ><!--=capital S, caron -->
+<!ENTITY scedil           "&#x0015F;" ><!--=small s, cedilla -->
+<!ENTITY Scedil           "&#x0015E;" ><!--=capital S, cedilla -->
+<!ENTITY scirc            "&#x0015D;" ><!--=small s, circumflex accent -->
+<!ENTITY Scirc            "&#x0015C;" ><!--=capital S, circumflex accent -->
+<!ENTITY tcaron           "&#x00165;" ><!--=small t, caron -->
+<!ENTITY Tcaron           "&#x00164;" ><!--=capital T, caron -->
+<!ENTITY tcedil           "&#x00163;" ><!--=small t, cedilla -->
+<!ENTITY Tcedil           "&#x00162;" ><!--=capital T, cedilla -->
+<!ENTITY tstrok           "&#x00167;" ><!--=small t, stroke -->
+<!ENTITY Tstrok           "&#x00166;" ><!--=capital T, stroke -->
+<!ENTITY ubreve           "&#x0016D;" ><!--=small u, breve -->
+<!ENTITY Ubreve           "&#x0016C;" ><!--=capital U, breve -->
+<!ENTITY udblac           "&#x00171;" ><!--=small u, double acute accent -->
+<!ENTITY Udblac           "&#x00170;" ><!--=capital U, double acute accent -->
+<!ENTITY umacr            "&#x0016B;" ><!--=small u, macron -->
+<!ENTITY Umacr            "&#x0016A;" ><!--=capital U, macron -->
+<!ENTITY uogon            "&#x00173;" ><!--=small u, ogonek -->
+<!ENTITY Uogon            "&#x00172;" ><!--=capital U, ogonek -->
+<!ENTITY uring            "&#x0016F;" ><!--=small u, ring -->
+<!ENTITY Uring            "&#x0016E;" ><!--=capital U, ring -->
+<!ENTITY utilde           "&#x00169;" ><!--=small u, tilde -->
+<!ENTITY Utilde           "&#x00168;" ><!--=capital U, tilde -->
+<!ENTITY wcirc            "&#x00175;" ><!--=small w, circumflex accent -->
+<!ENTITY Wcirc            "&#x00174;" ><!--=capital W, circumflex accent -->
+<!ENTITY ycirc            "&#x00177;" ><!--=small y, circumflex accent -->
+<!ENTITY Ycirc            "&#x00176;" ><!--=capital Y, circumflex accent -->
+<!ENTITY Yuml             "&#x00178;" ><!--=capital Y, dieresis or umlaut mark -->
+<!ENTITY zacute           "&#x0017A;" ><!--=small z, acute accent -->
+<!ENTITY Zacute           "&#x00179;" ><!--=capital Z, acute accent -->
+<!ENTITY zcaron           "&#x0017E;" ><!--=small z, caron -->
+<!ENTITY Zcaron           "&#x0017D;" ><!--=capital Z, caron -->
+<!ENTITY zdot             "&#x0017C;" ><!--=small z, dot above -->
+<!ENTITY Zdot             "&#x0017B;" ><!--=capital Z, dot above -->
+
+<!--
+     File isomfrk.ent produced by the XSL script mmldtd.xsl
+     from input data in unicode.xml.
+
+     Please report any errors to 
+     David Carlisle <davidc@nag.co.uk>.
+
+     The numeric character values assigned to each entity
+     (should) match either official Unicode assignments
+     or assignments provisionally allocated by the
+     Unicode Consortium based on the characters in the `STIX'
+     propsal for mathematics. Note that these assignments
+     have not been ratified by the corresponding ISO
+     committee and thus should be considered liable to
+     change.
+
+     Entity names in this file are derived from files carrying the
+     following notice:
+
+     (C) International Organization for Standardization 1991
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY afr              "&#x1D51E;" ><!--/frak a, lower case a -->
+<!ENTITY Afr              "&#x1D504;" ><!--/frak A, upper case a -->
+<!ENTITY bfr              "&#x1D51F;" ><!--/frak b, lower case b -->
+<!ENTITY Bfr              "&#x1D505;" ><!--/frak B, upper case b -->
+<!ENTITY cfr              "&#x1D520;" ><!--/frak c, lower case c -->
+<!ENTITY Cfr              "&#x0212D;" ><!--/frak C, upper case c -->
+<!ENTITY dfr              "&#x1D521;" ><!--/frak d, lower case d -->
+<!ENTITY Dfr              "&#x1D507;" ><!--/frak D, upper case d -->
+<!ENTITY efr              "&#x1D522;" ><!--/frak e, lower case e -->
+<!ENTITY Efr              "&#x1D508;" ><!--/frak E, upper case e -->
+<!ENTITY ffr              "&#x1D523;" ><!--/frak f, lower case f -->
+<!ENTITY Ffr              "&#x1D509;" ><!--/frak F, upper case f -->
+<!ENTITY gfr              "&#x1D524;" ><!--/frak g, lower case g -->
+<!ENTITY Gfr              "&#x1D50A;" ><!--/frak G, upper case g -->
+<!ENTITY hfr              "&#x1D525;" ><!--/frak h, lower case h -->
+<!ENTITY Hfr              "&#x0210C;" ><!--/frak H, upper case h -->
+<!ENTITY ifr              "&#x1D526;" ><!--/frak i, lower case i -->
+<!ENTITY Ifr              "&#x02111;" ><!--/frak I, upper case i -->
+<!ENTITY jfr              "&#x1D527;" ><!--/frak j, lower case j -->
+<!ENTITY Jfr              "&#x1D50D;" ><!--/frak J, upper case j -->
+<!ENTITY kfr              "&#x1D528;" ><!--/frak k, lower case k -->
+<!ENTITY Kfr              "&#x1D50E;" ><!--/frak K, upper case k -->
+<!ENTITY lfr              "&#x1D529;" ><!--/frak l, lower case l -->
+<!ENTITY Lfr              "&#x1D50F;" ><!--/frak L, upper case l -->
+<!ENTITY mfr              "&#x1D52A;" ><!--/frak m, lower case m -->
+<!ENTITY Mfr              "&#x1D510;" ><!--/frak M, upper case m -->
+<!ENTITY nfr              "&#x1D52B;" ><!--/frak n, lower case n -->
+<!ENTITY Nfr              "&#x1D511;" ><!--/frak N, upper case n -->
+<!ENTITY ofr              "&#x1D52C;" ><!--/frak o, lower case o -->
+<!ENTITY Ofr              "&#x1D512;" ><!--/frak O, upper case o -->
+<!ENTITY pfr              "&#x1D52D;" ><!--/frak p, lower case p -->
+<!ENTITY Pfr              "&#x1D513;" ><!--/frak P, upper case p -->
+<!ENTITY qfr              "&#x1D52E;" ><!--/frak q, lower case q -->
+<!ENTITY Qfr              "&#x1D514;" ><!--/frak Q, upper case q -->
+<!ENTITY rfr              "&#x1D52F;" ><!--/frak r, lower case r -->
+<!ENTITY Rfr              "&#x0211C;" ><!--/frak R, upper case r -->
+<!ENTITY sfr              "&#x1D530;" ><!--/frak s, lower case s -->
+<!ENTITY Sfr              "&#x1D516;" ><!--/frak S, upper case s -->
+<!ENTITY tfr              "&#x1D531;" ><!--/frak t, lower case t -->
+<!ENTITY Tfr              "&#x1D517;" ><!--/frak T, upper case t -->
+<!ENTITY ufr              "&#x1D532;" ><!--/frak u, lower case u -->
+<!ENTITY Ufr              "&#x1D518;" ><!--/frak U, upper case u -->
+<!ENTITY vfr              "&#x1D533;" ><!--/frak v, lower case v -->
+<!ENTITY Vfr              "&#x1D519;" ><!--/frak V, upper case v -->
+<!ENTITY wfr              "&#x1D534;" ><!--/frak w, lower case w -->
+<!ENTITY Wfr              "&#x1D51A;" ><!--/frak W, upper case w -->
+<!ENTITY xfr              "&#x1D535;" ><!--/frak x, lower case x -->
+<!ENTITY Xfr              "&#x1D51B;" ><!--/frak X, upper case x -->
+<!ENTITY yfr              "&#x1D536;" ><!--/frak y, lower case y -->
+<!ENTITY Yfr              "&#x1D51C;" ><!--/frak Y, upper case y -->
+<!ENTITY zfr              "&#x1D537;" ><!--/frak z, lower case z -->
+<!ENTITY Zfr              "&#x02128;" ><!--/frak Z, upper case z  -->
+
+<!--
+     File isomopf.ent produced by the XSL script mmldtd.xsl
+     from input data in unicode.xml.
+
+     Please report any errors to 
+     David Carlisle <davidc@nag.co.uk>.
+
+     The numeric character values assigned to each entity
+     (should) match either official Unicode assignments
+     or assignments provisionally allocated by the
+     Unicode Consortium based on the characters in the `STIX'
+     propsal for mathematics. Note that these assignments
+     have not been ratified by the corresponding ISO
+     committee and thus should be considered liable to
+     change.
+
+     Entity names in this file are derived from files carrying the
+     following notice:
+
+     (C) International Organization for Standardization 1991
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY Aopf             "&#x1D538;" ><!--/Bbb A, open face A -->
+<!ENTITY Bopf             "&#x1D539;" ><!--/Bbb B, open face B -->
+<!ENTITY Copf             "&#x02102;" ><!--/Bbb C, open face C -->
+<!ENTITY Dopf             "&#x1D53B;" ><!--/Bbb D, open face D -->
+<!ENTITY Eopf             "&#x1D53C;" ><!--/Bbb E, open face E -->
+<!ENTITY Fopf             "&#x1D53D;" ><!--/Bbb F, open face F -->
+<!ENTITY Gopf             "&#x1D53E;" ><!--/Bbb G, open face G -->
+<!ENTITY Hopf             "&#x0210D;" ><!--/Bbb H, open face H -->
+<!ENTITY Iopf             "&#x1D540;" ><!--/Bbb I, open face I -->
+<!ENTITY Jopf             "&#x1D541;" ><!--/Bbb J, open face J -->
+<!ENTITY Kopf             "&#x1D542;" ><!--/Bbb K, open face K  -->
+<!ENTITY Lopf             "&#x1D543;" ><!--/Bbb L, open face L  -->
+<!ENTITY Mopf             "&#x1D544;" ><!--/Bbb M, open face M  -->
+<!ENTITY Nopf             "&#x02115;" ><!--/Bbb N, open face N -->
+<!ENTITY Oopf             "&#x1D546;" ><!--/Bbb O, open face O -->
+<!ENTITY Popf             "&#x02119;" ><!--/Bbb P, open face P -->
+<!ENTITY Qopf             "&#x0211A;" ><!--/Bbb Q, open face Q -->
+<!ENTITY Ropf             "&#x0211D;" ><!--/Bbb R, open face R -->
+<!ENTITY Sopf             "&#x1D54A;" ><!--/Bbb S, open face S -->
+<!ENTITY Topf             "&#x1D54B;" ><!--/Bbb T, open face T -->
+<!ENTITY Uopf             "&#x1D54C;" ><!--/Bbb U, open face U -->
+<!ENTITY Vopf             "&#x1D54D;" ><!--/Bbb V, open face V -->
+<!ENTITY Wopf             "&#x1D54E;" ><!--/Bbb W, open face W -->
+<!ENTITY Xopf             "&#x1D54F;" ><!--/Bbb X, open face X -->
+<!ENTITY Yopf             "&#x1D550;" ><!--/Bbb Y, open face Y -->
+<!ENTITY Zopf             "&#x02124;" ><!--/Bbb Z, open face Z -->
+
+<!--
+     File isomscr.ent produced by the XSL script mmldtd.xsl
+     from input data in unicode.xml.
+
+     Please report any errors to 
+     David Carlisle <davidc@nag.co.uk>.
+
+     The numeric character values assigned to each entity
+     (should) match either official Unicode assignments
+     or assignments provisionally allocated by the
+     Unicode Consortium based on the characters in the `STIX'
+     propsal for mathematics. Note that these assignments
+     have not been ratified by the corresponding ISO
+     committee and thus should be considered liable to
+     change.
+
+     Entity names in this file are derived from files carrying the
+     following notice:
+
+     (C) International Organization for Standardization 1991
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY ascr             "&#x1D4B6;" ><!--/scr a, script letter a -->
+<!ENTITY Ascr             "&#x1D49C;" ><!--/scr A, script letter A -->
+<!ENTITY bscr             "&#x1D4B7;" ><!--/scr b, script letter b -->
+<!ENTITY Bscr             "&#x0212C;" ><!--/scr B, script letter B -->
+<!ENTITY cscr             "&#x1D4B8;" ><!--/scr c, script letter c -->
+<!ENTITY Cscr             "&#x1D49E;" ><!--/scr C, script letter C -->
+<!ENTITY dscr             "&#x1D4B9;" ><!--/scr d, script letter d -->
+<!ENTITY Dscr             "&#x1D49F;" ><!--/scr D, script letter D -->
+<!ENTITY escr             "&#x0212F;" ><!--/scr e, script letter e -->
+<!ENTITY Escr             "&#x02130;" ><!--/scr E, script letter E -->
+<!ENTITY fscr             "&#x1D4BB;" ><!--/scr f, script letter f -->
+<!ENTITY Fscr             "&#x02131;" ><!--/scr F, script letter F -->
+<!ENTITY gscr             "&#x0210A;" ><!--/scr g, script letter g -->
+<!ENTITY Gscr             "&#x1D4A2;" ><!--/scr G, script letter G -->
+<!ENTITY hscr             "&#x1D4BD;" ><!--/scr h, script letter h -->
+<!ENTITY Hscr             "&#x0210B;" ><!--/scr H, script letter H -->
+<!ENTITY iscr             "&#x1D4BE;" ><!--/scr i, script letter i -->
+<!ENTITY Iscr             "&#x02110;" ><!--/scr I, script letter I -->
+<!ENTITY jscr             "&#x1D4BF;" ><!--/scr j, script letter j -->
+<!ENTITY Jscr             "&#x1D4A5;" ><!--/scr J, script letter J -->
+<!ENTITY kscr             "&#x1D4C0;" ><!--/scr k, script letter k -->
+<!ENTITY Kscr             "&#x1D4A6;" ><!--/scr K, script letter K -->
+<!ENTITY lscr             "&#x02113;" ><!--/scr l, script letter l -->
+<!ENTITY Lscr             "&#x02112;" ><!--/scr L, script letter L -->
+<!ENTITY mscr             "&#x1D4C2;" ><!--/scr m, script letter m -->
+<!ENTITY Mscr             "&#x02133;" ><!--/scr M, script letter M -->
+<!ENTITY nscr             "&#x1D4C3;" ><!--/scr n, script letter n -->
+<!ENTITY Nscr             "&#x1D4A9;" ><!--/scr N, script letter N -->
+<!ENTITY oscr             "&#x02134;" ><!--/scr o, script letter o -->
+<!ENTITY Oscr             "&#x1D4AA;" ><!--/scr O, script letter O -->
+<!ENTITY pscr             "&#x1D4C5;" ><!--/scr p, script letter p -->
+<!ENTITY Pscr             "&#x1D4AB;" ><!--/scr P, script letter P -->
+<!ENTITY qscr             "&#x1D4C6;" ><!--/scr q, script letter q -->
+<!ENTITY Qscr             "&#x1D4AC;" ><!--/scr Q, script letter Q -->
+<!ENTITY rscr             "&#x1D4C7;" ><!--/scr r, script letter r -->
+<!ENTITY Rscr             "&#x0211B;" ><!--/scr R, script letter R -->
+<!ENTITY sscr             "&#x1D4C8;" ><!--/scr s, script letter s -->
+<!ENTITY Sscr             "&#x1D4AE;" ><!--/scr S, script letter S -->
+<!ENTITY tscr             "&#x1D4C9;" ><!--/scr t, script letter t -->
+<!ENTITY Tscr             "&#x1D4AF;" ><!--/scr T, script letter T -->
+<!ENTITY uscr             "&#x1D4CA;" ><!--/scr u, script letter u -->
+<!ENTITY Uscr             "&#x1D4B0;" ><!--/scr U, script letter U -->
+<!ENTITY vscr             "&#x1D4CB;" ><!--/scr v, script letter v -->
+<!ENTITY Vscr             "&#x1D4B1;" ><!--/scr V, script letter V -->
+<!ENTITY wscr             "&#x1D4CC;" ><!--/scr w, script letter w -->
+<!ENTITY Wscr             "&#x1D4B2;" ><!--/scr W, script letter W -->
+<!ENTITY xscr             "&#x1D4CD;" ><!--/scr x, script letter x -->
+<!ENTITY Xscr             "&#x1D4B3;" ><!--/scr X, script letter X -->
+<!ENTITY yscr             "&#x1D4CE;" ><!--/scr y, script letter y -->
+<!ENTITY Yscr             "&#x1D4B4;" ><!--/scr Y, script letter Y -->
+<!ENTITY zscr             "&#x1D4CF;" ><!--/scr z, script letter z -->
+<!ENTITY Zscr             "&#x1D4B5;" ><!--/scr Z, script letter Z -->
+
+<!--
+     File isonum.ent produced by the XSL script mmldtd.xsl
+     from input data in unicode.xml.
+
+     Please report any errors to 
+     David Carlisle <davidc@nag.co.uk>.
+
+     The numeric character values assigned to each entity
+     (should) match either official Unicode assignments
+     or assignments provisionally allocated by the
+     Unicode Consortium based on the characters in the `STIX'
+     propsal for mathematics. Note that these assignments
+     have not been ratified by the corresponding ISO
+     committee and thus should be considered liable to
+     change.
+
+     Entity names in this file are derived from files carrying the
+     following notice:
+
+     (C) International Organization for Standardization 1986
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY amp              "&#x26;&#x00026;" ><!--=ampersand -->
+<!ENTITY apos             "&#x00027;" ><!--=apostrophe -->
+<!ENTITY ast              "&#x0002A;" ><!--/ast B: =asterisk -->
+<!ENTITY brvbar           "&#x000A6;" ><!--=broken (vertical) bar -->
+<!ENTITY bsol             "&#x0005C;" ><!--/backslash =reverse solidus -->
+<!ENTITY cent             "&#x000A2;" ><!--=cent sign -->
+<!ENTITY colon            "&#x0003A;" ><!--/colon P: -->
+<!ENTITY comma            "&#x0002C;" ><!--P: =comma -->
+<!ENTITY commat           "&#x00040;" ><!--=commercial at -->
+<!ENTITY copy             "&#x000A9;" ><!--=copyright sign -->
+<!ENTITY curren           "&#x000A4;" ><!--=general currency sign -->
+<!ENTITY darr             "&#x02193;" ><!--/downarrow A: =downward arrow -->
+<!ENTITY deg              "&#x000B0;" ><!--=degree sign -->
+<!ENTITY divide           "&#x000F7;" ><!--/div B: =divide sign -->
+<!ENTITY dollar           "&#x00024;" ><!--=dollar sign -->
+<!ENTITY equals           "&#x0003D;" ><!--=equals sign R: -->
+<!ENTITY excl             "&#x00021;" ><!--=exclamation mark -->
+<!ENTITY frac12           "&#x000BD;" ><!--=fraction one-half -->
+<!ENTITY frac14           "&#x000BC;" ><!--=fraction one-quarter -->
+<!ENTITY frac18           "&#x0215B;" ><!--=fraction one-eighth -->
+<!ENTITY frac34           "&#x000BE;" ><!--=fraction three-quarters -->
+<!ENTITY frac38           "&#x0215C;" ><!--=fraction three-eighths -->
+<!ENTITY frac58           "&#x0215D;" ><!--=fraction five-eighths -->
+<!ENTITY frac78           "&#x0215E;" ><!--=fraction seven-eighths -->
+<!ENTITY gt               "&#x0003E;" ><!--=greater-than sign R: -->
+<!ENTITY half             "&#x000BD;" ><!--=fraction one-half -->
+<!ENTITY horbar           "&#x02015;" ><!--=horizontal bar -->
+<!ENTITY hyphen           "&#x02010;" ><!--=hyphen -->
+<!ENTITY iexcl            "&#x000A1;" ><!--=inverted exclamation mark -->
+<!ENTITY iquest           "&#x000BF;" ><!--=inverted question mark -->
+<!ENTITY laquo            "&#x000AB;" ><!--=angle quotation mark, left -->
+<!ENTITY larr             "&#x02190;" ><!--/leftarrow /gets A: =leftward arrow -->
+<!ENTITY lcub             "&#x0007B;" ><!--/lbrace O: =left curly bracket -->
+<!ENTITY ldquo            "&#x0201C;" ><!--=double quotation mark, left -->
+<!ENTITY lowbar           "&#x0005F;" ><!--=low line -->
+<!ENTITY lpar             "&#x00028;" ><!--O: =left parenthesis -->
+<!ENTITY lsqb             "&#x0005B;" ><!--/lbrack O: =left square bracket -->
+<!ENTITY lsquo            "&#x02018;" ><!--=single quotation mark, left -->
+<!ENTITY lt               "&#x26;&#x0003C;" ><!--=less-than sign R: -->
+<!ENTITY micro            "&#x000B5;" ><!--=micro sign -->
+<!ENTITY middot           "&#x000B7;" ><!--/centerdot B: =middle dot -->
+<!ENTITY nbsp             "&#x000A0;" ><!--=no break (required) space -->
+<!ENTITY not              "&#x000AC;" ><!--/neg /lnot =not sign -->
+<!ENTITY num              "&#x00023;" ><!--=number sign -->
+<!ENTITY ohm              "&#x02126;" ><!--=ohm sign -->
+<!ENTITY ordf             "&#x000AA;" ><!--=ordinal indicator, feminine -->
+<!ENTITY ordm             "&#x000BA;" ><!--=ordinal indicator, masculine -->
+<!ENTITY para             "&#x000B6;" ><!--=pilcrow (paragraph sign) -->
+<!ENTITY percnt           "&#x00025;" ><!--=percent sign -->
+<!ENTITY period           "&#x0002E;" ><!--=full stop, period -->
+<!ENTITY plus             "&#x0002B;" ><!--=plus sign B: -->
+<!ENTITY plusmn           "&#x000B1;" ><!--/pm B: =plus-or-minus sign -->
+<!ENTITY pound            "&#x000A3;" ><!--=pound sign -->
+<!ENTITY quest            "&#x0003F;" ><!--=question mark -->
+<!ENTITY quot             "&#x00022;" ><!--=quotation mark -->
+<!ENTITY raquo            "&#x000BB;" ><!--=angle quotation mark, right -->
+<!ENTITY rarr             "&#x02192;" ><!--/rightarrow /to A: =rightward arrow -->
+<!ENTITY rcub             "&#x0007D;" ><!--/rbrace C: =right curly bracket -->
+<!ENTITY rdquo            "&#x0201D;" ><!--=double quotation mark, right -->
+<!ENTITY reg              "&#x000AE;" ><!--/circledR =registered sign -->
+<!ENTITY rpar             "&#x00029;" ><!--C: =right parenthesis -->
+<!ENTITY rsqb             "&#x0005D;" ><!--/rbrack C: =right square bracket -->
+<!ENTITY rsquo            "&#x02019;" ><!--=single quotation mark, right -->
+<!ENTITY sect             "&#x000A7;" ><!--=section sign -->
+<!ENTITY semi             "&#x0003B;" ><!--=semicolon P: -->
+<!ENTITY shy              "&#x000AD;" ><!--=soft hyphen -->
+<!ENTITY sol              "&#x0002F;" ><!--=solidus -->
+<!ENTITY sung             "&#x0266A;" ><!--=music note (sung text sign) -->
+<!ENTITY sup1             "&#x000B9;" ><!--=superscript one -->
+<!ENTITY sup2             "&#x000B2;" ><!--=superscript two -->
+<!ENTITY sup3             "&#x000B3;" ><!--=superscript three -->
+<!ENTITY times            "&#x000D7;" ><!--/times B: =multiply sign -->
+<!ENTITY trade            "&#x02122;" ><!--=trade mark sign -->
+<!ENTITY uarr             "&#x02191;" ><!--/uparrow A: =upward arrow -->
+<!ENTITY verbar           "&#x0007C;" ><!--/vert =vertical bar -->
+<!ENTITY yen              "&#x000A5;" ><!--/yen =yen sign -->
+
+<!--
+     File isopub.ent produced by the XSL script mmldtd.xsl
+     from input data in unicode.xml.
+
+     Please report any errors to 
+     David Carlisle <davidc@nag.co.uk>.
+
+     The numeric character values assigned to each entity
+     (should) match either official Unicode assignments
+     or assignments provisionally allocated by the
+     Unicode Consortium based on the characters in the `STIX'
+     propsal for mathematics. Note that these assignments
+     have not been ratified by the corresponding ISO
+     committee and thus should be considered liable to
+     change.
+
+     Entity names in this file are derived from files carrying the
+     following notice:
+
+     (C) International Organization for Standardization 1986
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY blank            "&#x02423;" ><!--=significant blank symbol -->
+<!ENTITY blk12            "&#x02592;" ><!--=50% shaded block -->
+<!ENTITY blk14            "&#x02591;" ><!--=25% shaded block -->
+<!ENTITY blk34            "&#x02593;" ><!--=75% shaded block -->
+<!ENTITY block            "&#x02588;" ><!--=full block -->
+<!ENTITY bull             "&#x02022;" ><!--/bullet B: =round bullet, filled -->
+<!ENTITY caret            "&#x02041;" ><!--=caret (insertion mark) -->
+<!ENTITY check            "&#x02713;" ><!--/checkmark =tick, check mark -->
+<!ENTITY cir              "&#x025CB;" ><!--/circ B: =circle, open -->
+<!ENTITY clubs            "&#x02663;" ><!--/clubsuit =club suit symbol  -->
+<!ENTITY copysr           "&#x02117;" ><!--=sound recording copyright sign -->
+<!ENTITY cross            "&#x02717;" ><!--=ballot cross -->
+<!ENTITY dagger           "&#x02020;" ><!--/dagger B: =dagger -->
+<!ENTITY Dagger           "&#x02021;" ><!--/ddagger B: =double dagger -->
+<!ENTITY dash             "&#x02010;" ><!--=hyphen (true graphic) -->
+<!ENTITY diams            "&#x02666;" ><!--/diamondsuit =diamond suit symbol  -->
+<!ENTITY dlcrop           "&#x0230D;" ><!--downward left crop mark  -->
+<!ENTITY drcrop           "&#x0230C;" ><!--downward right crop mark  -->
+<!ENTITY dtri             "&#x025BF;" ><!--/triangledown =down triangle, open -->
+<!ENTITY dtrif            "&#x025BE;" ><!--/blacktriangledown =dn tri, filled -->
+<!ENTITY emsp             "&#x02003;" ><!--=em space -->
+<!ENTITY emsp13           "&#x02004;" ><!--=1/3-em space -->
+<!ENTITY emsp14           "&#x02005;" ><!--=1/4-em space -->
+<!ENTITY ensp             "&#x02002;" ><!--=en space (1/2-em) -->
+<!ENTITY female           "&#x02640;" ><!--=female symbol -->
+<!ENTITY ffilig           "&#x0FB03;" ><!--small ffi ligature -->
+<!ENTITY fflig            "&#x0FB00;" ><!--small ff ligature -->
+<!ENTITY ffllig           "&#x0FB04;" ><!--small ffl ligature -->
+<!ENTITY filig            "&#x0FB01;" ><!--small fi ligature -->
+<!ENTITY flat             "&#x0266D;" ><!--/flat =musical flat -->
+<!ENTITY fllig            "&#x0FB02;" ><!--small fl ligature -->
+<!ENTITY frac13           "&#x02153;" ><!--=fraction one-third -->
+<!ENTITY frac15           "&#x02155;" ><!--=fraction one-fifth -->
+<!ENTITY frac16           "&#x02159;" ><!--=fraction one-sixth -->
+<!ENTITY frac23           "&#x02154;" ><!--=fraction two-thirds -->
+<!ENTITY frac25           "&#x02156;" ><!--=fraction two-fifths -->
+<!ENTITY frac35           "&#x02157;" ><!--=fraction three-fifths -->
+<!ENTITY frac45           "&#x02158;" ><!--=fraction four-fifths -->
+<!ENTITY frac56           "&#x0215A;" ><!--=fraction five-sixths -->
+<!ENTITY hairsp           "&#x0200A;" ><!--=hair space -->
+<!ENTITY hellip           "&#x02026;" ><!--=ellipsis (horizontal) -->
+<!ENTITY hybull           "&#x02043;" ><!--rectangle, filled (hyphen bullet) -->
+<!ENTITY incare           "&#x02105;" ><!--=in-care-of symbol -->
+<!ENTITY ldquor           "&#x0201E;" ><!--=rising dbl quote, left (low) -->
+<!ENTITY lhblk            "&#x02584;" ><!--=lower half block -->
+<!ENTITY loz              "&#x025CA;" ><!--/lozenge - lozenge or total mark -->
+<!ENTITY lozf             "&#x029EB;" ><!--/blacklozenge - lozenge, filled -->
+<!ENTITY lsquor           "&#x0201A;" ><!--=rising single quote, left (low) -->
+<!ENTITY ltri             "&#x025C3;" ><!--/triangleleft B: l triangle, open -->
+<!ENTITY ltrif            "&#x025C2;" ><!--/blacktriangleleft R: =l tri, filled -->
+<!ENTITY male             "&#x02642;" ><!--=male symbol -->
+<!ENTITY malt             "&#x02720;" ><!--/maltese =maltese cross -->
+<!ENTITY marker           "&#x025AE;" ><!--=histogram marker -->
+<!ENTITY mdash            "&#x02014;" ><!--=em dash  -->
+<!ENTITY mldr             "&#x02026;" ><!--em leader -->
+<!ENTITY natur            "&#x0266E;" ><!--/natural - music natural -->
+<!ENTITY ndash            "&#x02013;" ><!--=en dash -->
+<!ENTITY nldr             "&#x02025;" ><!--=double baseline dot (en leader) -->
+<!ENTITY numsp            "&#x02007;" ><!--=digit space (width of a number) -->
+<!ENTITY phone            "&#x0260E;" ><!--=telephone symbol  -->
+<!ENTITY puncsp           "&#x02008;" ><!--=punctuation space (width of comma) -->
+<!ENTITY rdquor           "&#x0201D;" ><!--rising dbl quote, right (high) -->
+<!ENTITY rect             "&#x025AD;" ><!--=rectangle, open -->
+<!ENTITY rsquor           "&#x02019;" ><!--rising single quote, right (high) -->
+<!ENTITY rtri             "&#x025B9;" ><!--/triangleright B: r triangle, open -->
+<!ENTITY rtrif            "&#x025B8;" ><!--/blacktriangleright R: =r tri, filled -->
+<!ENTITY rx               "&#x0211E;" ><!--pharmaceutical prescription (Rx) -->
+<!ENTITY sext             "&#x02736;" ><!--sextile (6-pointed star) -->
+<!ENTITY sharp            "&#x0266F;" ><!--/sharp =musical sharp -->
+<!ENTITY spades           "&#x02660;" ><!--/spadesuit =spades suit symbol  -->
+<!ENTITY squ              "&#x025A1;" ><!--=square, open -->
+<!ENTITY squf             "&#x025AA;" ><!--/blacksquare =sq bullet, filled -->
+<!ENTITY star             "&#x022C6;" ><!--=star, open -->
+<!ENTITY starf            "&#x02605;" ><!--/bigstar - star, filled  -->
+<!ENTITY target           "&#x02316;" ><!--register mark or target -->
+<!ENTITY telrec           "&#x02315;" ><!--=telephone recorder symbol -->
+<!ENTITY thinsp           "&#x02009;" ><!--=thin space (1/6-em) -->
+<!ENTITY uhblk            "&#x02580;" ><!--=upper half block -->
+<!ENTITY ulcrop           "&#x0230F;" ><!--upward left crop mark  -->
+<!ENTITY urcrop           "&#x0230E;" ><!--upward right crop mark  -->
+<!ENTITY utri             "&#x025B5;" ><!--/triangle =up triangle, open -->
+<!ENTITY utrif            "&#x025B4;" ><!--/blacktriangle =up tri, filled -->
+<!ENTITY vellip           "&#x022EE;" ><!--vertical ellipsis -->
+
+<!--
+     File isotech.ent produced by the XSL script mmldtd.xsl
+     from input data in unicode.xml.
+
+     Please report any errors to 
+     David Carlisle <davidc@nag.co.uk>.
+
+     The numeric character values assigned to each entity
+     (should) match either official Unicode assignments
+     or assignments provisionally allocated by the
+     Unicode Consortium based on the characters in the `STIX'
+     propsal for mathematics. Note that these assignments
+     have not been ratified by the corresponding ISO
+     committee and thus should be considered liable to
+     change.
+
+     Entity names in this file are derived from files carrying the
+     following notice:
+
+     (C) International Organization for Standardization 1991
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+
+-->
+
+<!ENTITY acd              "&#x0223F;" ><!--ac current -->
+<!ENTITY aleph            "&#x02135;" ><!--/aleph aleph, Hebrew -->
+<!ENTITY and              "&#x02227;" ><!--/wedge /land B: logical and -->
+<!ENTITY And              "&#x02A53;" ><!--dbl logical and -->
+<!ENTITY andand           "&#x02A55;" ><!--two logical and -->
+<!ENTITY andd             "&#x02A5C;" ><!--and, horizontal dash -->
+<!ENTITY andslope         "&#x02A58;" ><!--sloping large and -->
+<!ENTITY andv             "&#x02A5A;" ><!--and with middle stem -->
+<!ENTITY angrt            "&#x0221F;" ><!--right (90 degree) angle -->
+<!ENTITY angsph           "&#x02222;" ><!--/sphericalangle angle-spherical -->
+<!ENTITY angst            "&#x0212B;" ><!--Angstrom capital A, ring -->
+<!ENTITY ap               "&#x02248;" ><!--/approx R: approximate -->
+<!ENTITY apacir           "&#x02A6F;" ><!--approximate, circumflex accent -->
+<!ENTITY awconint         "&#x02233;" ><!--contour integral, anti-clockwise -->
+<!ENTITY awint            "&#x02A11;" ><!--anti clock-wise integration -->
+<!ENTITY becaus           "&#x02235;" ><!--/because R: because -->
+<!ENTITY bernou           "&#x0212C;" ><!--Bernoulli function (script capital B)  -->
+<!ENTITY bne              "&#x0003D;&#x020E5;" ><!--reverse not equal -->
+<!ENTITY bnequiv          "&#x02261;&#x020E5;" ><!--reverse not equivalent -->
+<!ENTITY bnot             "&#x02310;" ><!--reverse not -->
+<!ENTITY bNot             "&#x02AED;" ><!--reverse not with two horizontal strokes -->
+<!ENTITY bottom           "&#x022A5;" ><!--/bot bottom -->
+<!ENTITY cap              "&#x02229;" ><!--/cap B: intersection -->
+<!ENTITY Cconint          "&#x02230;" ><!--triple contour integral operator -->
+<!ENTITY cirfnint         "&#x02A10;" ><!--circulation function -->
+<!ENTITY compfn           "&#x02218;" ><!--/circ B: composite function (small circle) -->
+<!ENTITY cong             "&#x02245;" ><!--/cong R: congruent with -->
+<!ENTITY conint           "&#x0222E;" ><!--/oint L: contour integral operator -->
+<!ENTITY Conint           "&#x0222F;" ><!--double contour integral operator -->
+<!ENTITY ctdot            "&#x022EF;" ><!--/cdots, three dots, centered -->
+<!ENTITY cup              "&#x0222A;" ><!--/cup B: union or logical sum -->
+<!ENTITY cwconint         "&#x02232;" ><!--contour integral, clockwise -->
+<!ENTITY cwint            "&#x02231;" ><!--clockwise integral -->
+<!ENTITY cylcty           "&#x0232D;" ><!--cylindricity -->
+<!ENTITY disin            "&#x022F2;" ><!--set membership, long horizontal stroke -->
+<!ENTITY Dot              "&#x000A8;" ><!--dieresis or umlaut mark -->
+<!ENTITY DotDot           "&#x020DC;" ><!--four dots above -->
+<!ENTITY dsol             "&#x029F6;" ><!--solidus, bar above -->
+<!ENTITY dtdot            "&#x022F1;" ><!--/ddots, three dots, descending -->
+<!ENTITY dwangle          "&#x029A6;" ><!--large downward pointing angle -->
+<!ENTITY epar             "&#x022D5;" ><!--parallel, equal; equal or parallel -->
+<!ENTITY eparsl           "&#x029E3;" ><!--parallel, slanted, equal; homothetically congruent to -->
+<!ENTITY equiv            "&#x02261;" ><!--/equiv R: identical with -->
+<!ENTITY eqvparsl         "&#x029E5;" ><!--equivalent, equal; congruent and parallel -->
+<!ENTITY exist            "&#x02203;" ><!--/exists at least one exists -->
+<!ENTITY fnof             "&#x00192;" ><!--function of (italic small f) -->
+<!ENTITY forall           "&#x02200;" ><!--/forall for all -->
+<!ENTITY fpartint         "&#x02A0D;" ><!--finite part integral -->
+<!ENTITY ge               "&#x02265;" ><!--/geq /ge R: greater-than-or-equal -->
+<!ENTITY hamilt           "&#x0210B;" ><!--Hamiltonian (script capital H)  -->
+<!ENTITY iff              "&#x021D4;" ><!--/iff if and only if  -->
+<!ENTITY iinfin           "&#x029DC;" ><!--infinity sign, incomplete -->
+<!ENTITY imped            "&#x1D543;" ><!--impedance -->
+<!ENTITY infin            "&#x0221E;" ><!--/infty infinity -->
+<!ENTITY int              "&#x0222B;" ><!--/int L: integral operator -->
+<!ENTITY Int              "&#x0222C;" ><!--double integral operator -->
+<!ENTITY intlarhk         "&#x02A17;" ><!--integral, left arrow with hook -->
+<!ENTITY isin             "&#x02208;" ><!--/in R: set membership  -->
+<!ENTITY isindot          "&#x022F5;" ><!--set membership, dot above -->
+<!ENTITY isinE            "&#x022F9;" ><!--set membership, two horizontal strokes -->
+<!ENTITY isins            "&#x022F4;" ><!--set membership, vertical bar on horizontal stroke -->
+<!ENTITY isinsv           "&#x022F3;" ><!--large set membership, vertical bar on horizontal stroke -->
+<!ENTITY isinv            "&#x02208;" ><!--set membership, variant -->
+<!ENTITY lagran           "&#x02112;" ><!--Lagrangian (script capital L)  -->
+<!ENTITY lang             "&#x02329;" ><!--/langle O: left angle bracket -->
+<!ENTITY Lang             "&#x0300A;" ><!--left angle bracket, double -->
+<!ENTITY lArr             "&#x021D0;" ><!--/Leftarrow A: is implied by -->
+<!ENTITY lbbrk            "&#x03014;" ><!--left broken bracket -->
+<!ENTITY le               "&#x02264;" ><!--/leq /le R: less-than-or-equal -->
+<!ENTITY loang            "&#x0F558;" ><!--left open angular bracket -->
+<!ENTITY lobrk            "&#x0301A;" ><!--left open bracket -->
+<!ENTITY lopar            "&#x03018;" ><!--left open parenthesis -->
+<!ENTITY lowast           "&#x02217;" ><!--low asterisk -->
+<!ENTITY minus            "&#x02212;" ><!--B: minus sign -->
+<!ENTITY mnplus           "&#x02213;" ><!--/mp B: minus-or-plus sign -->
+<!ENTITY nabla            "&#x02207;" ><!--/nabla del, Hamilton operator -->
+<!ENTITY ne               "&#x02260;" ><!--/ne /neq R: not equal -->
+<!ENTITY nedot            "&#x02260;&#x0FE00;" ><!--not equal, dot -->
+<!ENTITY nhpar            "&#x02AF2;" ><!--not, horizontal, parallel -->
+<!ENTITY ni               "&#x0220B;" ><!--/ni /owns R: contains -->
+<!ENTITY nis              "&#x022FC;" ><!--contains, vertical bar on horizontal stroke -->
+<!ENTITY nisd             "&#x022FA;" ><!--contains, long horizontal stroke -->
+<!ENTITY niv              "&#x0220B;" ><!--contains, variant -->
+<!ENTITY Not              "&#x02AEC;" ><!--not with two horizontal strokes -->
+<!ENTITY notin            "&#x02209;" ><!--/notin N: negated set membership -->
+<!ENTITY notindot         "&#x022F6;&#x0FE00;" ><!--negated set membership, dot above -->
+<!ENTITY notinva          "&#x02209;&#x00338;" ><!--negated set membership, variant -->
+<!ENTITY notinvb          "&#x022F7;" ><!--negated set membership, variant -->
+<!ENTITY notinvc          "&#x022F6;" ><!--negated set membership, variant -->
+<!ENTITY notni            "&#x0220C;" ><!--negated contains -->
+<!ENTITY notniva          "&#x0220C;" ><!--negated contains, variant -->
+<!ENTITY notnivb          "&#x022FE;" ><!--contains, variant -->
+<!ENTITY notnivc          "&#x022FD;" ><!--contains, variant -->
+<!ENTITY nparsl           "&#x02225;&#x0FE00;&#x020E5;" ><!--not parallel, slanted -->
+<!ENTITY npart            "&#x02202;&#x00338;" ><!--not partial differential -->
+<!ENTITY npolint          "&#x02A14;" ><!--line integration, not including the pole -->
+<!ENTITY nvinfin          "&#x029DE;" ><!--not, vert, infinity -->
+<!ENTITY olcross          "&#x029BB;" ><!--circle, cross -->
+<!ENTITY or               "&#x02228;" ><!--/vee /lor B: logical or -->
+<!ENTITY Or               "&#x02A54;" ><!--dbl logical or -->
+<!ENTITY ord              "&#x02A5D;" ><!--or, horizontal dash -->
+<!ENTITY order            "&#x02134;" ><!--order of (script small o)  -->
+<!ENTITY oror             "&#x02A56;" ><!--two logical or -->
+<!ENTITY orslope          "&#x02A57;" ><!--sloping large or -->
+<!ENTITY orv              "&#x02A5B;" ><!--or with middle stem -->
+<!ENTITY par              "&#x02225;" ><!--/parallel R: parallel -->
+<!ENTITY parsl            "&#x02225;&#x0FE00;" ><!--parallel, slanted -->
+<!ENTITY part             "&#x02202;" ><!--/partial partial differential -->
+<!ENTITY permil           "&#x02030;" ><!--per thousand -->
+<!ENTITY perp             "&#x022A5;" ><!--/perp R: perpendicular -->
+<!ENTITY pertenk          "&#x02031;" ><!--per 10 thousand -->
+<!ENTITY phmmat           "&#x02133;" ><!--physics M-matrix (script capital M)  -->
+<!ENTITY pointint         "&#x02A15;" ><!--integral around a point operator -->
+<!ENTITY prime            "&#x02032;" ><!--/prime prime or minute -->
+<!ENTITY Prime            "&#x02033;" ><!--double prime or second -->
+<!ENTITY profalar         "&#x0232E;" ><!--all-around profile -->
+<!ENTITY profline         "&#x02312;" ><!--profile of a line -->
+<!ENTITY profsurf         "&#x02313;" ><!--profile of a surface -->
+<!ENTITY prop             "&#x0221D;" ><!--/propto R: is proportional to -->
+<!ENTITY qint             "&#x02A0C;" ><!--/iiiint quadruple integral operator -->
+<!ENTITY qprime           "&#x02057;" ><!--quadruple prime -->
+<!ENTITY quatint          "&#x02A16;" ><!--quaternion integral operator -->
+<!ENTITY radic            "&#x0221A;" ><!--/surd radical -->
+<!ENTITY rang             "&#x0232A;" ><!--/rangle C: right angle bracket -->
+<!ENTITY Rang             "&#x0300B;" ><!--right angle bracket, double -->
+<!ENTITY rArr             "&#x021D2;" ><!--/Rightarrow A: implies -->
+<!ENTITY rbbrk            "&#x03015;" ><!--right broken bracket -->
+<!ENTITY roang            "&#x0F559;" ><!--right open angular bracket -->
+<!ENTITY robrk            "&#x0301B;" ><!--right open bracket -->
+<!ENTITY ropar            "&#x03019;" ><!--right open parenthesis -->
+<!ENTITY rppolint         "&#x02A12;" ><!--line integration, rectangular path around pole -->
+<!ENTITY scpolint         "&#x02A13;" ><!--line integration, semi-circular path around pole -->
+<!ENTITY sim              "&#x0223C;" ><!--/sim R: similar -->
+<!ENTITY simdot           "&#x02A6A;" ><!--similar, dot -->
+<!ENTITY sime             "&#x02243;" ><!--/simeq R: similar, equals -->
+<!ENTITY smeparsl         "&#x029E4;" ><!--similar, parallel, slanted, equal -->
+<!ENTITY square           "&#x025A1;" ><!--/square, square -->
+<!ENTITY squarf           "&#x025AA;" ><!--/blacksquare, square, filled  -->
+<!ENTITY sub              "&#x02282;" ><!--/subset R: subset or is implied by -->
+<!ENTITY sube             "&#x02286;" ><!--/subseteq R: subset, equals -->
+<!ENTITY sup              "&#x02283;" ><!--/supset R: superset or implies -->
+<!ENTITY supe             "&#x02287;" ><!--/supseteq R: superset, equals -->
+<!ENTITY tdot             "&#x020DB;" ><!--three dots above -->
+<!ENTITY there4           "&#x02234;" ><!--/therefore R: therefore -->
+<!ENTITY tint             "&#x0222D;" ><!--/iiint triple integral operator -->
+<!ENTITY top              "&#x022A4;" ><!--/top top -->
+<!ENTITY topbot           "&#x02336;" ><!--top and bottom -->
+<!ENTITY topcir           "&#x02AF1;" ><!--top, circle below -->
+<!ENTITY tprime           "&#x02034;" ><!--triple prime -->
+<!ENTITY utdot            "&#x022F0;" ><!--three dots, ascending -->
+<!ENTITY uwangle          "&#x029A7;" ><!--large upward pointing angle -->
+<!ENTITY vangrt           "&#x022BE;" ><!--right angle, variant -->
+<!ENTITY veeeq            "&#x0225A;" ><!--logical or, equals -->
+<!ENTITY Verbar           "&#x02016;" ><!--/Vert dbl vertical bar -->
+<!ENTITY wedgeq           "&#x02259;" ><!--/wedgeq R: corresponds to (wedge, equals) -->
+<!ENTITY xnis             "&#x022FB;" ><!--large contains, vertical bar on horizontal stroke -->
+
+<!--
+     File mmlalias.ent produced by the XSL script mmldtd.xsl
+     from input data in unicode.xml.
+
+     Please report any errors to 
+     David Carlisle <davidc@nag.co.uk>.
+
+     The numeric character values assigned to each entity
+     (should) match either official Unicode assignments
+     or assignments provisionally allocated by the
+     Unicode Consortium based on the characters in the `STIX'
+     propsal for mathematics. Note that these assignments
+     have not been ratified by the corresponding ISO
+     committee and thus should be considered liable to
+     change.
+
+-->
+
+<!ENTITY angle            "&#x02220;" ><!--alias ISOAMSO ang -->
+<!ENTITY ApplyFunction    "&#x02061;" ><!--character showing function application in presentation tagging -->
+<!ENTITY approx           "&#x02248;" ><!--alias ISOTECH ap -->
+<!ENTITY approxeq         "&#x0224A;" ><!--alias ISOAMSR ape -->
+<!ENTITY Assign           "&#x02254;" ><!--assignment operator, alias ISOAMSR colone -->
+<!ENTITY backcong         "&#x0224C;" ><!--alias ISOAMSR bcong -->
+<!ENTITY backepsilon      "&#x003F6;" ><!--alias ISOAMSR bepsi -->
+<!ENTITY backprime        "&#x02035;" ><!--alias ISOAMSO bprime -->
+<!ENTITY backsim          "&#x0223D;" ><!--alias ISOAMSR bsim -->
+<!ENTITY backsimeq        "&#x022CD;" ><!--alias ISOAMSR bsime -->
+<!ENTITY Backslash        "&#x02216;" ><!--alias ISOAMSB setmn -->
+<!ENTITY barwedge         "&#x022BC;" ><!--alias ISOAMSB barwed -->
+<!ENTITY because          "&#x02235;" ><!--alias ISOTECH becaus -->
+<!ENTITY Because          "&#x02235;" ><!--alias ISOTECH becaus -->
+<!ENTITY Bernoullis       "&#x0212C;" ><!--alias ISOTECH bernou -->
+<!ENTITY between          "&#x0226C;" ><!--alias ISOAMSR twixt -->
+<!ENTITY bigcap           "&#x022C2;" ><!--alias ISOAMSB xcap -->
+<!ENTITY bigcirc          "&#x025EF;" ><!--alias ISOAMSB xcirc -->
+<!ENTITY bigcup           "&#x022C3;" ><!--alias ISOAMSB xcup -->
+<!ENTITY bigodot          "&#x02299;" ><!--alias ISOAMSB xodot -->
+<!ENTITY bigoplus         "&#x02295;" ><!--alias ISOAMSB xoplus -->
+<!ENTITY bigotimes        "&#x02297;" ><!--alias ISOAMSB xotime -->
+<!ENTITY bigsqcup         "&#x02294;" ><!--alias ISOAMSB xsqcup -->
+<!ENTITY bigstar          "&#x02605;" ><!--ISOPUB    starf  -->
+<!ENTITY bigtriangledown  "&#x025BD;" ><!--alias ISOAMSB xdtri -->
+<!ENTITY bigtriangleup    "&#x025B3;" ><!--alias ISOAMSB xutri -->
+<!ENTITY biguplus         "&#x0228E;" ><!--alias ISOAMSB xuplus -->
+<!ENTITY bigvee           "&#x022C1;" ><!--alias ISOAMSB xvee -->
+<!ENTITY bigwedge         "&#x022C0;" ><!--alias ISOAMSB xwedge -->
+<!ENTITY bkarow           "&#x0290D;" ><!--alias ISOAMSA rbarr -->
+<!ENTITY blacklozenge     "&#x029EB;" ><!--alias ISOPUB lozf -->
+<!ENTITY blacksquare      "&#x025AA;" ><!--ISOTECH  squarf  -->
+<!ENTITY blacktriangle    "&#x025B4;" ><!--alias ISOPUB utrif -->
+<!ENTITY blacktriangledown "&#x025BE;" ><!--alias ISOPUB dtrif -->
+<!ENTITY blacktriangleleft "&#x025C2;" ><!--alias ISOPUB ltrif -->
+<!ENTITY blacktriangleright "&#x025B8;" ><!--alias ISOPUB rtrif -->
+<!ENTITY bot              "&#x022A5;" ><!--alias ISOTECH bottom -->
+<!ENTITY boxminus         "&#x0229F;" ><!--alias ISOAMSB minusb -->
+<!ENTITY boxplus          "&#x0229E;" ><!--alias ISOAMSB plusb -->
+<!ENTITY boxtimes         "&#x022A0;" ><!--alias ISOAMSB timesb -->
+<!ENTITY Breve            "&#x002D8;" ><!--alias ISODIA breve -->
+<!ENTITY bullet           "&#x02022;" ><!--alias ISOPUB bull -->
+<!ENTITY bumpeq           "&#x0224F;" ><!--alias ISOAMSR bumpe -->
+<!ENTITY Bumpeq           "&#x0224E;" ><!--alias ISOAMSR bump -->
+<!ENTITY CapitalDifferentialD "&#x02145;" ><!--D for use in differentials, e.g., within integrals -->
+<!ENTITY Cayleys          "&#x0212D;" ><!--the non-associative ring of octonions or Cayley numbers -->
+<!ENTITY Cedilla          "&#x000B8;" ><!--alias ISODIA cedil -->
+<!ENTITY centerdot        "&#x000B7;" ><!--alias ISONUM middot -->
+<!ENTITY CenterDot        "&#x000B7;" ><!--alias ISONUM middot -->
+<!ENTITY checkmark        "&#x02713;" ><!--alias ISOPUB check -->
+<!ENTITY circeq           "&#x02257;" ><!--alias ISOAMSR cire -->
+<!ENTITY circlearrowleft  "&#x021BA;" ><!--alias ISOAMSA olarr -->
+<!ENTITY circlearrowright "&#x021BB;" ><!--alias ISOAMSA orarr -->
+<!ENTITY circledast       "&#x0229B;" ><!--alias ISOAMSB oast -->
+<!ENTITY circledcirc      "&#x0229A;" ><!--alias ISOAMSB ocir -->
+<!ENTITY circleddash      "&#x0229D;" ><!--alias ISOAMSB odash -->
+<!ENTITY CircleDot        "&#x02299;" ><!--alias ISOAMSB odot -->
+<!ENTITY circledR         "&#x000AE;" ><!--alias ISONUM reg -->
+<!ENTITY circledS         "&#x024C8;" ><!--alias ISOAMSO oS -->
+<!ENTITY CircleMinus      "&#x02296;" ><!--alias ISOAMSB ominus -->
+<!ENTITY CirclePlus       "&#x02295;" ><!--alias ISOAMSB oplus -->
+<!ENTITY CircleTimes      "&#x02297;" ><!--alias ISOAMSB otimes -->
+<!ENTITY ClockwiseContourIntegral "&#x02232;" ><!--alias ISOTECH cwconint -->
+<!ENTITY CloseCurlyDoubleQuote "&#x0201D;" ><!--alias ISONUM rdquo -->
+<!ENTITY CloseCurlyQuote  "&#x02019;" ><!--alias ISONUM rsquo -->
+<!ENTITY clubsuit         "&#x02663;" ><!--ISOPUB    clubs  -->
+<!ENTITY coloneq          "&#x02254;" ><!--alias ISOAMSR colone -->
+<!ENTITY complement       "&#x02201;" ><!--alias ISOAMSO comp -->
+<!ENTITY complexes        "&#x02102;" ><!--the field of complex numbers -->
+<!ENTITY Congruent        "&#x02261;" ><!--alias ISOTECH equiv -->
+<!ENTITY ContourIntegral  "&#x0222E;" ><!--alias ISOTECH conint -->
+<!ENTITY Coproduct        "&#x02210;" ><!--alias ISOAMSB coprod -->
+<!ENTITY CounterClockwiseContourIntegral "&#x02233;" ><!--alias ISOTECH awconint -->
+<!ENTITY CupCap           "&#x0224D;" ><!--alias ISOAMSR asymp -->
+<!ENTITY curlyeqprec      "&#x022DE;" ><!--alias ISOAMSR cuepr -->
+<!ENTITY curlyeqsucc      "&#x022DF;" ><!--alias ISOAMSR cuesc -->
+<!ENTITY curlyvee         "&#x022CE;" ><!--alias ISOAMSB cuvee -->
+<!ENTITY curlywedge       "&#x022CF;" ><!--alias ISOAMSB cuwed -->
+<!ENTITY curvearrowleft   "&#x021B6;" ><!--alias ISOAMSA cularr -->
+<!ENTITY curvearrowright  "&#x021B7;" ><!--alias ISOAMSA curarr -->
+<!ENTITY dbkarow          "&#x0290F;" ><!--alias ISOAMSA rBarr -->
+<!ENTITY ddagger          "&#x02021;" ><!--alias ISOPUB Dagger -->
+<!ENTITY ddotseq          "&#x02A77;" ><!--alias ISOAMSR eDDot -->
+<!ENTITY Del              "&#x02207;" ><!--alias ISOTECH nabla -->
+<!ENTITY DiacriticalAcute "&#x000B4;" ><!--alias ISODIA acute -->
+<!ENTITY DiacriticalDot   "&#x002D9;" ><!--alias ISODIA dot -->
+<!ENTITY DiacriticalDoubleAcute "&#x002DD;" ><!--alias ISODIA dblac -->
+<!ENTITY DiacriticalGrave "&#x00060;" ><!--alias ISODIA grave -->
+<!ENTITY DiacriticalTilde "&#x002DC;" ><!--alias ISODIA tilde -->
+<!ENTITY diamond          "&#x022C4;" ><!--alias ISOAMSB diam -->
+<!ENTITY Diamond          "&#x022C4;" ><!--alias ISOAMSB diam -->
+<!ENTITY diamondsuit      "&#x02666;" ><!--ISOPUB    diams  -->
+<!ENTITY DifferentialD    "&#x02146;" ><!--d for use in differentials, e.g., within integrals -->
+<!ENTITY digamma          "&#x003DC;" ><!--alias ISOGRK3 gammad -->
+<!ENTITY div              "&#x000F7;" ><!--alias ISONUM divide -->
+<!ENTITY divideontimes    "&#x022C7;" ><!--alias ISOAMSB divonx -->
+<!ENTITY doteq            "&#x02250;" ><!--alias ISOAMSR esdot -->
+<!ENTITY doteqdot         "&#x02251;" ><!--alias ISOAMSR eDot -->
+<!ENTITY DotEqual         "&#x02250;" ><!--alias ISOAMSR esdot -->
+<!ENTITY dotminus         "&#x02238;" ><!--alias ISOAMSB minusd -->
+<!ENTITY dotplus          "&#x02214;" ><!--alias ISOAMSB plusdo -->
+<!ENTITY dotsquare        "&#x022A1;" ><!--alias ISOAMSB sdotb -->
+<!ENTITY doublebarwedge   "&#x02306;" ><!--alias ISOAMSB Barwed -->
+<!ENTITY DoubleContourIntegral "&#x0222F;" ><!--alias ISOTECH Conint -->
+<!ENTITY DoubleDot        "&#x000A8;" ><!--alias ISODIA die -->
+<!ENTITY DoubleDownArrow  "&#x021D3;" ><!--alias ISOAMSA dArr -->
+<!ENTITY DoubleLeftArrow  "&#x021D0;" ><!--alias ISOTECH lArr -->
+<!ENTITY DoubleLeftRightArrow "&#x021D4;" ><!--alias ISOAMSA hArr -->
+<!ENTITY DoubleLeftTee    "&#x02AE4;" ><!--alias for  &Dashv;  -->
+<!ENTITY DoubleLongLeftArrow "&#x0F579;" ><!--alias ISOAMSA xlArr -->
+<!ENTITY DoubleLongLeftRightArrow "&#x0F57B;" ><!--alias ISOAMSA xhArr -->
+<!ENTITY DoubleLongRightArrow "&#x0F57A;" ><!--alias ISOAMSA xrArr -->
+<!ENTITY DoubleRightArrow "&#x021D2;" ><!--alias ISOTECH rArr -->
+<!ENTITY DoubleRightTee   "&#x022A8;" ><!--alias ISOAMSR vDash -->
+<!ENTITY DoubleUpArrow    "&#x021D1;" ><!--alias ISOAMSA uArr -->
+<!ENTITY DoubleUpDownArrow "&#x021D5;" ><!--alias ISOAMSA vArr -->
+<!ENTITY DoubleVerticalBar "&#x02225;" ><!--alias ISOTECH par -->
+<!ENTITY downarrow        "&#x02193;" ><!--alias ISONUM darr -->
+<!ENTITY Downarrow        "&#x021D3;" ><!--alias ISOAMSA dArr -->
+<!ENTITY DownArrow        "&#x02193;" ><!--alias ISONUM darr -->
+<!ENTITY DownArrowUpArrow "&#x021F5;" ><!--alias ISOAMSA duarr -->
+<!ENTITY downdownarrows   "&#x021CA;" ><!--alias ISOAMSA ddarr -->
+<!ENTITY downharpoonleft  "&#x021C3;" ><!--alias ISOAMSA dharl -->
+<!ENTITY downharpoonright "&#x021C2;" ><!--alias ISOAMSA dharr -->
+<!ENTITY DownLeftVector   "&#x021BD;" ><!--alias ISOAMSA lhard -->
+<!ENTITY DownRightVector  "&#x021C1;" ><!--alias ISOAMSA rhard -->
+<!ENTITY DownTee          "&#x022A4;" ><!--alias ISOTECH top -->
+<!ENTITY DownTeeArrow     "&#x021A7;" ><!--alias for mapstodown -->
+<!ENTITY drbkarow         "&#x02910;" ><!--alias ISOAMSA RBarr -->
+<!ENTITY Element          "&#x02208;" ><!--alias ISOTECH isinv -->
+<!ENTITY emptyset         "&#x02205;&#x0FE00;" ><!--alias ISOAMSO empty -->
+<!ENTITY eqcirc           "&#x02256;" ><!--alias ISOAMSR ecir -->
+<!ENTITY eqcolon          "&#x02255;" ><!--alias ISOAMSR ecolon -->
+<!ENTITY eqsim            "&#x02242;" ><!--alias ISOAMSR esim -->
+<!ENTITY eqslantgtr       "&#x022DD;" ><!--alias ISOAMSR egs -->
+<!ENTITY eqslantless      "&#x022DC;" ><!--alias ISOAMSR els -->
+<!ENTITY EqualTilde       "&#x02242;" ><!--alias ISOAMSR esim -->
+<!ENTITY Equilibrium      "&#x021CC;" ><!--alias ISOAMSA rlhar -->
+<!ENTITY Exists           "&#x02203;" ><!--alias ISOTECH exist -->
+<!ENTITY expectation      "&#x02130;" ><!--expectation (operator) -->
+<!ENTITY exponentiale     "&#x02147;" ><!--base of the Napierian logarithms -->
+<!ENTITY ExponentialE     "&#x02147;" ><!--e use for the exponential base of the natural logarithms -->
+<!ENTITY fallingdotseq    "&#x02252;" ><!--alias ISOAMSR efDot -->
+<!ENTITY ForAll           "&#x02200;" ><!--alias ISOTECH forall -->
+<!ENTITY Fouriertrf       "&#x02131;" ><!--Fourier transform -->
+<!ENTITY geq              "&#x02265;" ><!--alias ISOTECH ge -->
+<!ENTITY geqq             "&#x02267;" ><!--alias ISOAMSR gE -->
+<!ENTITY geqslant         "&#x02A7E;" ><!--alias ISOAMSR ges -->
+<!ENTITY gg               "&#x0226B;" ><!--alias ISOAMSR Gt -->
+<!ENTITY ggg              "&#x022D9;" ><!--alias ISOAMSR Gg -->
+<!ENTITY gnapprox         "&#x02A8A;" ><!--alias ISOAMSN gnap -->
+<!ENTITY gneq             "&#x02269;" ><!--alias ISOAMSN gne -->
+<!ENTITY gneqq            "&#x02269;" ><!--alias ISOAMSN gnE -->
+<!ENTITY GreaterEqual     "&#x02265;" ><!--alias ISOTECH ge -->
+<!ENTITY GreaterEqualLess "&#x022DB;" ><!--alias ISOAMSR gel -->
+<!ENTITY GreaterFullEqual "&#x02267;" ><!--alias ISOAMSR gE -->
+<!ENTITY GreaterLess      "&#x02277;" ><!--alias ISOAMSR gl -->
+<!ENTITY GreaterSlantEqual "&#x02A7E;" ><!--alias ISOAMSR ges -->
+<!ENTITY GreaterTilde     "&#x02273;" ><!--alias ISOAMSR gsim -->
+<!ENTITY gtrapprox        "&#x02273;" ><!--alias ISOAMSR gap -->
+<!ENTITY gtrdot           "&#x022D7;" ><!--alias ISOAMSR gtdot -->
+<!ENTITY gtreqless        "&#x022DB;" ><!--alias ISOAMSR gel -->
+<!ENTITY gtreqqless       "&#x022DB;" ><!--alias ISOAMSR gEl -->
+<!ENTITY gtrless          "&#x02277;" ><!--alias ISOAMSR gl -->
+<!ENTITY gtrsim           "&#x02273;" ><!--alias ISOAMSR gsim -->
+<!ENTITY gvertneqq        "&#x02269;&#x0FE00;" ><!--alias ISOAMSN gvnE -->
+<!ENTITY Hacek            "&#x002C7;" ><!--alias ISODIA caron -->
+<!ENTITY Hat              "&#x00302;" ><!--circumflex accent (circ in ISODIA) -->
+<!ENTITY hbar             "&#x0210F;&#x0FE00;" ><!--alias ISOAMSO plank -->
+<!ENTITY heartsuit        "&#x02661;" ><!--ISOPUB    hearts  -->
+<!ENTITY HilbertSpace     "&#x0210B;" ><!--Hilbert space -->
+<!ENTITY hksearow         "&#x02925;" ><!--alias ISOAMSA searhk -->
+<!ENTITY hkswarow         "&#x02926;" ><!--alias ISOAMSA swarhk -->
+<!ENTITY hookleftarrow    "&#x021A9;" ><!--alias ISOAMSA larrhk -->
+<!ENTITY hookrightarrow   "&#x021AA;" ><!--alias ISOAMSA rarrhk -->
+<!ENTITY hslash           "&#x0210F;" ><!--alias ISOAMSO plankv -->
+<!ENTITY HumpDownHump     "&#x0224E;" ><!--alias ISOAMSR bump -->
+<!ENTITY HumpEqual        "&#x0224F;" ><!--alias ISOAMSR bumpe -->
+<!ENTITY iiiint           "&#x02A0C;" ><!--alias ISOTECH qint -->
+<!ENTITY iiint            "&#x0222D;" ><!--alias ISOTECH tint -->
+<!ENTITY Im               "&#x02111;" ><!--alias ISOAMSO image -->
+<!ENTITY ImaginaryI       "&#x02148;" ><!--i for use as a square root of -1 -->
+<!ENTITY imagline         "&#x02110;" ><!--the geometric imaginary line -->
+<!ENTITY imagpart         "&#x02111;" ><!--alias ISOAMSO image -->
+<!ENTITY Implies          "&#x021D2;" ><!--alias ISOTECH rArr -->
+<!ENTITY in               "&#x02208;" ><!--ISOTECH   isin  -->
+<!ENTITY integers         "&#x02124;" ><!--the ring of integers -->
+<!ENTITY Integral         "&#x0222B;" ><!--alias ISOTECH int -->
+<!ENTITY intercal         "&#x022BA;" ><!--alias ISOAMSB intcal -->
+<!ENTITY Intersection     "&#x022C2;" ><!--alias ISOAMSB xcap -->
+<!ENTITY intprod          "&#x02A3C;" ><!--alias ISOAMSB iprod -->
+<!ENTITY InvisibleComma   "&#x0200B;" ><!--used as a separator, e.g., in indices -->
+<!ENTITY InvisibleTimes   "&#x02062;" ><!--marks multiplication when it is understood without a mark -->
+<!ENTITY langle           "&#x02329;" ><!--alias ISOTECH lang -->
+<!ENTITY Laplacetrf       "&#x02112;" ><!--Laplace transform -->
+<!ENTITY lbrace           "&#x0007B;" ><!--alias ISONUM lcub -->
+<!ENTITY lbrack           "&#x0005B;" ><!--alias ISONUM lsqb -->
+<!ENTITY LeftAngleBracket "&#x02329;" ><!--alias ISOTECH lang -->
+<!ENTITY leftarrow        "&#x02190;" ><!--alias ISONUM larr -->
+<!ENTITY Leftarrow        "&#x021D0;" ><!--alias ISOTECH lArr -->
+<!ENTITY LeftArrow        "&#x02190;" ><!--alias ISONUM larr -->
+<!ENTITY LeftArrowBar     "&#x021E4;" ><!--alias for larrb -->
+<!ENTITY LeftArrowRightArrow "&#x021C6;" ><!--alias ISOAMSA lrarr -->
+<!ENTITY leftarrowtail    "&#x021A2;" ><!--alias ISOAMSA larrtl -->
+<!ENTITY LeftCeiling      "&#x02308;" ><!--alias ISOAMSC lceil -->
+<!ENTITY LeftDoubleBracket "&#x0301A;" ><!--left double bracket delimiter -->
+<!ENTITY LeftDownVector   "&#x021C3;" ><!--alias ISOAMSA dharl -->
+<!ENTITY LeftFloor        "&#x0230A;" ><!--alias ISOAMSC lfloor -->
+<!ENTITY leftharpoondown  "&#x021BD;" ><!--alias ISOAMSA lhard -->
+<!ENTITY leftharpoonup    "&#x021BC;" ><!--alias ISOAMSA lharu -->
+<!ENTITY leftleftarrows   "&#x021C7;" ><!--alias ISOAMSA llarr -->
+<!ENTITY leftrightarrow   "&#x02194;" ><!--alias ISOAMSA harr -->
+<!ENTITY Leftrightarrow   "&#x021D4;" ><!--alias ISOAMSA hArr -->
+<!ENTITY LeftRightArrow   "&#x02194;" ><!--alias ISOAMSA harr -->
+<!ENTITY leftrightarrows  "&#x021C6;" ><!--alias ISOAMSA lrarr -->
+<!ENTITY leftrightharpoons "&#x021CB;" ><!--alias ISOAMSA lrhar -->
+<!ENTITY leftrightsquigarrow "&#x021AD;" ><!--alias ISOAMSA harrw -->
+<!ENTITY LeftTee          "&#x022A3;" ><!--alias ISOAMSR dashv -->
+<!ENTITY LeftTeeArrow     "&#x021A4;" ><!--alias for mapstoleft -->
+<!ENTITY leftthreetimes   "&#x022CB;" ><!--alias ISOAMSB lthree -->
+<!ENTITY LeftTriangle     "&#x022B2;" ><!--alias ISOAMSR vltri -->
+<!ENTITY LeftTriangleEqual "&#x022B4;" ><!--alias ISOAMSR ltrie -->
+<!ENTITY LeftUpVector     "&#x021BF;" ><!--alias ISOAMSA uharl -->
+<!ENTITY LeftVector       "&#x021BC;" ><!--alias ISOAMSA lharu -->
+<!ENTITY leq              "&#x02264;" ><!--alias ISOTECH le -->
+<!ENTITY leqq             "&#x02266;" ><!--alias ISOAMSR lE -->
+<!ENTITY leqslant         "&#x02A7D;" ><!--alias ISOAMSR les -->
+<!ENTITY lessapprox       "&#x02272;" ><!--alias ISOAMSR lap -->
+<!ENTITY lessdot          "&#x022D6;" ><!--alias ISOAMSR ltdot -->
+<!ENTITY lesseqgtr        "&#x022DA;" ><!--alias ISOAMSR leg -->
+<!ENTITY lesseqqgtr       "&#x022DA;" ><!--alias ISOAMSR lEg -->
+<!ENTITY LessEqualGreater "&#x022DA;" ><!--alias ISOAMSR leg -->
+<!ENTITY LessFullEqual    "&#x02266;" ><!--alias ISOAMSR lE -->
+<!ENTITY LessGreater      "&#x02276;" ><!--alias ISOAMSR lg -->
+<!ENTITY lessgtr          "&#x02276;" ><!--alias ISOAMSR lg -->
+<!ENTITY lesssim          "&#x02272;" ><!--alias ISOAMSR lsim -->
+<!ENTITY LessSlantEqual   "&#x02A7D;" ><!--alias ISOAMSR les -->
+<!ENTITY LessTilde        "&#x02272;" ><!--alias ISOAMSR lsim -->
+<!ENTITY ll               "&#x0226A;" ><!--alias ISOAMSR Lt -->
+<!ENTITY llcorner         "&#x0231E;" ><!--alias ISOAMSC dlcorn -->
+<!ENTITY Lleftarrow       "&#x021DA;" ><!--alias ISOAMSA lAarr -->
+<!ENTITY lmoustache       "&#x023B0;" ><!--alias ISOAMSC lmoust -->
+<!ENTITY lnapprox         "&#x02A89;" ><!--alias ISOAMSN lnap -->
+<!ENTITY lneq             "&#x02268;" ><!--alias ISOAMSN lne -->
+<!ENTITY lneqq            "&#x02268;" ><!--alias ISOAMSN lnE -->
+<!ENTITY longleftarrow    "&#x0F576;" ><!--alias ISOAMSA xlarr -->
+<!ENTITY Longleftarrow    "&#x0F579;" ><!--alias ISOAMSA xlArr -->
+<!ENTITY LongLeftArrow    "&#x0F576;" ><!--alias ISOAMSA xlarr -->
+<!ENTITY longleftrightarrow "&#x0F578;" ><!--alias ISOAMSA xharr -->
+<!ENTITY Longleftrightarrow "&#x0F57B;" ><!--alias ISOAMSA xhArr -->
+<!ENTITY LongLeftRightArrow "&#x0F578;" ><!--alias ISOAMSA xharr -->
+<!ENTITY longmapsto       "&#x0F57D;" ><!--alias ISOAMSA xmap -->
+<!ENTITY longrightarrow   "&#x0F577;" ><!--alias ISOAMSA xrarr -->
+<!ENTITY Longrightarrow   "&#x0F57A;" ><!--alias ISOAMSA xrArr -->
+<!ENTITY LongRightArrow   "&#x0F577;" ><!--alias ISOAMSA xrarr -->
+<!ENTITY looparrowleft    "&#x021AB;" ><!--alias ISOAMSA larrlp -->
+<!ENTITY looparrowright   "&#x021AC;" ><!--alias ISOAMSA rarrlp -->
+<!ENTITY LowerLeftArrow   "&#x02199;" ><!--alias ISOAMSA swarr -->
+<!ENTITY LowerRightArrow  "&#x02198;" ><!--alias ISOAMSA searr -->
+<!ENTITY lozenge          "&#x025CA;" ><!--alias ISOPUB loz -->
+<!ENTITY lrcorner         "&#x0231F;" ><!--alias ISOAMSC drcorn -->
+<!ENTITY Lsh              "&#x021B0;" ><!--alias ISOAMSA lsh -->
+<!ENTITY lvertneqq        "&#x02268;&#x0FE00;" ><!--alias ISOAMSN lvnE -->
+<!ENTITY maltese          "&#x02720;" ><!--alias ISOPUB malt -->
+<!ENTITY mapsto           "&#x021A6;" ><!--alias ISOAMSA map -->
+<!ENTITY measuredangle    "&#x02221;" ><!--alias ISOAMSO angmsd -->
+<!ENTITY Mellintrf        "&#x02133;" ><!--Mellin transform -->
+<!ENTITY MinusPlus        "&#x02213;" ><!--alias ISOTECH mnplus -->
+<!ENTITY mp               "&#x02213;" ><!--alias ISOTECH mnplus -->
+<!ENTITY multimap         "&#x022B8;" ><!--alias ISOAMSA mumap -->
+<!ENTITY napprox          "&#x02249;" ><!--alias ISOAMSN nap -->
+<!ENTITY natural          "&#x0266E;" ><!--alias ISOPUB natur -->
+<!ENTITY naturals         "&#x02115;" ><!--the semi-ring of natural numbers -->
+<!ENTITY nearrow          "&#x02197;" ><!--alias ISOAMSA nearr -->
+<!ENTITY NestedGreaterGreater "&#x0226B;" ><!--alias ISOAMSR Gt -->
+<!ENTITY NestedLessLess   "&#x0226A;" ><!--alias ISOAMSR Lt -->
+<!ENTITY nexists          "&#x02204;" ><!--alias ISOAMSO nexist -->
+<!ENTITY ngeq             "&#x02271;&#x020E5;" ><!--alias ISOAMSN nge -->
+<!ENTITY ngeqq            "&#x02271;" ><!--alias ISOAMSN ngE -->
+<!ENTITY ngeqslant        "&#x02271;" ><!--alias ISOAMSN nges -->
+<!ENTITY ngtr             "&#x0226F;" ><!--alias ISOAMSN ngt -->
+<!ENTITY nleftarrow       "&#x0219A;" ><!--alias ISOAMSA nlarr -->
+<!ENTITY nLeftarrow       "&#x021CD;" ><!--alias ISOAMSA nlArr -->
+<!ENTITY nleftrightarrow  "&#x021AE;" ><!--alias ISOAMSA nharr -->
+<!ENTITY nLeftrightarrow  "&#x021CE;" ><!--alias ISOAMSA nhArr -->
+<!ENTITY nleq             "&#x02270;&#x020E5;" ><!--alias ISOAMSN nle -->
+<!ENTITY nleqq            "&#x02270;" ><!--alias ISOAMSN nlE -->
+<!ENTITY nleqslant        "&#x02270;" ><!--alias ISOAMSN nles -->
+<!ENTITY nless            "&#x0226E;" ><!--alias ISOAMSN nlt -->
+<!ENTITY NonBreakingSpace "&#x000A0;" ><!--alias ISONUM nbsp -->
+<!ENTITY NotCongruent     "&#x02262;" ><!--alias ISOAMSN nequiv -->
+<!ENTITY NotDoubleVerticalBar "&#x02226;" ><!--alias ISOAMSN npar -->
+<!ENTITY NotElement       "&#x02209;" ><!--alias ISOTECH notin -->
+<!ENTITY NotEqual         "&#x02260;" ><!--alias ISOTECH ne -->
+<!ENTITY NotEqualTilde    "&#x02242;&#x00338;" ><!--alias for  &nesim; -->
+<!ENTITY NotExists        "&#x02204;" ><!--alias ISOAMSO nexist -->
+<!ENTITY NotGreater       "&#x0226F;" ><!--alias ISOAMSN ngt -->
+<!ENTITY NotGreaterEqual  "&#x02271;&#x020E5;" ><!--alias ISOAMSN nge -->
+<!ENTITY NotGreaterFullEqual "&#x02270;" ><!--alias ISOAMSN nlE -->
+<!ENTITY NotGreaterGreater "&#x0226B;&#x00338;&#x0FE00;" ><!--alias ISOAMSN nGtv -->
+<!ENTITY NotGreaterLess   "&#x02279;" ><!--alias ISOAMSN ntvgl -->
+<!ENTITY NotGreaterSlantEqual "&#x02271;" ><!--alias ISOAMSN nges -->
+<!ENTITY NotGreaterTilde  "&#x02275;" ><!--alias ISOAMSN ngsim -->
+<!ENTITY NotHumpDownHump  "&#x0224E;&#x00338;" ><!--alias for &nbump; -->
+<!ENTITY NotLeftTriangle  "&#x022EA;" ><!--alias ISOAMSN nltri -->
+<!ENTITY NotLeftTriangleEqual "&#x022EC;" ><!--alias ISOAMSN nltrie -->
+<!ENTITY NotLess          "&#x0226E;" ><!--alias ISOAMSN nlt -->
+<!ENTITY NotLessEqual     "&#x02270;&#x020E5;" ><!--alias ISOAMSN nle -->
+<!ENTITY NotLessGreater   "&#x02278;" ><!--alias ISOAMSN ntvlg -->
+<!ENTITY NotLessLess      "&#x0226A;&#x00338;&#x0FE00;" ><!--alias ISOAMSN nLtv -->
+<!ENTITY NotLessSlantEqual "&#x02270;" ><!--alias ISOAMSN nles -->
+<!ENTITY NotLessTilde     "&#x02274;" ><!--alias ISOAMSN nlsim -->
+<!ENTITY NotPrecedes      "&#x02280;" ><!--alias ISOAMSN npr -->
+<!ENTITY NotPrecedesEqual "&#x02AAF;&#x00338;" ><!--alias ISOAMSN npre -->
+<!ENTITY NotPrecedesSlantEqual "&#x022E0;" ><!--alias ISOAMSN nprcue -->
+<!ENTITY NotReverseElement "&#x0220C;" ><!--alias ISOTECH notniva -->
+<!ENTITY NotRightTriangle "&#x022EB;" ><!--alias ISOAMSN nrtri -->
+<!ENTITY NotRightTriangleEqual "&#x022ED;" ><!--alias ISOAMSN nrtrie -->
+<!ENTITY NotSquareSubsetEqual "&#x022E2;" ><!--alias ISOAMSN nsqsube -->
+<!ENTITY NotSquareSupersetEqual "&#x022E3;" ><!--alias ISOAMSN nsqsupe -->
+<!ENTITY NotSubset        "&#x02284;" ><!--alias ISOAMSN vnsub -->
+<!ENTITY NotSubsetEqual   "&#x02288;" ><!--alias ISOAMSN nsube -->
+<!ENTITY NotSucceeds      "&#x02281;" ><!--alias ISOAMSN nsc -->
+<!ENTITY NotSucceedsEqual "&#x02AB0;&#x00338;" ><!--alias ISOAMSN nsce -->
+<!ENTITY NotSucceedsSlantEqual "&#x022E1;" ><!--alias ISOAMSN nsccue -->
+<!ENTITY NotSuperset      "&#x02285;" ><!--alias ISOAMSN vnsup -->
+<!ENTITY NotSupersetEqual "&#x02289;" ><!--alias ISOAMSN nsupe -->
+<!ENTITY NotTilde         "&#x02241;" ><!--alias ISOAMSN nsim -->
+<!ENTITY NotTildeEqual    "&#x02244;" ><!--alias ISOAMSN nsime -->
+<!ENTITY NotTildeFullEqual "&#x02247;" ><!--alias ISOAMSN ncong -->
+<!ENTITY NotTildeTilde    "&#x02249;" ><!--alias ISOAMSN nap -->
+<!ENTITY NotVerticalBar   "&#x02224;" ><!--alias ISOAMSN nmid -->
+<!ENTITY nparallel        "&#x02226;" ><!--alias ISOAMSN npar -->
+<!ENTITY nprec            "&#x02280;" ><!--alias ISOAMSN npr -->
+<!ENTITY npreceq          "&#x02AAF;&#x00338;" ><!--alias ISOAMSN npre -->
+<!ENTITY nrightarrow      "&#x0219B;" ><!--alias ISOAMSA nrarr -->
+<!ENTITY nRightarrow      "&#x021CF;" ><!--alias ISOAMSA nrArr -->
+<!ENTITY nshortmid        "&#x02224;&#x0FE00;" ><!--alias ISOAMSN nsmid -->
+<!ENTITY nshortparallel   "&#x02226;&#x0FE00;" ><!--alias ISOAMSN nspar -->
+<!ENTITY nsimeq           "&#x02244;" ><!--alias ISOAMSN nsime -->
+<!ENTITY nsubset          "&#x02284;" ><!--alias ISOAMSN vnsub -->
+<!ENTITY nsubseteq        "&#x02288;" ><!--alias ISOAMSN nsube -->
+<!ENTITY nsubseteqq       "&#x02288;" ><!--alias ISOAMSN nsubE -->
+<!ENTITY nsucc            "&#x02281;" ><!--alias ISOAMSN nsc -->
+<!ENTITY nsucceq          "&#x02AB0;&#x00338;" ><!--alias ISOAMSN nsce -->
+<!ENTITY nsupset          "&#x02285;" ><!--alias ISOAMSN vnsup -->
+<!ENTITY nsupseteq        "&#x02289;" ><!--alias ISOAMSN nsupe -->
+<!ENTITY nsupseteqq       "&#x02289;" ><!--alias ISOAMSN nsupE -->
+<!ENTITY ntriangleleft    "&#x022EA;" ><!--alias ISOAMSN nltri -->
+<!ENTITY ntrianglelefteq  "&#x022EC;" ><!--alias ISOAMSN nltrie -->
+<!ENTITY ntriangleright   "&#x022EB;" ><!--alias ISOAMSN nrtri -->
+<!ENTITY ntrianglerighteq "&#x022ED;" ><!--alias ISOAMSN nrtrie -->
+<!ENTITY nwarrow          "&#x02196;" ><!--alias ISOAMSA nwarr -->
+<!ENTITY oint             "&#x0222E;" ><!--alias ISOTECH conint -->
+<!ENTITY OpenCurlyDoubleQuote "&#x0201C;" ><!--alias ISONUM ldquo -->
+<!ENTITY OpenCurlyQuote   "&#x02018;" ><!--alias ISONUM lsquo -->
+<!ENTITY orderof          "&#x02134;" ><!--alias ISOTECH order -->
+<!ENTITY parallel         "&#x02225;" ><!--alias ISOTECH par -->
+<!ENTITY PartialD         "&#x02202;" ><!--alias ISOTECH part -->
+<!ENTITY pitchfork        "&#x022D4;" ><!--alias ISOAMSR fork -->
+<!ENTITY PlusMinus        "&#x000B1;" ><!--alias ISONUM plusmn -->
+<!ENTITY pm               "&#x000B1;" ><!--alias ISONUM plusmn -->
+<!ENTITY Poincareplane    "&#x0210C;" ><!--the Poincare upper half-plane -->
+<!ENTITY prec             "&#x0227A;" ><!--alias ISOAMSR pr -->
+<!ENTITY precapprox       "&#x0227E;" ><!--alias ISOAMSR prap -->
+<!ENTITY preccurlyeq      "&#x0227C;" ><!--alias ISOAMSR prcue -->
+<!ENTITY Precedes         "&#x0227A;" ><!--alias ISOAMSR pr -->
+<!ENTITY PrecedesEqual    "&#x02AAF;" ><!--alias ISOAMSR pre -->
+<!ENTITY PrecedesSlantEqual "&#x0227C;" ><!--alias ISOAMSR prcue -->
+<!ENTITY PrecedesTilde    "&#x0227E;" ><!--alias ISOAMSR prsim -->
+<!ENTITY preceq           "&#x02AAF;" ><!--alias ISOAMSR pre -->
+<!ENTITY precnapprox      "&#x022E8;" ><!--alias ISOAMSN prnap -->
+<!ENTITY precneqq         "&#x02AB5;" ><!--alias ISOAMSN prnE -->
+<!ENTITY precnsim         "&#x022E8;" ><!--alias ISOAMSN prnsim -->
+<!ENTITY precsim          "&#x0227E;" ><!--alias ISOAMSR prsim -->
+<!ENTITY primes           "&#x02119;" ><!--the prime natural numbers -->
+<!ENTITY Proportion       "&#x02237;" ><!--alias ISOAMSR Colon -->
+<!ENTITY Proportional     "&#x0221D;" ><!--alias ISOTECH prop -->
+<!ENTITY propto           "&#x0221D;" ><!--alias ISOTECH prop -->
+<!ENTITY quaternions      "&#x0210D;" ><!--the ring (skew field) of quaternions -->
+<!ENTITY questeq          "&#x0225F;" ><!--alias ISOAMSR equest -->
+<!ENTITY rangle           "&#x0232A;" ><!--alias ISOTECH rang -->
+<!ENTITY rationals        "&#x0211A;" ><!--the field of rational numbers -->
+<!ENTITY rbrace           "&#x0007D;" ><!--alias ISONUM rcub -->
+<!ENTITY rbrack           "&#x0005D;" ><!--alias ISONUM rsqb -->
+<!ENTITY Re               "&#x0211C;" ><!--alias ISOAMSO real -->
+<!ENTITY realine          "&#x0211B;" ><!--the geometric real line -->
+<!ENTITY realpart         "&#x0211C;" ><!--alias ISOAMSO real -->
+<!ENTITY reals            "&#x0211D;" ><!--the field of real numbers -->
+<!ENTITY ReverseElement   "&#x0220B;" ><!--alias ISOTECH niv -->
+<!ENTITY ReverseEquilibrium "&#x021CB;" ><!--alias ISOAMSA lrhar -->
+<!ENTITY ReverseUpEquilibrium "&#x0296F;" ><!--alias ISOAMSA duhar -->
+<!ENTITY RightAngleBracket "&#x0232A;" ><!--alias ISOTECH rang -->
+<!ENTITY rightarrow       "&#x02192;" ><!--alias ISONUM rarr -->
+<!ENTITY Rightarrow       "&#x021D2;" ><!--alias ISOTECH rArr -->
+<!ENTITY RightArrow       "&#x02192;" ><!--alias ISONUM rarr -->
+<!ENTITY RightArrowBar    "&#x021E5;" ><!--alias for rarrb -->
+<!ENTITY RightArrowLeftArrow "&#x021C4;" ><!--alias ISOAMSA rlarr -->
+<!ENTITY rightarrowtail   "&#x021A3;" ><!--alias ISOAMSA rarrtl -->
+<!ENTITY RightCeiling     "&#x02309;" ><!--alias ISOAMSC rceil -->
+<!ENTITY RightDoubleBracket "&#x0301B;" ><!--right double bracket delimiter -->
+<!ENTITY RightDownVector  "&#x021C2;" ><!--alias ISOAMSA dharr -->
+<!ENTITY RightFloor       "&#x0230B;" ><!--alias ISOAMSC rfloor -->
+<!ENTITY rightharpoondown "&#x021C1;" ><!--alias ISOAMSA rhard -->
+<!ENTITY rightharpoonup   "&#x021C0;" ><!--alias ISOAMSA rharu -->
+<!ENTITY rightleftarrows  "&#x021C4;" ><!--alias ISOAMSA rlarr -->
+<!ENTITY rightleftharpoons "&#x021CC;" ><!--alias ISOAMSA rlhar -->
+<!ENTITY rightrightarrows "&#x021C9;" ><!--alias ISOAMSA rrarr -->
+<!ENTITY rightsquigarrow  "&#x0219D;" ><!--alias ISOAMSA rarrw -->
+<!ENTITY RightTee         "&#x022A2;" ><!--alias ISOAMSR vdash -->
+<!ENTITY RightTeeArrow    "&#x021A6;" ><!--alias ISOAMSA map -->
+<!ENTITY rightthreetimes  "&#x022CC;" ><!--alias ISOAMSB rthree -->
+<!ENTITY RightTriangle    "&#x022B3;" ><!--alias ISOAMSR vrtri -->
+<!ENTITY RightTriangleEqual "&#x022B5;" ><!--alias ISOAMSR rtrie -->
+<!ENTITY RightUpVector    "&#x021BE;" ><!--alias ISOAMSA uharr -->
+<!ENTITY RightVector      "&#x021C0;" ><!--alias ISOAMSA rharu -->
+<!ENTITY risingdotseq     "&#x02253;" ><!--alias ISOAMSR erDot -->
+<!ENTITY rmoustache       "&#x023B1;" ><!--alias ISOAMSC rmoust -->
+<!ENTITY Rrightarrow      "&#x021DB;" ><!--alias ISOAMSA rAarr -->
+<!ENTITY Rsh              "&#x021B1;" ><!--alias ISOAMSA rsh -->
+<!ENTITY searrow          "&#x02198;" ><!--alias ISOAMSA searr -->
+<!ENTITY setminus         "&#x02216;" ><!--alias ISOAMSB setmn -->
+<!ENTITY ShortLeftArrow   "&#x02190;&#x0FE00;" ><!--alias ISOAMSA slarr -->
+<!ENTITY shortmid         "&#x02223;&#x0FE00;" ><!--alias ISOAMSR smid -->
+<!ENTITY shortparallel    "&#x02225;&#x0FE00;" ><!--alias ISOAMSR spar -->
+<!ENTITY ShortRightArrow  "&#x02192;&#x0FE00;" ><!--alias ISOAMSA srarr -->
+<!ENTITY simeq            "&#x02243;" ><!--alias ISOTECH sime -->
+<!ENTITY SmallCircle      "&#x02218;" ><!--alias ISOTECH compfn -->
+<!ENTITY smallsetminus    "&#x02216;&#x0FE00;" ><!--alias ISOAMSB ssetmn -->
+<!ENTITY spadesuit        "&#x02660;" ><!--ISOPUB    spades  -->
+<!ENTITY Sqrt             "&#x0221A;" ><!--alias ISOTECH radic -->
+<!ENTITY sqsubset         "&#x0228F;" ><!--alias ISOAMSR sqsub -->
+<!ENTITY sqsubseteq       "&#x02291;" ><!--alias ISOAMSR sqsube -->
+<!ENTITY sqsupset         "&#x02290;" ><!--alias ISOAMSR sqsup -->
+<!ENTITY sqsupseteq       "&#x02292;" ><!--alias ISOAMSR sqsupe -->
+<!ENTITY Square           "&#x025A1;" ><!--alias for square -->
+<!ENTITY SquareIntersection "&#x02293;" ><!--alias ISOAMSB sqcap -->
+<!ENTITY SquareSubset     "&#x0228F;" ><!--alias ISOAMSR sqsub -->
+<!ENTITY SquareSubsetEqual "&#x02291;" ><!--alias ISOAMSR sqsube -->
+<!ENTITY SquareSuperset   "&#x02290;" ><!--alias ISOAMSR sqsup -->
+<!ENTITY SquareSupersetEqual "&#x02292;" ><!--alias ISOAMSR sqsupe -->
+<!ENTITY SquareUnion      "&#x02294;" ><!--alias ISOAMSB sqcup -->
+<!ENTITY Star             "&#x022C6;" ><!--alias ISOAMSB sstarf -->
+<!ENTITY straightepsilon  "&#x003B5;" ><!--alias ISOGRK3 epsi -->
+<!ENTITY straightphi      "&#x003C6;" ><!--alias ISOGRK3 phi -->
+<!ENTITY subset           "&#x02282;" ><!--alias ISOTECH sub -->
+<!ENTITY Subset           "&#x022D0;" ><!--alias ISOAMSR Sub -->
+<!ENTITY subseteq         "&#x02286;" ><!--alias ISOTECH sube -->
+<!ENTITY subseteqq        "&#x02286;" ><!--alias ISOAMSR subE -->
+<!ENTITY SubsetEqual      "&#x02286;" ><!--alias ISOTECH sube -->
+<!ENTITY subsetneq        "&#x0228A;" ><!--alias ISOAMSN subne -->
+<!ENTITY subsetneqq       "&#x0228A;" ><!--alias ISOAMSN subnE -->
+<!ENTITY succ             "&#x0227B;" ><!--alias ISOAMSR sc -->
+<!ENTITY succapprox       "&#x0227F;" ><!--alias ISOAMSR scap -->
+<!ENTITY succcurlyeq      "&#x0227D;" ><!--alias ISOAMSR sccue -->
+<!ENTITY Succeeds         "&#x0227B;" ><!--alias ISOAMSR sc -->
+<!ENTITY SucceedsEqual    "&#x0227D;" ><!--alias ISOAMSR sce -->
+<!ENTITY SucceedsSlantEqual "&#x0227D;" ><!--alias ISOAMSR sccue -->
+<!ENTITY SucceedsTilde    "&#x0227F;" ><!--alias ISOAMSR scsim -->
+<!ENTITY succeq           "&#x0227D;" ><!--alias ISOAMSR sce -->
+<!ENTITY succnapprox      "&#x022E9;" ><!--alias ISOAMSN scnap -->
+<!ENTITY succneqq         "&#x02AB6;" ><!--alias ISOAMSN scnE -->
+<!ENTITY succnsim         "&#x022E9;" ><!--alias ISOAMSN scnsim -->
+<!ENTITY succsim          "&#x0227F;" ><!--alias ISOAMSR scsim -->
+<!ENTITY SuchThat         "&#x0220B;" ><!--ISOTECH  ni -->
+<!ENTITY Sum              "&#x02211;" ><!--alias ISOAMSB sum -->
+<!ENTITY Superset         "&#x02283;" ><!--alias ISOTECH sup -->
+<!ENTITY SupersetEqual    "&#x02287;" ><!--alias ISOTECH supe -->
+<!ENTITY supset           "&#x02283;" ><!--alias ISOTECH sup -->
+<!ENTITY Supset           "&#x022D1;" ><!--alias ISOAMSR Sup -->
+<!ENTITY supseteq         "&#x02287;" ><!--alias ISOTECH supe -->
+<!ENTITY supseteqq        "&#x02287;" ><!--alias ISOAMSR supE -->
+<!ENTITY supsetneq        "&#x0228B;" ><!--alias ISOAMSN supne -->
+<!ENTITY supsetneqq       "&#x0228B;" ><!--alias ISOAMSN supnE -->
+<!ENTITY swarrow          "&#x02199;" ><!--alias ISOAMSA swarr -->
+<!ENTITY therefore        "&#x02234;" ><!--alias ISOTECH there4 -->
+<!ENTITY Therefore        "&#x02234;" ><!--alias ISOTECH there4 -->
+<!ENTITY thickapprox      "&#x02248;&#x0FE00;" ><!--ISOAMSR   thkap  -->
+<!ENTITY thicksim         "&#x0223C;&#x0FE00;" ><!--ISOAMSR   thksim -->
+<!ENTITY ThinSpace        "&#x02009;" ><!--space of width 3/18 em alias ISOPUB thinsp -->
+<!ENTITY Tilde            "&#x0223C;" ><!--alias ISOTECH sim -->
+<!ENTITY TildeEqual       "&#x02243;" ><!--alias ISOTECH sime -->
+<!ENTITY TildeFullEqual   "&#x02245;" ><!--alias ISOTECH cong -->
+<!ENTITY TildeTilde       "&#x02248;" ><!--alias ISOTECH ap -->
+<!ENTITY toea             "&#x02928;" ><!--alias ISOAMSA nesear -->
+<!ENTITY tosa             "&#x02929;" ><!--alias ISOAMSA seswar -->
+<!ENTITY triangle         "&#x025B5;" ><!--alias ISOPUB utri -->
+<!ENTITY triangledown     "&#x025BF;" ><!--alias ISOPUB dtri -->
+<!ENTITY triangleleft     "&#x025C3;" ><!--alias ISOPUB ltri -->
+<!ENTITY trianglelefteq   "&#x022B4;" ><!--alias ISOAMSR ltrie -->
+<!ENTITY triangleq        "&#x0225C;" ><!--alias ISOAMSR trie -->
+<!ENTITY triangleright    "&#x025B9;" ><!--alias ISOPUB rtri -->
+<!ENTITY trianglerighteq  "&#x022B5;" ><!--alias ISOAMSR rtrie -->
+<!ENTITY TripleDot        "&#x020DB;" ><!--alias ISOTECH tdot -->
+<!ENTITY twoheadleftarrow "&#x0219E;" ><!--alias ISOAMSA Larr -->
+<!ENTITY twoheadrightarrow "&#x021A0;" ><!--alias ISOAMSA Rarr -->
+<!ENTITY ulcorner         "&#x0231C;" ><!--alias ISOAMSC ulcorn -->
+<!ENTITY Union            "&#x022C3;" ><!--alias ISOAMSB xcup -->
+<!ENTITY UnionPlus        "&#x0228E;" ><!--alias ISOAMSB uplus -->
+<!ENTITY uparrow          "&#x02191;" ><!--alias ISONUM uarr -->
+<!ENTITY Uparrow          "&#x021D1;" ><!--alias ISOAMSA uArr -->
+<!ENTITY UpArrow          "&#x02191;" ><!--alias ISONUM uarr -->
+<!ENTITY UpArrowDownArrow "&#x021C5;" ><!--alias ISOAMSA udarr -->
+<!ENTITY updownarrow      "&#x02195;" ><!--alias ISOAMSA varr -->
+<!ENTITY Updownarrow      "&#x021D5;" ><!--alias ISOAMSA vArr -->
+<!ENTITY UpDownArrow      "&#x02195;" ><!--alias ISOAMSA varr -->
+<!ENTITY UpEquilibrium    "&#x0296E;" ><!--alias ISOAMSA udhar -->
+<!ENTITY upharpoonleft    "&#x021BF;" ><!--alias ISOAMSA uharl -->
+<!ENTITY upharpoonright   "&#x021BE;" ><!--alias ISOAMSA uharr -->
+<!ENTITY UpperLeftArrow   "&#x02196;" ><!--alias ISOAMSA nwarr -->
+<!ENTITY UpperRightArrow  "&#x02197;" ><!--alias ISOAMSA nearr -->
+<!ENTITY upsilon          "&#x003C5;" ><!--alias ISOGRK3 upsi -->
+<!ENTITY Upsilon          "&#x003D2;" ><!--alias ISOGRK3 Upsi -->
+<!ENTITY UpTee            "&#x022A5;" ><!--alias ISOTECH perp -->
+<!ENTITY UpTeeArrow       "&#x021A5;" ><!--Alias mapstoup -->
+<!ENTITY upuparrows       "&#x021C8;" ><!--alias ISOAMSA uuarr -->
+<!ENTITY urcorner         "&#x0231D;" ><!--alias ISOAMSC urcorn -->
+<!ENTITY varepsilon       "&#x0025B;" ><!--alias ISOGRK3 epsiv -->
+<!ENTITY varkappa         "&#x003F0;" ><!--alias ISOGRK3 kappav -->
+<!ENTITY varnothing       "&#x02205;" ><!--alias ISOAMSO emptyv -->
+<!ENTITY varphi           "&#x003D5;" ><!--alias ISOGRK3 phiv -->
+<!ENTITY varpi            "&#x003D6;" ><!--alias ISOGRK3 piv -->
+<!ENTITY varpropto        "&#x0221D;" ><!--alias ISOAMSR vprop -->
+<!ENTITY varrho           "&#x003F1;" ><!--alias ISOGRK3 rhov -->
+<!ENTITY varsigma         "&#x003C2;" ><!--alias ISOGRK3 sigmav -->
+<!ENTITY varsubsetneq     "&#x0228A;&#x0FE00;" ><!--alias ISOAMSN vsubne -->
+<!ENTITY varsubsetneqq    "&#x0228A;&#x0FE00;" ><!--alias ISOAMSN vsubnE -->
+<!ENTITY varsupsetneq     "&#x0228B;&#x0FE00;" ><!--alias ISOAMSN vsupne -->
+<!ENTITY varsupsetneqq    "&#x0228B;&#x0FE00;" ><!--alias ISOAMSN vsupnE -->
+<!ENTITY vartheta         "&#x003D1;" ><!--alias ISOGRK3 thetav -->
+<!ENTITY vartriangleleft  "&#x022B2;" ><!--alias ISOAMSR vltri -->
+<!ENTITY vartriangleright "&#x022B3;" ><!--alias ISOAMSR vrtri -->
+<!ENTITY vee              "&#x02228;" ><!--alias ISOTECH or -->
+<!ENTITY Vee              "&#x022C1;" ><!--alias ISOAMSB xvee -->
+<!ENTITY vert             "&#x0007C;" ><!--alias ISONUM verbar -->
+<!ENTITY Vert             "&#x02016;" ><!--alias ISOTECH Verbar -->
+<!ENTITY VerticalBar      "&#x02223;" ><!--alias ISOAMSR mid -->
+<!ENTITY VerticalTilde    "&#x02240;" ><!--alias ISOAMSB wreath -->
+<!ENTITY VeryThinSpace    "&#x0200A;" ><!--space of width 1/18 em alias ISOPUB hairsp -->
+<!ENTITY wedge            "&#x02227;" ><!--alias ISOTECH and -->
+<!ENTITY Wedge            "&#x022C0;" ><!--alias ISOAMSB xwedge -->
+<!ENTITY wp               "&#x02118;" ><!--alias ISOAMSO weierp -->
+<!ENTITY wr               "&#x02240;" ><!--alias ISOAMSB wreath -->
+<!ENTITY zeetrf           "&#x02128;" ><!--zee transform -->
+<!ENTITY ZeroWidthSpace   "&#x0200B;" ><!--zero width space -->
+
+<!--
+     File mmlextra.ent produced by the XSL script mmldtd.xsl
+     from input data in unicode.xml.
+
+     Please report any errors to 
+     David Carlisle <davidc@nag.co.uk>.
+
+     The numeric character values assigned to each entity
+     (should) match either official Unicode assignments
+     or assignments provisionally allocated by the
+     Unicode Consortium based on the characters in the `STIX'
+     propsal for mathematics. Note that these assignments
+     have not been ratified by the corresponding ISO
+     committee and thus should be considered liable to
+     change.
+
+-->
+
+<!ENTITY af               "&#x02061;" ><!--character showing function application in presentation tagging -->
+<!ENTITY aopf             "&#x1D552;" ><!-- -->
+<!ENTITY bopf             "&#x1D553;" ><!-- -->
+<!ENTITY copf             "&#x1D554;" ><!-- -->
+<!ENTITY Cross            "&#x02A2F;" ><!--cross or vector product -->
+<!ENTITY dd               "&#x02146;" ><!--d for use in differentials, e.g., within integrals -->
+<!ENTITY DD               "&#x02145;" ><!--D for use in differentials, e.g., within integrals -->
+<!ENTITY dopf             "&#x1D555;" ><!-- -->
+<!ENTITY DownArrowBar     "&#x02913;" ><!--down arrow to bar -->
+<!ENTITY DownBreve        "&#x00311;" ><!--breve, inverted (non-spacing) -->
+<!ENTITY DownLeftRightVector "&#x02950;" ><!--left-down-right-down harpoon -->
+<!ENTITY DownLeftTeeVector "&#x0295E;" ><!--left-down harpoon from bar -->
+<!ENTITY DownLeftVectorBar "&#x02956;" ><!--left-down harpoon to bar -->
+<!ENTITY DownRightTeeVector "&#x0295F;" ><!--right-down harpoon from bar -->
+<!ENTITY DownRightVectorBar "&#x02957;" ><!--right-down harpoon to bar -->
+<!ENTITY ee               "&#x02147;" ><!--e use for the exponential base of the natural logarithms -->
+<!ENTITY EmptySmallSquare "&#x025FD;" ><!--empty small square -->
+<!ENTITY EmptyVerySmallSquare "&#x0F59C;" ><!--empty small square -->
+<!ENTITY eopf             "&#x1D556;" ><!-- -->
+<!ENTITY Equal            "&#x02A75;" ><!--two consecutive equal signs -->
+<!ENTITY FilledSmallSquare "&#x025FE;" ><!--filled small square -->
+<!ENTITY FilledVerySmallSquare "&#x0F59B;" ><!--filled very small square -->
+<!ENTITY fopf             "&#x1D557;" ><!-- -->
+<!ENTITY gopf             "&#x1D558;" ><!-- -->
+<!ENTITY GreaterGreater   "&#x02AA2;" ><!--alias for GT -->
+<!ENTITY hopf             "&#x1D559;" ><!-- -->
+<!ENTITY HorizontalLine   "&#x02500;" ><!--short horizontal line  -->
+<!ENTITY ic               "&#x0200B;" ><!--short form of  &InvisibleComma; -->
+<!ENTITY ii               "&#x02148;" ><!--i for use as a square root of -1 -->
+<!ENTITY iopf             "&#x1D55A;" ><!-- -->
+<!ENTITY it               "&#x02062;" ><!--marks multiplication when it is understood without a mark -->
+<!ENTITY jopf             "&#x1D55B;" ><!-- -->
+<!ENTITY kopf             "&#x1D55C;" ><!-- -->
+<!ENTITY larrb            "&#x021E4;" ><!--leftwards arrow to bar -->
+<!ENTITY LeftDownTeeVector "&#x02961;" ><!--down-left harpoon from bar -->
+<!ENTITY LeftDownVectorBar "&#x02959;" ><!--down-left harpoon to bar -->
+<!ENTITY LeftRightVector  "&#x0294E;" ><!--left-up-right-up harpoon -->
+<!ENTITY LeftTeeVector    "&#x0295A;" ><!--left-up harpoon from bar -->
+<!ENTITY LeftTriangleBar  "&#x029CF;" ><!--not left triangle, vertical bar -->
+<!ENTITY LeftUpDownVector "&#x02951;" ><!--up-left-down-left harpoon -->
+<!ENTITY LeftUpTeeVector  "&#x02960;" ><!--up-left harpoon from bar -->
+<!ENTITY LeftUpVectorBar  "&#x02958;" ><!--up-left harpoon to bar -->
+<!ENTITY LeftVectorBar    "&#x02952;" ><!--left-up harpoon to bar -->
+<!ENTITY LessLess         "&#x02AA1;" ><!--alias for Lt -->
+<!ENTITY lopf             "&#x1D55D;" ><!-- -->
+<!ENTITY mapstodown       "&#x021A7;" ><!--downwards arrow from bar -->
+<!ENTITY mapstoleft       "&#x021A4;" ><!--leftwards arrow from bar -->
+<!ENTITY mapstoup         "&#x021A5;" ><!--upwards arrow from bar -->
+<!ENTITY MediumSpace      "&#x0205F;" ><!--space of width 4/18 em -->
+<!ENTITY mopf             "&#x1D55E;" ><!-- -->
+<!ENTITY nbump            "&#x0224E;&#x00338;" ><!--not bumpy equals -->
+<!ENTITY nbumpe           "&#x0224F;&#x00338;" ><!--not bumpy single equals -->
+<!ENTITY NegativeMediumSpace "&#x0205F;&#x0FE00;" ><!--space of width -4/18 em -->
+<!ENTITY NegativeThickSpace "&#x02005;&#x0FE00;" ><!--space of width -5/18 em -->
+<!ENTITY NegativeThinSpace "&#x02009;&#x0FE00;" ><!--space of width -3/18 em -->
+<!ENTITY NegativeVeryThinSpace "&#x0200A;&#x0FE00;" ><!--space of width -1/18 em -->
+<!ENTITY nesim            "&#x02242;&#x00338;" ><!--not equal or similar -->
+<!ENTITY NewLine          "&#x0000A;" ><!--force a line break; line feed -->
+<!ENTITY NoBreak          "&#x0FEFF;" ><!--never break line here -->
+<!ENTITY nopf             "&#x1D55F;" ><!-- -->
+<!ENTITY NotCupCap        "&#x0226D;" ><!--alias for &nasymp; -->
+<!ENTITY NotHumpEqual     "&#x0224F;&#x00338;" ><!--alias for &nbumpe; -->
+<!ENTITY NotLeftTriangleBar "&#x029CF;&#x00338;" ><!--not left triangle, vertical bar -->
+<!ENTITY NotNestedGreaterGreater "&#x024A2;&#x00338;" ><!--not double greater-than sign -->
+<!ENTITY NotNestedLessLess "&#x024A1;&#x00338;" ><!--not double less-than sign -->
+<!ENTITY NotRightTriangleBar "&#x029D0;&#x00338;" ><!--not vertical bar, right triangle -->
+<!ENTITY NotSquareSubset  "&#x0228F;&#x00338;" ><!--square not subset -->
+<!ENTITY NotSquareSuperset "&#x02290;&#x00338;" ><!--negated set-like partial order operator -->
+<!ENTITY NotSucceedsTilde "&#x0227F;&#x00338;" ><!--not succeeds or similar -->
+<!ENTITY oopf             "&#x1D560;" ><!-- -->
+<!ENTITY OverBar          "&#x000AF;" ><!--over bar -->
+<!ENTITY OverBrace        "&#x0FE37;" ><!--over brace  -->
+<!ENTITY OverBracket      "&#x023B4;" ><!--over bracket -->
+<!ENTITY OverParenthesis  "&#x0FE35;" ><!--over parenthesis -->
+<!ENTITY planckh          "&#x0210E;" ><!--the ring (skew field) of quaternions -->
+<!ENTITY popf             "&#x1D561;" ><!-- -->
+<!ENTITY Product          "&#x0220F;" ><!--alias for &prod -->
+<!ENTITY qopf             "&#x1D562;" ><!-- -->
+<!ENTITY rarrb            "&#x021E5;" ><!--leftwards arrow to bar -->
+<!ENTITY RightDownTeeVector "&#x0295D;" ><!--down-right harpoon from bar -->
+<!ENTITY RightDownVectorBar "&#x02955;" ><!--down-right harpoon to bar -->
+<!ENTITY RightTeeVector   "&#x0295B;" ><!--right-up harpoon from bar -->
+<!ENTITY RightTriangleBar "&#x029D0;" ><!--vertical bar, right triangle -->
+<!ENTITY RightUpDownVector "&#x0294F;" ><!--up-right-down-right harpoon -->
+<!ENTITY RightUpTeeVector "&#x0295C;" ><!--up-right harpoon from bar -->
+<!ENTITY RightUpVectorBar "&#x02954;" ><!--up-right harpoon to bar -->
+<!ENTITY RightVectorBar   "&#x02953;" ><!--up-right harpoon to bar -->
+<!ENTITY ropf             "&#x1D563;" ><!-- -->
+<!ENTITY RoundImplies     "&#x02970;" ><!--round implies -->
+<!ENTITY RuleDelayed      "&#x029F4;" ><!--rule-delayed (colon right arrow) -->
+<!ENTITY ShortDownArrow   "&#x02304;&#x0FE00;" ><!--short down arrow -->
+<!ENTITY ShortUpArrow     "&#x02303;&#x0FE00;" ><!--short up arrow  -->
+<!ENTITY sopf             "&#x1D564;" ><!-- -->
+<!ENTITY Tab              "&#x00009;" ><!--tabulator stop; horizontal tabulation -->
+<!ENTITY ThickSpace       "&#x02009;&#x0200A;&#x0200A;" ><!--space of width 5/18 em -->
+<!ENTITY topf             "&#x1D565;" ><!-- -->
+<!ENTITY UnderBar         "&#x00332;" ><!--combining low line -->
+<!ENTITY UnderBrace       "&#x0FE38;" ><!--under brace  -->
+<!ENTITY UnderBracket     "&#x023B5;" ><!--under bracket -->
+<!ENTITY UnderParenthesis "&#x0FE36;" ><!--under parenthesis -->
+<!ENTITY uopf             "&#x1D566;" ><!-- -->
+<!ENTITY UpArrowBar       "&#x02912;" ><!--up arrow to bar -->
+<!ENTITY VerticalLine     "&#x0007C;" ><!--alias ISONUM verbar -->
+<!ENTITY VerticalSeparator "&#x02758;" ><!--vertical separating operator -->
+<!ENTITY vopf             "&#x1D567;" ><!-- -->
+<!ENTITY wopf             "&#x1D568;" ><!-- -->
+<!ENTITY xopf             "&#x1D569;" ><!-- -->
+<!ENTITY yopf             "&#x1D56A;" ><!-- -->
+<!ENTITY zopf             "&#x1D56B;" ><!-- -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/ruby/xhtml-ruby-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,242 @@
+<!-- ...................................................................... -->
+<!-- XHTML Ruby Module .................................................... -->
+<!-- file: xhtml-ruby-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1999-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-ruby-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $
+
+     This module is based on the W3C Ruby Annotation Specification:
+
+        http://www.w3.org/TR/ruby
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Ruby 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/ruby/xhtml-ruby-1.mod"
+
+     ...................................................................... -->
+
+<!-- Ruby Elements
+
+        ruby, rbc, rtc, rb, rt, rp
+
+     This module declares the elements and their attributes used to
+     support ruby annotation markup.
+-->
+
+<!-- declare qualified element type names:
+-->
+<!ENTITY % ruby.qname  "ruby" >
+<!ENTITY % rbc.qname  "rbc" >
+<!ENTITY % rtc.qname  "rtc" >
+<!ENTITY % rb.qname  "rb" >
+<!ENTITY % rt.qname  "rt" >
+<!ENTITY % rp.qname  "rp" >
+
+<!-- rp fallback is included by default.
+-->
+<!ENTITY % Ruby.fallback "INCLUDE" >
+<!ENTITY % Ruby.fallback.mandatory "IGNORE" >
+
+<!-- Complex ruby is included by default; it may be 
+     overridden by other modules to ignore it.
+-->
+<!ENTITY % Ruby.complex "INCLUDE" >
+
+<!-- Fragments for the content model of the ruby element -->
+<![%Ruby.fallback;[
+<![%Ruby.fallback.mandatory;[
+<!ENTITY % Ruby.content.simple 
+     "( %rb.qname;, %rp.qname;, %rt.qname;, %rp.qname; )"
+>
+]]>
+<!ENTITY % Ruby.content.simple 
+     "( %rb.qname;, ( %rt.qname; | ( %rp.qname;, %rt.qname;, %rp.qname; ) ) )"
+>
+]]>
+<!ENTITY % Ruby.content.simple "( %rb.qname;, %rt.qname; )" >
+
+<![%Ruby.complex;[
+<!ENTITY % Ruby.content.complex 
+     "| ( %rbc.qname;, %rtc.qname;, %rtc.qname;? )"
+>
+]]>
+<!ENTITY % Ruby.content.complex "" >
+
+<!-- Content models of the rb and the rt elements are intended to
+     allow other inline-level elements of its parent markup language,
+     but it should not include ruby descendent elements. The following
+     parameter entity %NoRuby.content; can be used to redefine
+     those content models with minimum effort.  It's defined as
+     '( #PCDATA )' by default.
+-->
+<!ENTITY % NoRuby.content "( #PCDATA )" >
+
+<!-- one or more digits (NUMBER) -->
+<!ENTITY % Number.datatype "CDATA" >
+
+<!-- ruby element ...................................... -->
+
+<!ENTITY % ruby.element  "INCLUDE" >
+<![%ruby.element;[
+<!ENTITY % ruby.content
+     "( %Ruby.content.simple; %Ruby.content.complex; )"
+>
+<!ELEMENT %ruby.qname;  %ruby.content; >
+<!-- end of ruby.element -->]]>
+
+<![%Ruby.complex;[
+<!-- rbc (ruby base component) element ................. -->
+
+<!ENTITY % rbc.element  "INCLUDE" >
+<![%rbc.element;[
+<!ENTITY % rbc.content
+     "(%rb.qname;)+"
+>
+<!ELEMENT %rbc.qname;  %rbc.content; >
+<!-- end of rbc.element -->]]>
+
+<!-- rtc (ruby text component) element ................. -->
+
+<!ENTITY % rtc.element  "INCLUDE" >
+<![%rtc.element;[
+<!ENTITY % rtc.content
+     "(%rt.qname;)+"
+>
+<!ELEMENT %rtc.qname;  %rtc.content; >
+<!-- end of rtc.element -->]]>
+]]>
+
+<!-- rb (ruby base) element ............................ -->
+
+<!ENTITY % rb.element  "INCLUDE" >
+<![%rb.element;[
+<!-- %rb.content; uses %NoRuby.content; as its content model,
+     which is '( #PCDATA )' by default. It may be overridden
+     by other modules to allow other inline-level elements
+     of its parent markup language, but it should not include
+     ruby descendent elements.
+-->
+<!ENTITY % rb.content "%NoRuby.content;" >
+<!ELEMENT %rb.qname;  %rb.content; >
+<!-- end of rb.element -->]]>
+
+<!-- rt (ruby text) element ............................ -->
+
+<!ENTITY % rt.element  "INCLUDE" >
+<![%rt.element;[
+<!-- %rt.content; uses %NoRuby.content; as its content model,
+     which is '( #PCDATA )' by default. It may be overridden
+     by other modules to allow other inline-level elements
+     of its parent markup language, but it should not include
+     ruby descendent elements.
+-->
+<!ENTITY % rt.content "%NoRuby.content;" >
+
+<!ELEMENT %rt.qname;  %rt.content; >
+<!-- end of rt.element -->]]>
+
+<!-- rbspan attribute is used for complex ruby only ...... -->
+<![%Ruby.complex;[
+<!ENTITY % rt.attlist  "INCLUDE" >
+<![%rt.attlist;[
+<!ATTLIST %rt.qname;
+      rbspan         %Number.datatype;      "1"
+>
+<!-- end of rt.attlist -->]]>
+]]>
+
+<!-- rp (ruby parenthesis) element ..................... -->
+
+<![%Ruby.fallback;[
+<!ENTITY % rp.element  "INCLUDE" >
+<![%rp.element;[
+<!ENTITY % rp.content
+     "( #PCDATA )"
+>
+<!ELEMENT %rp.qname;  %rp.content; >
+<!-- end of rp.element -->]]>
+]]>
+
+<!-- Ruby Common Attributes
+
+     The following optional ATTLIST declarations provide an easy way
+     to define common attributes for ruby elements.  These declarations
+     are ignored by default.
+
+     Ruby elements are intended to have common attributes of its
+     parent markup language.  For example, if a markup language defines
+     common attributes as a parameter entity %attrs;, you may add
+     those attributes by just declaring the following parameter entities
+
+         <!ENTITY % Ruby.common.attlists  "INCLUDE" >
+         <!ENTITY % Ruby.common.attrib  "%attrs;" >
+
+     before including the Ruby module.
+-->
+
+<!ENTITY % Ruby.common.attlists  "IGNORE" >
+<![%Ruby.common.attlists;[
+<!ENTITY % Ruby.common.attrib  "" >
+
+<!-- common attributes for ruby ........................ -->
+
+<!ENTITY % Ruby.common.attlist  "INCLUDE" >
+<![%Ruby.common.attlist;[
+<!ATTLIST %ruby.qname;
+      %Ruby.common.attrib;
+>
+<!-- end of Ruby.common.attlist -->]]>
+
+<![%Ruby.complex;[
+<!-- common attributes for rbc ......................... -->
+
+<!ENTITY % Rbc.common.attlist  "INCLUDE" >
+<![%Rbc.common.attlist;[
+<!ATTLIST %rbc.qname;
+      %Ruby.common.attrib;
+>
+<!-- end of Rbc.common.attlist -->]]>
+
+<!-- common attributes for rtc ......................... -->
+
+<!ENTITY % Rtc.common.attlist  "INCLUDE" >
+<![%Rtc.common.attlist;[
+<!ATTLIST %rtc.qname;
+      %Ruby.common.attrib;
+>
+<!-- end of Rtc.common.attlist -->]]>
+]]>
+
+<!-- common attributes for rb .......................... -->
+
+<!ENTITY % Rb.common.attlist  "INCLUDE" >
+<![%Rb.common.attlist;[
+<!ATTLIST %rb.qname;
+      %Ruby.common.attrib;
+>
+<!-- end of Rb.common.attlist -->]]>
+
+<!-- common attributes for rt .......................... -->
+
+<!ENTITY % Rt.common.attlist  "INCLUDE" >
+<![%Rt.common.attlist;[
+<!ATTLIST %rt.qname;
+      %Ruby.common.attrib;
+>
+<!-- end of Rt.common.attlist -->]]>
+
+<![%Ruby.fallback;[
+<!-- common attributes for rp .......................... -->
+
+<!ENTITY % Rp.common.attlist  "INCLUDE" >
+<![%Rp.common.attlist;[
+<!ATTLIST %rp.qname;
+      %Ruby.common.attrib;
+>
+<!-- end of Rp.common.attlist -->]]>
+]]>
+]]>
+
+<!-- end of xhtml-ruby-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/xhtml-basic/xhtml-basic-form-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,185 @@
+<!-- ...................................................................... -->
+<!-- XHTML Simplified Forms Module  ....................................... -->
+<!-- file: xhtml-basic-form-1.mod
+
+     This is XHTML Basic, a proper subset of XHTML.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-basic-form-1.mod,v 1.1 2004-03-16 10:54:15 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Basic Forms 1.0//EN"  
+       SYSTEM "http://www.w3.org/TR/xhtml-modulatization/DTD/xhtml-basic-form-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Basic Forms
+
+     This forms module is based on the HTML 3.2 forms model, with
+     the WAI-requested addition of the label element. While this 
+     module essentially mimics the content model and attributes of 
+     HTML 3.2 forms, the element types declared herein also include
+     all HTML 4 common attributes.
+
+        form, label, input, select, option, textarea
+-->
+
+<!-- declare qualified element type names:
+-->
+<!ENTITY % form.qname  "form" >
+<!ENTITY % label.qname  "label" >
+<!ENTITY % input.qname  "input" >
+<!ENTITY % select.qname  "select" >
+<!ENTITY % option.qname  "option" >
+<!ENTITY % textarea.qname  "textarea" >
+
+<!-- %BlkNoForm.mix; includes all non-form block elements,
+     plus %Misc.class;
+-->
+<!ENTITY % BlkNoForm.mix
+     "%Heading.class;
+      | %List.class;
+      | %BlkStruct.class;
+      %BlkPhras.class;
+      %BlkPres.class;
+      | %table.qname; 
+      %Block.extra;
+      %Misc.class;"
+>
+
+<!-- form: Form Element ................................ -->
+
+<!ENTITY % form.element  "INCLUDE" >
+<![%form.element;[
+<!ENTITY % form.content
+     "( %BlkNoForm.mix; )+"
+>
+<!ELEMENT %form.qname;  %form.content; >
+<!-- end of form.element -->]]>
+
+<!ENTITY % form.attlist  "INCLUDE" >
+<![%form.attlist;[
+<!ATTLIST %form.qname;
+      %Common.attrib;
+      action       %URI.datatype;           #REQUIRED
+      method       ( get | post )           'get'
+      enctype      %ContentType.datatype;   'application/x-www-form-urlencoded'
+>
+<!-- end of form.attlist -->]]>
+
+<!-- label: Form Field Label Text ...................... -->
+
+<!ENTITY % label.element  "INCLUDE" >
+<![%label.element;[
+<!-- Each label must not contain more than ONE field
+-->
+<!ENTITY % label.content
+     "( #PCDATA 
+      | %input.qname; | %select.qname; | %textarea.qname;
+      | %InlStruct.class;
+      %InlPhras.class;
+      %I18n.class;
+      %InlPres.class;
+      %InlSpecial.class;
+      %Misc.class; )*"
+>
+<!ELEMENT %label.qname;  %label.content; >
+<!-- end of label.element -->]]>
+
+<!ENTITY % label.attlist  "INCLUDE" >
+<![%label.attlist;[
+<!ATTLIST %label.qname;
+      %Common.attrib;
+      for          IDREF                    #IMPLIED
+      accesskey    %Character.datatype;     #IMPLIED
+>
+<!-- end of label.attlist -->]]>
+
+<!-- input: Form Control ............................... -->
+
+<!ENTITY % input.element  "INCLUDE" >
+<![%input.element;[
+<!ENTITY % input.content  "EMPTY" >
+<!ELEMENT %input.qname;  %input.content; >
+<!-- end of input.element -->]]>
+
+<!-- Basic Forms removes 'image' and 'file' input types.
+-->
+<!ENTITY % input.attlist  "INCLUDE" >
+<![%input.attlist;[
+<!ENTITY % InputType.class
+     "( text | password | checkbox | radio 
+      | submit | reset | hidden )"
+>
+<!-- attribute name required for all but submit & reset
+-->
+<!ATTLIST %input.qname;
+      %Common.attrib;
+      type         %InputType.class;        'text'
+      name         CDATA                    #IMPLIED
+      value        CDATA                    #IMPLIED
+      checked      ( checked )              #IMPLIED
+      size         CDATA                    #IMPLIED
+      maxlength    %Number.datatype;        #IMPLIED
+      src          %URI.datatype;           #IMPLIED
+      accesskey    %Character.datatype;     #IMPLIED
+>
+<!-- end of input.attlist -->]]>
+
+<!-- select: Option Selector ........................... -->
+
+<!ENTITY % select.element  "INCLUDE" >
+<![%select.element;[
+<!ENTITY % select.content  "( %option.qname; )+" >
+<!ELEMENT %select.qname;  %select.content; >
+<!-- end of select.element -->]]>
+
+<!ENTITY % select.attlist  "INCLUDE" >
+<![%select.attlist;[
+<!ATTLIST %select.qname;
+      %Common.attrib;
+      name         CDATA                    #IMPLIED
+      size         %Number.datatype;        #IMPLIED
+      multiple     ( multiple )             #IMPLIED
+>
+<!-- end of select.attlist -->]]>
+
+<!-- option: Selectable Choice ......................... -->
+
+<!ENTITY % option.element  "INCLUDE" >
+<![%option.element;[
+<!ENTITY % option.content  "( #PCDATA )" >
+<!ELEMENT %option.qname;  %option.content; >
+<!-- end of option.element -->]]>
+
+<!ENTITY % option.attlist  "INCLUDE" >
+<![%option.attlist;[
+<!ATTLIST %option.qname;
+      %Common.attrib;
+      selected     ( selected )             #IMPLIED
+      value        CDATA                    #IMPLIED
+>
+<!-- end of option.attlist -->]]>
+
+<!-- textarea: Multi-Line Text Field ................... -->
+
+<!ENTITY % textarea.element  "INCLUDE" >
+<![%textarea.element;[
+<!ENTITY % textarea.content  "( #PCDATA )" >
+<!ELEMENT %textarea.qname;  %textarea.content; >
+<!-- end of textarea.element -->]]>
+
+<!ENTITY % textarea.attlist  "INCLUDE" >
+<![%textarea.attlist;[
+<!ATTLIST %textarea.qname;
+      %Common.attrib;
+      name         CDATA                    #IMPLIED
+      rows         %Number.datatype;        #REQUIRED
+      cols         %Number.datatype;        #REQUIRED
+      accesskey    %Character.datatype;     #IMPLIED
+>
+<!-- end of textarea.attlist -->]]>
+
+<!-- end of xhtml-basic-form-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/xhtml-basic/xhtml-basic-table-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,166 @@
+<!-- ....................................................................... -->
+<!-- XHTML Basic Table Module  ............................................. -->
+<!-- file: xhtml-basic-table-1.mod
+
+     This is XHTML Basic, a proper subset of XHTML.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-basic-table-1.mod,v 1.1 2004-03-16 10:54:15 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Basic Tables 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modulatization/DTD/xhtml-basic-table-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Basic Tables
+
+        table, caption, tr, th, td
+
+     This table module declares elements and attributes defining
+     a table model based fundamentally on features found in the
+     widely-deployed HTML 3.2 table model.  While this module
+     mimics the content model and table attributes of HTML 3.2
+     tables, the element types declared herein also includes all
+     HTML 4 common and most of the HTML 4 table attributes.
+-->
+
+<!-- declare qualified element type names:
+-->
+<!ENTITY % table.qname  "table" >
+<!ENTITY % caption.qname  "caption" >
+<!ENTITY % tr.qname  "tr" >
+<!ENTITY % th.qname  "th" >
+<!ENTITY % td.qname  "td" >
+
+<!-- horizontal alignment attributes for cell contents
+-->
+<!ENTITY % CellHAlign.attrib
+     "align        ( left
+                   | center
+                   | right )                #IMPLIED"
+>
+
+<!-- vertical alignment attributes for cell contents
+-->
+<!ENTITY % CellVAlign.attrib
+     "valign       ( top
+                   | middle
+                   | bottom )               #IMPLIED"
+>
+
+<!-- scope is simpler than axes attribute for common tables
+-->
+<!ENTITY % scope.attrib
+     "scope        ( row | col  )           #IMPLIED"
+>
+
+<!-- table: Table Element .............................. -->
+
+<!ENTITY % table.element  "INCLUDE" >
+<![%table.element;[
+<!ENTITY % table.content
+     "( %caption.qname;?, %tr.qname;+ )"
+>
+<!ELEMENT %table.qname;  %table.content; >
+<!-- end of table.element -->]]>
+
+<!ENTITY % table.attlist  "INCLUDE" >
+<![%table.attlist;[
+<!ATTLIST %table.qname;
+      %Common.attrib;
+      summary      %Text.datatype;          #IMPLIED
+>
+<!-- end of table.attlist -->]]>
+
+<!-- caption: Table Caption ............................ -->
+
+<!ENTITY % caption.element  "INCLUDE" >
+<![%caption.element;[
+<!ENTITY % caption.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ELEMENT %caption.qname;  %caption.content; >
+<!-- end of caption.element -->]]>
+
+<!ENTITY % caption.attlist  "INCLUDE" >
+<![%caption.attlist;[
+<!ATTLIST %caption.qname;
+      %Common.attrib;
+>
+<!-- end of caption.attlist -->]]>
+
+<!-- tr: Table Row ..................................... -->
+
+<!ENTITY % tr.element  "INCLUDE" >
+<![%tr.element;[
+<!ENTITY % tr.content  "( %th.qname; | %td.qname; )+" >
+<!ELEMENT %tr.qname;  %tr.content; >
+<!-- end of tr.element -->]]>
+
+<!ENTITY % tr.attlist  "INCLUDE" >
+<![%tr.attlist;[
+<!ATTLIST %tr.qname;
+      %Common.attrib;
+      %CellHAlign.attrib;
+      %CellVAlign.attrib;
+>
+<!-- end of tr.attlist -->]]>
+
+<!-- th: Table Header Cell ............................. -->
+
+<!-- th is for header cells, td for data,
+     but for cells acting as both use td
+-->
+
+<!ENTITY % th.element  "INCLUDE" >
+<![%th.element;[
+<!ENTITY % th.content
+     "( #PCDATA | %FlowNoTable.mix; )*"
+>
+<!ELEMENT %th.qname;  %th.content; >
+<!-- end of th.element -->]]>
+
+<!ENTITY % th.attlist  "INCLUDE" >
+<![%th.attlist;[
+<!ATTLIST %th.qname;
+      %Common.attrib;
+      abbr         %Text.datatype;          #IMPLIED
+      axis         CDATA                    #IMPLIED
+      headers      IDREFS                   #IMPLIED
+      %scope.attrib;
+      rowspan      %Number.datatype;        '1'
+      colspan      %Number.datatype;        '1'
+      %CellHAlign.attrib;
+      %CellVAlign.attrib;
+>
+<!-- end of th.attlist -->]]>
+
+<!-- td: Table Data Cell ............................... -->
+
+<!ENTITY % td.element  "INCLUDE" >
+<![%td.element;[
+<!ENTITY % td.content
+     "( #PCDATA | %FlowNoTable.mix; )*"
+>
+<!ELEMENT %td.qname;  %td.content; >
+<!-- end of td.element -->]]>
+
+<!ENTITY % td.attlist  "INCLUDE" >
+<![%td.attlist;[
+<!ATTLIST %td.qname;
+      %Common.attrib;
+      abbr         %Text.datatype;          #IMPLIED
+      axis         CDATA                    #IMPLIED
+      headers      IDREFS                   #IMPLIED
+      %scope.attrib;
+      rowspan      %Number.datatype;        '1'
+      colspan      %Number.datatype;        '1'
+      %CellHAlign.attrib;
+      %CellVAlign.attrib;
+>
+<!-- end of td.attlist -->]]>
+
+<!-- end of xhtml-basic-table-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/xhtml-basic/xhtml-basic10-model-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,148 @@
+<!-- ....................................................................... -->
+<!-- XHTML Basic 1.0 Document Model Module  .................................... -->
+<!-- file: xhtml-basic10-model-1.mod
+
+     This is XHTML Basic, a proper subset of XHTML.
+     Copyright 1998-2000 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-basic10-model-1.mod,v 1.1 2004-03-16 10:54:15 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ENTITIES XHTML Basic 1.0 Document Model 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-basic/xhtml-basic10-model-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- XHTML Basic Document Model
+
+     This module describes the groupings of elements that make up
+     common content models for XHTML elements.
+-->
+
+<!-- Optional Elements in head  .............. -->
+
+<!ENTITY % HeadOpts.mix
+     "( %meta.qname; | %link.qname; | %object.qname; )*" >
+
+<!-- Miscellaneous Elements  ................. -->
+
+<!ENTITY % Misc.class "" >
+
+<!-- Inline Elements  ........................ -->
+
+<!ENTITY % InlStruct.class "%br.qname; | %span.qname;" >
+
+<!ENTITY % InlPhras.class
+     "| %em.qname; | %strong.qname; | %dfn.qname; | %code.qname;
+      | %samp.qname; | %kbd.qname; | %var.qname; | %cite.qname;
+      | %abbr.qname; | %acronym.qname; | %q.qname;" >
+
+<!ENTITY % InlPres.class "" >
+
+<!ENTITY % I18n.class "" >
+
+<!ENTITY % Anchor.class "| %a.qname;" >
+
+<!ENTITY % InlSpecial.class "| %img.qname; | %object.qname;" >
+
+<!ENTITY % InlForm.class
+     "| %input.qname; | %select.qname; | %textarea.qname;
+      | %label.qname;"
+>
+
+<!ENTITY % Inline.extra "" >
+
+<!ENTITY % Inline.class
+     "%InlStruct.class;
+      %InlPhras.class;
+      %Anchor.class;
+      %InlSpecial.class;
+      %InlForm.class;
+      %Inline.extra;"
+>
+
+<!ENTITY % InlNoAnchor.class
+     "%InlStruct.class;
+      %InlPhras.class;
+      %InlSpecial.class;
+      %InlForm.class;
+      %Inline.extra;"
+>
+
+<!ENTITY % InlNoAnchor.mix
+     "%InlNoAnchor.class;
+      %Misc.class;"
+>
+
+<!ENTITY % Inline.mix
+     "%Inline.class;
+      %Misc.class;"
+>
+
+<!-- Block Elements  ......................... -->
+
+<!ENTITY % Heading.class
+     "%h1.qname; | %h2.qname; | %h3.qname;
+      | %h4.qname; | %h5.qname; | %h6.qname;"
+>
+<!ENTITY % List.class  "%ul.qname; | %ol.qname; | %dl.qname;" >
+
+<!ENTITY % Table.class "| %table.qname;" >
+
+<!ENTITY % Form.class  "| %form.qname;" >
+
+<!ENTITY % BlkStruct.class "%p.qname; | %div.qname;" >
+
+<!ENTITY % BlkPhras.class
+     "| %pre.qname; | %blockquote.qname; | %address.qname;"
+>
+
+<!ENTITY % BlkPres.class "" >
+
+<!ENTITY % BlkSpecial.class
+     "%Table.class;
+      %Form.class;"
+>
+
+<!ENTITY % Block.extra "" >
+
+<!ENTITY % Block.class
+     "%BlkStruct.class;
+      %BlkPhras.class;
+      %BlkSpecial.class;
+      %Block.extra;"
+>
+
+<!ENTITY % Block.mix
+     "%Heading.class;
+      | %List.class;
+      | %Block.class;
+      %Misc.class;"
+>
+
+<!-- All Content Elements  ................... -->
+
+<!-- declares all content except tables
+-->
+<!ENTITY % FlowNoTable.mix
+     "%Heading.class;
+      | %List.class;
+      | %BlkStruct.class;
+      %BlkPhras.class;
+      %Form.class;
+      %Block.extra;
+      | %Inline.class;
+      %Misc.class;"
+>
+
+<!ENTITY % Flow.mix
+     "%Heading.class;
+      | %List.class;
+      | %Block.class;
+      | %Inline.class;
+      %Misc.class;"
+>
+
+<!-- end of xhtml-basic10-model-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/xhtml-basic/xhtml-basic10.dtd	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,183 @@
+<!-- XHTML Basic 1.0 DTD  ...................................................... -->
+<!-- file: xhtml-basic10.dtd -->
+
+<!-- XHTML Basic 1.0 DTD
+
+     This is XHTML Basic, a proper subset of XHTML.
+
+     The Extensible HyperText Markup Language (XHTML)
+     Copyright 1998-2000 World Wide Web Consortium
+        (Massachusetts Institute of Technology, Institut National de
+         Recherche en Informatique et en Automatique, Keio University).
+         All Rights Reserved.
+
+     Permission to use, copy, modify and distribute the XHTML Basic DTD
+     and its accompanying documentation for any purpose and without fee is
+     hereby granted in perpetuity, provided that the above copyright notice
+     and this paragraph appear in all copies.  The copyright holders make
+     no representation about the suitability of the DTD for any purpose.
+
+     It is provided "as is" without expressed or implied warranty.
+
+        Editors:    Murray M. Altheim <mailto:altheim@eng.sun.com>
+                    Peter Stark       <mailto:Peter.Stark@ecs.ericsson.se>
+        Revision:   $Id: xhtml-basic10.dtd,v 1.1 2004-03-16 10:48:38 ylafon Exp $ SMI
+
+-->
+<!-- This is the driver file for version 1.0 of the XHTML Basic DTD.
+
+     This DTD is identified by the PUBLIC and SYSTEM identifiers:
+
+     PUBLIC: "-//W3C//DTD XHTML Basic 1.0//EN"
+     SYSTEM: "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd"
+-->
+<!ENTITY % XHTML.version  "-//W3C//DTD XHTML Basic 1.0//EN" >
+
+<!-- Use this URI to identify the default namespace:
+
+         "http://www.w3.org/1999/xhtml"
+
+     See the Qualified Names module for information
+     on the use of namespace prefixes in the DTD.
+-->
+<!ENTITY % NS.prefixed "IGNORE" >
+<!ENTITY % XHTML.prefix  "" >
+
+<!-- Reserved for use with the XLink namespace:
+-->
+<!ENTITY % XLINK.xmlns "" >
+<!ENTITY % XLINK.xmlns.attrib "" >
+
+<!-- For example, if you are using XHTML Basic 1.0 directly, use
+     the FPI in the DOCTYPE declaration, with the xmlns attribute
+     on the document element to identify the default namespace:
+
+         <?xml version="1.0"?>
+         <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN"
+             "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd" >
+         <html xmlns="http://www.w3.org/1999/xhtml"
+               xml:lang="en" >
+         ...
+         </html>
+-->
+
+<!-- reserved for future use with document profiles -->
+<!ENTITY % XHTML.profile  "" >
+
+<!-- Bidirectional Text features
+     This feature-test entity is used to declare elements
+     and attributes used for bidirectional text support.
+-->
+<!ENTITY % XHTML.bidi  "IGNORE" >
+
+<?doc type="doctype" role="title" { XHTML Basic 1.0 } ?>
+
+<!-- :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
+
+<!ENTITY % xhtml-events.module   "IGNORE" >
+<!ENTITY % xhtml-bdo.module      "%XHTML.bidi;" >
+
+<!ENTITY % xhtml-model.mod
+     PUBLIC "-//W3C//ENTITIES XHTML Basic 1.0 Document Model 1.0//EN"
+            "xhtml-basic10-model-1.mod" >
+
+<!ENTITY % xhtml-framework.mod
+     PUBLIC "-//W3C//ENTITIES XHTML Modular Framework 1.0//EN"
+            "xhtml-framework-1.mod" >
+%xhtml-framework.mod;
+
+<!ENTITY % pre.content
+     "( #PCDATA
+      | %InlStruct.class;
+      %InlPhras.class;
+      %Anchor.class;
+      %Inline.extra; )*"
+>
+
+<!ENTITY % xhtml-text.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Text 1.0//EN"
+            "xhtml-text-1.mod" >
+%xhtml-text.mod;
+
+<!ENTITY % xhtml-hypertext.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Hypertext 1.0//EN"
+            "xhtml-hypertext-1.mod" >
+%xhtml-hypertext.mod;
+
+<!ENTITY % xhtml-list.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Lists 1.0//EN"
+            "xhtml-list-1.mod" >
+%xhtml-list.mod;
+
+<!-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
+
+<!-- Image Module  ............................................... -->
+<!ENTITY % xhtml-image.module "INCLUDE" >
+<![%xhtml-image.module;[
+<!ENTITY % xhtml-image.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Images 1.0//EN"
+            "xhtml-image-1.mod" >
+%xhtml-image.mod;]]>
+
+<!-- Tables Module ............................................... -->
+<!ENTITY % xhtml-table.module "INCLUDE" >
+<![%xhtml-table.module;[
+<!ENTITY % xhtml-table.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Basic Tables 1.0//EN"
+            "xhtml-basic-table-1.mod" >
+%xhtml-table.mod;]]>
+
+<!-- Forms Module  ............................................... -->
+<!ENTITY % xhtml-form.module "INCLUDE" >
+<![%xhtml-form.module;[
+<!ENTITY % xhtml-form.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Basic Forms 1.0//EN"
+            "xhtml-basic-form-1.mod" >
+%xhtml-form.mod;]]>
+
+<!-- Link Element Module  ........................................ -->
+<!ENTITY % xhtml-link.module "INCLUDE" >
+<![%xhtml-link.module;[
+<!ENTITY % xhtml-link.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Link Element 1.0//EN"
+            "xhtml-link-1.mod" >
+%xhtml-link.mod;]]>
+
+<!-- Document Metainformation Module  ............................ -->
+<!ENTITY % xhtml-meta.module "INCLUDE" >
+<![%xhtml-meta.module;[
+<!ENTITY % xhtml-meta.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Metainformation 1.0//EN"
+            "xhtml-meta-1.mod" >
+%xhtml-meta.mod;]]>
+
+<!-- Base Element Module  ........................................ -->
+<!ENTITY % xhtml-base.module "INCLUDE" >
+<![%xhtml-base.module;[
+<!ENTITY % xhtml-base.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Base Element 1.0//EN"
+            "xhtml-base-1.mod" >
+%xhtml-base.mod;]]>
+
+<!-- Param Element Module  ....................................... -->
+<!ENTITY % xhtml-param.module "INCLUDE" >
+<![%xhtml-param.module;[
+<!ENTITY % xhtml-param.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Param Element 1.0//EN"
+            "xhtml-param-1.mod" >
+%xhtml-param.mod;]]>
+
+<!-- Embedded Object Module  ..................................... -->
+<!ENTITY % xhtml-object.module "INCLUDE" >
+<![%xhtml-object.module;[
+<!ENTITY % xhtml-object.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Embedded Object 1.0//EN"
+            "xhtml-object-1.mod" >
+%xhtml-object.mod;]]>
+
+<!ENTITY % xhtml-struct.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Document Structure 1.0//EN"
+            "xhtml-struct-1.mod" >
+%xhtml-struct.mod;
+
+<!-- end of XHTML Basic 1.0 DTD  ........................................... -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/xhtml-modularization/xhtml-attribs-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,78 @@
+<!-- ...................................................................... -->
+<!-- XHTML Common Attributes Module  ...................................... -->
+<!-- file: xhtml-attribs-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-attribs-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ENTITIES XHTML Common Attributes 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-attribs-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Common Attributes
+
+     This module declares many of the common attributes for the XHTML DTD.
+     %NS.decl.attrib; is declared in the XHTML Qname module.
+-->
+
+<!ENTITY % id.attrib
+     "id           ID                       #IMPLIED"
+>
+
+<!ENTITY % class.attrib
+     "class        NMTOKENS                 #IMPLIED"
+>
+
+<!ENTITY % title.attrib
+     "title        %Text.datatype;          #IMPLIED"
+>
+
+<!ENTITY % Core.extra.attrib "" >
+
+<!ENTITY % Core.attrib
+     "%XHTML.xmlns.attrib;
+      %id.attrib;
+      %class.attrib;
+      %title.attrib;
+      %Core.extra.attrib;"
+>
+
+<!ENTITY % lang.attrib
+     "xml:lang     %LanguageCode.datatype;  #IMPLIED"
+>
+
+<![%XHTML.bidi;[
+<!ENTITY % dir.attrib
+     "dir          ( ltr | rtl )            #IMPLIED"
+>
+
+<!ENTITY % I18n.attrib
+     "%dir.attrib;
+      %lang.attrib;"
+>
+
+]]>
+<!ENTITY % I18n.attrib
+     "%lang.attrib;"
+>
+
+<!ENTITY % Common.extra.attrib "" >
+
+<!-- intrinsic event attributes declared previously
+-->
+<!ENTITY % Events.attrib "" >
+
+<!ENTITY % Common.attrib
+     "%Core.attrib;
+      %I18n.attrib;
+      %Events.attrib;
+      %Common.extra.attrib;"
+>
+
+<!-- end of xhtml-attribs-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/xhtml-modularization/xhtml-base-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,53 @@
+<!-- ...................................................................... -->
+<!-- XHTML Base Element Module  ........................................... -->
+<!-- file: xhtml-base-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-base-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Base Element 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-base-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Base element
+
+        base
+
+     This module declares the base element type and its attributes,
+     used to define a base URI against which relative URIs in the
+     document will be resolved.
+
+     Note that this module also redeclares the content model for
+     the head element to include the base element.
+-->
+
+<!-- base: Document Base URI ........................... -->
+
+<!ENTITY % base.element  "INCLUDE" >
+<![%base.element;[
+<!ENTITY % base.content  "EMPTY" >
+<!ENTITY % base.qname  "base" >
+<!ELEMENT %base.qname;  %base.content; >
+<!-- end of base.element -->]]>
+
+<!ENTITY % base.attlist  "INCLUDE" >
+<![%base.attlist;[
+<!ATTLIST %base.qname;
+      %XHTML.xmlns.attrib;
+      href         %URI.datatype;           #REQUIRED
+>
+<!-- end of base.attlist -->]]>
+
+<!ENTITY % head.content
+    "( %HeadOpts.mix;,
+     ( ( %title.qname;, %HeadOpts.mix;, ( %base.qname;, %HeadOpts.mix; )? )
+     | ( %base.qname;, %HeadOpts.mix;, ( %title.qname;, %HeadOpts.mix; ))))"
+>
+
+<!-- end of xhtml-base-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/xhtml-modularization/xhtml-bdo-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,47 @@
+<!-- ...................................................................... -->
+<!-- XHTML BDO Element Module ............................................. -->
+<!-- file: xhtml-bdo-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-bdo-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML BDO Element 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-bdo-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Bidirectional Override (bdo) Element
+
+     This modules declares the element 'bdo', used to override the
+     Unicode bidirectional algorithm for selected fragments of text.
+
+     DEPENDENCIES:
+     Relies on the conditional section keyword %XHTML.bidi; declared
+     as "INCLUDE". Bidirectional text support includes both the bdo
+     element and the 'dir' attribute.
+-->
+
+<!ENTITY % bdo.element  "INCLUDE" >
+<![%bdo.element;[
+<!ENTITY % bdo.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % bdo.qname  "bdo" >
+<!ELEMENT %bdo.qname;  %bdo.content; >
+<!-- end of bdo.element -->]]>
+
+<!ENTITY % bdo.attlist  "INCLUDE" >
+<![%bdo.attlist;[
+<!ATTLIST %bdo.qname;
+      %Core.attrib;
+      xml:lang     %LanguageCode.datatype;  #IMPLIED
+      dir          ( ltr | rtl )            #REQUIRED
+>
+]]>
+
+<!-- end of xhtml-bdo-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/xhtml-modularization/xhtml-blkphras-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,164 @@
+<!-- ...................................................................... -->
+<!-- XHTML Block Phrasal Module  .......................................... -->
+<!-- file: xhtml-blkphras-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-blkphras-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Block Phrasal 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-blkphras-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Block Phrasal
+
+        address, blockquote, pre, h1, h2, h3, h4, h5, h6
+
+     This module declares the elements and their attributes used to
+     support block-level phrasal markup.
+-->
+
+<!ENTITY % address.element  "INCLUDE" >
+<![%address.element;[
+<!ENTITY % address.content
+     "( #PCDATA | %Inline.mix; )*" >
+<!ENTITY % address.qname  "address" >
+<!ELEMENT %address.qname;  %address.content; >
+<!-- end of address.element -->]]>
+
+<!ENTITY % address.attlist  "INCLUDE" >
+<![%address.attlist;[
+<!ATTLIST %address.qname;
+      %Common.attrib;
+>
+<!-- end of address.attlist -->]]>
+
+<!ENTITY % blockquote.element  "INCLUDE" >
+<![%blockquote.element;[
+<!ENTITY % blockquote.content
+     "( %Block.mix; )+"
+>
+<!ENTITY % blockquote.qname  "blockquote" >
+<!ELEMENT %blockquote.qname;  %blockquote.content; >
+<!-- end of blockquote.element -->]]>
+
+<!ENTITY % blockquote.attlist  "INCLUDE" >
+<![%blockquote.attlist;[
+<!ATTLIST %blockquote.qname;
+      %Common.attrib;
+      cite         %URI.datatype;           #IMPLIED
+>
+<!-- end of blockquote.attlist -->]]>
+
+<!ENTITY % pre.element  "INCLUDE" >
+<![%pre.element;[
+<!ENTITY % pre.content
+     "( #PCDATA
+      | %InlStruct.class;
+      %InlPhras.class;
+      | %tt.qname; | %i.qname; | %b.qname;
+      %I18n.class;
+      %Anchor.class;
+      | %script.qname; | %map.qname;
+      %Inline.extra; )*"
+>
+<!ENTITY % pre.qname  "pre" >
+<!ELEMENT %pre.qname;  %pre.content; >
+<!-- end of pre.element -->]]>
+
+<!ENTITY % pre.attlist  "INCLUDE" >
+<![%pre.attlist;[
+<!ATTLIST %pre.qname;
+      %Common.attrib;
+      xml:space    ( preserve )             #FIXED 'preserve'
+>
+<!-- end of pre.attlist -->]]>
+
+<!-- ...................  Heading Elements  ................... -->
+
+<!ENTITY % Heading.content  "( #PCDATA | %Inline.mix; )*" >
+
+<!ENTITY % h1.element  "INCLUDE" >
+<![%h1.element;[
+<!ENTITY % h1.qname  "h1" >
+<!ELEMENT %h1.qname;  %Heading.content; >
+<!-- end of h1.element -->]]>
+
+<!ENTITY % h1.attlist  "INCLUDE" >
+<![%h1.attlist;[
+<!ATTLIST %h1.qname;
+      %Common.attrib;
+>
+<!-- end of h1.attlist -->]]>
+
+<!ENTITY % h2.element  "INCLUDE" >
+<![%h2.element;[
+<!ENTITY % h2.qname  "h2" >
+<!ELEMENT %h2.qname;  %Heading.content; >
+<!-- end of h2.element -->]]>
+
+<!ENTITY % h2.attlist  "INCLUDE" >
+<![%h2.attlist;[
+<!ATTLIST %h2.qname;
+      %Common.attrib;
+>
+<!-- end of h2.attlist -->]]>
+
+<!ENTITY % h3.element  "INCLUDE" >
+<![%h3.element;[
+<!ENTITY % h3.qname  "h3" >
+<!ELEMENT %h3.qname;  %Heading.content; >
+<!-- end of h3.element -->]]>
+
+<!ENTITY % h3.attlist  "INCLUDE" >
+<![%h3.attlist;[
+<!ATTLIST %h3.qname;
+      %Common.attrib;
+>
+<!-- end of h3.attlist -->]]>
+
+<!ENTITY % h4.element  "INCLUDE" >
+<![%h4.element;[
+<!ENTITY % h4.qname  "h4" >
+<!ELEMENT %h4.qname;  %Heading.content; >
+<!-- end of h4.element -->]]>
+
+<!ENTITY % h4.attlist  "INCLUDE" >
+<![%h4.attlist;[
+<!ATTLIST %h4.qname;
+      %Common.attrib;
+>
+<!-- end of h4.attlist -->]]>
+
+<!ENTITY % h5.element  "INCLUDE" >
+<![%h5.element;[
+<!ENTITY % h5.qname  "h5" >
+<!ELEMENT %h5.qname;  %Heading.content; >
+<!-- end of h5.element -->]]>
+
+<!ENTITY % h5.attlist  "INCLUDE" >
+<![%h5.attlist;[
+<!ATTLIST %h5.qname;
+      %Common.attrib;
+>
+<!-- end of h5.attlist -->]]>
+
+<!ENTITY % h6.element  "INCLUDE" >
+<![%h6.element;[
+<!ENTITY % h6.qname  "h6" >
+<!ELEMENT %h6.qname;  %Heading.content; >
+<!-- end of h6.element -->]]>
+
+<!ENTITY % h6.attlist  "INCLUDE" >
+<![%h6.attlist;[
+<!ATTLIST %h6.qname;
+      %Common.attrib;
+>
+<!-- end of h6.attlist -->]]>
+
+<!-- end of xhtml-blkphras-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/xhtml-modularization/xhtml-blkpres-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,40 @@
+<!-- ...................................................................... -->
+<!-- XHTML Block Presentation Module  ..................................... -->
+<!-- file: xhtml-blkpres-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-blkpres-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Block Presentation 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-blkpres-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Block Presentational Elements
+
+        hr
+
+     This module declares the elements and their attributes used to
+     support block-level presentational markup.
+-->
+
+<!ENTITY % hr.element  "INCLUDE" >
+<![%hr.element;[
+<!ENTITY % hr.content  "EMPTY" >
+<!ENTITY % hr.qname  "hr" >
+<!ELEMENT %hr.qname;  %hr.content; >
+<!-- end of hr.element -->]]>
+
+<!ENTITY % hr.attlist  "INCLUDE" >
+<![%hr.attlist;[
+<!ATTLIST %hr.qname;
+      %Common.attrib;
+>
+<!-- end of hr.attlist -->]]>
+
+<!-- end of xhtml-blkpres-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/xhtml-modularization/xhtml-blkstruct-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,57 @@
+<!-- ...................................................................... -->
+<!-- XHTML Block Structural Module  ....................................... -->
+<!-- file: xhtml-blkstruct-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-blkstruct-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Block Structural 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-blkstruct-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Block Structural
+
+        div, p
+
+     This module declares the elements and their attributes used to
+     support block-level structural markup.
+-->
+
+<!ENTITY % div.element  "INCLUDE" >
+<![%div.element;[
+<!ENTITY % div.content
+     "( #PCDATA | %Flow.mix; )*"
+>
+<!ENTITY % div.qname  "div" >
+<!ELEMENT %div.qname;  %div.content; >
+<!-- end of div.element -->]]>
+
+<!ENTITY % div.attlist  "INCLUDE" >
+<![%div.attlist;[
+<!ATTLIST %div.qname;
+      %Common.attrib;
+>
+<!-- end of div.attlist -->]]>
+
+<!ENTITY % p.element  "INCLUDE" >
+<![%p.element;[
+<!ENTITY % p.content
+     "( #PCDATA | %Inline.mix; )*" >
+<!ENTITY % p.qname  "p" >
+<!ELEMENT %p.qname;  %p.content; >
+<!-- end of p.element -->]]>
+
+<!ENTITY % p.attlist  "INCLUDE" >
+<![%p.attlist;[
+<!ATTLIST %p.qname;
+      %Common.attrib;
+>
+<!-- end of p.attlist -->]]>
+
+<!-- end of xhtml-blkstruct-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/xhtml-modularization/xhtml-charent-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,39 @@
+<!-- ...................................................................... -->
+<!-- XHTML Character Entities Module  ......................................... -->
+<!-- file: xhtml-charent-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-charent-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ENTITIES XHTML Character Entities 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-charent-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Character Entities for XHTML
+
+     This module declares the set of character entities for XHTML,
+     including the Latin 1, Symbol and Special character collections.
+-->
+
+<!ENTITY % xhtml-lat1
+    PUBLIC "-//W3C//ENTITIES Latin 1 for XHTML//EN"
+           "xhtml-lat1.ent" >
+%xhtml-lat1;
+
+<!ENTITY % xhtml-symbol
+    PUBLIC "-//W3C//ENTITIES Symbols for XHTML//EN"
+           "xhtml-symbol.ent" >
+%xhtml-symbol;
+
+<!ENTITY % xhtml-special
+    PUBLIC "-//W3C//ENTITIES Special for XHTML//EN"
+           "xhtml-special.ent" >
+%xhtml-special;
+
+<!-- end of xhtml-charent-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/xhtml-modularization/xhtml-csismap-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,114 @@
+<!-- ...................................................................... -->
+<!-- XHTML Client-side Image Map Module  .................................. -->
+<!-- file: xhtml-csismap-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-csismap-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Client-side Image Maps 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-csismap-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Client-side Image Maps
+
+        area, map
+
+     This module declares elements and attributes to support client-side
+     image maps. This requires that the Image Module (or a module
+     declaring the img element type) be included in the DTD.
+
+     These can be placed in the same document or grouped in a
+     separate document, although the latter isn't widely supported
+-->
+
+<!ENTITY % area.element  "INCLUDE" >
+<![%area.element;[
+<!ENTITY % area.content  "EMPTY" >
+<!ENTITY % area.qname  "area" >
+<!ELEMENT %area.qname;  %area.content; >
+<!-- end of area.element -->]]>
+
+<!ENTITY % Shape.datatype "( rect | circle | poly | default )">
+<!ENTITY % Coords.datatype "CDATA" >
+
+<!ENTITY % area.attlist  "INCLUDE" >
+<![%area.attlist;[
+<!ATTLIST %area.qname;
+      %Common.attrib;
+      href         %URI.datatype;           #IMPLIED
+      shape        %Shape.datatype;         'rect'
+      coords       %Coords.datatype;        #IMPLIED
+      nohref       ( nohref )               #IMPLIED
+      alt          %Text.datatype;          #REQUIRED
+      tabindex     %Number.datatype;        #IMPLIED
+      accesskey    %Character.datatype;     #IMPLIED
+>
+<!-- end of area.attlist -->]]>
+
+<!-- modify anchor attribute definition list
+     to allow for client-side image maps
+-->
+<!ATTLIST %a.qname;
+      shape        %Shape.datatype;         'rect'
+      coords       %Coords.datatype;        #IMPLIED
+>
+
+<!-- modify img attribute definition list
+     to allow for client-side image maps
+-->
+<!ATTLIST %img.qname;
+      usemap       IDREF                    #IMPLIED
+>
+
+<!-- modify form input attribute definition list
+     to allow for client-side image maps
+-->
+<!ATTLIST %input.qname;
+      usemap       IDREF                    #IMPLIED
+>
+
+<!-- modify object attribute definition list
+     to allow for client-side image maps
+-->
+<!ATTLIST %object.qname;
+      usemap       IDREF                    #IMPLIED
+>
+
+<!-- 'usemap' points to the 'id' attribute of a <map> element,
+     which must be in the same document; support for external
+     document maps was not widely supported in HTML and is
+     eliminated in XHTML.
+
+     It is considered an error for the element pointed to by
+     a usemap IDREF to occur in anything but a <map> element.
+-->
+
+<!ENTITY % map.element  "INCLUDE" >
+<![%map.element;[
+<!ENTITY % map.content
+     "(( %Block.mix; ) | %area.qname; )+"
+>
+<!ENTITY % map.qname  "map" >
+<!ELEMENT %map.qname;  %map.content; >
+<!-- end of map.element -->]]>
+
+<!ENTITY % map.attlist  "INCLUDE" >
+<![%map.attlist;[
+<!ATTLIST %map.qname;
+      %XHTML.xmlns.attrib;
+      id           ID                       #REQUIRED
+      %class.attrib;
+      %title.attrib;
+      %Core.extra.attrib;
+      %I18n.attrib;
+      %Events.attrib;
+>
+<!-- end of map.attlist -->]]>
+
+<!-- end of xhtml-csismap-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/xhtml-modularization/xhtml-datatypes-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,85 @@
+<!-- ...................................................................... -->
+<!-- XHTML Datatypes Module  .............................................. -->
+<!-- file: xhtml-datatypes-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-datatypes-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ENTITIES XHTML Datatypes 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-datatypes-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Datatypes
+
+     defines containers for the following datatypes, many of
+     these imported from other specifications and standards.
+-->
+
+<!-- Length defined for cellpadding/cellspacing -->
+
+<!-- nn for pixels or nn% for percentage length -->
+<!ENTITY % Length.datatype "CDATA" >
+
+<!-- space-separated list of link types -->
+<!ENTITY % LinkTypes.datatype "NMTOKENS" >
+
+<!-- single or comma-separated list of media descriptors -->
+<!ENTITY % MediaDesc.datatype "CDATA" >
+
+<!-- pixel, percentage, or relative -->
+<!ENTITY % MultiLength.datatype "CDATA" >
+
+<!-- one or more digits (NUMBER) -->
+<!ENTITY % Number.datatype "CDATA" >
+
+<!-- integer representing length in pixels -->
+<!ENTITY % Pixels.datatype "CDATA" >
+
+<!-- script expression -->
+<!ENTITY % Script.datatype "CDATA" >
+
+<!-- textual content -->
+<!ENTITY % Text.datatype "CDATA" >
+
+<!-- Imported Datatypes ................................ -->
+
+<!-- a single character from [ISO10646] -->
+<!ENTITY % Character.datatype "CDATA" >
+
+<!-- a character encoding, as per [RFC2045] -->
+<!ENTITY % Charset.datatype "CDATA" >
+
+<!-- a space separated list of character encodings, as per [RFC2045] -->
+<!ENTITY % Charsets.datatype "CDATA" >
+
+<!-- Color specification using color name or sRGB (#RRGGBB) values -->
+<!ENTITY % Color.datatype "CDATA" >
+
+<!-- media type, as per [RFC2045] -->
+<!ENTITY % ContentType.datatype "CDATA" >
+
+<!-- comma-separated list of media types, as per [RFC2045] -->
+<!ENTITY % ContentTypes.datatype "CDATA" >
+
+<!-- date and time information. ISO date format -->
+<!ENTITY % Datetime.datatype "CDATA" >
+
+<!-- formal public identifier, as per [ISO8879] -->
+<!ENTITY % FPI.datatype "CDATA" >
+
+<!-- a language code, as per [RFC3066] -->
+<!ENTITY % LanguageCode.datatype "NMTOKEN" >
+
+<!-- a Uniform Resource Identifier, see [URI] -->
+<!ENTITY % URI.datatype "CDATA" >
+
+<!-- a space-separated list of Uniform Resource Identifiers, see [URI] -->
+<!ENTITY % URIs.datatype "CDATA" >
+
+<!-- end of xhtml-datatypes-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/xhtml-modularization/xhtml-edit-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,66 @@
+<!-- ...................................................................... -->
+<!-- XHTML Editing Elements Module  ....................................... -->
+<!-- file: xhtml-edit-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-edit-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Editing Markup 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-edit-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Editing Elements
+
+        ins, del
+
+     This module declares element types and attributes used to indicate
+     inserted and deleted content while editing a document.
+-->
+
+<!-- ins: Inserted Text  ............................... -->
+
+<!ENTITY % ins.element  "INCLUDE" >
+<![%ins.element;[
+<!ENTITY % ins.content
+     "( #PCDATA | %Flow.mix; )*"
+>
+<!ENTITY % ins.qname  "ins" >
+<!ELEMENT %ins.qname;  %ins.content; >
+<!-- end of ins.element -->]]>
+
+<!ENTITY % ins.attlist  "INCLUDE" >
+<![%ins.attlist;[
+<!ATTLIST %ins.qname;
+      %Common.attrib;
+      cite         %URI.datatype;           #IMPLIED
+      datetime     %Datetime.datatype;      #IMPLIED
+>
+<!-- end of ins.attlist -->]]>
+
+<!-- del: Deleted Text  ................................ -->
+
+<!ENTITY % del.element  "INCLUDE" >
+<![%del.element;[
+<!ENTITY % del.content
+     "( #PCDATA | %Flow.mix; )*"
+>
+<!ENTITY % del.qname  "del" >
+<!ELEMENT %del.qname;  %del.content; >
+<!-- end of del.element -->]]>
+
+<!ENTITY % del.attlist  "INCLUDE" >
+<![%del.attlist;[
+<!ATTLIST %del.qname;
+      %Common.attrib;
+      cite         %URI.datatype;           #IMPLIED
+      datetime     %Datetime.datatype;      #IMPLIED
+>
+<!-- end of del.attlist -->]]>
+
+<!-- end of xhtml-edit-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/xhtml-modularization/xhtml-events-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,120 @@
+<!-- ...................................................................... -->
+<!-- XHTML Intrinsic Events Module  ....................................... -->
+<!-- file: xhtml-events-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-events-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ENTITIES XHTML Intrinsic Events 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-events-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Intrinsic Event Attributes
+
+     These are the event attributes defined in HTML 4,
+     Section 18.2.3 "Intrinsic Events". This module must be
+     instantiated prior to the Attributes Module but after
+     the Datatype Module in the Modular Framework module.
+
+    "Note: Authors of HTML documents are advised that changes
+     are likely to occur in the realm of intrinsic events
+     (e.g., how scripts are bound to events). Research in
+     this realm is carried on by members of the W3C Document
+     Object Model Working Group (see the W3C Web site at
+     http://www.w3.org/ for more information)."
+-->
+<!-- NOTE: Because the ATTLIST declarations in this module occur
+     before their respective ELEMENT declarations in other
+     modules, there may be a dependency on this module that
+     should be considered if any of the parameter entities used
+     for element type names (eg., %a.qname;) are redeclared.
+-->
+
+<!ENTITY % Events.attrib
+     "onclick      %Script.datatype;        #IMPLIED
+      ondblclick   %Script.datatype;        #IMPLIED
+      onmousedown  %Script.datatype;        #IMPLIED
+      onmouseup    %Script.datatype;        #IMPLIED
+      onmouseover  %Script.datatype;        #IMPLIED
+      onmousemove  %Script.datatype;        #IMPLIED
+      onmouseout   %Script.datatype;        #IMPLIED
+      onkeypress   %Script.datatype;        #IMPLIED
+      onkeydown    %Script.datatype;        #IMPLIED
+      onkeyup      %Script.datatype;        #IMPLIED"
+>
+
+<!-- additional attributes on anchor element
+-->
+<!ATTLIST %a.qname;
+     onfocus      %Script.datatype;         #IMPLIED
+     onblur       %Script.datatype;         #IMPLIED
+>
+
+<!-- additional attributes on form element
+-->
+<!ATTLIST %form.qname;
+      onsubmit     %Script.datatype;        #IMPLIED
+      onreset      %Script.datatype;        #IMPLIED
+>
+
+<!-- additional attributes on label element
+-->
+<!ATTLIST %label.qname;
+      onfocus      %Script.datatype;        #IMPLIED
+      onblur       %Script.datatype;        #IMPLIED
+>
+
+<!-- additional attributes on input element
+-->
+<!ATTLIST %input.qname;
+      onfocus      %Script.datatype;        #IMPLIED
+      onblur       %Script.datatype;        #IMPLIED
+      onselect     %Script.datatype;        #IMPLIED
+      onchange     %Script.datatype;        #IMPLIED
+>
+
+<!-- additional attributes on select element
+-->
+<!ATTLIST %select.qname;
+      onfocus      %Script.datatype;        #IMPLIED
+      onblur       %Script.datatype;        #IMPLIED
+      onchange     %Script.datatype;        #IMPLIED
+>
+
+<!-- additional attributes on textarea element
+-->
+<!ATTLIST %textarea.qname;
+      onfocus      %Script.datatype;        #IMPLIED
+      onblur       %Script.datatype;        #IMPLIED
+      onselect     %Script.datatype;        #IMPLIED
+      onchange     %Script.datatype;        #IMPLIED
+>
+
+<!-- additional attributes on button element
+-->
+<!ATTLIST %button.qname;
+      onfocus      %Script.datatype;        #IMPLIED
+      onblur       %Script.datatype;        #IMPLIED
+>
+
+<!-- additional attributes on body element
+-->
+<!ATTLIST %body.qname;
+      onload       %Script.datatype;        #IMPLIED
+      onunload     %Script.datatype;        #IMPLIED
+>
+
+<!-- additional attributes on area element
+-->
+<!ATTLIST %area.qname;
+      onfocus      %Script.datatype;        #IMPLIED
+      onblur       %Script.datatype;        #IMPLIED
+>
+
+<!-- end of xhtml-events-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/xhtml-modularization/xhtml-form-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,291 @@
+<!-- ...................................................................... -->
+<!-- XHTML Forms Module  .................................................. -->
+<!-- file: xhtml-form-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-form-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Forms 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-form-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Forms
+
+        form, label, input, select, optgroup, option,
+        textarea, fieldset, legend, button
+
+     This module declares markup to provide support for online
+     forms, based on the features found in HTML 4 forms.
+-->
+
+<!-- declare qualified element type names:
+-->
+<!ENTITY % form.qname  "form" >
+<!ENTITY % label.qname  "label" >
+<!ENTITY % input.qname  "input" >
+<!ENTITY % select.qname  "select" >
+<!ENTITY % optgroup.qname  "optgroup" >
+<!ENTITY % option.qname  "option" >
+<!ENTITY % textarea.qname  "textarea" >
+<!ENTITY % fieldset.qname  "fieldset" >
+<!ENTITY % legend.qname  "legend" >
+<!ENTITY % button.qname  "button" >
+
+<!-- %BlkNoForm.mix; includes all non-form block elements,
+     plus %Misc.class;
+-->
+<!ENTITY % BlkNoForm.mix
+     "%Heading.class;
+      | %List.class;
+      | %BlkStruct.class;
+      %BlkPhras.class;
+      %BlkPres.class;
+      %Table.class;
+      %Block.extra;
+      %Misc.class;"
+>
+
+<!-- form: Form Element ................................ -->
+
+<!ENTITY % form.element  "INCLUDE" >
+<![%form.element;[
+<!ENTITY % form.content
+     "( %BlkNoForm.mix;
+      | %fieldset.qname; )+"
+>
+<!ELEMENT %form.qname;  %form.content; >
+<!-- end of form.element -->]]>
+
+<!ENTITY % form.attlist  "INCLUDE" >
+<![%form.attlist;[
+<!ATTLIST %form.qname;
+      %Common.attrib;
+      action       %URI.datatype;           #REQUIRED
+      method       ( get | post )           'get'
+      enctype      %ContentType.datatype;   'application/x-www-form-urlencoded'
+      accept-charset %Charsets.datatype;    #IMPLIED
+      accept       %ContentTypes.datatype;  #IMPLIED
+>
+<!-- end of form.attlist -->]]>
+
+<!-- label: Form Field Label Text ...................... -->
+
+<!-- Each label must not contain more than ONE field
+-->
+
+<!ENTITY % label.element  "INCLUDE" >
+<![%label.element;[
+<!ENTITY % label.content
+     "( #PCDATA
+      | %input.qname; | %select.qname; | %textarea.qname; | %button.qname;
+      | %InlStruct.class;
+      %InlPhras.class;
+      %I18n.class;
+      %InlPres.class;
+      %Anchor.class;
+      %InlSpecial.class;
+      %Inline.extra;
+      %Misc.class; )*"
+>
+<!ELEMENT %label.qname;  %label.content; >
+<!-- end of label.element -->]]>
+
+<!ENTITY % label.attlist  "INCLUDE" >
+<![%label.attlist;[
+<!ATTLIST %label.qname;
+      %Common.attrib;
+      for          IDREF                    #IMPLIED
+      accesskey    %Character.datatype;     #IMPLIED
+>
+<!-- end of label.attlist -->]]>
+
+<!-- input: Form Control ............................... -->
+
+<!ENTITY % input.element  "INCLUDE" >
+<![%input.element;[
+<!ENTITY % input.content  "EMPTY" >
+<!ELEMENT %input.qname;  %input.content; >
+<!-- end of input.element -->]]>
+
+<!ENTITY % input.attlist  "INCLUDE" >
+<![%input.attlist;[
+<!ENTITY % InputType.class
+     "( text | password | checkbox | radio | submit
+      | reset | file | hidden | image | button )"
+>
+<!-- attribute 'name' required for all but submit & reset
+-->
+<!ATTLIST %input.qname;
+      %Common.attrib;
+      type         %InputType.class;        'text'
+      name         CDATA                    #IMPLIED
+      value        CDATA                    #IMPLIED
+      checked      ( checked )              #IMPLIED
+      disabled     ( disabled )             #IMPLIED
+      readonly     ( readonly )             #IMPLIED
+      size         %Number.datatype;        #IMPLIED
+      maxlength    %Number.datatype;        #IMPLIED
+      src          %URI.datatype;           #IMPLIED
+      alt          %Text.datatype;          #IMPLIED
+      tabindex     %Number.datatype;        #IMPLIED
+      accesskey    %Character.datatype;     #IMPLIED
+      accept       %ContentTypes.datatype;  #IMPLIED
+>
+<!-- end of input.attlist -->]]>
+
+<!-- select: Option Selector ........................... -->
+
+<!ENTITY % select.element  "INCLUDE" >
+<![%select.element;[
+<!ENTITY % select.content
+     "( %optgroup.qname; | %option.qname; )+"
+>
+<!ELEMENT %select.qname;  %select.content; >
+<!-- end of select.element -->]]>
+
+<!ENTITY % select.attlist  "INCLUDE" >
+<![%select.attlist;[
+<!ATTLIST %select.qname;
+      %Common.attrib;
+      name         CDATA                    #IMPLIED
+      size         %Number.datatype;        #IMPLIED
+      multiple     ( multiple )             #IMPLIED
+      disabled     ( disabled )             #IMPLIED
+      tabindex     %Number.datatype;        #IMPLIED
+>
+<!-- end of select.attlist -->]]>
+
+<!-- optgroup: Option Group ............................ -->
+
+<!ENTITY % optgroup.element  "INCLUDE" >
+<![%optgroup.element;[
+<!ENTITY % optgroup.content  "( %option.qname; )+" >
+<!ELEMENT %optgroup.qname;  %optgroup.content; >
+<!-- end of optgroup.element -->]]>
+
+<!ENTITY % optgroup.attlist  "INCLUDE" >
+<![%optgroup.attlist;[
+<!ATTLIST %optgroup.qname;
+      %Common.attrib;
+      disabled     ( disabled )             #IMPLIED
+      label        %Text.datatype;          #REQUIRED
+>
+<!-- end of optgroup.attlist -->]]>
+
+<!-- option: Selectable Choice ......................... -->
+
+<!ENTITY % option.element  "INCLUDE" >
+<![%option.element;[
+<!ENTITY % option.content  "( #PCDATA )" >
+<!ELEMENT %option.qname;  %option.content; >
+<!-- end of option.element -->]]>
+
+<!ENTITY % option.attlist  "INCLUDE" >
+<![%option.attlist;[
+<!ATTLIST %option.qname;
+      %Common.attrib;
+      selected     ( selected )             #IMPLIED
+      disabled     ( disabled )             #IMPLIED
+      label        %Text.datatype;          #IMPLIED
+      value        CDATA                    #IMPLIED
+>
+<!-- end of option.attlist -->]]>
+
+<!-- textarea: Multi-Line Text Field ................... -->
+
+<!ENTITY % textarea.element  "INCLUDE" >
+<![%textarea.element;[
+<!ENTITY % textarea.content  "( #PCDATA )" >
+<!ELEMENT %textarea.qname;  %textarea.content; >
+<!-- end of textarea.element -->]]>
+
+<!ENTITY % textarea.attlist  "INCLUDE" >
+<![%textarea.attlist;[
+<!ATTLIST %textarea.qname;
+      %Common.attrib;
+      name         CDATA                    #IMPLIED
+      rows         %Number.datatype;        #REQUIRED
+      cols         %Number.datatype;        #REQUIRED
+      disabled     ( disabled )             #IMPLIED
+      readonly     ( readonly )             #IMPLIED
+      tabindex     %Number.datatype;        #IMPLIED
+      accesskey    %Character.datatype;     #IMPLIED
+>
+<!-- end of textarea.attlist -->]]>
+
+<!-- fieldset: Form Control Group ...................... -->
+
+<!-- #PCDATA is to solve the mixed content problem,
+     per specification only whitespace is allowed
+-->
+
+<!ENTITY % fieldset.element  "INCLUDE" >
+<![%fieldset.element;[
+<!ENTITY % fieldset.content
+     "( #PCDATA | %legend.qname; | %Flow.mix; )*"
+>
+<!ELEMENT %fieldset.qname;  %fieldset.content; >
+<!-- end of fieldset.element -->]]>
+
+<!ENTITY % fieldset.attlist  "INCLUDE" >
+<![%fieldset.attlist;[
+<!ATTLIST %fieldset.qname;
+      %Common.attrib;
+>
+<!-- end of fieldset.attlist -->]]>
+
+<!-- legend: Fieldset Legend ........................... -->
+
+<!ENTITY % legend.element  "INCLUDE" >
+<![%legend.element;[
+<!ENTITY % legend.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ELEMENT %legend.qname;  %legend.content; >
+<!-- end of legend.element -->]]>
+
+<!ENTITY % legend.attlist  "INCLUDE" >
+<![%legend.attlist;[
+<!ATTLIST %legend.qname;
+      %Common.attrib;
+      accesskey    %Character.datatype;     #IMPLIED
+>
+<!-- end of legend.attlist -->]]>
+
+<!-- button: Push Button ............................... -->
+
+<!ENTITY % button.element  "INCLUDE" >
+<![%button.element;[
+<!ENTITY % button.content
+     "( #PCDATA
+      | %BlkNoForm.mix;
+      | %InlStruct.class;
+      %InlPhras.class;
+      %InlPres.class;
+      %I18n.class;
+      %InlSpecial.class;
+      %Inline.extra; )*"
+>
+<!ELEMENT %button.qname;  %button.content; >
+<!-- end of button.element -->]]>
+
+<!ENTITY % button.attlist  "INCLUDE" >
+<![%button.attlist;[
+<!ATTLIST %button.qname;
+      %Common.attrib;
+      name         CDATA                    #IMPLIED
+      value        CDATA                    #IMPLIED
+      type         ( button | submit | reset ) 'submit'
+      disabled     ( disabled )             #IMPLIED
+      tabindex     %Number.datatype;        #IMPLIED
+      accesskey    %Character.datatype;     #IMPLIED
+>
+<!-- end of button.attlist -->]]>
+
+<!-- end of xhtml-form-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/xhtml-modularization/xhtml-framework-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,98 @@
+<!-- ...................................................................... -->
+<!-- XHTML Modular Framework Module  ...................................... -->
+<!-- file: xhtml-framework-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-framework-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ENTITIES XHTML Modular Framework 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-framework-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Modular Framework
+
+     This required module instantiates the modules needed
+     to support the XHTML modularization model, including:
+
+        +  notations
+        +  datatypes
+        +  namespace-qualified names
+        +  common attributes
+        +  document model
+        +  character entities
+
+     The Intrinsic Events module is ignored by default but
+     occurs in this module because it must be instantiated
+     prior to Attributes but after Datatypes.
+-->
+
+<!ENTITY % xhtml-arch.module "IGNORE" >
+<![%xhtml-arch.module;[
+<!ENTITY % xhtml-arch.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Base Architecture 1.0//EN"
+            "xhtml-arch-1.mod" >
+%xhtml-arch.mod;]]>
+
+<!ENTITY % xhtml-notations.module "INCLUDE" >
+<![%xhtml-notations.module;[
+<!ENTITY % xhtml-notations.mod
+     PUBLIC "-//W3C//NOTATIONS XHTML Notations 1.0//EN"
+            "xhtml-notations-1.mod" >
+%xhtml-notations.mod;]]>
+
+<!ENTITY % xhtml-datatypes.module "INCLUDE" >
+<![%xhtml-datatypes.module;[
+<!ENTITY % xhtml-datatypes.mod
+     PUBLIC "-//W3C//ENTITIES XHTML Datatypes 1.0//EN"
+            "xhtml-datatypes-1.mod" >
+%xhtml-datatypes.mod;]]>
+
+<!-- placeholder for XLink support module -->
+<!ENTITY % xhtml-xlink.mod "" >
+%xhtml-xlink.mod;
+
+<!ENTITY % xhtml-qname.module "INCLUDE" >
+<![%xhtml-qname.module;[
+<!ENTITY % xhtml-qname.mod
+     PUBLIC "-//W3C//ENTITIES XHTML Qualified Names 1.0//EN"
+            "xhtml-qname-1.mod" >
+%xhtml-qname.mod;]]>
+
+<!ENTITY % xhtml-events.module "IGNORE" >
+<![%xhtml-events.module;[
+<!ENTITY % xhtml-events.mod
+     PUBLIC "-//W3C//ENTITIES XHTML Intrinsic Events 1.0//EN"
+            "xhtml-events-1.mod" >
+%xhtml-events.mod;]]>
+
+<!ENTITY % xhtml-attribs.module "INCLUDE" >
+<![%xhtml-attribs.module;[
+<!ENTITY % xhtml-attribs.mod
+     PUBLIC "-//W3C//ENTITIES XHTML Common Attributes 1.0//EN"
+            "xhtml-attribs-1.mod" >
+%xhtml-attribs.mod;]]>
+
+<!-- placeholder for content model redeclarations -->
+<!ENTITY % xhtml-model.redecl "" >
+%xhtml-model.redecl;
+
+<!ENTITY % xhtml-model.module "INCLUDE" >
+<![%xhtml-model.module;[
+<!-- instantiate the Document Model module declared in the DTD driver
+-->
+%xhtml-model.mod;]]>
+
+<!ENTITY % xhtml-charent.module "INCLUDE" >
+<![%xhtml-charent.module;[
+<!ENTITY % xhtml-charent.mod
+     PUBLIC "-//W3C//ENTITIES XHTML Character Entities 1.0//EN"
+            "xhtml-charent-1.mod" >
+%xhtml-charent.mod;]]>
+
+<!-- end of xhtml-framework-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/xhtml-modularization/xhtml-hypertext-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,54 @@
+<!-- ...................................................................... -->
+<!-- XHTML Hypertext Module  .............................................. -->
+<!-- file: xhtml-hypertext-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-hypertext-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Hypertext 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-hypertext-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Hypertext
+
+        a
+
+     This module declares the anchor ('a') element type, which
+     defines the source of a hypertext link. The destination
+     (or link 'target') is identified via its 'id' attribute
+     rather than the 'name' attribute as was used in HTML.
+-->
+
+<!-- ............  Anchor Element  ............ -->
+
+<!ENTITY % a.element  "INCLUDE" >
+<![%a.element;[
+<!ENTITY % a.content
+     "( #PCDATA | %InlNoAnchor.mix; )*"
+>
+<!ENTITY % a.qname  "a" >
+<!ELEMENT %a.qname;  %a.content; >
+<!-- end of a.element -->]]>
+
+<!ENTITY % a.attlist  "INCLUDE" >
+<![%a.attlist;[
+<!ATTLIST %a.qname;
+      %Common.attrib;
+      href         %URI.datatype;           #IMPLIED
+      charset      %Charset.datatype;       #IMPLIED
+      type         %ContentType.datatype;   #IMPLIED
+      hreflang     %LanguageCode.datatype;  #IMPLIED
+      rel          %LinkTypes.datatype;     #IMPLIED
+      rev          %LinkTypes.datatype;     #IMPLIED
+      accesskey    %Character.datatype;     #IMPLIED
+      tabindex     %Number.datatype;        #IMPLIED
+>
+<!-- end of a.attlist -->]]>
+
+<!-- end of xhtml-hypertext-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/xhtml-modularization/xhtml-image-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,50 @@
+<!-- ...................................................................... -->
+<!-- XHTML Images Module  ................................................. -->
+<!-- file: xhtml-image-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Rovision: $Id: xhtml-image-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Images 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-image-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Images
+
+        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.
+-->
+
+<!ENTITY % img.element  "INCLUDE" >
+<![%img.element;[
+<!ENTITY % img.content  "EMPTY" >
+<!ENTITY % img.qname  "img" >
+<!ELEMENT %img.qname;  %img.content; >
+<!-- end of img.element -->]]>
+
+<!ENTITY % img.attlist  "INCLUDE" >
+<![%img.attlist;[
+<!ATTLIST %img.qname;
+      %Common.attrib;
+      src          %URI.datatype;           #REQUIRED
+      alt          %Text.datatype;          #REQUIRED
+      longdesc     %URI.datatype;           #IMPLIED
+      height       %Length.datatype;        #IMPLIED
+      width        %Length.datatype;        #IMPLIED
+>
+<!-- end of img.attlist -->]]>
+
+<!-- end of xhtml-image-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/xhtml-modularization/xhtml-inlphras-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,203 @@
+<!-- ...................................................................... -->
+<!-- XHTML Inline Phrasal Module  ......................................... -->
+<!-- file: xhtml-inlphras-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-inlphras-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Inline Phrasal 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-inlphras-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Inline Phrasal
+
+        abbr, acronym, cite, code, dfn, em, kbd, q, samp, strong, var
+
+     This module declares the elements and their attributes used to
+     support inline-level phrasal markup.
+-->
+
+<!ENTITY % abbr.element  "INCLUDE" >
+<![%abbr.element;[
+<!ENTITY % abbr.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % abbr.qname  "abbr" >
+<!ELEMENT %abbr.qname;  %abbr.content; >
+<!-- end of abbr.element -->]]>
+
+<!ENTITY % abbr.attlist  "INCLUDE" >
+<![%abbr.attlist;[
+<!ATTLIST %abbr.qname;
+      %Common.attrib;
+>
+<!-- end of abbr.attlist -->]]>
+
+<!ENTITY % acronym.element  "INCLUDE" >
+<![%acronym.element;[
+<!ENTITY % acronym.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % acronym.qname  "acronym" >
+<!ELEMENT %acronym.qname;  %acronym.content; >
+<!-- end of acronym.element -->]]>
+
+<!ENTITY % acronym.attlist  "INCLUDE" >
+<![%acronym.attlist;[
+<!ATTLIST %acronym.qname;
+      %Common.attrib;
+>
+<!-- end of acronym.attlist -->]]>
+
+<!ENTITY % cite.element  "INCLUDE" >
+<![%cite.element;[
+<!ENTITY % cite.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % cite.qname  "cite" >
+<!ELEMENT %cite.qname;  %cite.content; >
+<!-- end of cite.element -->]]>
+
+<!ENTITY % cite.attlist  "INCLUDE" >
+<![%cite.attlist;[
+<!ATTLIST %cite.qname;
+      %Common.attrib;
+>
+<!-- end of cite.attlist -->]]>
+
+<!ENTITY % code.element  "INCLUDE" >
+<![%code.element;[
+<!ENTITY % code.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % code.qname  "code" >
+<!ELEMENT %code.qname;  %code.content; >
+<!-- end of code.element -->]]>
+
+<!ENTITY % code.attlist  "INCLUDE" >
+<![%code.attlist;[
+<!ATTLIST %code.qname;
+      %Common.attrib;
+>
+<!-- end of code.attlist -->]]>
+
+<!ENTITY % dfn.element  "INCLUDE" >
+<![%dfn.element;[
+<!ENTITY % dfn.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % dfn.qname  "dfn" >
+<!ELEMENT %dfn.qname;  %dfn.content; >
+<!-- end of dfn.element -->]]>
+
+<!ENTITY % dfn.attlist  "INCLUDE" >
+<![%dfn.attlist;[
+<!ATTLIST %dfn.qname;
+      %Common.attrib;
+>
+<!-- end of dfn.attlist -->]]>
+
+<!ENTITY % em.element  "INCLUDE" >
+<![%em.element;[
+<!ENTITY % em.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % em.qname  "em" >
+<!ELEMENT %em.qname;  %em.content; >
+<!-- end of em.element -->]]>
+
+<!ENTITY % em.attlist  "INCLUDE" >
+<![%em.attlist;[
+<!ATTLIST %em.qname;
+      %Common.attrib;
+>
+<!-- end of em.attlist -->]]>
+
+<!ENTITY % kbd.element  "INCLUDE" >
+<![%kbd.element;[
+<!ENTITY % kbd.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % kbd.qname  "kbd" >
+<!ELEMENT %kbd.qname;  %kbd.content; >
+<!-- end of kbd.element -->]]>
+
+<!ENTITY % kbd.attlist  "INCLUDE" >
+<![%kbd.attlist;[
+<!ATTLIST %kbd.qname;
+      %Common.attrib;
+>
+<!-- end of kbd.attlist -->]]>
+
+<!ENTITY % q.element  "INCLUDE" >
+<![%q.element;[
+<!ENTITY % q.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % q.qname  "q" >
+<!ELEMENT %q.qname;  %q.content; >
+<!-- end of q.element -->]]>
+
+<!ENTITY % q.attlist  "INCLUDE" >
+<![%q.attlist;[
+<!ATTLIST %q.qname;
+      %Common.attrib;
+      cite         %URI.datatype;           #IMPLIED
+>
+<!-- end of q.attlist -->]]>
+
+<!ENTITY % samp.element  "INCLUDE" >
+<![%samp.element;[
+<!ENTITY % samp.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % samp.qname  "samp" >
+<!ELEMENT %samp.qname;  %samp.content; >
+<!-- end of samp.element -->]]>
+
+<!ENTITY % samp.attlist  "INCLUDE" >
+<![%samp.attlist;[
+<!ATTLIST %samp.qname;
+      %Common.attrib;
+>
+<!-- end of samp.attlist -->]]>
+
+<!ENTITY % strong.element  "INCLUDE" >
+<![%strong.element;[
+<!ENTITY % strong.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % strong.qname  "strong" >
+<!ELEMENT %strong.qname;  %strong.content; >
+<!-- end of strong.element -->]]>
+
+<!ENTITY % strong.attlist  "INCLUDE" >
+<![%strong.attlist;[
+<!ATTLIST %strong.qname;
+      %Common.attrib;
+>
+<!-- end of strong.attlist -->]]>
+
+<!ENTITY % var.element  "INCLUDE" >
+<![%var.element;[
+<!ENTITY % var.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % var.qname  "var" >
+<!ELEMENT %var.qname;  %var.content; >
+<!-- end of var.element -->]]>
+
+<!ENTITY % var.attlist  "INCLUDE" >
+<![%var.attlist;[
+<!ATTLIST %var.qname;
+      %Common.attrib;
+>
+<!-- end of var.attlist -->]]>
+
+<!-- end of xhtml-inlphras-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/xhtml-modularization/xhtml-inlpres-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,138 @@
+<!-- ...................................................................... -->
+<!-- XHTML Inline Presentation Module  .................................... -->
+<!-- file: xhtml-inlpres-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-inlpres-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Inline Presentation 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-inlpres-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- 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.
+-->
+
+<!ENTITY % b.element  "INCLUDE" >
+<![%b.element;[
+<!ENTITY % b.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % b.qname  "b" >
+<!ELEMENT %b.qname;  %b.content; >
+<!-- end of b.element -->]]>
+
+<!ENTITY % b.attlist  "INCLUDE" >
+<![%b.attlist;[
+<!ATTLIST %b.qname;
+      %Common.attrib;
+>
+<!-- end of b.attlist -->]]>
+
+<!ENTITY % big.element  "INCLUDE" >
+<![%big.element;[
+<!ENTITY % big.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % big.qname  "big" >
+<!ELEMENT %big.qname;  %big.content; >
+<!-- end of big.element -->]]>
+
+<!ENTITY % big.attlist  "INCLUDE" >
+<![%big.attlist;[
+<!ATTLIST %big.qname;
+      %Common.attrib;
+>
+<!-- end of big.attlist -->]]>
+
+<!ENTITY % i.element  "INCLUDE" >
+<![%i.element;[
+<!ENTITY % i.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % i.qname  "i" >
+<!ELEMENT %i.qname;  %i.content; >
+<!-- end of i.element -->]]>
+
+<!ENTITY % i.attlist  "INCLUDE" >
+<![%i.attlist;[
+<!ATTLIST %i.qname;
+      %Common.attrib;
+>
+<!-- end of i.attlist -->]]>
+
+<!ENTITY % small.element  "INCLUDE" >
+<![%small.element;[
+<!ENTITY % small.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % small.qname  "small" >
+<!ELEMENT %small.qname;  %small.content; >
+<!-- end of small.element -->]]>
+
+<!ENTITY % small.attlist  "INCLUDE" >
+<![%small.attlist;[
+<!ATTLIST %small.qname;
+      %Common.attrib;
+>
+<!-- end of small.attlist -->]]>
+
+<!ENTITY % sub.element  "INCLUDE" >
+<![%sub.element;[
+<!ENTITY % sub.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % sub.qname  "sub" >
+<!ELEMENT %sub.qname;  %sub.content; >
+<!-- end of sub.element -->]]>
+
+<!ENTITY % sub.attlist  "INCLUDE" >
+<![%sub.attlist;[
+<!ATTLIST %sub.qname;
+      %Common.attrib;
+>
+<!-- end of sub.attlist -->]]>
+
+<!ENTITY % sup.element  "INCLUDE" >
+<![%sup.element;[
+<!ENTITY % sup.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % sup.qname  "sup" >
+<!ELEMENT %sup.qname;  %sup.content; >
+<!-- end of sup.element -->]]>
+
+<!ENTITY % sup.attlist  "INCLUDE" >
+<![%sup.attlist;[
+<!ATTLIST %sup.qname;
+      %Common.attrib;
+>
+<!-- end of sup.attlist -->]]>
+
+<!ENTITY % tt.element  "INCLUDE" >
+<![%tt.element;[
+<!ENTITY % tt.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % tt.qname  "tt" >
+<!ELEMENT %tt.qname;  %tt.content; >
+<!-- end of tt.element -->]]>
+
+<!ENTITY % tt.attlist  "INCLUDE" >
+<![%tt.attlist;[
+<!ATTLIST %tt.qname;
+      %Common.attrib;
+>
+<!-- end of tt.attlist -->]]>
+
+<!-- end of xhtml-inlpres-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/xhtml-modularization/xhtml-inlstruct-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,62 @@
+<!-- ...................................................................... -->
+<!-- XHTML Inline Structural Module  ...................................... -->
+<!-- file: xhtml-inlstruct-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-inlstruct-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Inline Structural 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-inlstruct-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Inline Structural
+
+        br, span
+
+     This module declares the elements and their attributes
+     used to support inline-level structural markup.
+-->
+
+<!-- br: forced line break ............................. -->
+
+<!ENTITY % br.element  "INCLUDE" >
+<![%br.element;[
+
+<!ENTITY % br.content  "EMPTY" >
+<!ENTITY % br.qname  "br" >
+<!ELEMENT %br.qname;  %br.content; >
+
+<!-- end of br.element -->]]>
+
+<!ENTITY % br.attlist  "INCLUDE" >
+<![%br.attlist;[
+<!ATTLIST %br.qname;
+      %Core.attrib;
+>
+<!-- end of br.attlist -->]]>
+
+<!-- span: generic inline container .................... -->
+
+<!ENTITY % span.element  "INCLUDE" >
+<![%span.element;[
+<!ENTITY % span.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ENTITY % span.qname  "span" >
+<!ELEMENT %span.qname;  %span.content; >
+<!-- end of span.element -->]]>
+
+<!ENTITY % span.attlist  "INCLUDE" >
+<![%span.attlist;[
+<!ATTLIST %span.qname;
+      %Common.attrib;
+>
+<!-- end of span.attlist -->]]>
+
+<!-- end of xhtml-inlstruct-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/xhtml-modularization/xhtml-inlstyle-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,34 @@
+<!-- ...................................................................... -->
+<!-- XHTML Inline Style Module  ........................................... -->
+<!-- file: xhtml-inlstyle-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-inlstyle-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ENTITIES XHTML Inline Style 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-inlstyle-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Inline Style
+
+     This module declares the 'style' attribute, used to support inline
+     style markup. This module must be instantiated prior to the XHTML
+     Common Attributes module in order to be included in %Core.attrib;.
+-->
+
+<!ENTITY % style.attrib
+     "style        CDATA                    #IMPLIED"
+>
+
+
+<!ENTITY % Core.extra.attrib
+     "%style.attrib;"
+>
+
+<!-- end of xhtml-inlstyle-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/xhtml-modularization/xhtml-lat1.ent	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,121 @@
+<!-- ...................................................................... -->
+<!-- XML-compatible ISO Latin 1 Character Entity Set for XHTML ............ -->
+<!-- file: xhtml-lat1.ent
+
+     Typical invocation:
+
+       <!ENTITY % xhtml-lat1
+           PUBLIC "-//W3C//ENTITIES Latin 1 for XHTML//EN"
+                  "xhtml-lat1.ent" >
+       %xhtml-lat1;
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ENTITIES Latin 1 for XHTML//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-lat1.ent"
+
+     Revision:  $Id: xhtml-lat1.ent,v 1.1 2004-02-23 16:12:06 ylafon Exp $ SMI
+
+     Portions (C) International Organization for Standardization 1986:
+     Permission to copy in any form is granted for use with conforming
+     SGML systems and applications as defined in ISO 8879, provided
+     this notice is included in all copies.
+-->
+
+<!ENTITY nbsp   "&#160;" ><!-- no-break space = non-breaking space, U+00A0 ISOnum -->
+<!ENTITY iexcl  "&#161;" ><!-- inverted exclamation mark, U+00A1 ISOnum -->
+<!ENTITY cent   "&#162;" ><!-- cent sign, U+00A2 ISOnum -->
+<!ENTITY pound  "&#163;" ><!-- pound sign, U+00A3 ISOnum -->
+<!ENTITY curren "&#164;" ><!-- currency sign, U+00A4 ISOnum -->
+<!ENTITY yen    "&#165;" ><!-- yen sign = yuan sign, U+00A5 ISOnum -->
+<!ENTITY brvbar "&#166;" ><!-- broken bar = broken vertical bar, U+00A6 ISOnum -->
+<!ENTITY sect   "&#167;" ><!-- section sign, U+00A7 ISOnum -->
+<!ENTITY uml    "&#168;" ><!-- diaeresis = spacing diaeresis, U+00A8 ISOdia -->
+<!ENTITY copy   "&#169;" ><!-- copyright sign, U+00A9 ISOnum -->
+<!ENTITY ordf   "&#170;" ><!-- feminine ordinal indicator, U+00AA ISOnum -->
+<!ENTITY laquo  "&#171;" ><!-- left-pointing double angle quotation mark = left pointing guillemet, U+00AB ISOnum -->
+<!ENTITY not    "&#172;" ><!-- not sign, U+00AC ISOnum -->
+<!ENTITY shy    "&#173;" ><!-- soft hyphen = discretionary hyphen, U+00AD ISOnum -->
+<!ENTITY reg    "&#174;" ><!-- registered sign = registered trade mark sign, U+00AE ISOnum -->
+<!ENTITY macr   "&#175;" ><!-- macron = spacing macron = overline = APL overbar, U+00AF ISOdia -->
+<!ENTITY deg    "&#176;" ><!-- degree sign, U+00B0 ISOnum -->
+<!ENTITY plusmn "&#177;" ><!-- plus-minus sign = plus-or-minus sign, U+00B1 ISOnum -->
+<!ENTITY sup2   "&#178;" ><!-- superscript two = superscript digit two = squared, U+00B2 ISOnum -->
+<!ENTITY sup3   "&#179;" ><!-- superscript three = superscript digit three = cubed, U+00B3 ISOnum -->
+<!ENTITY acute  "&#180;" ><!-- acute accent = spacing acute, U+00B4 ISOdia -->
+<!ENTITY micro  "&#181;" ><!-- micro sign, U+00B5 ISOnum -->
+<!ENTITY para   "&#182;" ><!-- pilcrow sign = paragraph sign, U+00B6 ISOnum -->
+<!ENTITY middot "&#183;" ><!-- middle dot = Georgian comma = Greek middle dot, U+00B7 ISOnum -->
+<!ENTITY cedil  "&#184;" ><!-- cedilla = spacing cedilla, U+00B8 ISOdia -->
+<!ENTITY sup1   "&#185;" ><!-- superscript one = superscript digit one, U+00B9 ISOnum -->
+<!ENTITY ordm   "&#186;" ><!-- masculine ordinal indicator, U+00BA ISOnum -->
+<!ENTITY raquo  "&#187;" ><!-- right-pointing double angle quotation mark = right pointing guillemet, U+00BB ISOnum -->
+<!ENTITY frac14 "&#188;" ><!-- vulgar fraction one quarter = fraction one quarter, U+00BC ISOnum -->
+<!ENTITY frac12 "&#189;" ><!-- vulgar fraction one half = fraction one half, U+00BD ISOnum -->
+<!ENTITY frac34 "&#190;" ><!-- vulgar fraction three quarters = fraction three quarters, U+00BE ISOnum -->
+<!ENTITY iquest "&#191;" ><!-- inverted question mark = turned question mark, U+00BF ISOnum -->
+<!ENTITY Agrave "&#192;" ><!-- latin capital A with grave = latin capital A grave, U+00C0 ISOlat1 -->
+<!ENTITY Aacute "&#193;" ><!-- latin capital A with acute, U+00C1 ISOlat1 -->
+<!ENTITY Acirc  "&#194;" ><!-- latin capital A with circumflex, U+00C2 ISOlat1 -->
+<!ENTITY Atilde "&#195;" ><!-- latin capital A with tilde, U+00C3 ISOlat1 -->
+<!ENTITY Auml   "&#196;" ><!-- latin capital A with diaeresis, U+00C4 ISOlat1 -->
+<!ENTITY Aring  "&#197;" ><!-- latin capital A with ring above = latin capital A ring, U+00C5 ISOlat1 -->
+<!ENTITY AElig  "&#198;" ><!-- latin capital AE = latin capital ligature AE, U+00C6 ISOlat1 -->
+<!ENTITY Ccedil "&#199;" ><!-- latin capital C with cedilla, U+00C7 ISOlat1 -->
+<!ENTITY Egrave "&#200;" ><!-- latin capital E with grave, U+00C8 ISOlat1 -->
+<!ENTITY Eacute "&#201;" ><!-- latin capital E with acute, U+00C9 ISOlat1 -->
+<!ENTITY Ecirc  "&#202;" ><!-- latin capital E with circumflex, U+00CA ISOlat1 -->
+<!ENTITY Euml   "&#203;" ><!-- latin capital E with diaeresis, U+00CB ISOlat1 -->
+<!ENTITY Igrave "&#204;" ><!-- latin capital I with grave, U+00CC ISOlat1 -->
+<!ENTITY Iacute "&#205;" ><!-- latin capital I with acute, U+00CD ISOlat1 -->
+<!ENTITY Icirc  "&#206;" ><!-- latin capital I with circumflex, U+00CE ISOlat1 -->
+<!ENTITY Iuml   "&#207;" ><!-- latin capital I with diaeresis, U+00CF ISOlat1 -->
+<!ENTITY ETH    "&#208;" ><!-- latin capital ETH, U+00D0 ISOlat1 -->
+<!ENTITY Ntilde "&#209;" ><!-- latin capital N with tilde, U+00D1 ISOlat1 -->
+<!ENTITY Ograve "&#210;" ><!-- latin capital O with grave, U+00D2 ISOlat1 -->
+<!ENTITY Oacute "&#211;" ><!-- latin capital O with acute, U+00D3 ISOlat1 -->
+<!ENTITY Ocirc  "&#212;" ><!-- latin capital O with circumflex, U+00D4 ISOlat1 -->
+<!ENTITY Otilde "&#213;" ><!-- latin capital O with tilde, U+00D5 ISOlat1 -->
+<!ENTITY Ouml   "&#214;" ><!-- latin capital O with diaeresis, U+00D6 ISOlat1 -->
+<!ENTITY times  "&#215;" ><!-- multiplication sign, U+00D7 ISOnum -->
+<!ENTITY Oslash "&#216;" ><!-- latin capital O with stroke = latin capital O slash, U+00D8 ISOlat1 -->
+<!ENTITY Ugrave "&#217;" ><!-- latin capital U with grave, U+00D9 ISOlat1 -->
+<!ENTITY Uacute "&#218;" ><!-- latin capital U with acute, U+00DA ISOlat1 -->
+<!ENTITY Ucirc  "&#219;" ><!-- latin capital U with circumflex, U+00DB ISOlat1 -->
+<!ENTITY Uuml   "&#220;" ><!-- latin capital U with diaeresis, U+00DC ISOlat1 -->
+<!ENTITY Yacute "&#221;" ><!-- latin capital Y with acute, U+00DD ISOlat1 -->
+<!ENTITY THORN  "&#222;" ><!-- latin capital THORN, U+00DE ISOlat1 -->
+<!ENTITY szlig  "&#223;" ><!-- latin small sharp s = ess-zed, U+00DF ISOlat1 -->
+<!ENTITY agrave "&#224;" ><!-- latin small a with grave = latin small a grave, U+00E0 ISOlat1 -->
+<!ENTITY aacute "&#225;" ><!-- latin small a with acute, U+00E1 ISOlat1 -->
+<!ENTITY acirc  "&#226;" ><!-- latin small a with circumflex, U+00E2 ISOlat1 -->
+<!ENTITY atilde "&#227;" ><!-- latin small a with tilde, U+00E3 ISOlat1 -->
+<!ENTITY auml   "&#228;" ><!-- latin small a with diaeresis, U+00E4 ISOlat1 -->
+<!ENTITY aring  "&#229;" ><!-- latin small a with ring above = latin small a ring, U+00E5 ISOlat1 -->
+<!ENTITY aelig  "&#230;" ><!-- latin small ae = latin small ligature ae, U+00E6 ISOlat1 -->
+<!ENTITY ccedil "&#231;" ><!-- latin small c with cedilla, U+00E7 ISOlat1 -->
+<!ENTITY egrave "&#232;" ><!-- latin small e with grave, U+00E8 ISOlat1 -->
+<!ENTITY eacute "&#233;" ><!-- latin small e with acute, U+00E9 ISOlat1 -->
+<!ENTITY ecirc  "&#234;" ><!-- latin small e with circumflex, U+00EA ISOlat1 -->
+<!ENTITY euml   "&#235;" ><!-- latin small e with diaeresis, U+00EB ISOlat1 -->
+<!ENTITY igrave "&#236;" ><!-- latin small i with grave, U+00EC ISOlat1 -->
+<!ENTITY iacute "&#237;" ><!-- latin small i with acute, U+00ED ISOlat1 -->
+<!ENTITY icirc  "&#238;" ><!-- latin small i with circumflex, U+00EE ISOlat1 -->
+<!ENTITY iuml   "&#239;" ><!-- latin small i with diaeresis, U+00EF ISOlat1 -->
+<!ENTITY eth    "&#240;" ><!-- latin small eth, U+00F0 ISOlat1 -->
+<!ENTITY ntilde "&#241;" ><!-- latin small n with tilde, U+00F1 ISOlat1 -->
+<!ENTITY ograve "&#242;" ><!-- latin small o with grave, U+00F2 ISOlat1 -->
+<!ENTITY oacute "&#243;" ><!-- latin small o with acute, U+00F3 ISOlat1 -->
+<!ENTITY ocirc  "&#244;" ><!-- latin small o with circumflex, U+00F4 ISOlat1 -->
+<!ENTITY otilde "&#245;" ><!-- latin small o with tilde, U+00F5 ISOlat1 -->
+<!ENTITY ouml   "&#246;" ><!-- latin small o with diaeresis, U+00F6 ISOlat1 -->
+<!ENTITY divide "&#247;" ><!-- division sign, U+00F7 ISOnum -->
+<!ENTITY oslash "&#248;" ><!-- latin small o with stroke, = latin small o slash, U+00F8 ISOlat1 -->
+<!ENTITY ugrave "&#249;" ><!-- latin small u with grave, U+00F9 ISOlat1 -->
+<!ENTITY uacute "&#250;" ><!-- latin small u with acute, U+00FA ISOlat1 -->
+<!ENTITY ucirc  "&#251;" ><!-- latin small u with circumflex, U+00FB ISOlat1 -->
+<!ENTITY uuml   "&#252;" ><!-- latin small u with diaeresis, U+00FC ISOlat1 -->
+<!ENTITY yacute "&#253;" ><!-- latin small y with acute, U+00FD ISOlat1 -->
+<!ENTITY thorn  "&#254;" ><!-- latin small thorn with, U+00FE ISOlat1 -->
+<!ENTITY yuml   "&#255;" ><!-- latin small y with diaeresis, U+00FF ISOlat1 -->
+<!-- end of xhtml-lat1.ent -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/xhtml-modularization/xhtml-link-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,59 @@
+<!-- ...................................................................... -->
+<!-- XHTML Link Element Module  ........................................... -->
+<!-- file: xhtml-link-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-link-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Link Element 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-link-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Link element
+
+        link
+
+     This module declares the link element type and its attributes,
+     which could (in principle) be used to define document-level links
+     to external resources such as:
+
+     a) for document specific toolbars/menus, e.g. start, contents,
+        previous, next, index, end, help
+     b) to link to a separate style sheet (rel="stylesheet")
+     c) to make a link to a script (rel="script")
+     d) by style sheets to control how collections of html nodes are
+        rendered into printed documents
+     e) to make a link to a printable version of this document
+        e.g. a postscript or pdf version (rel="alternate" media="print")
+-->
+
+<!-- link: Media-Independent Link ...................... -->
+
+<!ENTITY % link.element  "INCLUDE" >
+<![%link.element;[
+<!ENTITY % link.content  "EMPTY" >
+<!ENTITY % link.qname  "link" >
+<!ELEMENT %link.qname;  %link.content; >
+<!-- end of link.element -->]]>
+
+<!ENTITY % link.attlist  "INCLUDE" >
+<![%link.attlist;[
+<!ATTLIST %link.qname;
+      %Common.attrib;
+      charset      %Charset.datatype;       #IMPLIED
+      href         %URI.datatype;           #IMPLIED
+      hreflang     %LanguageCode.datatype;  #IMPLIED
+      type         %ContentType.datatype;   #IMPLIED
+      rel          %LinkTypes.datatype;     #IMPLIED
+      rev          %LinkTypes.datatype;     #IMPLIED
+      media        %MediaDesc.datatype;     #IMPLIED
+>
+<!-- end of link.attlist -->]]>
+
+<!-- end of xhtml-link-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/xhtml-modularization/xhtml-list-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,129 @@
+<!-- ...................................................................... -->
+<!-- XHTML Lists Module  .................................................. -->
+<!-- file: xhtml-list-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-list-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Lists 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-list-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Lists
+
+        dl, dt, dd, ol, ul, li
+
+     This module declares the list-oriented element types
+     and their attributes.
+-->
+
+<!ENTITY % dl.qname  "dl" >
+<!ENTITY % dt.qname  "dt" >
+<!ENTITY % dd.qname  "dd" >
+<!ENTITY % ol.qname  "ol" >
+<!ENTITY % ul.qname  "ul" >
+<!ENTITY % li.qname  "li" >
+
+<!-- dl: Definition List ............................... -->
+
+<!ENTITY % dl.element  "INCLUDE" >
+<![%dl.element;[
+<!ENTITY % dl.content  "( %dt.qname; | %dd.qname; )+" >
+<!ELEMENT %dl.qname;  %dl.content; >
+<!-- end of dl.element -->]]>
+
+<!ENTITY % dl.attlist  "INCLUDE" >
+<![%dl.attlist;[
+<!ATTLIST %dl.qname;
+      %Common.attrib;
+>
+<!-- end of dl.attlist -->]]>
+
+<!-- dt: Definition Term ............................... -->
+
+<!ENTITY % dt.element  "INCLUDE" >
+<![%dt.element;[
+<!ENTITY % dt.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ELEMENT %dt.qname;  %dt.content; >
+<!-- end of dt.element -->]]>
+
+<!ENTITY % dt.attlist  "INCLUDE" >
+<![%dt.attlist;[
+<!ATTLIST %dt.qname;
+      %Common.attrib;
+>
+<!-- end of dt.attlist -->]]>
+
+<!-- dd: Definition Description ........................ -->
+
+<!ENTITY % dd.element  "INCLUDE" >
+<![%dd.element;[
+<!ENTITY % dd.content
+     "( #PCDATA | %Flow.mix; )*"
+>
+<!ELEMENT %dd.qname;  %dd.content; >
+<!-- end of dd.element -->]]>
+
+<!ENTITY % dd.attlist  "INCLUDE" >
+<![%dd.attlist;[
+<!ATTLIST %dd.qname;
+      %Common.attrib;
+>
+<!-- end of dd.attlist -->]]>
+
+<!-- ol: Ordered List (numbered styles) ................ -->
+
+<!ENTITY % ol.element  "INCLUDE" >
+<![%ol.element;[
+<!ENTITY % ol.content  "( %li.qname; )+" >
+<!ELEMENT %ol.qname;  %ol.content; >
+<!-- end of ol.element -->]]>
+
+<!ENTITY % ol.attlist  "INCLUDE" >
+<![%ol.attlist;[
+<!ATTLIST %ol.qname;
+      %Common.attrib;
+>
+<!-- end of ol.attlist -->]]>
+
+<!-- ul: Unordered List (bullet styles) ................ -->
+
+<!ENTITY % ul.element  "INCLUDE" >
+<![%ul.element;[
+<!ENTITY % ul.content  "( %li.qname; )+" >
+<!ELEMENT %ul.qname;  %ul.content; >
+<!-- end of ul.element -->]]>
+
+<!ENTITY % ul.attlist  "INCLUDE" >
+<![%ul.attlist;[
+<!ATTLIST %ul.qname;
+      %Common.attrib;
+>
+<!-- end of ul.attlist -->]]>
+
+<!-- li: List Item ..................................... -->
+
+<!ENTITY % li.element  "INCLUDE" >
+<![%li.element;[
+<!ENTITY % li.content
+     "( #PCDATA | %Flow.mix; )*"
+>
+<!ELEMENT %li.qname;  %li.content; >
+<!-- end of li.element -->]]>
+
+<!ENTITY % li.attlist  "INCLUDE" >
+<![%li.attlist;[
+<!ATTLIST %li.qname;
+      %Common.attrib;
+>
+<!-- end of li.attlist -->]]>
+
+<!-- end of xhtml-list-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/xhtml-modularization/xhtml-meta-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,47 @@
+<!-- ...................................................................... -->
+<!-- XHTML Document Metainformation Module  ............................... -->
+<!-- file: xhtml-meta-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-meta-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Metainformation 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-meta-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Meta Information
+
+        meta
+
+     This module declares the meta element type and its attributes,
+     used to provide declarative document metainformation.
+-->
+
+<!-- meta: Generic Metainformation ..................... -->
+
+<!ENTITY % meta.element  "INCLUDE" >
+<![%meta.element;[
+<!ENTITY % meta.content  "EMPTY" >
+<!ENTITY % meta.qname  "meta" >
+<!ELEMENT %meta.qname;  %meta.content; >
+<!-- end of meta.element -->]]>
+
+<!ENTITY % meta.attlist  "INCLUDE" >
+<![%meta.attlist;[
+<!ATTLIST %meta.qname;
+      %XHTML.xmlns.attrib;
+      %I18n.attrib;
+      http-equiv   NMTOKEN                  #IMPLIED
+      name         NMTOKEN                  #IMPLIED
+      content      CDATA                    #REQUIRED
+      scheme       CDATA                    #IMPLIED
+>
+<!-- end of meta.attlist -->]]>
+
+<!-- end of xhtml-meta-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/xhtml-modularization/xhtml-notations-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,114 @@
+<!-- ...................................................................... -->
+<!-- XHTML Notations Module  .............................................. -->
+<!-- file: xhtml-notations-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-notations-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//NOTATIONS XHTML Notations 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-notations-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Notations
+
+     defines the following notations, many of these imported from
+     other specifications and standards. When an existing FPI is
+     known, it is incorporated here.
+-->
+
+<!-- XML Notations ..................................... -->
+<!-- SGML and XML Notations ............................ -->
+
+<!-- W3C XML 1.0 Recommendation -->
+<!NOTATION w3c-xml
+     PUBLIC "ISO 8879//NOTATION Extensible Markup Language (XML) 1.0//EN" >
+
+<!-- XML 1.0 CDATA -->
+<!NOTATION cdata
+     PUBLIC "-//W3C//NOTATION XML 1.0: CDATA//EN" >
+
+<!-- SGML Formal Public Identifiers -->
+<!NOTATION fpi
+     PUBLIC "ISO 8879:1986//NOTATION Formal Public Identifier//EN" >
+
+<!-- XHTML Notations ................................... -->
+
+<!-- Length defined for cellpadding/cellspacing -->
+
+<!-- nn for pixels or nn% for percentage length -->
+<!NOTATION length
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: Length//EN" >
+
+<!-- space-separated list of link types -->
+<!NOTATION linkTypes
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: LinkTypes//EN" >
+
+<!-- single or comma-separated list of media descriptors -->
+<!NOTATION mediaDesc
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: MediaDesc//EN" >
+
+<!-- pixel, percentage, or relative -->
+<!NOTATION multiLength
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: MultiLength//EN" >
+
+<!-- one or more digits (NUMBER) -->
+<!NOTATION number
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: Number//EN" >
+
+<!-- integer representing length in pixels -->
+<!NOTATION pixels
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: Pixels//EN" >
+
+<!-- script expression -->
+<!NOTATION script
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: Script//EN" >
+
+<!-- textual content -->
+<!NOTATION text
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: Text//EN" >
+
+<!-- Imported Notations ................................ -->
+
+<!-- a single character from [ISO10646] -->
+<!NOTATION character
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: Character//EN" >
+
+<!-- a character encoding, as per [RFC2045] -->
+<!NOTATION charset
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: Charset//EN" >
+
+<!-- a space separated list of character encodings, as per [RFC2045] -->
+<!NOTATION charsets
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: Charsets//EN" >
+
+<!-- media type, as per [RFC2045] -->
+<!NOTATION contentType
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: ContentType//EN" >
+
+<!-- comma-separated list of media types, as per [RFC2045] -->
+<!NOTATION contentTypes
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: ContentTypes//EN" >
+
+<!-- date and time information. ISO date format -->
+<!NOTATION datetime
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: Datetime//EN" >
+
+<!-- a language code, as per [RFC3066] -->
+<!NOTATION languageCode
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: LanguageCode//EN" >
+
+<!-- a Uniform Resource Identifier, see [URI] -->
+<!NOTATION uri
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: URI//EN" >
+
+<!-- a space-separated list of Uniform Resource Identifiers, see [URI] -->
+<!NOTATION uris
+    PUBLIC "-//W3C//NOTATION XHTML Datatype: URIs//EN" >
+
+<!-- end of xhtml-notations-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/xhtml-modularization/xhtml-object-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,60 @@
+<!-- ...................................................................... -->
+<!-- XHTML Embedded Object Module  ........................................ -->
+<!-- file: xhtml-object-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-object-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Embedded Object 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-object-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Embedded Objects
+
+        object
+
+     This module declares the object element type and its attributes, used
+     to embed external objects as part of XHTML pages. In the document,
+     place param elements prior to other content within the object element.
+
+     Note that use of this module requires instantiation of the Param
+     Element Module.
+-->
+
+<!-- object: Generic Embedded Object ................... -->
+
+<!ENTITY % object.element  "INCLUDE" >
+<![%object.element;[
+<!ENTITY % object.content
+     "( #PCDATA | %Flow.mix; | %param.qname; )*"
+>
+<!ENTITY % object.qname  "object" >
+<!ELEMENT %object.qname;  %object.content; >
+<!-- end of object.element -->]]>
+
+<!ENTITY % object.attlist  "INCLUDE" >
+<![%object.attlist;[
+<!ATTLIST %object.qname;
+      %Common.attrib;
+      declare      ( declare )              #IMPLIED
+      classid      %URI.datatype;           #IMPLIED
+      codebase     %URI.datatype;           #IMPLIED
+      data         %URI.datatype;           #IMPLIED
+      type         %ContentType.datatype;   #IMPLIED
+      codetype     %ContentType.datatype;   #IMPLIED
+      archive      %URIs.datatype;          #IMPLIED
+      standby      %Text.datatype;          #IMPLIED
+      height       %Length.datatype;        #IMPLIED
+      width        %Length.datatype;        #IMPLIED
+      name         CDATA                    #IMPLIED
+      tabindex     %Number.datatype;        #IMPLIED
+>
+<!-- end of object.attlist -->]]>
+
+<!-- end of xhtml-object-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/xhtml-modularization/xhtml-param-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,48 @@
+<!-- ...................................................................... -->
+<!-- XHTML Param Element Module  ..................................... -->
+<!-- file: xhtml-param-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-param-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Param Element 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-param-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Parameters for Java Applets and Embedded Objects
+
+        param
+
+     This module provides declarations for the param element,
+     used to provide named property values for the applet
+     and object elements.
+-->
+
+<!-- param: Named Property Value ....................... -->
+
+<!ENTITY % param.element  "INCLUDE" >
+<![%param.element;[
+<!ENTITY % param.content  "EMPTY" >
+<!ENTITY % param.qname  "param" >
+<!ELEMENT %param.qname;  %param.content; >
+<!-- end of param.element -->]]>
+
+<!ENTITY % param.attlist  "INCLUDE" >
+<![%param.attlist;[
+<!ATTLIST %param.qname;
+      %XHTML.xmlns.attrib;
+      %id.attrib;
+      name         CDATA                    #REQUIRED
+      value        CDATA                    #IMPLIED
+      valuetype    ( data | ref | object )  'data'
+      type         %ContentType.datatype;   #IMPLIED
+>
+<!-- end of param.attlist -->]]>
+
+<!-- end of xhtml-param-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/xhtml-modularization/xhtml-pres-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,38 @@
+<!-- ...................................................................... -->
+<!-- XHTML Presentation Module ............................................ -->
+<!-- file: xhtml-pres-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-pres-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Presentation 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-pres-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Presentational Elements
+
+     This module defines elements and their attributes for
+     simple presentation-related markup.
+-->
+
+<!ENTITY % xhtml-inlpres.module "INCLUDE" >
+<![%xhtml-inlpres.module;[
+<!ENTITY % xhtml-inlpres.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Inline Presentation 1.0//EN"
+            "xhtml-inlpres-1.mod" >
+%xhtml-inlpres.mod;]]>
+
+<!ENTITY % xhtml-blkpres.module "INCLUDE" >
+<![%xhtml-blkpres.module;[
+<!ENTITY % xhtml-blkpres.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Block Presentation 1.0//EN"
+            "xhtml-blkpres-1.mod" >
+%xhtml-blkpres.mod;]]>
+
+<!-- end of xhtml-pres-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/xhtml-modularization/xhtml-qname-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,270 @@
+<!-- ....................................................................... -->
+<!-- XHTML Qname Module  ................................................... -->
+<!-- file: xhtml-qname-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-qname-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ENTITIES XHTML Qualified Names 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-qname-1.mod"
+
+     Revisions:
+#2000-10-22: added qname declarations for ruby elements
+     ....................................................................... -->
+
+<!-- XHTML Qname (Qualified Name) Module
+
+     This module is contained in two parts, labeled Section 'A' and 'B':
+
+       Section A declares parameter entities to support namespace-
+       qualified names, namespace declarations, and name prefixing
+       for XHTML and extensions.
+
+       Section B declares parameter entities used to provide
+       namespace-qualified names for all XHTML element types:
+
+         %applet.qname;   the xmlns-qualified name for <applet>
+         %base.qname;     the xmlns-qualified name for <base>
+         ...
+
+     XHTML extensions would create a module similar to this one.
+     Included in the XHTML distribution is a template module
+     ('template-qname-1.mod') suitable for this purpose.
+-->
+
+<!-- Section A: XHTML XML Namespace Framework :::::::::::::::::::: -->
+
+<!-- 1. Declare a %XHTML.prefixed; conditional section keyword, used
+        to activate namespace prefixing. The default value should
+        inherit '%NS.prefixed;' from the DTD driver, so that unless
+        overridden, the default behaviour follows the overall DTD
+        prefixing scheme.
+-->
+<!ENTITY % NS.prefixed "IGNORE" >
+<!ENTITY % XHTML.prefixed "%NS.prefixed;" >
+
+<!-- 2. Declare a parameter entity (eg., %XHTML.xmlns;) containing
+        the URI reference used to identify the XHTML namespace:
+-->
+<!ENTITY % XHTML.xmlns  "http://www.w3.org/1999/xhtml" >
+
+<!-- 3. Declare parameter entities (eg., %XHTML.prefix;) containing
+        the default namespace prefix string(s) to use when prefixing
+        is enabled. This may be overridden in the DTD driver or the
+        internal subset of an document instance. If no default prefix
+        is desired, this may be declared as an empty string.
+
+     NOTE: As specified in [XMLNAMES], the namespace prefix serves
+     as a proxy for the URI reference, and is not in itself significant.
+-->
+<!ENTITY % XHTML.prefix  "" >
+
+<!-- 4. Declare parameter entities (eg., %XHTML.pfx;) containing the
+        colonized prefix(es) (eg., '%XHTML.prefix;:') used when
+        prefixing is active, an empty string when it is not.
+-->
+<![%XHTML.prefixed;[
+<!ENTITY % XHTML.pfx  "%XHTML.prefix;:" >
+]]>
+<!ENTITY % XHTML.pfx  "" >
+
+<!-- declare qualified name extensions here ............ -->
+<!ENTITY % xhtml-qname-extra.mod "" >
+%xhtml-qname-extra.mod;
+
+<!-- 5. The parameter entity %XHTML.xmlns.extra.attrib; may be
+        redeclared to contain any non-XHTML namespace declaration
+        attributes for namespaces embedded in XHTML. The default
+        is an empty string.  XLink should be included here if used
+        in the DTD.
+-->
+<!ENTITY % XHTML.xmlns.extra.attrib "" >
+
+<!-- The remainder of Section A is only followed in XHTML, not extensions. -->
+
+<!-- Declare a parameter entity %NS.decl.attrib; containing
+     all XML Namespace declarations used in the DTD, plus the
+     xmlns declaration for XHTML, its form dependent on whether
+     prefixing is active.
+-->
+<![%XHTML.prefixed;[
+<!ENTITY % NS.decl.attrib
+     "xmlns:%XHTML.prefix;  %URI.datatype;   #FIXED '%XHTML.xmlns;'
+      %XHTML.xmlns.extra.attrib;"
+>
+]]>
+<!ENTITY % NS.decl.attrib
+     "%XHTML.xmlns.extra.attrib;"
+>
+
+<!-- This is a placeholder for future XLink support.
+-->
+<!ENTITY % XLINK.xmlns.attrib "" >
+
+<!-- Declare a parameter entity %NS.decl.attrib; containing all
+     XML namespace declaration attributes used by XHTML, including
+     a default xmlns attribute when prefixing is inactive.
+-->
+<![%XHTML.prefixed;[
+<!ENTITY % XHTML.xmlns.attrib
+     "%NS.decl.attrib;
+      %XLINK.xmlns.attrib;"
+>
+]]>
+<!ENTITY % XHTML.xmlns.attrib
+     "xmlns        %URI.datatype;           #FIXED '%XHTML.xmlns;'
+      %XLINK.xmlns.attrib;"
+>
+
+<!-- placeholder for qualified name redeclarations -->
+<!ENTITY % xhtml-qname.redecl "" >
+%xhtml-qname.redecl;
+
+<!-- Section B: XHTML Qualified Names ::::::::::::::::::::::::::::: -->
+
+<!-- 6. This section declares parameter entities used to provide
+        namespace-qualified names for all XHTML element types.
+-->
+
+<!-- module:  xhtml-applet-1.mod -->
+<!ENTITY % applet.qname  "%XHTML.pfx;applet" >
+
+<!-- module:  xhtml-base-1.mod -->
+<!ENTITY % base.qname    "%XHTML.pfx;base" >
+
+<!-- module:  xhtml-bdo-1.mod -->
+<!ENTITY % bdo.qname     "%XHTML.pfx;bdo" >
+
+<!-- module:  xhtml-blkphras-1.mod -->
+<!ENTITY % address.qname "%XHTML.pfx;address" >
+<!ENTITY % blockquote.qname  "%XHTML.pfx;blockquote" >
+<!ENTITY % pre.qname     "%XHTML.pfx;pre" >
+<!ENTITY % h1.qname      "%XHTML.pfx;h1" >
+<!ENTITY % h2.qname      "%XHTML.pfx;h2" >
+<!ENTITY % h3.qname      "%XHTML.pfx;h3" >
+<!ENTITY % h4.qname      "%XHTML.pfx;h4" >
+<!ENTITY % h5.qname      "%XHTML.pfx;h5" >
+<!ENTITY % h6.qname      "%XHTML.pfx;h6" >
+
+<!-- module:  xhtml-blkpres-1.mod -->
+<!ENTITY % hr.qname      "%XHTML.pfx;hr" >
+
+<!-- module:  xhtml-blkstruct-1.mod -->
+<!ENTITY % div.qname     "%XHTML.pfx;div" >
+<!ENTITY % p.qname       "%XHTML.pfx;p" >
+
+<!-- module:  xhtml-edit-1.mod -->
+<!ENTITY % ins.qname     "%XHTML.pfx;ins" >
+<!ENTITY % del.qname     "%XHTML.pfx;del" >
+
+<!-- module:  xhtml-form-1.mod -->
+<!ENTITY % form.qname    "%XHTML.pfx;form" >
+<!ENTITY % label.qname   "%XHTML.pfx;label" >
+<!ENTITY % input.qname   "%XHTML.pfx;input" >
+<!ENTITY % select.qname  "%XHTML.pfx;select" >
+<!ENTITY % optgroup.qname  "%XHTML.pfx;optgroup" >
+<!ENTITY % option.qname  "%XHTML.pfx;option" >
+<!ENTITY % textarea.qname  "%XHTML.pfx;textarea" >
+<!ENTITY % fieldset.qname  "%XHTML.pfx;fieldset" >
+<!ENTITY % legend.qname  "%XHTML.pfx;legend" >
+<!ENTITY % button.qname  "%XHTML.pfx;button" >
+
+<!-- module:  xhtml-hypertext-1.mod -->
+<!ENTITY % a.qname       "%XHTML.pfx;a" >
+
+<!-- module:  xhtml-image-1.mod -->
+<!ENTITY % img.qname     "%XHTML.pfx;img" >
+
+<!-- module:  xhtml-inlphras-1.mod -->
+<!ENTITY % abbr.qname    "%XHTML.pfx;abbr" >
+<!ENTITY % acronym.qname "%XHTML.pfx;acronym" >
+<!ENTITY % cite.qname    "%XHTML.pfx;cite" >
+<!ENTITY % code.qname    "%XHTML.pfx;code" >
+<!ENTITY % dfn.qname     "%XHTML.pfx;dfn" >
+<!ENTITY % em.qname      "%XHTML.pfx;em" >
+<!ENTITY % kbd.qname     "%XHTML.pfx;kbd" >
+<!ENTITY % q.qname       "%XHTML.pfx;q" >
+<!ENTITY % samp.qname    "%XHTML.pfx;samp" >
+<!ENTITY % strong.qname  "%XHTML.pfx;strong" >
+<!ENTITY % var.qname     "%XHTML.pfx;var" >
+
+<!-- module:  xhtml-inlpres-1.mod -->
+<!ENTITY % b.qname       "%XHTML.pfx;b" >
+<!ENTITY % big.qname     "%XHTML.pfx;big" >
+<!ENTITY % i.qname       "%XHTML.pfx;i" >
+<!ENTITY % small.qname   "%XHTML.pfx;small" >
+<!ENTITY % sub.qname     "%XHTML.pfx;sub" >
+<!ENTITY % sup.qname     "%XHTML.pfx;sup" >
+<!ENTITY % tt.qname      "%XHTML.pfx;tt" >
+
+<!-- module:  xhtml-inlstruct-1.mod -->
+<!ENTITY % br.qname      "%XHTML.pfx;br" >
+<!ENTITY % span.qname    "%XHTML.pfx;span" >
+
+<!-- module:  xhtml-ismap-1.mod (also csismap, ssismap) -->
+<!ENTITY % map.qname     "%XHTML.pfx;map" >
+<!ENTITY % area.qname    "%XHTML.pfx;area" >
+
+<!-- module:  xhtml-link-1.mod -->
+<!ENTITY % link.qname    "%XHTML.pfx;link" >
+
+<!-- module:  xhtml-list-1.mod -->
+<!ENTITY % dl.qname      "%XHTML.pfx;dl" >
+<!ENTITY % dt.qname      "%XHTML.pfx;dt" >
+<!ENTITY % dd.qname      "%XHTML.pfx;dd" >
+<!ENTITY % ol.qname      "%XHTML.pfx;ol" >
+<!ENTITY % ul.qname      "%XHTML.pfx;ul" >
+<!ENTITY % li.qname      "%XHTML.pfx;li" >
+
+<!-- module:  xhtml-meta-1.mod -->
+<!ENTITY % meta.qname    "%XHTML.pfx;meta" >
+
+<!-- module:  xhtml-param-1.mod -->
+<!ENTITY % param.qname   "%XHTML.pfx;param" >
+
+<!-- module:  xhtml-object-1.mod -->
+<!ENTITY % object.qname  "%XHTML.pfx;object" >
+
+<!-- module:  xhtml-script-1.mod -->
+<!ENTITY % script.qname  "%XHTML.pfx;script" >
+<!ENTITY % noscript.qname  "%XHTML.pfx;noscript" >
+
+<!-- module:  xhtml-struct-1.mod -->
+<!ENTITY % html.qname    "%XHTML.pfx;html" >
+<!ENTITY % head.qname    "%XHTML.pfx;head" >
+<!ENTITY % title.qname   "%XHTML.pfx;title" >
+<!ENTITY % body.qname    "%XHTML.pfx;body" >
+
+<!-- module:  xhtml-style-1.mod -->
+<!ENTITY % style.qname   "%XHTML.pfx;style" >
+
+<!-- module:  xhtml-table-1.mod -->
+<!ENTITY % table.qname   "%XHTML.pfx;table" >
+<!ENTITY % caption.qname "%XHTML.pfx;caption" >
+<!ENTITY % thead.qname   "%XHTML.pfx;thead" >
+<!ENTITY % tfoot.qname   "%XHTML.pfx;tfoot" >
+<!ENTITY % tbody.qname   "%XHTML.pfx;tbody" >
+<!ENTITY % colgroup.qname  "%XHTML.pfx;colgroup" >
+<!ENTITY % col.qname     "%XHTML.pfx;col" >
+<!ENTITY % tr.qname      "%XHTML.pfx;tr" >
+<!ENTITY % th.qname      "%XHTML.pfx;th" >
+<!ENTITY % td.qname      "%XHTML.pfx;td" >
+
+<!-- module:  xhtml-ruby-1.mod -->
+
+<!ENTITY % ruby.qname    "%XHTML.pfx;ruby" >
+<!ENTITY % rbc.qname     "%XHTML.pfx;rbc" >
+<!ENTITY % rtc.qname     "%XHTML.pfx;rtc" >
+<!ENTITY % rb.qname      "%XHTML.pfx;rb" >
+<!ENTITY % rt.qname      "%XHTML.pfx;rt" >
+<!ENTITY % rp.qname      "%XHTML.pfx;rp" >
+
+<!-- Provisional XHTML 2.0 Qualified Names  ...................... -->
+
+<!-- module:  xhtml-image-2.mod -->
+<!ENTITY % alt.qname     "%XHTML.pfx;alt" >
+
+<!-- end of xhtml-qname-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/xhtml-modularization/xhtml-script-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,66 @@
+<!-- ...................................................................... -->
+<!-- XHTML Document Scripting Module  ..................................... -->
+<!-- file: xhtml-script-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-script-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Scripting 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-script-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Scripting
+
+        script, noscript
+
+     This module declares element types and attributes used to provide
+     support for executable scripts as well as an alternate content
+     container where scripts are not supported.
+-->
+
+<!-- script: Scripting Statement ....................... -->
+
+<!ENTITY % script.element  "INCLUDE" >
+<![%script.element;[
+<!ENTITY % script.content  "( #PCDATA )" >
+<!ENTITY % script.qname  "script" >
+<!ELEMENT %script.qname;  %script.content; >
+<!-- end of script.element -->]]>
+
+<!ENTITY % script.attlist  "INCLUDE" >
+<![%script.attlist;[
+<!ATTLIST %script.qname;
+      %XHTML.xmlns.attrib;
+      charset      %Charset.datatype;       #IMPLIED
+      type         %ContentType.datatype;   #REQUIRED
+      src          %URI.datatype;           #IMPLIED
+      defer        ( defer )                #IMPLIED
+      xml:space    ( preserve )             #FIXED 'preserve'
+>
+<!-- end of script.attlist -->]]>
+
+<!-- noscript: No-Script Alternate Content ............. -->
+
+<!ENTITY % noscript.element  "INCLUDE" >
+<![%noscript.element;[
+<!ENTITY % noscript.content
+     "( %Block.mix; )+"
+>
+<!ENTITY % noscript.qname  "noscript" >
+<!ELEMENT %noscript.qname;  %noscript.content; >
+<!-- end of noscript.element -->]]>
+
+<!ENTITY % noscript.attlist  "INCLUDE" >
+<![%noscript.attlist;[
+<!ATTLIST %noscript.qname;
+      %Common.attrib;
+>
+<!-- end of noscript.attlist -->]]>
+
+<!-- end of xhtml-script-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/xhtml-modularization/xhtml-special.ent	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,82 @@
+<!-- ...................................................................... -->
+<!-- XML-compatible ISO Special Character Entity Set for XHTML ............ -->
+<!-- file: xhtml-special.ent
+
+     Typical invocation:
+
+       <!ENTITY % xhtml-special
+           PUBLIC "-//W3C//ENTITIES Special for XHTML//EN"
+                  "xhtml-special.ent" >
+       %xhtml-special;
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ENTITIES Special for XHTML//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-special.ent"
+
+     Revision:  $Id: xhtml-special.ent,v 1.1 2004-02-23 16:12:06 ylafon Exp $ SMI
+
+     Portions (C) International Organization for Standardization 1986:
+     Permission to copy in any form is granted for use with conforming
+     SGML systems and applications as defined in ISO 8879, provided
+     this notice is included in all copies.
+
+     Revisions:
+2000-10-28: added &apos; and altered XML Predefined Entities for compatibility
+-->
+
+<!-- Relevant ISO entity set is given unless names are newly introduced.
+     New names (i.e., not in ISO 8879 [SGML] list) do not clash with
+     any existing ISO 8879 entity names. ISO 10646 [ISO10646] character
+     numbers are given for each character, in hex. Entity values are
+     decimal conversions of the ISO 10646 values and refer to the
+     document character set. Names are Unicode [UNICODE] names.
+-->
+
+<!-- C0 Controls and Basic Latin -->
+<!ENTITY lt      "&#38;&#60;" ><!-- less-than sign, U+003C ISOnum -->
+<!ENTITY gt      "&#62;" ><!-- greater-than sign, U+003E ISOnum -->
+<!ENTITY amp     "&#38;&#38;" ><!-- ampersand, U+0026 ISOnum -->
+<!ENTITY apos    "&#39;" ><!-- apostrophe, U+0027 ISOnum -->
+<!ENTITY quot    "&#34;" ><!-- quotation mark = APL quote, U+0022 ISOnum -->
+
+<!-- Latin Extended-A -->
+<!ENTITY OElig   "&#338;" ><!-- latin capital ligature OE, U+0152 ISOlat2 -->
+<!ENTITY oelig   "&#339;" ><!-- latin small ligature oe, U+0153 ISOlat2 -->
+
+<!-- ligature is a misnomer, this is a separate character in some languages -->
+<!ENTITY Scaron  "&#352;" ><!-- latin capital letter S with caron, U+0160 ISOlat2 -->
+<!ENTITY scaron  "&#353;" ><!-- latin small letter s with caron, U+0161 ISOlat2 -->
+<!ENTITY Yuml    "&#376;" ><!-- latin capital letter Y with diaeresis, U+0178 ISOlat2 -->
+
+<!-- Spacing Modifier Letters -->
+<!ENTITY circ    "&#710;" ><!-- modifier letter circumflex accent, U+02C6 ISOpub -->
+<!ENTITY tilde   "&#732;" ><!-- small tilde, U+02DC ISOdia -->
+
+<!-- General Punctuation -->
+<!ENTITY ensp    "&#8194;" ><!-- en space, U+2002 ISOpub -->
+<!ENTITY emsp    "&#8195;" ><!-- em space, U+2003 ISOpub -->
+<!ENTITY thinsp  "&#8201;" ><!-- thin space, U+2009 ISOpub -->
+<!ENTITY zwnj    "&#8204;" ><!-- zero width non-joiner, U+200C NEW RFC 2070 -->
+<!ENTITY zwj     "&#8205;" ><!-- zero width joiner, U+200D NEW RFC 2070 -->
+<!ENTITY lrm     "&#8206;" ><!-- left-to-right mark, U+200E NEW RFC 2070 -->
+<!ENTITY rlm     "&#8207;" ><!-- right-to-left mark, U+200F NEW RFC 2070 -->
+<!ENTITY ndash   "&#8211;" ><!-- en dash, U+2013 ISOpub -->
+<!ENTITY mdash   "&#8212;" ><!-- em dash, U+2014 ISOpub -->
+<!ENTITY lsquo   "&#8216;" ><!-- left single quotation mark, U+2018 ISOnum -->
+<!ENTITY rsquo   "&#8217;" ><!-- right single quotation mark, U+2019 ISOnum -->
+<!ENTITY sbquo   "&#8218;" ><!-- single low-9 quotation mark, U+201A NEW -->
+<!ENTITY ldquo   "&#8220;" ><!-- left double quotation mark, U+201C ISOnum -->
+<!ENTITY rdquo   "&#8221;" ><!-- right double quotation mark, U+201D ISOnum -->
+<!ENTITY bdquo   "&#8222;" ><!-- double low-9 quotation mark, U+201E NEW -->
+<!ENTITY dagger  "&#8224;" ><!-- dagger, U+2020 ISOpub -->
+<!ENTITY Dagger  "&#8225;" ><!-- double dagger, U+2021 ISOpub -->
+<!ENTITY permil  "&#8240;" ><!-- per mille sign, U+2030 ISOtech -->
+
+<!-- lsaquo is proposed but not yet ISO standardized -->
+<!ENTITY lsaquo  "&#8249;" ><!-- single left-pointing angle quotation mark, U+2039 ISO proposed -->
+<!-- rsaquo is proposed but not yet ISO standardized -->
+<!ENTITY rsaquo  "&#8250;" ><!-- single right-pointing angle quotation mark, U+203A ISO proposed -->
+<!ENTITY euro    "&#8364;" ><!-- euro sign, U+20AC NEW -->
+
+<!-- end of xhtml-special.ent -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/xhtml-modularization/xhtml-ssismap-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,32 @@
+<!-- ...................................................................... -->
+<!-- XHTML Server-side Image Map Module  .................................. -->
+<!-- file: xhtml-ssismap-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-ssismap-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Server-side Image Maps 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-ssismap-1.mod"
+
+     Revisions:
+#2000-10-22: added declaration for 'ismap' on <input>
+     ....................................................................... -->
+
+<!-- Server-side Image Maps
+
+     This adds the 'ismap' attribute to the img and input elements
+     to support server-side processing of a user selection.
+-->
+
+<!ATTLIST %img.qname;
+      ismap        ( ismap )                #IMPLIED
+>
+
+<!ATTLIST %input.qname;
+      ismap        ( ismap )                #IMPLIED
+>
+
+<!-- end of xhtml-ssismap-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/xhtml-modularization/xhtml-struct-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,125 @@
+<!-- ...................................................................... -->
+<!-- XHTML Structure Module  .............................................. -->
+<!-- file: xhtml-struct-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-struct-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Document Structure 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-struct-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Document Structure
+
+        title, head, body, html
+
+     The Structure Module defines the major structural elements and
+     their attributes.
+
+     Note that the content model of the head element type is redeclared
+     when the Base Module is included in the DTD.
+
+     The parameter entity containing the XML namespace URI value used
+     for XHTML is '%XHTML.xmlns;', defined in the Qualified Names module.
+-->
+
+<!-- title: Document Title ............................. -->
+
+<!-- The title element is not considered part of the flow of text.
+     It should be displayed, for example as the page header or
+     window title. Exactly one title is required per document.
+-->
+
+<!ENTITY % title.element  "INCLUDE" >
+<![%title.element;[
+<!ENTITY % title.content  "( #PCDATA )" >
+<!ENTITY % title.qname  "title" >
+<!ELEMENT %title.qname;  %title.content; >
+<!-- end of title.element -->]]>
+
+<!ENTITY % title.attlist  "INCLUDE" >
+<![%title.attlist;[
+<!ATTLIST %title.qname;
+      %XHTML.xmlns.attrib;
+      %I18n.attrib;
+>
+<!-- end of title.attlist -->]]>
+
+<!-- head: Document Head ............................... -->
+
+<!ENTITY % head.element  "INCLUDE" >
+<![%head.element;[
+<!ENTITY % head.content
+    "( %HeadOpts.mix;, %title.qname;, %HeadOpts.mix; )"
+>
+<!ENTITY % head.qname  "head" >
+<!ELEMENT %head.qname;  %head.content; >
+<!-- end of head.element -->]]>
+
+<!ENTITY % head.attlist  "INCLUDE" >
+<![%head.attlist;[
+<!-- reserved for future use with document profiles
+-->
+<!ENTITY % profile.attrib
+     "profile      %URI.datatype;           '%XHTML.profile;'"
+>
+
+<!ATTLIST %head.qname;
+      %XHTML.xmlns.attrib;
+      %I18n.attrib;
+      %profile.attrib;
+>
+<!-- end of head.attlist -->]]>
+
+<!-- body: Document Body ............................... -->
+
+<!ENTITY % body.element  "INCLUDE" >
+<![%body.element;[
+<!ENTITY % body.content
+     "( %Block.mix; )+"
+>
+<!ENTITY % body.qname  "body" >
+<!ELEMENT %body.qname;  %body.content; >
+<!-- end of body.element -->]]>
+
+<!ENTITY % body.attlist  "INCLUDE" >
+<![%body.attlist;[
+<!ATTLIST %body.qname;
+      %Common.attrib;
+>
+<!-- end of body.attlist -->]]>
+
+<!-- html: XHTML Document Element ...................... -->
+
+<!ENTITY % html.element  "INCLUDE" >
+<![%html.element;[
+<!ENTITY % html.content  "( %head.qname;, %body.qname; )" >
+<!ENTITY % html.qname  "html" >
+<!ELEMENT %html.qname;  %html.content; >
+<!-- end of html.element -->]]>
+
+<!ENTITY % html.attlist  "INCLUDE" >
+<![%html.attlist;[
+<!-- version attribute value defined in driver
+-->
+<!ENTITY % XHTML.version.attrib
+     "version      %FPI.datatype;           #FIXED '%XHTML.version;'"
+>
+
+<!-- see the Qualified Names module for information
+     on how to extend XHTML using XML namespaces
+-->
+<!ATTLIST %html.qname;
+      %XHTML.xmlns.attrib;
+      %XHTML.version.attrib;
+      %I18n.attrib;
+>
+<!-- end of html.attlist -->]]>
+
+<!-- end of xhtml-struct-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/xhtml-modularization/xhtml-style-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,47 @@
+<!-- ...................................................................... -->
+<!-- XHTML Document Style Sheet Module  ................................... -->
+<!-- file: xhtml-style-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-style-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//DTD XHTML Style Sheets 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-style-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Style Sheets
+
+        style
+
+     This module declares the style element type and its attributes,
+     used to embed style sheet information in the document head element.
+-->
+
+<!-- style: Style Sheet Information .................... -->
+
+<!ENTITY % style.element  "INCLUDE" >
+<![%style.element;[
+<!ENTITY % style.content  "( #PCDATA )" >
+<!ENTITY % style.qname  "style" >
+<!ELEMENT %style.qname;  %style.content; >
+<!-- end of style.element -->]]>
+
+<!ENTITY % style.attlist  "INCLUDE" >
+<![%style.attlist;[
+<!ATTLIST %style.qname;
+      %XHTML.xmlns.attrib;
+      %title.attrib;
+      %I18n.attrib;
+      type         %ContentType.datatype;   #REQUIRED
+      media        %MediaDesc.datatype;     #IMPLIED
+      xml:space    ( preserve )             #FIXED 'preserve'
+>
+<!-- end of style.attlist -->]]>
+
+<!-- end of xhtml-style-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/xhtml-modularization/xhtml-symbol.ent	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,204 @@
+<!-- ...................................................................... -->
+<!-- ISO Math, Greek and Symbolic Character Entity Set for XHTML .......... -->
+<!-- file: xhtml-symbol.ent
+
+     Typical invocation:
+
+       <!ENTITY % xhtml-symbol
+           PUBLIC "-//W3C//ENTITIES Symbols for XHTML//EN"
+                  "xhtml-symbol.ent" >
+       %xhtml-symbol;
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ENTITIES Symbols for XHTML//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-symbol.ent"
+
+     Revision:  $Id: xhtml-symbol.ent,v 1.1 2004-02-23 16:12:06 ylafon Exp $ SMI
+
+     Portions (C) International Organization for Standardization 1986:
+     Permission to copy in any form is granted for use with conforming
+     SGML systems and applications as defined in ISO 8879, provided
+     this notice is included in all copies.
+-->
+
+<!-- Relevant ISO entity set is given unless names are newly introduced.
+     New names (i.e., not in ISO 8879 [SGML] list) do not clash with
+     any existing ISO 8879 entity names. ISO 10646 [ISO10646] character
+     numbers are given for each character, in hex. Entity values are
+     decimal conversions of the ISO 10646 values and refer to the
+     document character set. Names are Unicode [UNICODE] names.
+-->
+
+<!-- Latin Extended-B -->
+<!ENTITY fnof     "&#402;" ><!-- latin small f with hook = function
+                              = florin, U+0192 ISOtech -->
+
+<!-- Greek -->
+<!ENTITY Alpha    "&#913;" ><!-- greek capital letter alpha, U+0391 -->
+<!ENTITY Beta     "&#914;" ><!-- greek capital letter beta, U+0392 -->
+<!ENTITY Gamma    "&#915;" ><!-- greek capital letter gamma, U+0393 ISOgrk3 -->
+<!ENTITY Delta    "&#916;" ><!-- greek capital letter delta, U+0394 ISOgrk3 -->
+<!ENTITY Epsilon  "&#917;" ><!-- greek capital letter epsilon, U+0395 -->
+<!ENTITY Zeta     "&#918;" ><!-- greek capital letter zeta, U+0396 -->
+<!ENTITY Eta      "&#919;" ><!-- greek capital letter eta, U+0397 -->
+<!ENTITY Theta    "&#920;" ><!-- greek capital letter theta, U+0398 ISOgrk3 -->
+<!ENTITY Iota     "&#921;" ><!-- greek capital letter iota, U+0399 -->
+<!ENTITY Kappa    "&#922;" ><!-- greek capital letter kappa, U+039A -->
+<!ENTITY Lambda   "&#923;" ><!-- greek capital letter lambda, U+039B ISOgrk3 -->
+<!ENTITY Mu       "&#924;" ><!-- greek capital letter mu, U+039C -->
+<!ENTITY Nu       "&#925;" ><!-- greek capital letter nu, U+039D -->
+<!ENTITY Xi       "&#926;" ><!-- greek capital letter xi, U+039E ISOgrk3 -->
+<!ENTITY Omicron  "&#927;" ><!-- greek capital letter omicron, U+039F -->
+<!ENTITY Pi       "&#928;" ><!-- greek capital letter pi, U+03A0 ISOgrk3 -->
+<!ENTITY Rho      "&#929;" ><!-- greek capital letter rho, U+03A1 -->
+<!-- there is no Sigmaf, and no U+03A2 character either -->
+<!ENTITY Sigma    "&#931;" ><!-- greek capital letter sigma, U+03A3 ISOgrk3 -->
+<!ENTITY Tau      "&#932;" ><!-- greek capital letter tau, U+03A4 -->
+<!ENTITY Upsilon  "&#933;" ><!-- greek capital letter upsilon,
+                              U+03A5 ISOgrk3 -->
+<!ENTITY Phi      "&#934;" ><!-- greek capital letter phi, U+03A6 ISOgrk3 -->
+<!ENTITY Chi      "&#935;" ><!-- greek capital letter chi, U+03A7 -->
+<!ENTITY Psi      "&#936;" ><!-- greek capital letter psi, U+03A8 ISOgrk3 -->
+<!ENTITY Omega    "&#937;" ><!-- greek capital letter omega, U+03A9 ISOgrk3 -->
+<!ENTITY alpha    "&#945;" ><!-- greek small letter alpha, U+03B1 ISOgrk3 -->
+<!ENTITY beta     "&#946;" ><!-- greek small letter beta, U+03B2 ISOgrk3 -->
+<!ENTITY gamma    "&#947;" ><!-- greek small letter gamma, U+03B3 ISOgrk3 -->
+<!ENTITY delta    "&#948;" ><!-- greek small letter delta, U+03B4 ISOgrk3 -->
+<!ENTITY epsilon  "&#949;" ><!-- greek small letter epsilon, U+03B5 ISOgrk3 -->
+<!ENTITY zeta     "&#950;" ><!-- greek small letter zeta, U+03B6 ISOgrk3 -->
+<!ENTITY eta      "&#951;" ><!-- greek small letter eta, U+03B7 ISOgrk3 -->
+<!ENTITY theta    "&#952;" ><!-- greek small letter theta, U+03B8 ISOgrk3 -->
+<!ENTITY iota     "&#953;" ><!-- greek small letter iota, U+03B9 ISOgrk3 -->
+<!ENTITY kappa    "&#954;" ><!-- greek small letter kappa, U+03BA ISOgrk3 -->
+<!ENTITY lambda   "&#955;" ><!-- greek small letter lambda, U+03BB ISOgrk3 -->
+<!ENTITY mu       "&#956;" ><!-- greek small letter mu, U+03BC ISOgrk3 -->
+<!ENTITY nu       "&#957;" ><!-- greek small letter nu, U+03BD ISOgrk3 -->
+<!ENTITY xi       "&#958;" ><!-- greek small letter xi, U+03BE ISOgrk3 -->
+<!ENTITY omicron  "&#959;" ><!-- greek small letter omicron, U+03BF NEW -->
+<!ENTITY pi       "&#960;" ><!-- greek small letter pi, U+03C0 ISOgrk3 -->
+<!ENTITY rho      "&#961;" ><!-- greek small letter rho, U+03C1 ISOgrk3 -->
+<!ENTITY sigmaf   "&#962;" ><!-- greek small letter final sigma, U+03C2 ISOgrk3 -->
+<!ENTITY sigma    "&#963;" ><!-- greek small letter sigma, U+03C3 ISOgrk3 -->
+<!ENTITY tau      "&#964;" ><!-- greek small letter tau, U+03C4 ISOgrk3 -->
+<!ENTITY upsilon  "&#965;" ><!-- greek small letter upsilon, U+03C5 ISOgrk3 -->
+<!ENTITY phi      "&#966;" ><!-- greek small letter phi, U+03C6 ISOgrk3 -->
+<!ENTITY chi      "&#967;" ><!-- greek small letter chi, U+03C7 ISOgrk3 -->
+<!ENTITY psi      "&#968;" ><!-- greek small letter psi, U+03C8 ISOgrk3 -->
+<!ENTITY omega    "&#969;" ><!-- greek small letter omega, U+03C9 ISOgrk3 -->
+<!ENTITY thetasym "&#977;" ><!-- greek small letter theta symbol, U+03D1 NEW -->
+<!ENTITY upsih    "&#978;" ><!-- greek upsilon with hook symbol, U+03D2 NEW -->
+<!ENTITY piv      "&#982;" ><!-- greek pi symbol, U+03D6 ISOgrk3 -->
+
+<!-- General Punctuation -->
+<!ENTITY bull     "&#8226;" ><!-- bullet = black small circle, U+2022 ISOpub  -->
+<!-- bullet is NOT the same as bullet operator, U+2219 -->
+<!ENTITY hellip   "&#8230;" ><!-- horizontal ellipsis = three dot leader, U+2026 ISOpub  -->
+<!ENTITY prime    "&#8242;" ><!-- prime = minutes = feet, U+2032 ISOtech -->
+<!ENTITY Prime    "&#8243;" ><!-- double prime = seconds = inches, U+2033 ISOtech -->
+<!ENTITY oline    "&#8254;" ><!-- overline = spacing overscore, U+203E NEW -->
+<!ENTITY frasl    "&#8260;" ><!-- fraction slash, U+2044 NEW -->
+
+<!-- Letterlike Symbols -->
+<!ENTITY weierp   "&#8472;" ><!-- script capital P = power set = Weierstrass p, U+2118 ISOamso -->
+<!ENTITY image    "&#8465;" ><!-- blackletter capital I = imaginary part, U+2111 ISOamso -->
+<!ENTITY real     "&#8476;" ><!-- blackletter capital R = real part symbol, U+211C ISOamso -->
+<!ENTITY trade    "&#8482;" ><!-- trade mark sign, U+2122 ISOnum -->
+<!ENTITY alefsym  "&#8501;" ><!-- alef symbol = first transfinite cardinal, U+2135 NEW -->
+<!-- alef symbol is NOT the same as hebrew letter alef, U+05D0 although
+     the same glyph could be used to depict both characters -->
+
+<!-- Arrows -->
+<!ENTITY larr     "&#8592;" ><!-- leftwards arrow, U+2190 ISOnum -->
+<!ENTITY uarr     "&#8593;" ><!-- upwards arrow, U+2191 ISOnum-->
+<!ENTITY rarr     "&#8594;" ><!-- rightwards arrow, U+2192 ISOnum -->
+<!ENTITY darr     "&#8595;" ><!-- downwards arrow, U+2193 ISOnum -->
+<!ENTITY harr     "&#8596;" ><!-- left right arrow, U+2194 ISOamsa -->
+<!ENTITY crarr    "&#8629;" ><!-- downwards arrow with corner leftwards
+                               = carriage return, U+21B5 NEW -->
+<!ENTITY lArr     "&#8656;" ><!-- leftwards double arrow, U+21D0 ISOtech -->
+<!-- Unicode does not say that lArr is the same as the 'is implied by' arrow
+    but also does not have any other character for that function. So ? lArr can
+    be used for 'is implied by' as ISOtech suggests -->
+<!ENTITY uArr     "&#8657;" ><!-- upwards double arrow, U+21D1 ISOamsa -->
+<!ENTITY rArr     "&#8658;" ><!-- rightwards double arrow, U+21D2 ISOtech -->
+<!-- Unicode does not say this is the 'implies' character but does not have
+     another character with this function so ?
+     rArr can be used for 'implies' as ISOtech suggests -->
+<!ENTITY dArr     "&#8659;" ><!-- downwards double arrow, U+21D3 ISOamsa -->
+<!ENTITY hArr     "&#8660;" ><!-- left right double arrow, U+21D4 ISOamsa -->
+
+<!-- Mathematical Operators -->
+<!ENTITY forall   "&#8704;" ><!-- for all, U+2200 ISOtech -->
+<!ENTITY part     "&#8706;" ><!-- partial differential, U+2202 ISOtech  -->
+<!ENTITY exist    "&#8707;" ><!-- there exists, U+2203 ISOtech -->
+<!ENTITY empty    "&#8709;" ><!-- empty set = null set = diameter, U+2205 ISOamso -->
+<!ENTITY nabla    "&#8711;" ><!-- nabla = backward difference, U+2207 ISOtech -->
+<!ENTITY isin     "&#8712;" ><!-- element of, U+2208 ISOtech -->
+<!ENTITY notin    "&#8713;" ><!-- not an element of, U+2209 ISOtech -->
+<!ENTITY ni       "&#8715;" ><!-- contains as member, U+220B ISOtech -->
+<!-- should there be a more memorable name than 'ni'? -->
+<!ENTITY prod     "&#8719;" ><!-- n-ary product = product sign, U+220F ISOamsb -->
+<!-- prod is NOT the same character as U+03A0 'greek capital letter pi' though
+     the same glyph might be used for both -->
+<!ENTITY sum      "&#8721;" ><!-- n-ary sumation, U+2211 ISOamsb -->
+<!-- sum is NOT the same character as U+03A3 'greek capital letter sigma'
+     though the same glyph might be used for both -->
+<!ENTITY minus    "&#8722;" ><!-- minus sign, U+2212 ISOtech -->
+<!ENTITY lowast   "&#8727;" ><!-- asterisk operator, U+2217 ISOtech -->
+<!ENTITY radic    "&#8730;" ><!-- square root = radical sign, U+221A ISOtech -->
+<!ENTITY prop     "&#8733;" ><!-- proportional to, U+221D ISOtech -->
+<!ENTITY infin    "&#8734;" ><!-- infinity, U+221E ISOtech -->
+<!ENTITY ang      "&#8736;" ><!-- angle, U+2220 ISOamso -->
+<!ENTITY and      "&#8743;" ><!-- logical and = wedge, U+2227 ISOtech -->
+<!ENTITY or       "&#8744;" ><!-- logical or = vee, U+2228 ISOtech -->
+<!ENTITY cap      "&#8745;" ><!-- intersection = cap, U+2229 ISOtech -->
+<!ENTITY cup      "&#8746;" ><!-- union = cup, U+222A ISOtech -->
+<!ENTITY int      "&#8747;" ><!-- integral, U+222B ISOtech -->
+<!ENTITY there4   "&#8756;" ><!-- therefore, U+2234 ISOtech -->
+<!ENTITY sim      "&#8764;" ><!-- tilde operator = varies with = similar to, U+223C ISOtech -->
+<!-- tilde operator is NOT the same character as the tilde, U+007E,
+     although the same glyph might be used to represent both  -->
+<!ENTITY cong     "&#8773;" ><!-- approximately equal to, U+2245 ISOtech -->
+<!ENTITY asymp    "&#8776;" ><!-- almost equal to = asymptotic to, U+2248 ISOamsr -->
+<!ENTITY ne       "&#8800;" ><!-- not equal to, U+2260 ISOtech -->
+<!ENTITY equiv    "&#8801;" ><!-- identical to, U+2261 ISOtech -->
+<!ENTITY le       "&#8804;" ><!-- less-than or equal to, U+2264 ISOtech -->
+<!ENTITY ge       "&#8805;" ><!-- greater-than or equal to, U+2265 ISOtech -->
+<!ENTITY sub      "&#8834;" ><!-- subset of, U+2282 ISOtech -->
+<!ENTITY sup      "&#8835;" ><!-- superset of, U+2283 ISOtech -->
+<!-- note that nsup, 'not a superset of, U+2283' is not covered by the Symbol
+     font encoding and is not included. Should it be, for symmetry?
+     It is in ISOamsn  -->
+<!ENTITY nsub     "&#8836;" ><!-- not a subset of, U+2284 ISOamsn -->
+<!ENTITY sube     "&#8838;" ><!-- subset of or equal to, U+2286 ISOtech -->
+<!ENTITY supe     "&#8839;" ><!-- superset of or equal to, U+2287 ISOtech -->
+<!ENTITY oplus    "&#8853;" ><!-- circled plus = direct sum, U+2295 ISOamsb -->
+<!ENTITY otimes   "&#8855;" ><!-- circled times = vector product, U+2297 ISOamsb -->
+<!ENTITY perp     "&#8869;" ><!-- up tack = orthogonal to = perpendicular, U+22A5 ISOtech -->
+<!ENTITY sdot     "&#8901;" ><!-- dot operator, U+22C5 ISOamsb -->
+<!-- dot operator is NOT the same character as U+00B7 middle dot -->
+
+<!-- Miscellaneous Technical -->
+<!ENTITY lceil    "&#8968;" ><!-- left ceiling = apl upstile, U+2308 ISOamsc  -->
+<!ENTITY rceil    "&#8969;" ><!-- right ceiling, U+2309 ISOamsc  -->
+<!ENTITY lfloor   "&#8970;" ><!-- left floor = apl downstile, U+230A ISOamsc  -->
+<!ENTITY rfloor   "&#8971;" ><!-- right floor, U+230B ISOamsc  -->
+<!ENTITY lang     "&#9001;" ><!-- left-pointing angle bracket = bra, U+2329 ISOtech -->
+<!-- lang is NOT the same character as U+003C 'less than'
+     or U+2039 'single left-pointing angle quotation mark' -->
+<!ENTITY rang     "&#9002;" ><!-- right-pointing angle bracket = ket, U+232A ISOtech -->
+<!-- rang is NOT the same character as U+003E 'greater than'
+     or U+203A 'single right-pointing angle quotation mark' -->
+
+<!-- Geometric Shapes -->
+<!ENTITY loz      "&#9674;" ><!-- lozenge, U+25CA ISOpub -->
+
+<!-- Miscellaneous Symbols -->
+<!ENTITY spades   "&#9824;" ><!-- black spade suit, U+2660 ISOpub -->
+<!-- black here seems to mean filled as opposed to hollow -->
+<!ENTITY clubs    "&#9827;" ><!-- black club suit = shamrock, U+2663 ISOpub -->
+<!ENTITY hearts   "&#9829;" ><!-- black heart suit = valentine, U+2665 ISOpub -->
+<!ENTITY diams    "&#9830;" ><!-- black diamond suit, U+2666 ISOpub -->
+
+<!-- end of xhtml-symbol.ent -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/xhtml-modularization/xhtml-table-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,333 @@
+<!-- ...................................................................... -->
+<!-- XHTML Table Module  .................................................. -->
+<!-- file: xhtml-table-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-table-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Tables 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-table-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- 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, including features that enable
+     better accessibility for non-visual user agents.
+-->
+
+<!-- declare qualified element type names:
+-->
+<!ENTITY % table.qname  "table" >
+<!ENTITY % caption.qname  "caption" >
+<!ENTITY % thead.qname  "thead" >
+<!ENTITY % tfoot.qname  "tfoot" >
+<!ENTITY % tbody.qname  "tbody" >
+<!ENTITY % colgroup.qname  "colgroup" >
+<!ENTITY % col.qname  "col" >
+<!ENTITY % tr.qname  "tr" >
+<!ENTITY % th.qname  "th" >
+<!ENTITY % td.qname  "td" >
+
+<!-- The frame attribute specifies which parts of the frame around
+     the table should be rendered. The values are not the same as
+     CALS to avoid a name clash with the valign attribute.
+-->
+<!ENTITY % frame.attrib
+     "frame        ( void
+                   | above
+                   | below
+                   | hsides
+                   | lhs
+                   | rhs
+                   | vsides
+                   | box
+                   | border )               #IMPLIED"
+>
+
+<!-- The rules attribute defines which rules to draw between cells:
+
+     If rules is absent then assume:
+
+       "none" if border is absent or border="0" otherwise "all"
+-->
+<!ENTITY % rules.attrib
+     "rules        ( none
+                   | groups
+                   | rows
+                   | cols
+                   | all )                  #IMPLIED"
+>
+
+<!-- horizontal alignment attributes for cell contents
+-->
+<!ENTITY % CellHAlign.attrib
+     "align        ( left
+                   | center
+                   | right
+                   | justify
+                   | char )                 #IMPLIED
+      char         %Character.datatype;     #IMPLIED
+      charoff      %Length.datatype;        #IMPLIED"
+>
+
+<!-- vertical alignment attribute for cell contents
+-->
+<!ENTITY % CellVAlign.attrib
+     "valign       ( top
+                   | middle
+                   | bottom
+                   | baseline )             #IMPLIED"
+>
+
+<!-- scope is simpler than axes attribute for common tables
+-->
+<!ENTITY % scope.attrib
+     "scope        ( row
+                   | col
+                   | rowgroup
+                   | colgroup )             #IMPLIED"
+>
+
+<!-- table: Table Element .............................. -->
+
+<!ENTITY % table.element  "INCLUDE" >
+<![%table.element;[
+<!ENTITY % table.content
+     "( %caption.qname;?, ( %col.qname;* | %colgroup.qname;* ),
+      (( %thead.qname;?, %tfoot.qname;?, %tbody.qname;+ ) | ( %tr.qname;+ )))"
+>
+<!ELEMENT %table.qname;  %table.content; >
+<!-- end of table.element -->]]>
+
+<!ENTITY % table.attlist  "INCLUDE" >
+<![%table.attlist;[
+<!ATTLIST %table.qname;
+      %Common.attrib;
+      summary      %Text.datatype;          #IMPLIED
+      width        %Length.datatype;        #IMPLIED
+      border       %Pixels.datatype;        #IMPLIED
+      %frame.attrib;
+      %rules.attrib;
+      cellspacing  %Length.datatype;        #IMPLIED
+      cellpadding  %Length.datatype;        #IMPLIED
+>
+<!-- end of table.attlist -->]]>
+
+<!-- caption: Table Caption ............................ -->
+
+<!ENTITY % caption.element  "INCLUDE" >
+<![%caption.element;[
+<!ENTITY % caption.content
+     "( #PCDATA | %Inline.mix; )*"
+>
+<!ELEMENT %caption.qname;  %caption.content; >
+<!-- end of caption.element -->]]>
+
+<!ENTITY % caption.attlist  "INCLUDE" >
+<![%caption.attlist;[
+<!ATTLIST %caption.qname;
+      %Common.attrib;
+>
+<!-- end of caption.attlist -->]]>
+
+<!-- thead: Table Header ............................... -->
+
+<!-- Use thead to duplicate headers when breaking table
+     across page boundaries, or for static headers when
+     tbody sections are rendered in scrolling panel.
+-->
+
+<!ENTITY % thead.element  "INCLUDE" >
+<![%thead.element;[
+<!ENTITY % thead.content  "( %tr.qname; )+" >
+<!ELEMENT %thead.qname;  %thead.content; >
+<!-- end of thead.element -->]]>
+
+<!ENTITY % thead.attlist  "INCLUDE" >
+<![%thead.attlist;[
+<!ATTLIST %thead.qname;
+      %Common.attrib;
+      %CellHAlign.attrib;
+      %CellVAlign.attrib;
+>
+<!-- end of thead.attlist -->]]>
+
+<!-- tfoot: Table Footer ............................... -->
+
+<!-- Use tfoot to duplicate footers when breaking table
+     across page boundaries, or for static footers when
+     tbody sections are rendered in scrolling panel.
+-->
+
+<!ENTITY % tfoot.element  "INCLUDE" >
+<![%tfoot.element;[
+<!ENTITY % tfoot.content  "( %tr.qname; )+" >
+<!ELEMENT %tfoot.qname;  %tfoot.content; >
+<!-- end of tfoot.element -->]]>
+
+<!ENTITY % tfoot.attlist  "INCLUDE" >
+<![%tfoot.attlist;[
+<!ATTLIST %tfoot.qname;
+      %Common.attrib;
+      %CellHAlign.attrib;
+      %CellVAlign.attrib;
+>
+<!-- end of tfoot.attlist -->]]>
+
+<!-- tbody: Table Body ................................. -->
+
+<!-- Use multiple tbody sections when rules are needed
+     between groups of table rows.
+-->
+
+<!ENTITY % tbody.element  "INCLUDE" >
+<![%tbody.element;[
+<!ENTITY % tbody.content  "( %tr.qname; )+" >
+<!ELEMENT %tbody.qname;  %tbody.content; >
+<!-- end of tbody.element -->]]>
+
+<!ENTITY % tbody.attlist  "INCLUDE" >
+<![%tbody.attlist;[
+<!ATTLIST %tbody.qname;
+      %Common.attrib;
+      %CellHAlign.attrib;
+      %CellVAlign.attrib;
+>
+<!-- end of tbody.attlist -->]]>
+
+<!-- colgroup: Table Column Group ...................... -->
+
+<!-- colgroup groups a set of col elements. It allows you
+     to group several semantically-related columns together.
+-->
+
+<!ENTITY % colgroup.element  "INCLUDE" >
+<![%colgroup.element;[
+<!ENTITY % colgroup.content  "( %col.qname; )*" >
+<!ELEMENT %colgroup.qname;  %colgroup.content; >
+<!-- end of colgroup.element -->]]>
+
+<!ENTITY % colgroup.attlist  "INCLUDE" >
+<![%colgroup.attlist;[
+<!ATTLIST %colgroup.qname;
+      %Common.attrib;
+      span         %Number.datatype;        '1'
+      width        %MultiLength.datatype;   #IMPLIED
+      %CellHAlign.attrib;
+      %CellVAlign.attrib;
+>
+<!-- end of colgroup.attlist -->]]>
+
+<!-- col: Table Column ................................. -->
+
+<!-- col elements define the alignment properties for
+     cells in one or more columns.
+
+     The width attribute specifies the width of the
+     columns, e.g.
+
+       width="64"        width in screen pixels
+       width="0.5*"      relative width of 0.5
+
+     The span attribute causes the attributes of one
+     col element to apply to more than one column.
+-->
+
+<!ENTITY % col.element  "INCLUDE" >
+<![%col.element;[
+<!ENTITY % col.content  "EMPTY" >
+<!ELEMENT %col.qname;  %col.content; >
+<!-- end of col.element -->]]>
+
+<!ENTITY % col.attlist  "INCLUDE" >
+<![%col.attlist;[
+<!ATTLIST %col.qname;
+      %Common.attrib;
+      span         %Number.datatype;        '1'
+      width        %MultiLength.datatype;   #IMPLIED
+      %CellHAlign.attrib;
+      %CellVAlign.attrib;
+>
+<!-- end of col.attlist -->]]>
+
+<!-- tr: Table Row ..................................... -->
+
+<!ENTITY % tr.element  "INCLUDE" >
+<![%tr.element;[
+<!ENTITY % tr.content  "( %th.qname; | %td.qname; )+" >
+<!ELEMENT %tr.qname;  %tr.content; >
+<!-- end of tr.element -->]]>
+
+<!ENTITY % tr.attlist  "INCLUDE" >
+<![%tr.attlist;[
+<!ATTLIST %tr.qname;
+      %Common.attrib;
+      %CellHAlign.attrib;
+      %CellVAlign.attrib;
+>
+<!-- end of tr.attlist -->]]>
+
+<!-- th: Table Header Cell ............................. -->
+
+<!-- th is for header cells, td for data,
+     but for cells acting as both use td
+-->
+
+<!ENTITY % th.element  "INCLUDE" >
+<![%th.element;[
+<!ENTITY % th.content
+     "( #PCDATA | %Flow.mix; )*"
+>
+<!ELEMENT %th.qname;  %th.content; >
+<!-- end of th.element -->]]>
+
+<!ENTITY % th.attlist  "INCLUDE" >
+<![%th.attlist;[
+<!ATTLIST %th.qname;
+      %Common.attrib;
+      abbr         %Text.datatype;          #IMPLIED
+      axis         CDATA                    #IMPLIED
+      headers      IDREFS                   #IMPLIED
+      %scope.attrib;
+      rowspan      %Number.datatype;        '1'
+      colspan      %Number.datatype;        '1'
+      %CellHAlign.attrib;
+      %CellVAlign.attrib;
+>
+<!-- end of th.attlist -->]]>
+
+<!-- td: Table Data Cell ............................... -->
+
+<!ENTITY % td.element  "INCLUDE" >
+<![%td.element;[
+<!ENTITY % td.content
+     "( #PCDATA | %Flow.mix; )*"
+>
+<!ELEMENT %td.qname;  %td.content; >
+<!-- end of td.element -->]]>
+
+<!ENTITY % td.attlist  "INCLUDE" >
+<![%td.attlist;[
+<!ATTLIST %td.qname;
+      %Common.attrib;
+      abbr         %Text.datatype;          #IMPLIED
+      axis         CDATA                    #IMPLIED
+      headers      IDREFS                   #IMPLIED
+      %scope.attrib;
+      rowspan      %Number.datatype;        '1'
+      colspan      %Number.datatype;        '1'
+      %CellHAlign.attrib;
+      %CellVAlign.attrib;
+>
+<!-- end of td.attlist -->]]>
+
+<!-- end of xhtml-table-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/xhtml-modularization/xhtml-target-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,53 @@
+<!-- ...................................................................... -->
+<!-- XHTML Target Module  ................................................. -->
+<!-- file: xhtml-target-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-target-1.mod,v 1.1 2004-03-16 10:49:12 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Target 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-target-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Target 
+
+        target
+
+     This module declares the 'target' attribute used for opening windows
+-->
+
+<!-- render in this frame --> 
+<!ENTITY % FrameTarget.datatype "CDATA" >
+
+<!-- add 'target' attribute to 'a' element -->
+<!ATTLIST %a.qname;
+      target       %FrameTarget.datatype;   #IMPLIED
+>
+
+<!-- add 'target' attribute to 'area' element -->
+<!ATTLIST %area.qname;
+      target       %FrameTarget.datatype;   #IMPLIED
+>
+
+<!-- add 'target' attribute to 'link' element -->
+<!ATTLIST %link.qname;
+      target       %FrameTarget.datatype;   #IMPLIED
+>
+
+<!-- add 'target' attribute to 'form' element -->
+<!ATTLIST %form.qname;
+      target       %FrameTarget.datatype;   #IMPLIED
+>
+
+<!-- add 'target' attribute to 'base' element -->
+<!ATTLIST %base.qname;
+      target       %FrameTarget.datatype;   #IMPLIED
+>
+
+<!-- end of xhtml-target-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/xhtml-modularization/xhtml-text-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,52 @@
+<!-- ...................................................................... -->
+<!-- XHTML Text Module  ................................................... -->
+<!-- file: xhtml-text-1.mod
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml-text-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ELEMENTS XHTML Text 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-text-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- Textual Content
+
+     The Text module includes declarations for all core
+     text container elements and their attributes.
+-->
+
+<!ENTITY % xhtml-inlstruct.module "INCLUDE" >
+<![%xhtml-inlstruct.module;[
+<!ENTITY % xhtml-inlstruct.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Inline Structural 1.0//EN"
+            "xhtml-inlstruct-1.mod" >
+%xhtml-inlstruct.mod;]]>
+
+<!ENTITY % xhtml-inlphras.module "INCLUDE" >
+<![%xhtml-inlphras.module;[
+<!ENTITY % xhtml-inlphras.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Inline Phrasal 1.0//EN"
+            "xhtml-inlphras-1.mod" >
+%xhtml-inlphras.mod;]]>
+
+<!ENTITY % xhtml-blkstruct.module "INCLUDE" >
+<![%xhtml-blkstruct.module;[
+<!ENTITY % xhtml-blkstruct.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Block Structural 1.0//EN"
+            "xhtml-blkstruct-1.mod" >
+%xhtml-blkstruct.mod;]]>
+
+<!ENTITY % xhtml-blkphras.module "INCLUDE" >
+<![%xhtml-blkphras.module;[
+<!ENTITY % xhtml-blkphras.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Block Phrasal 1.0//EN"
+            "xhtml-blkphras-1.mod" >
+%xhtml-blkphras.mod;]]>
+
+<!-- end of xhtml-text-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/xhtml1.0/xhtml-lat1.ent	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,196 @@
+<!-- Portions (C) International Organization for Standardization 1986
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+-->
+<!-- Character entity set. Typical invocation:
+    <!ENTITY % HTMLlat1 PUBLIC
+       "-//W3C//ENTITIES Latin 1 for XHTML//EN"
+       "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent">
+    %HTMLlat1;
+-->
+
+<!ENTITY nbsp   "&#160;"> <!-- no-break space = non-breaking space,
+                                  U+00A0 ISOnum -->
+<!ENTITY iexcl  "&#161;"> <!-- inverted exclamation mark, U+00A1 ISOnum -->
+<!ENTITY cent   "&#162;"> <!-- cent sign, U+00A2 ISOnum -->
+<!ENTITY pound  "&#163;"> <!-- pound sign, U+00A3 ISOnum -->
+<!ENTITY curren "&#164;"> <!-- currency sign, U+00A4 ISOnum -->
+<!ENTITY yen    "&#165;"> <!-- yen sign = yuan sign, U+00A5 ISOnum -->
+<!ENTITY brvbar "&#166;"> <!-- broken bar = broken vertical bar,
+                                  U+00A6 ISOnum -->
+<!ENTITY sect   "&#167;"> <!-- section sign, U+00A7 ISOnum -->
+<!ENTITY uml    "&#168;"> <!-- diaeresis = spacing diaeresis,
+                                  U+00A8 ISOdia -->
+<!ENTITY copy   "&#169;"> <!-- copyright sign, U+00A9 ISOnum -->
+<!ENTITY ordf   "&#170;"> <!-- feminine ordinal indicator, U+00AA ISOnum -->
+<!ENTITY laquo  "&#171;"> <!-- left-pointing double angle quotation mark
+                                  = left pointing guillemet, U+00AB ISOnum -->
+<!ENTITY not    "&#172;"> <!-- not sign = discretionary hyphen,
+                                  U+00AC ISOnum -->
+<!ENTITY shy    "&#173;"> <!-- soft hyphen = discretionary hyphen,
+                                  U+00AD ISOnum -->
+<!ENTITY reg    "&#174;"> <!-- registered sign = registered trade mark sign,
+                                  U+00AE ISOnum -->
+<!ENTITY macr   "&#175;"> <!-- macron = spacing macron = overline
+                                  = APL overbar, U+00AF ISOdia -->
+<!ENTITY deg    "&#176;"> <!-- degree sign, U+00B0 ISOnum -->
+<!ENTITY plusmn "&#177;"> <!-- plus-minus sign = plus-or-minus sign,
+                                  U+00B1 ISOnum -->
+<!ENTITY sup2   "&#178;"> <!-- superscript two = superscript digit two
+                                  = squared, U+00B2 ISOnum -->
+<!ENTITY sup3   "&#179;"> <!-- superscript three = superscript digit three
+                                  = cubed, U+00B3 ISOnum -->
+<!ENTITY acute  "&#180;"> <!-- acute accent = spacing acute,
+                                  U+00B4 ISOdia -->
+<!ENTITY micro  "&#181;"> <!-- micro sign, U+00B5 ISOnum -->
+<!ENTITY para   "&#182;"> <!-- pilcrow sign = paragraph sign,
+                                  U+00B6 ISOnum -->
+<!ENTITY middot "&#183;"> <!-- middle dot = Georgian comma
+                                  = Greek middle dot, U+00B7 ISOnum -->
+<!ENTITY cedil  "&#184;"> <!-- cedilla = spacing cedilla, U+00B8 ISOdia -->
+<!ENTITY sup1   "&#185;"> <!-- superscript one = superscript digit one,
+                                  U+00B9 ISOnum -->
+<!ENTITY ordm   "&#186;"> <!-- masculine ordinal indicator,
+                                  U+00BA ISOnum -->
+<!ENTITY raquo  "&#187;"> <!-- right-pointing double angle quotation mark
+                                  = right pointing guillemet, U+00BB ISOnum -->
+<!ENTITY frac14 "&#188;"> <!-- vulgar fraction one quarter
+                                  = fraction one quarter, U+00BC ISOnum -->
+<!ENTITY frac12 "&#189;"> <!-- vulgar fraction one half
+                                  = fraction one half, U+00BD ISOnum -->
+<!ENTITY frac34 "&#190;"> <!-- vulgar fraction three quarters
+                                  = fraction three quarters, U+00BE ISOnum -->
+<!ENTITY iquest "&#191;"> <!-- inverted question mark
+                                  = turned question mark, U+00BF ISOnum -->
+<!ENTITY Agrave "&#192;"> <!-- latin capital letter A with grave
+                                  = latin capital letter A grave,
+                                  U+00C0 ISOlat1 -->
+<!ENTITY Aacute "&#193;"> <!-- latin capital letter A with acute,
+                                  U+00C1 ISOlat1 -->
+<!ENTITY Acirc  "&#194;"> <!-- latin capital letter A with circumflex,
+                                  U+00C2 ISOlat1 -->
+<!ENTITY Atilde "&#195;"> <!-- latin capital letter A with tilde,
+                                  U+00C3 ISOlat1 -->
+<!ENTITY Auml   "&#196;"> <!-- latin capital letter A with diaeresis,
+                                  U+00C4 ISOlat1 -->
+<!ENTITY Aring  "&#197;"> <!-- latin capital letter A with ring above
+                                  = latin capital letter A ring,
+                                  U+00C5 ISOlat1 -->
+<!ENTITY AElig  "&#198;"> <!-- latin capital letter AE
+                                  = latin capital ligature AE,
+                                  U+00C6 ISOlat1 -->
+<!ENTITY Ccedil "&#199;"> <!-- latin capital letter C with cedilla,
+                                  U+00C7 ISOlat1 -->
+<!ENTITY Egrave "&#200;"> <!-- latin capital letter E with grave,
+                                  U+00C8 ISOlat1 -->
+<!ENTITY Eacute "&#201;"> <!-- latin capital letter E with acute,
+                                  U+00C9 ISOlat1 -->
+<!ENTITY Ecirc  "&#202;"> <!-- latin capital letter E with circumflex,
+                                  U+00CA ISOlat1 -->
+<!ENTITY Euml   "&#203;"> <!-- latin capital letter E with diaeresis,
+                                  U+00CB ISOlat1 -->
+<!ENTITY Igrave "&#204;"> <!-- latin capital letter I with grave,
+                                  U+00CC ISOlat1 -->
+<!ENTITY Iacute "&#205;"> <!-- latin capital letter I with acute,
+                                  U+00CD ISOlat1 -->
+<!ENTITY Icirc  "&#206;"> <!-- latin capital letter I with circumflex,
+                                  U+00CE ISOlat1 -->
+<!ENTITY Iuml   "&#207;"> <!-- latin capital letter I with diaeresis,
+                                  U+00CF ISOlat1 -->
+<!ENTITY ETH    "&#208;"> <!-- latin capital letter ETH, U+00D0 ISOlat1 -->
+<!ENTITY Ntilde "&#209;"> <!-- latin capital letter N with tilde,
+                                  U+00D1 ISOlat1 -->
+<!ENTITY Ograve "&#210;"> <!-- latin capital letter O with grave,
+                                  U+00D2 ISOlat1 -->
+<!ENTITY Oacute "&#211;"> <!-- latin capital letter O with acute,
+                                  U+00D3 ISOlat1 -->
+<!ENTITY Ocirc  "&#212;"> <!-- latin capital letter O with circumflex,
+                                  U+00D4 ISOlat1 -->
+<!ENTITY Otilde "&#213;"> <!-- latin capital letter O with tilde,
+                                  U+00D5 ISOlat1 -->
+<!ENTITY Ouml   "&#214;"> <!-- latin capital letter O with diaeresis,
+                                  U+00D6 ISOlat1 -->
+<!ENTITY times  "&#215;"> <!-- multiplication sign, U+00D7 ISOnum -->
+<!ENTITY Oslash "&#216;"> <!-- latin capital letter O with stroke
+                                  = latin capital letter O slash,
+                                  U+00D8 ISOlat1 -->
+<!ENTITY Ugrave "&#217;"> <!-- latin capital letter U with grave,
+                                  U+00D9 ISOlat1 -->
+<!ENTITY Uacute "&#218;"> <!-- latin capital letter U with acute,
+                                  U+00DA ISOlat1 -->
+<!ENTITY Ucirc  "&#219;"> <!-- latin capital letter U with circumflex,
+                                  U+00DB ISOlat1 -->
+<!ENTITY Uuml   "&#220;"> <!-- latin capital letter U with diaeresis,
+                                  U+00DC ISOlat1 -->
+<!ENTITY Yacute "&#221;"> <!-- latin capital letter Y with acute,
+                                  U+00DD ISOlat1 -->
+<!ENTITY THORN  "&#222;"> <!-- latin capital letter THORN,
+                                  U+00DE ISOlat1 -->
+<!ENTITY szlig  "&#223;"> <!-- latin small letter sharp s = ess-zed,
+                                  U+00DF ISOlat1 -->
+<!ENTITY agrave "&#224;"> <!-- latin small letter a with grave
+                                  = latin small letter a grave,
+                                  U+00E0 ISOlat1 -->
+<!ENTITY aacute "&#225;"> <!-- latin small letter a with acute,
+                                  U+00E1 ISOlat1 -->
+<!ENTITY acirc  "&#226;"> <!-- latin small letter a with circumflex,
+                                  U+00E2 ISOlat1 -->
+<!ENTITY atilde "&#227;"> <!-- latin small letter a with tilde,
+                                  U+00E3 ISOlat1 -->
+<!ENTITY auml   "&#228;"> <!-- latin small letter a with diaeresis,
+                                  U+00E4 ISOlat1 -->
+<!ENTITY aring  "&#229;"> <!-- latin small letter a with ring above
+                                  = latin small letter a ring,
+                                  U+00E5 ISOlat1 -->
+<!ENTITY aelig  "&#230;"> <!-- latin small letter ae
+                                  = latin small ligature ae, U+00E6 ISOlat1 -->
+<!ENTITY ccedil "&#231;"> <!-- latin small letter c with cedilla,
+                                  U+00E7 ISOlat1 -->
+<!ENTITY egrave "&#232;"> <!-- latin small letter e with grave,
+                                  U+00E8 ISOlat1 -->
+<!ENTITY eacute "&#233;"> <!-- latin small letter e with acute,
+                                  U+00E9 ISOlat1 -->
+<!ENTITY ecirc  "&#234;"> <!-- latin small letter e with circumflex,
+                                  U+00EA ISOlat1 -->
+<!ENTITY euml   "&#235;"> <!-- latin small letter e with diaeresis,
+                                  U+00EB ISOlat1 -->
+<!ENTITY igrave "&#236;"> <!-- latin small letter i with grave,
+                                  U+00EC ISOlat1 -->
+<!ENTITY iacute "&#237;"> <!-- latin small letter i with acute,
+                                  U+00ED ISOlat1 -->
+<!ENTITY icirc  "&#238;"> <!-- latin small letter i with circumflex,
+                                  U+00EE ISOlat1 -->
+<!ENTITY iuml   "&#239;"> <!-- latin small letter i with diaeresis,
+                                  U+00EF ISOlat1 -->
+<!ENTITY eth    "&#240;"> <!-- latin small letter eth, U+00F0 ISOlat1 -->
+<!ENTITY ntilde "&#241;"> <!-- latin small letter n with tilde,
+                                  U+00F1 ISOlat1 -->
+<!ENTITY ograve "&#242;"> <!-- latin small letter o with grave,
+                                  U+00F2 ISOlat1 -->
+<!ENTITY oacute "&#243;"> <!-- latin small letter o with acute,
+                                  U+00F3 ISOlat1 -->
+<!ENTITY ocirc  "&#244;"> <!-- latin small letter o with circumflex,
+                                  U+00F4 ISOlat1 -->
+<!ENTITY otilde "&#245;"> <!-- latin small letter o with tilde,
+                                  U+00F5 ISOlat1 -->
+<!ENTITY ouml   "&#246;"> <!-- latin small letter o with diaeresis,
+                                  U+00F6 ISOlat1 -->
+<!ENTITY divide "&#247;"> <!-- division sign, U+00F7 ISOnum -->
+<!ENTITY oslash "&#248;"> <!-- latin small letter o with stroke,
+                                  = latin small letter o slash,
+                                  U+00F8 ISOlat1 -->
+<!ENTITY ugrave "&#249;"> <!-- latin small letter u with grave,
+                                  U+00F9 ISOlat1 -->
+<!ENTITY uacute "&#250;"> <!-- latin small letter u with acute,
+                                  U+00FA ISOlat1 -->
+<!ENTITY ucirc  "&#251;"> <!-- latin small letter u with circumflex,
+                                  U+00FB ISOlat1 -->
+<!ENTITY uuml   "&#252;"> <!-- latin small letter u with diaeresis,
+                                  U+00FC ISOlat1 -->
+<!ENTITY yacute "&#253;"> <!-- latin small letter y with acute,
+                                  U+00FD ISOlat1 -->
+<!ENTITY thorn  "&#254;"> <!-- latin small letter thorn with,
+                                  U+00FE ISOlat1 -->
+<!ENTITY yuml   "&#255;"> <!-- latin small letter y with diaeresis,
+                                  U+00FF ISOlat1 -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/xhtml1.0/xhtml-special.ent	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,79 @@
+<!-- Special characters for HTML -->
+
+<!-- Character entity set. Typical invocation:
+     <!ENTITY % HTMLspecial PUBLIC
+        "-//W3C//ENTITIES Special for XHTML//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent">
+     %HTMLspecial;
+-->
+
+<!-- Portions (C) International Organization for Standardization 1986:
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+-->
+
+<!-- Relevant ISO entity set is given unless names are newly introduced.
+     New names (i.e., not in ISO 8879 list) do not clash with any
+     existing ISO 8879 entity names. ISO 10646 character numbers
+     are given for each character, in hex. values are decimal
+     conversions of the ISO 10646 values and refer to the document
+     character set. Names are Unicode names. 
+-->
+
+<!-- C0 Controls and Basic Latin -->
+<!ENTITY quot    "&#34;"> <!--  quotation mark = APL quote,
+                                    U+0022 ISOnum -->
+<!ENTITY amp     "&#38;#38;"> <!--  ampersand, U+0026 ISOnum -->
+<!ENTITY lt      "&#38;#60;"> <!--  less-than sign, U+003C ISOnum -->
+<!ENTITY gt      "&#62;"> <!--  greater-than sign, U+003E ISOnum -->
+<!ENTITY apos	 "&#39;"> <!--  apostrophe mark, U+0027 ISOnum -->
+
+<!-- Latin Extended-A -->
+<!ENTITY OElig   "&#338;"> <!--  latin capital ligature OE,
+                                    U+0152 ISOlat2 -->
+<!ENTITY oelig   "&#339;"> <!--  latin small ligature oe, U+0153 ISOlat2 -->
+<!-- ligature is a misnomer, this is a separate character in some languages -->
+<!ENTITY Scaron  "&#352;"> <!--  latin capital letter S with caron,
+                                    U+0160 ISOlat2 -->
+<!ENTITY scaron  "&#353;"> <!--  latin small letter s with caron,
+                                    U+0161 ISOlat2 -->
+<!ENTITY Yuml    "&#376;"> <!--  latin capital letter Y with diaeresis,
+                                    U+0178 ISOlat2 -->
+
+<!-- Spacing Modifier Letters -->
+<!ENTITY circ    "&#710;"> <!--  modifier letter circumflex accent,
+                                    U+02C6 ISOpub -->
+<!ENTITY tilde   "&#732;"> <!--  small tilde, U+02DC ISOdia -->
+
+<!-- General Punctuation -->
+<!ENTITY ensp    "&#8194;"> <!-- en space, U+2002 ISOpub -->
+<!ENTITY emsp    "&#8195;"> <!-- em space, U+2003 ISOpub -->
+<!ENTITY thinsp  "&#8201;"> <!-- thin space, U+2009 ISOpub -->
+<!ENTITY zwnj    "&#8204;"> <!-- zero width non-joiner,
+                                    U+200C NEW RFC 2070 -->
+<!ENTITY zwj     "&#8205;"> <!-- zero width joiner, U+200D NEW RFC 2070 -->
+<!ENTITY lrm     "&#8206;"> <!-- left-to-right mark, U+200E NEW RFC 2070 -->
+<!ENTITY rlm     "&#8207;"> <!-- right-to-left mark, U+200F NEW RFC 2070 -->
+<!ENTITY ndash   "&#8211;"> <!-- en dash, U+2013 ISOpub -->
+<!ENTITY mdash   "&#8212;"> <!-- em dash, U+2014 ISOpub -->
+<!ENTITY lsquo   "&#8216;"> <!-- left single quotation mark,
+                                    U+2018 ISOnum -->
+<!ENTITY rsquo   "&#8217;"> <!-- right single quotation mark,
+                                    U+2019 ISOnum -->
+<!ENTITY sbquo   "&#8218;"> <!-- single low-9 quotation mark, U+201A NEW -->
+<!ENTITY ldquo   "&#8220;"> <!-- left double quotation mark,
+                                    U+201C ISOnum -->
+<!ENTITY rdquo   "&#8221;"> <!-- right double quotation mark,
+                                    U+201D ISOnum -->
+<!ENTITY bdquo   "&#8222;"> <!-- double low-9 quotation mark, U+201E NEW -->
+<!ENTITY dagger  "&#8224;"> <!-- dagger, U+2020 ISOpub -->
+<!ENTITY Dagger  "&#8225;"> <!-- double dagger, U+2021 ISOpub -->
+<!ENTITY permil  "&#8240;"> <!-- per mille sign, U+2030 ISOtech -->
+<!ENTITY lsaquo  "&#8249;"> <!-- single left-pointing angle quotation mark,
+                                    U+2039 ISO proposed -->
+<!-- lsaquo is proposed but not yet ISO standardized -->
+<!ENTITY rsaquo  "&#8250;"> <!-- single right-pointing angle quotation mark,
+                                    U+203A ISO proposed -->
+<!-- rsaquo is proposed but not yet ISO standardized -->
+<!ENTITY euro   "&#8364;"> <!--  euro sign, U+20AC NEW -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/xhtml1.0/xhtml-symbol.ent	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,242 @@
+<!-- Mathematical, Greek and Symbolic characters for HTML -->
+
+<!-- Character entity set. Typical invocation:
+     <!ENTITY % HTMLsymbol PUBLIC
+        "-//W3C//ENTITIES Symbols for XHTML//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent">
+     %HTMLsymbol;
+-->
+
+<!-- Portions (C) International Organization for Standardization 1986:
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+-->
+
+<!-- Relevant ISO entity set is given unless names are newly introduced.
+     New names (i.e., not in ISO 8879 list) do not clash with any
+     existing ISO 8879 entity names. ISO 10646 character numbers
+     are given for each character, in hex. values are decimal
+     conversions of the ISO 10646 values and refer to the document
+     character set. Names are Unicode names. 
+-->
+
+<!-- Latin Extended-B -->
+<!ENTITY fnof     "&#402;"> <!-- latin small f with hook = function
+                                    = florin, U+0192 ISOtech -->
+
+<!-- Greek -->
+<!ENTITY Alpha    "&#913;"> <!-- greek capital letter alpha, U+0391 -->
+<!ENTITY Beta     "&#914;"> <!-- greek capital letter beta, U+0392 -->
+<!ENTITY Gamma    "&#915;"> <!-- greek capital letter gamma,
+                                    U+0393 ISOgrk3 -->
+<!ENTITY Delta    "&#916;"> <!-- greek capital letter delta,
+                                    U+0394 ISOgrk3 -->
+<!ENTITY Epsilon  "&#917;"> <!-- greek capital letter epsilon, U+0395 -->
+<!ENTITY Zeta     "&#918;"> <!-- greek capital letter zeta, U+0396 -->
+<!ENTITY Eta      "&#919;"> <!-- greek capital letter eta, U+0397 -->
+<!ENTITY Theta    "&#920;"> <!-- greek capital letter theta,
+                                    U+0398 ISOgrk3 -->
+<!ENTITY Iota     "&#921;"> <!-- greek capital letter iota, U+0399 -->
+<!ENTITY Kappa    "&#922;"> <!-- greek capital letter kappa, U+039A -->
+<!ENTITY Lambda   "&#923;"> <!-- greek capital letter lambda,
+                                    U+039B ISOgrk3 -->
+<!ENTITY Mu       "&#924;"> <!-- greek capital letter mu, U+039C -->
+<!ENTITY Nu       "&#925;"> <!-- greek capital letter nu, U+039D -->
+<!ENTITY Xi       "&#926;"> <!-- greek capital letter xi, U+039E ISOgrk3 -->
+<!ENTITY Omicron  "&#927;"> <!-- greek capital letter omicron, U+039F -->
+<!ENTITY Pi       "&#928;"> <!-- greek capital letter pi, U+03A0 ISOgrk3 -->
+<!ENTITY Rho      "&#929;"> <!-- greek capital letter rho, U+03A1 -->
+<!-- there is no Sigmaf, and no U+03A2 character either -->
+<!ENTITY Sigma    "&#931;"> <!-- greek capital letter sigma,
+                                    U+03A3 ISOgrk3 -->
+<!ENTITY Tau      "&#932;"> <!-- greek capital letter tau, U+03A4 -->
+<!ENTITY Upsilon  "&#933;"> <!-- greek capital letter upsilon,
+                                    U+03A5 ISOgrk3 -->
+<!ENTITY Phi      "&#934;"> <!-- greek capital letter phi,
+                                    U+03A6 ISOgrk3 -->
+<!ENTITY Chi      "&#935;"> <!-- greek capital letter chi, U+03A7 -->
+<!ENTITY Psi      "&#936;"> <!-- greek capital letter psi,
+                                    U+03A8 ISOgrk3 -->
+<!ENTITY Omega    "&#937;"> <!-- greek capital letter omega,
+                                    U+03A9 ISOgrk3 -->
+
+<!ENTITY alpha    "&#945;"> <!-- greek small letter alpha,
+                                    U+03B1 ISOgrk3 -->
+<!ENTITY beta     "&#946;"> <!-- greek small letter beta, U+03B2 ISOgrk3 -->
+<!ENTITY gamma    "&#947;"> <!-- greek small letter gamma,
+                                    U+03B3 ISOgrk3 -->
+<!ENTITY delta    "&#948;"> <!-- greek small letter delta,
+                                    U+03B4 ISOgrk3 -->
+<!ENTITY epsilon  "&#949;"> <!-- greek small letter epsilon,
+                                    U+03B5 ISOgrk3 -->
+<!ENTITY zeta     "&#950;"> <!-- greek small letter zeta, U+03B6 ISOgrk3 -->
+<!ENTITY eta      "&#951;"> <!-- greek small letter eta, U+03B7 ISOgrk3 -->
+<!ENTITY theta    "&#952;"> <!-- greek small letter theta,
+                                    U+03B8 ISOgrk3 -->
+<!ENTITY iota     "&#953;"> <!-- greek small letter iota, U+03B9 ISOgrk3 -->
+<!ENTITY kappa    "&#954;"> <!-- greek small letter kappa,
+                                    U+03BA ISOgrk3 -->
+<!ENTITY lambda   "&#955;"> <!-- greek small letter lambda,
+                                    U+03BB ISOgrk3 -->
+<!ENTITY mu       "&#956;"> <!-- greek small letter mu, U+03BC ISOgrk3 -->
+<!ENTITY nu       "&#957;"> <!-- greek small letter nu, U+03BD ISOgrk3 -->
+<!ENTITY xi       "&#958;"> <!-- greek small letter xi, U+03BE ISOgrk3 -->
+<!ENTITY omicron  "&#959;"> <!-- greek small letter omicron, U+03BF NEW -->
+<!ENTITY pi       "&#960;"> <!-- greek small letter pi, U+03C0 ISOgrk3 -->
+<!ENTITY rho      "&#961;"> <!-- greek small letter rho, U+03C1 ISOgrk3 -->
+<!ENTITY sigmaf   "&#962;"> <!-- greek small letter final sigma,
+                                    U+03C2 ISOgrk3 -->
+<!ENTITY sigma    "&#963;"> <!-- greek small letter sigma,
+                                    U+03C3 ISOgrk3 -->
+<!ENTITY tau      "&#964;"> <!-- greek small letter tau, U+03C4 ISOgrk3 -->
+<!ENTITY upsilon  "&#965;"> <!-- greek small letter upsilon,
+                                    U+03C5 ISOgrk3 -->
+<!ENTITY phi      "&#966;"> <!-- greek small letter phi, U+03C6 ISOgrk3 -->
+<!ENTITY chi      "&#967;"> <!-- greek small letter chi, U+03C7 ISOgrk3 -->
+<!ENTITY psi      "&#968;"> <!-- greek small letter psi, U+03C8 ISOgrk3 -->
+<!ENTITY omega    "&#969;"> <!-- greek small letter omega,
+                                    U+03C9 ISOgrk3 -->
+<!ENTITY thetasym "&#977;"> <!-- greek small letter theta symbol,
+                                    U+03D1 NEW -->
+<!ENTITY upsih    "&#978;"> <!-- greek upsilon with hook symbol,
+                                    U+03D2 NEW -->
+<!ENTITY piv      "&#982;"> <!-- greek pi symbol, U+03D6 ISOgrk3 -->
+
+<!-- General Punctuation -->
+<!ENTITY bull     "&#8226;"> <!-- bullet = black small circle,
+                                     U+2022 ISOpub  -->
+<!-- bullet is NOT the same as bullet operator, U+2219 -->
+<!ENTITY hellip   "&#8230;"> <!-- horizontal ellipsis = three dot leader,
+                                     U+2026 ISOpub  -->
+<!ENTITY prime    "&#8242;"> <!-- prime = minutes = feet, U+2032 ISOtech -->
+<!ENTITY Prime    "&#8243;"> <!-- double prime = seconds = inches,
+                                     U+2033 ISOtech -->
+<!ENTITY oline    "&#8254;"> <!-- overline = spacing overscore,
+                                     U+203E NEW -->
+<!ENTITY frasl    "&#8260;"> <!-- fraction slash, U+2044 NEW -->
+
+<!-- Letterlike Symbols -->
+<!ENTITY weierp   "&#8472;"> <!-- script capital P = power set
+                                     = Weierstrass p, U+2118 ISOamso -->
+<!ENTITY image    "&#8465;"> <!-- blackletter capital I = imaginary part,
+                                     U+2111 ISOamso -->
+<!ENTITY real     "&#8476;"> <!-- blackletter capital R = real part symbol,
+                                     U+211C ISOamso -->
+<!ENTITY trade    "&#8482;"> <!-- trade mark sign, U+2122 ISOnum -->
+<!ENTITY alefsym  "&#8501;"> <!-- alef symbol = first transfinite cardinal,
+                                     U+2135 NEW -->
+<!-- alef symbol is NOT the same as hebrew letter alef,
+     U+05D0 although the same glyph could be used to depict both characters -->
+
+<!-- Arrows -->
+<!ENTITY larr     "&#8592;"> <!-- leftwards arrow, U+2190 ISOnum -->
+<!ENTITY uarr     "&#8593;"> <!-- upwards arrow, U+2191 ISOnum-->
+<!ENTITY rarr     "&#8594;"> <!-- rightwards arrow, U+2192 ISOnum -->
+<!ENTITY darr     "&#8595;"> <!-- downwards arrow, U+2193 ISOnum -->
+<!ENTITY harr     "&#8596;"> <!-- left right arrow, U+2194 ISOamsa -->
+<!ENTITY crarr    "&#8629;"> <!-- downwards arrow with corner leftwards
+                                     = carriage return, U+21B5 NEW -->
+<!ENTITY lArr     "&#8656;"> <!-- leftwards double arrow, U+21D0 ISOtech -->
+<!-- Unicode does not say that lArr is the same as the 'is implied by' arrow
+    but also does not have any other character for that function. So ? lArr can
+    be used for 'is implied by' as ISOtech suggests -->
+<!ENTITY uArr     "&#8657;"> <!-- upwards double arrow, U+21D1 ISOamsa -->
+<!ENTITY rArr     "&#8658;"> <!-- rightwards double arrow,
+                                     U+21D2 ISOtech -->
+<!-- Unicode does not say this is the 'implies' character but does not have 
+     another character with this function so ?
+     rArr can be used for 'implies' as ISOtech suggests -->
+<!ENTITY dArr     "&#8659;"> <!-- downwards double arrow, U+21D3 ISOamsa -->
+<!ENTITY hArr     "&#8660;"> <!-- left right double arrow,
+                                     U+21D4 ISOamsa -->
+
+<!-- Mathematical Operators -->
+<!ENTITY forall   "&#8704;"> <!-- for all, U+2200 ISOtech -->
+<!ENTITY part     "&#8706;"> <!-- partial differential, U+2202 ISOtech  -->
+<!ENTITY exist    "&#8707;"> <!-- there exists, U+2203 ISOtech -->
+<!ENTITY empty    "&#8709;"> <!-- empty set = null set = diameter,
+                                     U+2205 ISOamso -->
+<!ENTITY nabla    "&#8711;"> <!-- nabla = backward difference,
+                                     U+2207 ISOtech -->
+<!ENTITY isin     "&#8712;"> <!-- element of, U+2208 ISOtech -->
+<!ENTITY notin    "&#8713;"> <!-- not an element of, U+2209 ISOtech -->
+<!ENTITY ni       "&#8715;"> <!-- contains as member, U+220B ISOtech -->
+<!-- should there be a more memorable name than 'ni'? -->
+<!ENTITY prod     "&#8719;"> <!-- n-ary product = product sign,
+                                     U+220F ISOamsb -->
+<!-- prod is NOT the same character as U+03A0 'greek capital letter pi' though
+     the same glyph might be used for both -->
+<!ENTITY sum      "&#8721;"> <!-- n-ary sumation, U+2211 ISOamsb -->
+<!-- sum is NOT the same character as U+03A3 'greek capital letter sigma'
+     though the same glyph might be used for both -->
+<!ENTITY minus    "&#8722;"> <!-- minus sign, U+2212 ISOtech -->
+<!ENTITY lowast   "&#8727;"> <!-- asterisk operator, U+2217 ISOtech -->
+<!ENTITY radic    "&#8730;"> <!-- square root = radical sign,
+                                     U+221A ISOtech -->
+<!ENTITY prop     "&#8733;"> <!-- proportional to, U+221D ISOtech -->
+<!ENTITY infin    "&#8734;"> <!-- infinity, U+221E ISOtech -->
+<!ENTITY ang      "&#8736;"> <!-- angle, U+2220 ISOamso -->
+<!ENTITY and      "&#8743;"> <!-- logical and = wedge, U+2227 ISOtech -->
+<!ENTITY or       "&#8744;"> <!-- logical or = vee, U+2228 ISOtech -->
+<!ENTITY cap      "&#8745;"> <!-- intersection = cap, U+2229 ISOtech -->
+<!ENTITY cup      "&#8746;"> <!-- union = cup, U+222A ISOtech -->
+<!ENTITY int      "&#8747;"> <!-- integral, U+222B ISOtech -->
+<!ENTITY there4   "&#8756;"> <!-- therefore, U+2234 ISOtech -->
+<!ENTITY sim      "&#8764;"> <!-- tilde operator = varies with = similar to,
+                                     U+223C ISOtech -->
+<!-- tilde operator is NOT the same character as the tilde, U+007E,
+     although the same glyph might be used to represent both  -->
+<!ENTITY cong     "&#8773;"> <!-- approximately equal to, U+2245 ISOtech -->
+<!ENTITY asymp    "&#8776;"> <!-- almost equal to = asymptotic to,
+                                     U+2248 ISOamsr -->
+<!ENTITY ne       "&#8800;"> <!-- not equal to, U+2260 ISOtech -->
+<!ENTITY equiv    "&#8801;"> <!-- identical to, U+2261 ISOtech -->
+<!ENTITY le       "&#8804;"> <!-- less-than or equal to, U+2264 ISOtech -->
+<!ENTITY ge       "&#8805;"> <!-- greater-than or equal to,
+                                     U+2265 ISOtech -->
+<!ENTITY sub      "&#8834;"> <!-- subset of, U+2282 ISOtech -->
+<!ENTITY sup      "&#8835;"> <!-- superset of, U+2283 ISOtech -->
+<!-- note that nsup, 'not a superset of, U+2283' is not covered by the Symbol 
+     font encoding and is not included. Should it be, for symmetry?
+     It is in ISOamsn  --> 
+<!ENTITY nsub     "&#8836;"> <!-- not a subset of, U+2284 ISOamsn -->
+<!ENTITY sube     "&#8838;"> <!-- subset of or equal to, U+2286 ISOtech -->
+<!ENTITY supe     "&#8839;"> <!-- superset of or equal to,
+                                     U+2287 ISOtech -->
+<!ENTITY oplus    "&#8853;"> <!-- circled plus = direct sum,
+                                     U+2295 ISOamsb -->
+<!ENTITY otimes   "&#8855;"> <!-- circled times = vector product,
+                                     U+2297 ISOamsb -->
+<!ENTITY perp     "&#8869;"> <!-- up tack = orthogonal to = perpendicular,
+                                     U+22A5 ISOtech -->
+<!ENTITY sdot     "&#8901;"> <!-- dot operator, U+22C5 ISOamsb -->
+<!-- dot operator is NOT the same character as U+00B7 middle dot -->
+
+<!-- Miscellaneous Technical -->
+<!ENTITY lceil    "&#8968;"> <!-- left ceiling = apl upstile,
+                                     U+2308 ISOamsc  -->
+<!ENTITY rceil    "&#8969;"> <!-- right ceiling, U+2309 ISOamsc  -->
+<!ENTITY lfloor   "&#8970;"> <!-- left floor = apl downstile,
+                                     U+230A ISOamsc  -->
+<!ENTITY rfloor   "&#8971;"> <!-- right floor, U+230B ISOamsc  -->
+<!ENTITY lang     "&#9001;"> <!-- left-pointing angle bracket = bra,
+                                     U+2329 ISOtech -->
+<!-- lang is NOT the same character as U+003C 'less than' 
+     or U+2039 'single left-pointing angle quotation mark' -->
+<!ENTITY rang     "&#9002;"> <!-- right-pointing angle bracket = ket,
+                                     U+232A ISOtech -->
+<!-- rang is NOT the same character as U+003E 'greater than' 
+     or U+203A 'single right-pointing angle quotation mark' -->
+
+<!-- Geometric Shapes -->
+<!ENTITY loz      "&#9674;"> <!-- lozenge, U+25CA ISOpub -->
+
+<!-- Miscellaneous Symbols -->
+<!ENTITY spades   "&#9824;"> <!-- black spade suit, U+2660 ISOpub -->
+<!-- black here seems to mean filled as opposed to hollow -->
+<!ENTITY clubs    "&#9827;"> <!-- black club suit = shamrock,
+                                     U+2663 ISOpub -->
+<!ENTITY hearts   "&#9829;"> <!-- black heart suit = valentine,
+                                     U+2665 ISOpub -->
+<!ENTITY diams    "&#9830;"> <!-- black diamond suit, U+2666 ISOpub -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/xhtml1.0/xhtml1-frameset.dtd	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,1225 @@
+<!--
+   Extensible HTML version 1.0 Frameset DTD
+
+   This is the same as HTML 4.0 Frameset except for
+   changes due to the differences between XML and SGML.
+
+   Namespace = http://www.w3.org/1999/xhtml
+
+   For further information, see: http://www.w3.org/TR/xhtml1
+
+   Copyright (c) 1998-2000 W3C (MIT, INRIA, Keio),
+   All Rights Reserved. 
+
+   This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+   PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
+   SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"
+
+   $Revision: 1.1 $
+   $Date: 2002-04-08 21:19:32 $
+
+-->
+
+<!--================ Character mnemonic entities =========================-->
+
+<!ENTITY % HTMLlat1 PUBLIC
+   "-//W3C//ENTITIES Latin 1 for XHTML//EN"
+   "xhtml-lat1.ent">
+%HTMLlat1;
+
+<!ENTITY % HTMLsymbol PUBLIC
+   "-//W3C//ENTITIES Symbols for XHTML//EN"
+   "xhtml-symbol.ent">
+%HTMLsymbol;
+
+<!ENTITY % HTMLspecial PUBLIC
+   "-//W3C//ENTITIES Special for XHTML//EN"
+   "xhtml-special.ent">
+%HTMLspecial;
+
+<!--================== Imported Names ====================================-->
+
+<!ENTITY % ContentType "CDATA">
+    <!-- media type, as per [RFC2045] -->
+
+<!ENTITY % ContentTypes "CDATA">
+    <!-- comma-separated list of media types, as per [RFC2045] -->
+
+<!ENTITY % Charset "CDATA">
+    <!-- a character encoding, as per [RFC2045] -->
+
+<!ENTITY % Charsets "CDATA">
+    <!-- a space separated list of character encodings, as per [RFC2045] -->
+
+<!ENTITY % LanguageCode "NMTOKEN">
+    <!-- a language code, as per [RFC1766] -->
+
+<!ENTITY % Character "CDATA">
+    <!-- a single character from [ISO10646] -->
+
+<!ENTITY % Number "CDATA">
+    <!-- one or more digits -->
+
+<!ENTITY % LinkTypes "CDATA">
+    <!-- space-separated list of link types -->
+
+<!ENTITY % MediaDesc "CDATA">
+    <!-- single or comma-separated list of media descriptors -->
+
+<!ENTITY % URI "CDATA">
+    <!-- a Uniform Resource Identifier, see [RFC2396] -->
+
+<!ENTITY % UriList "CDATA">
+    <!-- a space separated list of Uniform Resource Identifiers -->
+
+<!ENTITY % Datetime "CDATA">
+    <!-- date and time information. ISO date format -->
+
+<!ENTITY % Script "CDATA">
+    <!-- script expression -->
+
+<!ENTITY % StyleSheet "CDATA">
+    <!-- style sheet data -->
+
+<!ENTITY % Text "CDATA">
+    <!-- used for titles etc. -->
+
+<!ENTITY % FrameTarget "NMTOKEN">
+    <!-- render in this frame -->
+
+<!ENTITY % Length "CDATA">
+    <!-- nn for pixels or nn% for percentage length -->
+
+<!ENTITY % MultiLength "CDATA">
+    <!-- pixel, percentage, or relative -->
+
+<!ENTITY % MultiLengths "CDATA">
+    <!-- comma-separated list of MultiLength -->
+
+<!ENTITY % Pixels "CDATA">
+    <!-- integer representing length in pixels -->
+
+<!-- these are used for image maps -->
+
+<!ENTITY % Shape "(rect|circle|poly|default)">
+
+<!ENTITY % Coords "CDATA">
+    <!-- comma separated list of lengths -->
+
+<!-- used for object, applet, img, input and iframe -->
+<!ENTITY % ImgAlign "(top|middle|bottom|left|right)">
+
+<!-- a color using sRGB: #RRGGBB as Hex values -->
+<!ENTITY % Color "CDATA">
+
+<!-- There are also 16 widely known color names with their sRGB values:
+
+    Black  = #000000    Green  = #008000
+    Silver = #C0C0C0    Lime   = #00FF00
+    Gray   = #808080    Olive  = #808000
+    White  = #FFFFFF    Yellow = #FFFF00
+    Maroon = #800000    Navy   = #000080
+    Red    = #FF0000    Blue   = #0000FF
+    Purple = #800080    Teal   = #008080
+    Fuchsia= #FF00FF    Aqua   = #00FFFF
+-->
+
+<!--=================== Generic Attributes ===============================-->
+
+<!-- core attributes common to most elements
+  id       document-wide unique id
+  class    space separated list of classes
+  style    associated style info
+  title    advisory title/amplification
+-->
+<!ENTITY % coreattrs
+ "id          ID             #IMPLIED
+  class       CDATA          #IMPLIED
+  style       %StyleSheet;   #IMPLIED
+  title       %Text;         #IMPLIED"
+  >
+
+<!-- internationalization attributes
+  lang        language code (backwards compatible)
+  xml:lang    language code (as per XML 1.0 spec)
+  dir         direction for weak/neutral text
+-->
+<!ENTITY % i18n
+ "lang        %LanguageCode; #IMPLIED
+  xml:lang    %LanguageCode; #IMPLIED
+  dir         (ltr|rtl)      #IMPLIED"
+  >
+
+<!-- attributes for common UI events
+  onclick     a pointer button was clicked
+  ondblclick  a pointer button was double clicked
+  onmousedown a pointer button was pressed down
+  onmouseup   a pointer button was released
+  onmousemove a pointer was moved onto the element
+  onmouseout  a pointer was moved away from the element
+  onkeypress  a key was pressed and released
+  onkeydown   a key was pressed down
+  onkeyup     a key was released
+-->
+<!ENTITY % events
+ "onclick     %Script;       #IMPLIED
+  ondblclick  %Script;       #IMPLIED
+  onmousedown %Script;       #IMPLIED
+  onmouseup   %Script;       #IMPLIED
+  onmouseover %Script;       #IMPLIED
+  onmousemove %Script;       #IMPLIED
+  onmouseout  %Script;       #IMPLIED
+  onkeypress  %Script;       #IMPLIED
+  onkeydown   %Script;       #IMPLIED
+  onkeyup     %Script;       #IMPLIED"
+  >
+
+<!-- attributes for elements that can get the focus
+  accesskey   accessibility key character
+  tabindex    position in tabbing order
+  onfocus     the element got the focus
+  onblur      the element lost the focus
+-->
+<!ENTITY % focus
+ "accesskey   %Character;    #IMPLIED
+  tabindex    %Number;       #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED"
+  >
+
+<!ENTITY % attrs "%coreattrs; %i18n; %events;">
+
+<!-- text alignment for p, div, h1-h6. The default is
+     align="left" for ltr headings, "right" for rtl -->
+
+<!ENTITY % TextAlign "align (left|center|right) #IMPLIED">
+
+<!--=================== Text Elements ====================================-->
+
+<!ENTITY % special
+   "br | span | bdo |object | applet | img | map | iframe">
+
+<!ENTITY % fontstyle "tt | i | b | big | small | u
+                      | s | strike |font | basefont">
+
+<!ENTITY % phrase "em | strong | dfn | code | q | sub | sup |
+                   samp | kbd | var | cite | abbr | acronym">
+
+<!ENTITY % inline.forms "input | select | textarea | label | button">
+
+<!-- these can occur at block or inline level -->
+<!ENTITY % misc "ins | del | script | noscript">
+
+<!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">
+
+<!-- %Inline; covers inline or "text-level" elements -->
+<!ENTITY % Inline "(#PCDATA | %inline; | %misc;)*">
+
+<!--================== Block level elements ==============================-->
+
+<!ENTITY % heading "h1|h2|h3|h4|h5|h6">
+<!ENTITY % lists "ul | ol | dl | menu | dir">
+<!ENTITY % blocktext "pre | hr | blockquote | address | center">
+
+<!ENTITY % block
+    "p | %heading; | div | %lists; | %blocktext; | isindex | fieldset | table">
+
+<!ENTITY % Block "(%block; | form | %misc;)*">
+
+<!-- %Flow; mixes Block and Inline and is used for list items etc. -->
+<!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc;)*">
+
+<!--================== Content models for exclusions =====================-->
+
+<!-- a elements use %Inline; excluding a -->
+
+<!ENTITY % a.content
+   "(#PCDATA | %special; | %fontstyle; | %phrase; | %inline.forms; | %misc;)*">
+
+<!-- pre uses %Inline excluding img, object, applet, big, small,
+     sub, sup, font, or basefont -->
+
+<!ENTITY % pre.content
+   "(#PCDATA | a | br | span | bdo | map | tt | i | b | u | s |
+      %phrase; | %inline.forms;)*">
+
+<!-- form uses %Flow; excluding form -->
+
+<!ENTITY % form.content "(#PCDATA | %block; | %inline; | %misc;)*">
+
+<!-- button uses %Flow; but excludes a, form, form controls, iframe -->
+
+<!ENTITY % button.content
+   "(#PCDATA | p | %heading; | div | %lists; | %blocktext; |
+      table | br | span | bdo | object | applet | img | map |
+      %fontstyle; | %phrase; | %misc;)*">
+
+<!--================ Document Structure ==================================-->
+
+<!-- the namespace URI designates the document profile -->
+
+<!ELEMENT html (head, frameset)>
+<!ATTLIST html
+  %i18n;
+  xmlns       %URI;          #FIXED 'http://www.w3.org/1999/xhtml'
+  >
+
+<!--================ Document Head =======================================-->
+
+<!ENTITY % head.misc "(script|style|meta|link|object|isindex)*">
+
+<!-- content model is %head.misc; combined with a single
+     title and an optional base element in any order -->
+
+<!ELEMENT head (%head.misc;,
+     ((title, %head.misc;, (base, %head.misc;)?) |
+      (base, %head.misc;, (title, %head.misc;))))>
+
+<!ATTLIST head
+  %i18n;
+  profile     %URI;          #IMPLIED
+  >
+
+<!-- The title element is not considered part of the flow of text.
+       It should be displayed, for example as the page header or
+       window title. Exactly one title is required per document.
+    -->
+<!ELEMENT title (#PCDATA)>
+<!ATTLIST title %i18n;>
+
+<!-- document base URI -->
+
+<!ELEMENT base EMPTY>
+<!ATTLIST base
+  href        %URI;          #IMPLIED
+  target      %FrameTarget;  #IMPLIED
+  >
+
+<!-- generic metainformation -->
+<!ELEMENT meta EMPTY>
+<!ATTLIST meta
+  %i18n;
+  http-equiv  CDATA          #IMPLIED
+  name        CDATA          #IMPLIED
+  content     CDATA          #REQUIRED
+  scheme      CDATA          #IMPLIED
+  >
+
+<!--
+  Relationship values can be used in principle:
+
+   a) for document specific toolbars/menus when used
+      with the link element in document head e.g.
+        start, contents, previous, next, index, end, help
+   b) to link to a separate style sheet (rel="stylesheet")
+   c) to make a link to a script (rel="script")
+   d) by stylesheets to control how collections of
+      html nodes are rendered into printed documents
+   e) to make a link to a printable version of this document
+      e.g. a PostScript or PDF version (rel="alternate" media="print")
+-->
+
+<!ELEMENT link EMPTY>
+<!ATTLIST link
+  %attrs;
+  charset     %Charset;      #IMPLIED
+  href        %URI;          #IMPLIED
+  hreflang    %LanguageCode; #IMPLIED
+  type        %ContentType;  #IMPLIED
+  rel         %LinkTypes;    #IMPLIED
+  rev         %LinkTypes;    #IMPLIED
+  media       %MediaDesc;    #IMPLIED
+  target      %FrameTarget;  #IMPLIED
+  >
+
+<!-- style info, which may include CDATA sections -->
+<!ELEMENT style (#PCDATA)>
+<!ATTLIST style
+  %i18n;
+  type        %ContentType;  #REQUIRED
+  media       %MediaDesc;    #IMPLIED
+  title       %Text;         #IMPLIED
+  xml:space   (preserve)     #FIXED 'preserve'
+  >
+
+<!-- script statements, which may include CDATA sections -->
+<!ELEMENT script (#PCDATA)>
+<!ATTLIST script
+  charset     %Charset;      #IMPLIED
+  type        %ContentType;  #REQUIRED
+  language    CDATA          #IMPLIED
+  src         %URI;          #IMPLIED
+  defer       (defer)        #IMPLIED
+  xml:space   (preserve)     #FIXED 'preserve'
+  >
+
+<!-- alternate content container for non script-based rendering -->
+
+<!ELEMENT noscript %Flow;>
+<!ATTLIST noscript
+  %attrs;
+  >
+
+<!--======================= Frames =======================================-->
+
+<!-- only one noframes element permitted per document -->
+
+<!ELEMENT frameset (frameset|frame|noframes)*>
+<!ATTLIST frameset
+  %coreattrs;
+  rows        %MultiLengths; #IMPLIED
+  cols        %MultiLengths; #IMPLIED
+  onload      %Script;       #IMPLIED
+  onunload    %Script;       #IMPLIED
+  >
+
+<!-- reserved frame names start with "_" otherwise starts with letter -->
+
+<!-- tiled window within frameset -->
+
+<!ELEMENT frame EMPTY>
+<!ATTLIST frame
+  %coreattrs;
+  longdesc    %URI;          #IMPLIED
+  name        NMTOKEN        #IMPLIED
+  src         %URI;          #IMPLIED
+  frameborder (1|0)          "1"
+  marginwidth %Pixels;       #IMPLIED
+  marginheight %Pixels;      #IMPLIED
+  noresize    (noresize)     #IMPLIED
+  scrolling   (yes|no|auto)  "auto"
+  >
+
+<!-- inline subwindow -->
+
+<!ELEMENT iframe %Flow;>
+<!ATTLIST iframe
+  %coreattrs;
+  longdesc    %URI;          #IMPLIED
+  name        NMTOKEN        #IMPLIED
+  src         %URI;          #IMPLIED
+  frameborder (1|0)          "1"
+  marginwidth %Pixels;       #IMPLIED
+  marginheight %Pixels;      #IMPLIED
+  scrolling   (yes|no|auto)  "auto"
+  align       %ImgAlign;     #IMPLIED
+  height      %Length;       #IMPLIED
+  width       %Length;       #IMPLIED
+  >
+
+<!-- alternate content container for non frame-based rendering -->
+
+<!ELEMENT noframes (body)>
+<!ATTLIST noframes
+  %attrs;
+  >
+
+<!--=================== Document Body ====================================-->
+
+<!ELEMENT body %Flow;>
+<!ATTLIST body
+  %attrs;
+  onload      %Script;       #IMPLIED
+  onunload    %Script;       #IMPLIED
+  background  %URI;          #IMPLIED
+  bgcolor     %Color;        #IMPLIED
+  text        %Color;        #IMPLIED
+  link        %Color;        #IMPLIED
+  vlink       %Color;        #IMPLIED
+  alink       %Color;        #IMPLIED
+  >
+
+<!ELEMENT div %Flow;>  <!-- generic language/style container -->
+<!ATTLIST div
+  %attrs;
+  %TextAlign;
+  >
+
+<!--=================== Paragraphs =======================================-->
+
+<!ELEMENT p %Inline;>
+<!ATTLIST p
+  %attrs;
+  %TextAlign;
+  >
+
+<!--=================== Headings =========================================-->
+
+<!--
+  There are six levels of headings from h1 (the most important)
+  to h6 (the least important).
+-->
+
+<!ELEMENT h1  %Inline;>
+<!ATTLIST h1
+  %attrs;
+  %TextAlign;
+  >
+
+<!ELEMENT h2 %Inline;>
+<!ATTLIST h2
+  %attrs;
+  %TextAlign;
+  >
+
+<!ELEMENT h3 %Inline;>
+<!ATTLIST h3
+  %attrs;
+  %TextAlign;
+  >
+
+<!ELEMENT h4 %Inline;>
+<!ATTLIST h4
+  %attrs;
+  %TextAlign;
+  >
+
+<!ELEMENT h5 %Inline;>
+<!ATTLIST h5
+  %attrs;
+  %TextAlign;
+  >
+
+<!ELEMENT h6 %Inline;>
+<!ATTLIST h6
+  %attrs;
+  %TextAlign;
+  >
+
+<!--=================== Lists ============================================-->
+
+<!-- Unordered list bullet styles -->
+
+<!ENTITY % ULStyle "(disc|square|circle)">
+
+<!-- Unordered list -->
+
+<!ELEMENT ul (li)+>
+<!ATTLIST ul
+  %attrs;
+  type        %ULStyle;     #IMPLIED
+  compact     (compact)     #IMPLIED
+  >
+
+<!-- Ordered list numbering style
+
+    1   arabic numbers      1, 2, 3, ...
+    a   lower alpha         a, b, c, ...
+    A   upper alpha         A, B, C, ...
+    i   lower roman         i, ii, iii, ...
+    I   upper roman         I, II, III, ...
+
+    The style is applied to the sequence number which by default
+    is reset to 1 for the first list item in an ordered list.
+-->
+<!ENTITY % OLStyle "CDATA">
+
+<!-- Ordered (numbered) list -->
+
+<!ELEMENT ol (li)+>
+<!ATTLIST ol
+  %attrs;
+  type        %OLStyle;      #IMPLIED
+  compact     (compact)      #IMPLIED
+  start       %Number;       #IMPLIED
+  >
+
+<!-- single column list (DEPRECATED) --> 
+<!ELEMENT menu (li)+>
+<!ATTLIST menu
+  %attrs;
+  compact     (compact)     #IMPLIED
+  >
+
+<!-- multiple column list (DEPRECATED) --> 
+<!ELEMENT dir (li)+>
+<!ATTLIST dir
+  %attrs;
+  compact     (compact)     #IMPLIED
+  >
+
+<!-- LIStyle is constrained to: "(%ULStyle;|%OLStyle;)" -->
+<!ENTITY % LIStyle "CDATA">
+
+<!-- list item -->
+
+<!ELEMENT li %Flow;>
+<!ATTLIST li
+  %attrs;
+  type        %LIStyle;      #IMPLIED
+  value       %Number;       #IMPLIED
+  >
+
+<!-- definition lists - dt for term, dd for its definition -->
+
+<!ELEMENT dl (dt|dd)+>
+<!ATTLIST dl
+  %attrs;
+  compact     (compact)      #IMPLIED
+  >
+
+<!ELEMENT dt %Inline;>
+<!ATTLIST dt
+  %attrs;
+  >
+
+<!ELEMENT dd %Flow;>
+<!ATTLIST dd
+  %attrs;
+  >
+
+<!--=================== Address ==========================================-->
+
+<!-- information on author -->
+
+<!ELEMENT address %Inline;>
+<!ATTLIST address
+  %attrs;
+  >
+
+<!--=================== Horizontal Rule ==================================-->
+
+<!ELEMENT hr EMPTY>
+<!ATTLIST hr
+  %attrs;
+  align       (left|center|right) #IMPLIED
+  noshade     (noshade)      #IMPLIED
+  size        %Pixels;       #IMPLIED
+  width       %Length;       #IMPLIED
+  >
+
+<!--=================== Preformatted Text ================================-->
+
+<!-- content is %Inline; excluding 
+        "img|object|applet|big|small|sub|sup|font|basefont" -->
+
+<!ELEMENT pre %pre.content;>
+<!ATTLIST pre
+  %attrs;
+  width       %Number;      #IMPLIED
+  xml:space   (preserve)    #FIXED 'preserve'
+  >
+
+<!--=================== Block-like Quotes ================================-->
+
+<!ELEMENT blockquote %Flow;>
+<!ATTLIST blockquote
+  %attrs;
+  cite        %URI;          #IMPLIED
+  >
+
+<!--=================== Text alignment ===================================-->
+
+<!-- center content -->
+<!ELEMENT center %Flow;>
+<!ATTLIST center
+  %attrs;
+  >
+
+<!--=================== Inserted/Deleted Text ============================-->
+
+
+<!--
+  ins/del are allowed in block and inline content, but its
+  inappropriate to include block content within an ins element
+  occurring in inline content.
+-->
+<!ELEMENT ins %Flow;>
+<!ATTLIST ins
+  %attrs;
+  cite        %URI;          #IMPLIED
+  datetime    %Datetime;     #IMPLIED
+  >
+
+<!ELEMENT del %Flow;>
+<!ATTLIST del
+  %attrs;
+  cite        %URI;          #IMPLIED
+  datetime    %Datetime;     #IMPLIED
+  >
+
+<!--================== The Anchor Element ================================-->
+
+<!-- content is %Inline; except that anchors shouldn't be nested -->
+
+<!ELEMENT a %a.content;>
+<!ATTLIST a
+  %attrs;
+  charset     %Charset;      #IMPLIED
+  type        %ContentType;  #IMPLIED
+  name        NMTOKEN        #IMPLIED
+  href        %URI;          #IMPLIED
+  hreflang    %LanguageCode; #IMPLIED
+  rel         %LinkTypes;    #IMPLIED
+  rev         %LinkTypes;    #IMPLIED
+  accesskey   %Character;    #IMPLIED
+  shape       %Shape;        "rect"
+  coords      %Coords;       #IMPLIED
+  tabindex    %Number;       #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED
+  target      %FrameTarget;  #IMPLIED
+  >
+
+<!--===================== Inline Elements ================================-->
+
+<!ELEMENT span %Inline;> <!-- generic language/style container -->
+<!ATTLIST span
+  %attrs;
+  >
+
+<!ELEMENT bdo %Inline;>  <!-- I18N BiDi over-ride -->
+<!ATTLIST bdo
+  %coreattrs;
+  %events;
+  lang        %LanguageCode; #IMPLIED
+  xml:lang    %LanguageCode; #IMPLIED
+  dir         (ltr|rtl)      #REQUIRED
+  >
+
+<!ELEMENT br EMPTY>   <!-- forced line break -->
+<!ATTLIST br
+  %coreattrs;
+  clear       (left|all|right|none) "none"
+  >
+
+<!ELEMENT em %Inline;>   <!-- emphasis -->
+<!ATTLIST em %attrs;>
+
+<!ELEMENT strong %Inline;>   <!-- strong emphasis -->
+<!ATTLIST strong %attrs;>
+
+<!ELEMENT dfn %Inline;>   <!-- definitional -->
+<!ATTLIST dfn %attrs;>
+
+<!ELEMENT code %Inline;>   <!-- program code -->
+<!ATTLIST code %attrs;>
+
+<!ELEMENT samp %Inline;>   <!-- sample -->
+<!ATTLIST samp %attrs;>
+
+<!ELEMENT kbd %Inline;>  <!-- something user would type -->
+<!ATTLIST kbd %attrs;>
+
+<!ELEMENT var %Inline;>   <!-- variable -->
+<!ATTLIST var %attrs;>
+
+<!ELEMENT cite %Inline;>   <!-- citation -->
+<!ATTLIST cite %attrs;>
+
+<!ELEMENT abbr %Inline;>   <!-- abbreviation -->
+<!ATTLIST abbr %attrs;>
+
+<!ELEMENT acronym %Inline;>   <!-- acronym -->
+<!ATTLIST acronym %attrs;>
+
+<!ELEMENT q %Inline;>   <!-- inlined quote -->
+<!ATTLIST q
+   %attrs;
+  cite        %URI;          #IMPLIED
+   >
+
+<!ELEMENT sub %Inline;> <!-- subscript -->
+<!ATTLIST sub %attrs;>
+
+<!ELEMENT sup %Inline;> <!-- superscript -->
+<!ATTLIST sup %attrs;>
+
+<!ELEMENT tt %Inline;>   <!-- fixed pitch font -->
+<!ATTLIST tt %attrs;>
+
+<!ELEMENT i %Inline;>   <!-- italic font -->
+<!ATTLIST i %attrs;>
+
+<!ELEMENT b %Inline;>   <!-- bold font -->
+<!ATTLIST b %attrs;>
+
+<!ELEMENT big %Inline;>   <!-- bigger font -->
+<!ATTLIST big %attrs;>
+
+<!ELEMENT small %Inline;>   <!-- smaller font -->
+<!ATTLIST small %attrs;>
+
+<!ELEMENT u %Inline;>   <!-- underline -->
+<!ATTLIST u %attrs;>
+
+<!ELEMENT s %Inline;>   <!-- strike-through -->
+<!ATTLIST s %attrs;>
+
+<!ELEMENT strike %Inline;>   <!-- strike-through -->
+<!ATTLIST strike %attrs;>
+
+<!ELEMENT basefont EMPTY>  <!-- base font size -->
+<!ATTLIST basefont
+  id          ID             #IMPLIED
+  size        CDATA          #REQUIRED
+  color       %Color;        #IMPLIED
+  face        CDATA          #IMPLIED
+  >
+
+<!ELEMENT font %Inline;> <!-- local change to font -->
+<!ATTLIST font
+  %coreattrs;
+  %i18n;
+  size        CDATA          #IMPLIED
+  color       %Color;        #IMPLIED
+  face        CDATA          #IMPLIED
+  >
+
+<!--==================== Object ======================================-->
+<!--
+  object is used to embed objects as part of HTML pages.
+  param elements should precede other content. Parameters
+  can also be expressed as attribute/value pairs on the
+  object element itself when brevity is desired.
+-->
+
+<!ELEMENT object (#PCDATA | param | %block; | form |%inline; | %misc;)*>
+<!ATTLIST object
+  %attrs;
+  declare     (declare)      #IMPLIED
+  classid     %URI;          #IMPLIED
+  codebase    %URI;          #IMPLIED
+  data        %URI;          #IMPLIED
+  type        %ContentType;  #IMPLIED
+  codetype    %ContentType;  #IMPLIED
+  archive     %UriList;      #IMPLIED
+  standby     %Text;         #IMPLIED
+  height      %Length;       #IMPLIED
+  width       %Length;       #IMPLIED
+  usemap      %URI;          #IMPLIED
+  name        NMTOKEN        #IMPLIED
+  tabindex    %Number;       #IMPLIED
+  align       %ImgAlign;     #IMPLIED
+  border      %Pixels;       #IMPLIED
+  hspace      %Pixels;       #IMPLIED
+  vspace      %Pixels;       #IMPLIED
+  >
+
+<!--
+  param is used to supply a named property value.
+  In XML it would seem natural to follow RDF and support an
+  abbreviated syntax where the param elements are replaced
+  by attribute value pairs on the object start tag.
+-->
+<!ELEMENT param EMPTY>
+<!ATTLIST param
+  id          ID             #IMPLIED
+  name        CDATA          #REQUIRED
+  value       CDATA          #IMPLIED
+  valuetype   (data|ref|object) "data"
+  type        %ContentType;  #IMPLIED
+  >
+
+<!--=================== Java applet ==================================-->
+<!--
+  One of code or object attributes must be present.
+  Place param elements before other content.
+-->
+<!ELEMENT applet (#PCDATA | param | %block; | form | %inline; | %misc;)*>
+<!ATTLIST applet
+  %coreattrs;
+  codebase    %URI;          #IMPLIED
+  archive     CDATA          #IMPLIED
+  code        CDATA          #IMPLIED
+  object      CDATA          #IMPLIED
+  alt         %Text;         #IMPLIED
+  name        NMTOKEN        #IMPLIED
+  width       %Length;       #REQUIRED
+  height      %Length;       #REQUIRED
+  align       %ImgAlign;     #IMPLIED
+  hspace      %Pixels;       #IMPLIED
+  vspace      %Pixels;       #IMPLIED
+  >
+
+<!--=================== Images ===========================================-->
+
+<!--
+   To avoid accessibility problems for people who aren't
+   able to see the image, you should provide a text
+   description using the alt and longdesc attributes.
+   In addition, avoid the use of server-side image maps.
+-->
+
+<!ELEMENT img EMPTY>
+<!ATTLIST img
+  %attrs;
+  src         %URI;          #REQUIRED
+  alt         %Text;         #REQUIRED
+  name        NMTOKEN        #IMPLIED
+  longdesc    %URI;          #IMPLIED
+  height      %Length;       #IMPLIED
+  width       %Length;       #IMPLIED
+  usemap      %URI;          #IMPLIED
+  ismap       (ismap)        #IMPLIED
+  align       %ImgAlign;     #IMPLIED
+  border      %Pixels;       #IMPLIED
+  hspace      %Pixels;       #IMPLIED
+  vspace      %Pixels;       #IMPLIED
+  >
+
+<!-- usemap points to a map element which may be in this document
+  or an external document, although the latter is not widely supported -->
+
+<!--================== Client-side image maps ============================-->
+
+<!-- These can be placed in the same document or grouped in a
+     separate document although this isn't yet widely supported -->
+
+<!ELEMENT map ((%block; | form | %misc;)+ | area+)>
+<!ATTLIST map
+  %i18n;
+  %events;
+  id          ID             #REQUIRED
+  class       CDATA          #IMPLIED
+  style       %StyleSheet;   #IMPLIED
+  title       %Text;         #IMPLIED
+  name        NMTOKEN        #IMPLIED
+  >
+
+<!ELEMENT area EMPTY>
+<!ATTLIST area
+  %attrs;
+  shape       %Shape;        "rect"
+  coords      %Coords;       #IMPLIED
+  href        %URI;          #IMPLIED
+  nohref      (nohref)       #IMPLIED
+  alt         %Text;         #REQUIRED
+  tabindex    %Number;       #IMPLIED
+  accesskey   %Character;    #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED
+  target      %FrameTarget;  #IMPLIED
+  >
+
+<!--================ Forms ===============================================-->
+
+<!ELEMENT form %form.content;>   <!-- forms shouldn't be nested -->
+
+<!ATTLIST form
+  %attrs;
+  action      %URI;          #REQUIRED
+  method      (get|post)     "get"
+  name        NMTOKEN        #IMPLIED
+  enctype     %ContentType;  "application/x-www-form-urlencoded"
+  onsubmit    %Script;       #IMPLIED
+  onreset     %Script;       #IMPLIED
+  accept      %ContentTypes; #IMPLIED
+  accept-charset %Charsets;  #IMPLIED
+  target      %FrameTarget;  #IMPLIED
+  >
+
+<!--
+  Each label must not contain more than ONE field
+  Label elements shouldn't be nested.
+-->
+<!ELEMENT label %Inline;>
+<!ATTLIST label
+  %attrs;
+  for         IDREF          #IMPLIED
+  accesskey   %Character;    #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED
+  >
+
+<!ENTITY % InputType
+  "(text | password | checkbox |
+    radio | submit | reset |
+    file | hidden | image | button)"
+   >
+
+<!-- the name attribute is required for all but submit & reset -->
+
+<!ELEMENT input EMPTY>     <!-- form control -->
+<!ATTLIST input
+  %attrs;
+  type        %InputType;    "text"
+  name        CDATA          #IMPLIED
+  value       CDATA          #IMPLIED
+  checked     (checked)      #IMPLIED
+  disabled    (disabled)     #IMPLIED
+  readonly    (readonly)     #IMPLIED
+  size        CDATA          #IMPLIED
+  maxlength   %Number;       #IMPLIED
+  src         %URI;          #IMPLIED
+  alt         CDATA          #IMPLIED
+  usemap      %URI;          #IMPLIED
+  tabindex    %Number;       #IMPLIED
+  accesskey   %Character;    #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED
+  onselect    %Script;       #IMPLIED
+  onchange    %Script;       #IMPLIED
+  accept      %ContentTypes; #IMPLIED
+  align       %ImgAlign;     #IMPLIED
+  >
+
+<!ELEMENT select (optgroup|option)+>  <!-- option selector -->
+<!ATTLIST select
+  %attrs;
+  name        CDATA          #IMPLIED
+  size        %Number;       #IMPLIED
+  multiple    (multiple)     #IMPLIED
+  disabled    (disabled)     #IMPLIED
+  tabindex    %Number;       #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED
+  onchange    %Script;       #IMPLIED
+  >
+
+<!ELEMENT optgroup (option)+>   <!-- option group -->
+<!ATTLIST optgroup
+  %attrs;
+  disabled    (disabled)     #IMPLIED
+  label       %Text;         #REQUIRED
+  >
+
+<!ELEMENT option (#PCDATA)>     <!-- selectable choice -->
+<!ATTLIST option
+  %attrs;
+  selected    (selected)     #IMPLIED
+  disabled    (disabled)     #IMPLIED
+  label       %Text;         #IMPLIED
+  value       CDATA          #IMPLIED
+  >
+
+<!ELEMENT textarea (#PCDATA)>     <!-- multi-line text field -->
+<!ATTLIST textarea
+  %attrs;
+  name        CDATA          #IMPLIED
+  rows        %Number;       #REQUIRED
+  cols        %Number;       #REQUIRED
+  disabled    (disabled)     #IMPLIED
+  readonly    (readonly)     #IMPLIED
+  tabindex    %Number;       #IMPLIED
+  accesskey   %Character;    #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED
+  onselect    %Script;       #IMPLIED
+  onchange    %Script;       #IMPLIED
+  >
+
+<!--
+  The fieldset element is used to group form fields.
+  Only one legend element should occur in the content
+  and if present should only be preceded by whitespace.
+-->
+<!ELEMENT fieldset (#PCDATA | legend | %block; | form | %inline; | %misc;)*>
+<!ATTLIST fieldset
+  %attrs;
+  >
+
+<!ENTITY % LAlign "(top|bottom|left|right)">
+
+<!ELEMENT legend %Inline;>     <!-- fieldset label -->
+<!ATTLIST legend
+  %attrs;
+  accesskey   %Character;    #IMPLIED
+  align       %LAlign;       #IMPLIED
+  >
+
+<!--
+ Content is %Flow; excluding a, form, form controls, iframe
+--> 
+<!ELEMENT button %button.content;>  <!-- push button -->
+<!ATTLIST button
+  %attrs;
+  name        CDATA          #IMPLIED
+  value       CDATA          #IMPLIED
+  type        (button|submit|reset) "submit"
+  disabled    (disabled)     #IMPLIED
+  tabindex    %Number;       #IMPLIED
+  accesskey   %Character;    #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED
+  >
+
+<!-- single-line text input control (DEPRECATED) -->
+<!ELEMENT isindex EMPTY>
+<!ATTLIST isindex
+  %coreattrs;
+  %i18n;
+  prompt      %Text;         #IMPLIED
+  >
+
+<!--======================= Tables =======================================-->
+
+<!-- Derived from IETF HTML table standard, see [RFC1942] -->
+
+<!--
+ The border attribute sets the thickness of the frame around the
+ table. The default units are screen pixels.
+
+ The frame attribute specifies which parts of the frame around
+ the table should be rendered. The values are not the same as
+ CALS to avoid a name clash with the valign attribute.
+-->
+<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">
+
+<!--
+ The rules attribute defines which rules to draw between cells:
+
+ If rules is absent then assume:
+     "none" if border is absent or border="0" otherwise "all"
+-->
+
+<!ENTITY % TRules "(none | groups | rows | cols | all)">
+  
+<!-- horizontal placement of table relative to document -->
+<!ENTITY % TAlign "(left|center|right)">
+
+<!-- horizontal alignment attributes for cell contents
+
+  char        alignment char, e.g. char=":"
+  charoff     offset for alignment char
+-->
+<!ENTITY % cellhalign
+  "align      (left|center|right|justify|char) #IMPLIED
+   char       %Character;    #IMPLIED
+   charoff    %Length;       #IMPLIED"
+  >
+
+<!-- vertical alignment attributes for cell contents -->
+<!ENTITY % cellvalign
+  "valign     (top|middle|bottom|baseline) #IMPLIED"
+  >
+
+<!ELEMENT table
+     (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>
+<!ELEMENT caption  %Inline;>
+<!ELEMENT thead    (tr)+>
+<!ELEMENT tfoot    (tr)+>
+<!ELEMENT tbody    (tr)+>
+<!ELEMENT colgroup (col)*>
+<!ELEMENT col      EMPTY>
+<!ELEMENT tr       (th|td)+>
+<!ELEMENT th       %Flow;>
+<!ELEMENT td       %Flow;>
+
+<!ATTLIST table
+  %attrs;
+  summary     %Text;         #IMPLIED
+  width       %Length;       #IMPLIED
+  border      %Pixels;       #IMPLIED
+  frame       %TFrame;       #IMPLIED
+  rules       %TRules;       #IMPLIED
+  cellspacing %Length;       #IMPLIED
+  cellpadding %Length;       #IMPLIED
+  align       %TAlign;       #IMPLIED
+  bgcolor     %Color;        #IMPLIED
+  >
+
+<!ENTITY % CAlign "(top|bottom|left|right)">
+
+<!ATTLIST caption
+  %attrs;
+  align       %CAlign;       #IMPLIED
+  >
+
+<!--
+colgroup groups a set of col elements. It allows you to group
+several semantically related columns together.
+-->
+<!ATTLIST colgroup
+  %attrs;
+  span        %Number;       "1"
+  width       %MultiLength;  #IMPLIED
+  %cellhalign;
+  %cellvalign;
+  >
+
+<!--
+ col elements define the alignment properties for cells in
+ one or more columns.
+
+ The width attribute specifies the width of the columns, e.g.
+
+     width=64        width in screen pixels
+     width=0.5*      relative width of 0.5
+
+ The span attribute causes the attributes of one
+ col element to apply to more than one column.
+-->
+<!ATTLIST col
+  %attrs;
+  span        %Number;       "1"
+  width       %MultiLength;  #IMPLIED
+  %cellhalign;
+  %cellvalign;
+  >
+
+<!--
+    Use thead to duplicate headers when breaking table
+    across page boundaries, or for static headers when
+    tbody sections are rendered in scrolling panel.
+
+    Use tfoot to duplicate footers when breaking table
+    across page boundaries, or for static footers when
+    tbody sections are rendered in scrolling panel.
+
+    Use multiple tbody sections when rules are needed
+    between groups of table rows.
+-->
+<!ATTLIST thead
+  %attrs;
+  %cellhalign;
+  %cellvalign;
+  >
+
+<!ATTLIST tfoot
+  %attrs;
+  %cellhalign;
+  %cellvalign;
+  >
+
+<!ATTLIST tbody
+  %attrs;
+  %cellhalign;
+  %cellvalign;
+  >
+
+<!ATTLIST tr
+  %attrs;
+  %cellhalign;
+  %cellvalign;
+  bgcolor     %Color;        #IMPLIED
+  >
+
+<!-- Scope is simpler than headers attribute for common tables -->
+<!ENTITY % Scope "(row|col|rowgroup|colgroup)">
+
+<!-- th is for headers, td for data and for cells acting as both -->
+
+<!ATTLIST th
+  %attrs;
+  abbr        %Text;         #IMPLIED
+  axis        CDATA          #IMPLIED
+  headers     IDREFS         #IMPLIED
+  scope       %Scope;        #IMPLIED
+  rowspan     %Number;       "1"
+  colspan     %Number;       "1"
+  %cellhalign;
+  %cellvalign;
+  nowrap      (nowrap)       #IMPLIED
+  bgcolor     %Color;        #IMPLIED
+  width       %Pixels;       #IMPLIED
+  height      %Pixels;       #IMPLIED
+  >
+
+<!ATTLIST td
+  %attrs;
+  abbr        %Text;         #IMPLIED
+  axis        CDATA          #IMPLIED
+  headers     IDREFS         #IMPLIED
+  scope       %Scope;        #IMPLIED
+  rowspan     %Number;       "1"
+  colspan     %Number;       "1"
+  %cellhalign;
+  %cellvalign;
+  nowrap      (nowrap)       #IMPLIED
+  bgcolor     %Color;        #IMPLIED
+  width       %Pixels;       #IMPLIED
+  height      %Pixels;       #IMPLIED
+  >
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/xhtml1.0/xhtml1-strict.dtd	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,988 @@
+<!--
+   Extensible HTML version 1.0 Strict DTD
+
+   This is the same as HTML 4.0 Strict except for
+   changes due to the differences between XML and SGML.
+
+   Namespace = http://www.w3.org/1999/xhtml
+
+   For further information, see: http://www.w3.org/TR/xhtml1
+
+   Copyright (c) 1998-2000 W3C (MIT, INRIA, Keio),
+   All Rights Reserved. 
+
+   This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+   PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+   SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
+
+   $Revision: 1.1 $
+   $Date: 2002-04-08 21:19:32 $
+
+-->
+
+<!--================ Character mnemonic entities =========================-->
+
+<!ENTITY % HTMLlat1 PUBLIC
+   "-//W3C//ENTITIES Latin 1 for XHTML//EN"
+   "xhtml-lat1.ent">
+%HTMLlat1;
+
+<!ENTITY % HTMLsymbol PUBLIC
+   "-//W3C//ENTITIES Symbols for XHTML//EN"
+   "xhtml-symbol.ent">
+%HTMLsymbol;
+
+<!ENTITY % HTMLspecial PUBLIC
+   "-//W3C//ENTITIES Special for XHTML//EN"
+   "xhtml-special.ent">
+%HTMLspecial;
+
+<!--================== Imported Names ====================================-->
+
+<!ENTITY % ContentType "CDATA">
+    <!-- media type, as per [RFC2045] -->
+
+<!ENTITY % ContentTypes "CDATA">
+    <!-- comma-separated list of media types, as per [RFC2045] -->
+
+<!ENTITY % Charset "CDATA">
+    <!-- a character encoding, as per [RFC2045] -->
+
+<!ENTITY % Charsets "CDATA">
+    <!-- a space separated list of character encodings, as per [RFC2045] -->
+
+<!ENTITY % LanguageCode "NMTOKEN">
+    <!-- a language code, as per [RFC1766] -->
+
+<!ENTITY % Character "CDATA">
+    <!-- a single character from [ISO10646] -->
+
+<!ENTITY % Number "CDATA">
+    <!-- one or more digits -->
+
+<!ENTITY % LinkTypes "CDATA">
+    <!-- space-separated list of link types -->
+
+<!ENTITY % MediaDesc "CDATA">
+    <!-- single or comma-separated list of media descriptors -->
+
+<!ENTITY % URI "CDATA">
+    <!-- a Uniform Resource Identifier, see [RFC2396] -->
+
+<!ENTITY % UriList "CDATA">
+    <!-- a space separated list of Uniform Resource Identifiers -->
+
+<!ENTITY % Datetime "CDATA">
+    <!-- date and time information. ISO date format -->
+
+<!ENTITY % Script "CDATA">
+    <!-- script expression -->
+
+<!ENTITY % StyleSheet "CDATA">
+    <!-- style sheet data -->
+
+<!ENTITY % Text "CDATA">
+    <!-- used for titles etc. -->
+
+<!ENTITY % FrameTarget "NMTOKEN">
+    <!-- render in this frame -->
+
+<!ENTITY % Length "CDATA">
+    <!-- nn for pixels or nn% for percentage length -->
+
+<!ENTITY % MultiLength "CDATA">
+    <!-- pixel, percentage, or relative -->
+
+<!ENTITY % MultiLengths "CDATA">
+    <!-- comma-separated list of MultiLength -->
+
+<!ENTITY % Pixels "CDATA">
+    <!-- integer representing length in pixels -->
+
+<!-- these are used for image maps -->
+
+<!ENTITY % Shape "(rect|circle|poly|default)">
+
+<!ENTITY % Coords "CDATA">
+    <!-- comma separated list of lengths -->
+
+<!--=================== Generic Attributes ===============================-->
+
+<!-- core attributes common to most elements
+  id       document-wide unique id
+  class    space separated list of classes
+  style    associated style info
+  title    advisory title/amplification
+-->
+<!ENTITY % coreattrs
+ "id          ID             #IMPLIED
+  class       CDATA          #IMPLIED
+  style       %StyleSheet;   #IMPLIED
+  title       %Text;         #IMPLIED"
+  >
+
+<!-- internationalization attributes
+  lang        language code (backwards compatible)
+  xml:lang    language code (as per XML 1.0 spec)
+  dir         direction for weak/neutral text
+-->
+<!ENTITY % i18n
+ "lang        %LanguageCode; #IMPLIED
+  xml:lang    %LanguageCode; #IMPLIED
+  dir         (ltr|rtl)      #IMPLIED"
+  >
+
+<!-- attributes for common UI events
+  onclick     a pointer button was clicked
+  ondblclick  a pointer button was double clicked
+  onmousedown a pointer button was pressed down
+  onmouseup   a pointer button was released
+  onmousemove a pointer was moved onto the element
+  onmouseout  a pointer was moved away from the element
+  onkeypress  a key was pressed and released
+  onkeydown   a key was pressed down
+  onkeyup     a key was released
+-->
+<!ENTITY % events
+ "onclick     %Script;       #IMPLIED
+  ondblclick  %Script;       #IMPLIED
+  onmousedown %Script;       #IMPLIED
+  onmouseup   %Script;       #IMPLIED
+  onmouseover %Script;       #IMPLIED
+  onmousemove %Script;       #IMPLIED
+  onmouseout  %Script;       #IMPLIED
+  onkeypress  %Script;       #IMPLIED
+  onkeydown   %Script;       #IMPLIED
+  onkeyup     %Script;       #IMPLIED"
+  >
+
+<!-- attributes for elements that can get the focus
+  accesskey   accessibility key character
+  tabindex    position in tabbing order
+  onfocus     the element got the focus
+  onblur      the element lost the focus
+-->
+<!ENTITY % focus
+ "accesskey   %Character;    #IMPLIED
+  tabindex    %Number;       #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED"
+  >
+
+<!ENTITY % attrs "%coreattrs; %i18n; %events;">
+
+<!--=================== Text Elements ====================================-->
+
+<!ENTITY % special
+   "br | span | bdo | object | img | map">
+
+<!ENTITY % fontstyle "tt | i | b | big | small">
+
+<!ENTITY % phrase "em | strong | dfn | code | q | sub | sup |
+                   samp | kbd | var | cite | abbr | acronym">
+
+<!ENTITY % inline.forms "input | select | textarea | label | button">
+
+<!-- these can occur at block or inline level -->
+<!ENTITY % misc "ins | del | script | noscript">
+
+<!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">
+
+<!-- %Inline; covers inline or "text-level" elements -->
+<!ENTITY % Inline "(#PCDATA | %inline; | %misc;)*">
+
+<!--================== Block level elements ==============================-->
+
+<!ENTITY % heading "h1|h2|h3|h4|h5|h6">
+<!ENTITY % lists "ul | ol | dl">
+<!ENTITY % blocktext "pre | hr | blockquote | address">
+
+<!ENTITY % block
+     "p | %heading; | div | %lists; | %blocktext; | fieldset | table">
+
+<!ENTITY % Block "(%block; | form | %misc;)*">
+
+<!-- %Flow; mixes Block and Inline and is used for list items etc. -->
+<!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc;)*">
+
+<!--================== Content models for exclusions =====================-->
+
+<!-- a elements use %Inline; excluding a -->
+
+<!ENTITY % a.content
+   "(#PCDATA | %special; | %fontstyle; | %phrase; | %inline.forms; | %misc;)*">
+
+<!-- pre uses %Inline excluding img, object, big, small, sup or sup -->
+
+<!ENTITY % pre.content
+   "(#PCDATA | a | br | span | bdo | map | tt | i | b |
+      %phrase; | %inline.forms;)*">
+
+<!-- form uses %Block; excluding form -->
+
+<!ENTITY % form.content "(%block; | %misc;)*">
+
+<!-- button uses %Flow; but excludes a, form and form controls -->
+
+<!ENTITY % button.content
+   "(#PCDATA | p | %heading; | div | %lists; | %blocktext; |
+    table | %special; | %fontstyle; | %phrase; | %misc;)*">
+
+<!--================ Document Structure ==================================-->
+
+<!-- the namespace URI designates the document profile -->
+
+<!ELEMENT html (head, body)>
+<!ATTLIST html
+  %i18n;
+  xmlns       %URI;          #FIXED 'http://www.w3.org/1999/xhtml'
+  >
+
+<!--================ Document Head =======================================-->
+
+<!ENTITY % head.misc "(script|style|meta|link|object)*">
+
+<!-- content model is %head.misc; combined with a single
+     title and an optional base element in any order -->
+
+<!ELEMENT head (%head.misc;,
+     ((title, %head.misc;, (base, %head.misc;)?) |
+      (base, %head.misc;, (title, %head.misc;))))>
+
+<!ATTLIST head
+  %i18n;
+  profile     %URI;          #IMPLIED
+  >
+
+<!-- The title element is not considered part of the flow of text.
+       It should be displayed, for example as the page header or
+       window title. Exactly one title is required per document.
+    -->
+<!ELEMENT title (#PCDATA)>
+<!ATTLIST title %i18n;>
+
+<!-- document base URI -->
+
+<!ELEMENT base EMPTY>
+<!ATTLIST base
+  href        %URI;          #IMPLIED
+  >
+
+<!-- generic metainformation -->
+<!ELEMENT meta EMPTY>
+<!ATTLIST meta
+  %i18n;
+  http-equiv  CDATA          #IMPLIED
+  name        CDATA          #IMPLIED
+  content     CDATA          #REQUIRED
+  scheme      CDATA          #IMPLIED
+  >
+
+<!--
+  Relationship values can be used in principle:
+
+   a) for document specific toolbars/menus when used
+      with the link element in document head e.g.
+        start, contents, previous, next, index, end, help
+   b) to link to a separate style sheet (rel="stylesheet")
+   c) to make a link to a script (rel="script")
+   d) by stylesheets to control how collections of
+      html nodes are rendered into printed documents
+   e) to make a link to a printable version of this document
+      e.g. a PostScript or PDF version (rel="alternate" media="print")
+-->
+
+<!ELEMENT link EMPTY>
+<!ATTLIST link
+  %attrs;
+  charset     %Charset;      #IMPLIED
+  href        %URI;          #IMPLIED
+  hreflang    %LanguageCode; #IMPLIED
+  type        %ContentType;  #IMPLIED
+  rel         %LinkTypes;    #IMPLIED
+  rev         %LinkTypes;    #IMPLIED
+  media       %MediaDesc;    #IMPLIED
+  >
+
+<!-- style info, which may include CDATA sections -->
+<!ELEMENT style (#PCDATA)>
+<!ATTLIST style
+  %i18n;
+  type        %ContentType;  #REQUIRED
+  media       %MediaDesc;    #IMPLIED
+  title       %Text;         #IMPLIED
+  xml:space   (preserve)     #FIXED 'preserve'
+  >
+
+<!-- script statements, which may include CDATA sections -->
+<!ELEMENT script (#PCDATA)>
+<!ATTLIST script
+  charset     %Charset;      #IMPLIED
+  type        %ContentType;  #REQUIRED
+  src         %URI;          #IMPLIED
+  defer       (defer)        #IMPLIED
+  xml:space   (preserve)     #FIXED 'preserve'
+  >
+
+<!-- alternate content container for non script-based rendering -->
+
+<!ELEMENT noscript %Block;>
+<!ATTLIST noscript
+  %attrs;
+  >
+
+<!--=================== Document Body ====================================-->
+
+<!ELEMENT body %Block;>
+<!ATTLIST body
+  %attrs;
+  onload          %Script;   #IMPLIED
+  onunload        %Script;   #IMPLIED
+  >
+
+<!ELEMENT div %Flow;>  <!-- generic language/style container -->
+<!ATTLIST div
+  %attrs;
+  >
+
+<!--=================== Paragraphs =======================================-->
+
+<!ELEMENT p %Inline;>
+<!ATTLIST p
+  %attrs;
+  >
+
+<!--=================== Headings =========================================-->
+
+<!--
+  There are six levels of headings from h1 (the most important)
+  to h6 (the least important).
+-->
+
+<!ELEMENT h1  %Inline;>
+<!ATTLIST h1
+   %attrs;
+   >
+
+<!ELEMENT h2 %Inline;>
+<!ATTLIST h2
+   %attrs;
+   >
+
+<!ELEMENT h3 %Inline;>
+<!ATTLIST h3
+   %attrs;
+   >
+
+<!ELEMENT h4 %Inline;>
+<!ATTLIST h4
+   %attrs;
+   >
+
+<!ELEMENT h5 %Inline;>
+<!ATTLIST h5
+   %attrs;
+   >
+
+<!ELEMENT h6 %Inline;>
+<!ATTLIST h6
+   %attrs;
+   >
+
+<!--=================== Lists ============================================-->
+
+<!-- Unordered list -->
+
+<!ELEMENT ul (li)+>
+<!ATTLIST ul
+  %attrs;
+  >
+
+<!-- Ordered (numbered) list -->
+
+<!ELEMENT ol (li)+>
+<!ATTLIST ol
+  %attrs;
+  >
+
+<!-- list item -->
+
+<!ELEMENT li %Flow;>
+<!ATTLIST li
+  %attrs;
+  >
+
+<!-- definition lists - dt for term, dd for its definition -->
+
+<!ELEMENT dl (dt|dd)+>
+<!ATTLIST dl
+  %attrs;
+  >
+
+<!ELEMENT dt %Inline;>
+<!ATTLIST dt
+  %attrs;
+  >
+
+<!ELEMENT dd %Flow;>
+<!ATTLIST dd
+  %attrs;
+  >
+
+<!--=================== Address ==========================================-->
+
+<!-- information on author -->
+
+<!ELEMENT address %Inline;>
+<!ATTLIST address
+  %attrs;
+  >
+
+<!--=================== Horizontal Rule ==================================-->
+
+<!ELEMENT hr EMPTY>
+<!ATTLIST hr
+  %attrs;
+  >
+
+<!--=================== Preformatted Text ================================-->
+
+<!-- content is %Inline; excluding "img|object|big|small|sub|sup" -->
+
+<!ELEMENT pre %pre.content;>
+<!ATTLIST pre
+  %attrs;
+  xml:space (preserve) #FIXED 'preserve'
+  >
+
+<!--=================== Block-like Quotes ================================-->
+
+<!ELEMENT blockquote %Block;>
+<!ATTLIST blockquote
+  %attrs;
+  cite        %URI;          #IMPLIED
+  >
+
+<!--=================== Inserted/Deleted Text ============================-->
+
+<!--
+  ins/del are allowed in block and inline content, but its
+  inappropriate to include block content within an ins element
+  occurring in inline content.
+-->
+<!ELEMENT ins %Flow;>
+<!ATTLIST ins
+  %attrs;
+  cite        %URI;          #IMPLIED
+  datetime    %Datetime;     #IMPLIED
+  >
+
+<!ELEMENT del %Flow;>
+<!ATTLIST del
+  %attrs;
+  cite        %URI;          #IMPLIED
+  datetime    %Datetime;     #IMPLIED
+  >
+
+<!--================== The Anchor Element ================================-->
+
+<!-- content is %Inline; except that anchors shouldn't be nested -->
+
+<!ELEMENT a %a.content;>
+<!ATTLIST a
+  %attrs;
+  charset     %Charset;      #IMPLIED
+  type        %ContentType;  #IMPLIED
+  name        NMTOKEN        #IMPLIED
+  href        %URI;          #IMPLIED
+  hreflang    %LanguageCode; #IMPLIED
+  rel         %LinkTypes;    #IMPLIED
+  rev         %LinkTypes;    #IMPLIED
+  accesskey   %Character;    #IMPLIED
+  shape       %Shape;        "rect"
+  coords      %Coords;       #IMPLIED
+  tabindex    %Number;       #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED
+  >
+
+<!--===================== Inline Elements ================================-->
+
+<!ELEMENT span %Inline;> <!-- generic language/style container -->
+<!ATTLIST span
+  %attrs;
+  >
+
+<!ELEMENT bdo %Inline;>  <!-- I18N BiDi over-ride -->
+<!ATTLIST bdo
+  %coreattrs;
+  %events;
+  lang        %LanguageCode; #IMPLIED
+  xml:lang    %LanguageCode; #IMPLIED
+  dir         (ltr|rtl)      #REQUIRED
+  >
+
+<!ELEMENT br EMPTY>   <!-- forced line break -->
+<!ATTLIST br
+  %coreattrs;
+  >
+
+<!ELEMENT em %Inline;>   <!-- emphasis -->
+<!ATTLIST em %attrs;>
+
+<!ELEMENT strong %Inline;>   <!-- strong emphasis -->
+<!ATTLIST strong %attrs;>
+
+<!ELEMENT dfn %Inline;>   <!-- definitional -->
+<!ATTLIST dfn %attrs;>
+
+<!ELEMENT code %Inline;>   <!-- program code -->
+<!ATTLIST code %attrs;>
+
+<!ELEMENT samp %Inline;>   <!-- sample -->
+<!ATTLIST samp %attrs;>
+
+<!ELEMENT kbd %Inline;>  <!-- something user would type -->
+<!ATTLIST kbd %attrs;>
+
+<!ELEMENT var %Inline;>   <!-- variable -->
+<!ATTLIST var %attrs;>
+
+<!ELEMENT cite %Inline;>   <!-- citation -->
+<!ATTLIST cite %attrs;>
+
+<!ELEMENT abbr %Inline;>   <!-- abbreviation -->
+<!ATTLIST abbr %attrs;>
+
+<!ELEMENT acronym %Inline;>   <!-- acronym -->
+<!ATTLIST acronym %attrs;>
+
+<!ELEMENT q %Inline;>   <!-- inlined quote -->
+<!ATTLIST q
+  %attrs;
+  cite        %URI;          #IMPLIED
+  >
+
+<!ELEMENT sub %Inline;> <!-- subscript -->
+<!ATTLIST sub %attrs;>
+
+<!ELEMENT sup %Inline;> <!-- superscript -->
+<!ATTLIST sup %attrs;>
+
+<!ELEMENT tt %Inline;>   <!-- fixed pitch font -->
+<!ATTLIST tt %attrs;>
+
+<!ELEMENT i %Inline;>   <!-- italic font -->
+<!ATTLIST i %attrs;>
+
+<!ELEMENT b %Inline;>   <!-- bold font -->
+<!ATTLIST b %attrs;>
+
+<!ELEMENT big %Inline;>   <!-- bigger font -->
+<!ATTLIST big %attrs;>
+
+<!ELEMENT small %Inline;>   <!-- smaller font -->
+<!ATTLIST small %attrs;>
+
+<!--==================== Object ======================================-->
+<!--
+  object is used to embed objects as part of HTML pages.
+  param elements should precede other content. Parameters
+  can also be expressed as attribute/value pairs on the
+  object element itself when brevity is desired.
+-->
+
+<!ELEMENT object (#PCDATA | param | %block; | form | %inline; | %misc;)*>
+<!ATTLIST object
+  %attrs;
+  declare     (declare)      #IMPLIED
+  classid     %URI;          #IMPLIED
+  codebase    %URI;          #IMPLIED
+  data        %URI;          #IMPLIED
+  type        %ContentType;  #IMPLIED
+  codetype    %ContentType;  #IMPLIED
+  archive     %UriList;      #IMPLIED
+  standby     %Text;         #IMPLIED
+  height      %Length;       #IMPLIED
+  width       %Length;       #IMPLIED
+  usemap      %URI;          #IMPLIED
+  name        NMTOKEN        #IMPLIED
+  tabindex    %Number;       #IMPLIED
+  >
+
+<!--
+  param is used to supply a named property value.
+  In XML it would seem natural to follow RDF and support an
+  abbreviated syntax where the param elements are replaced
+  by attribute value pairs on the object start tag.
+-->
+<!ELEMENT param EMPTY>
+<!ATTLIST param
+  id          ID             #IMPLIED
+  name        CDATA          #IMPLIED
+  value       CDATA          #IMPLIED
+  valuetype   (data|ref|object) "data"
+  type        %ContentType;  #IMPLIED
+  >
+
+<!--=================== Images ===========================================-->
+
+<!--
+   To avoid accessibility problems for people who aren't
+   able to see the image, you should provide a text
+   description using the alt and longdesc attributes.
+   In addition, avoid the use of server-side image maps.
+   Note that in this DTD there is no name attribute. That
+   is only available in the transitional and frameset DTD.
+-->
+
+<!ELEMENT img EMPTY>
+<!ATTLIST img
+  %attrs;
+  src         %URI;          #REQUIRED
+  alt         %Text;         #REQUIRED
+  longdesc    %URI;          #IMPLIED
+  height      %Length;       #IMPLIED
+  width       %Length;       #IMPLIED
+  usemap      %URI;          #IMPLIED
+  ismap       (ismap)        #IMPLIED
+  >
+
+<!-- usemap points to a map element which may be in this document
+  or an external document, although the latter is not widely supported -->
+
+<!--================== Client-side image maps ============================-->
+
+<!-- These can be placed in the same document or grouped in a
+     separate document although this isn't yet widely supported -->
+
+<!ELEMENT map ((%block; | form | %misc;)+ | area+)>
+<!ATTLIST map
+  %i18n;
+  %events;
+  id          ID             #REQUIRED
+  class       CDATA          #IMPLIED
+  style       %StyleSheet;   #IMPLIED
+  title       %Text;         #IMPLIED
+  name        NMTOKEN        #IMPLIED
+  >
+
+<!ELEMENT area EMPTY>
+<!ATTLIST area
+  %attrs;
+  shape       %Shape;        "rect"
+  coords      %Coords;       #IMPLIED
+  href        %URI;          #IMPLIED
+  nohref      (nohref)       #IMPLIED
+  alt         %Text;         #REQUIRED
+  tabindex    %Number;       #IMPLIED
+  accesskey   %Character;    #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED
+  >
+
+<!--================ Forms ===============================================-->
+<!ELEMENT form %form.content;>   <!-- forms shouldn't be nested -->
+
+<!ATTLIST form
+  %attrs;
+  action      %URI;          #REQUIRED
+  method      (get|post)     "get"
+  enctype     %ContentType;  "application/x-www-form-urlencoded"
+  onsubmit    %Script;       #IMPLIED
+  onreset     %Script;       #IMPLIED
+  accept      %ContentTypes; #IMPLIED
+  accept-charset %Charsets;  #IMPLIED
+  >
+
+<!--
+  Each label must not contain more than ONE field
+  Label elements shouldn't be nested.
+-->
+<!ELEMENT label %Inline;>
+<!ATTLIST label
+  %attrs;
+  for         IDREF          #IMPLIED
+  accesskey   %Character;    #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED
+  >
+
+<!ENTITY % InputType
+  "(text | password | checkbox |
+    radio | submit | reset |
+    file | hidden | image | button)"
+   >
+
+<!-- the name attribute is required for all but submit & reset -->
+
+<!ELEMENT input EMPTY>     <!-- form control -->
+<!ATTLIST input
+  %attrs;
+  type        %InputType;    "text"
+  name        CDATA          #IMPLIED
+  value       CDATA          #IMPLIED
+  checked     (checked)      #IMPLIED
+  disabled    (disabled)     #IMPLIED
+  readonly    (readonly)     #IMPLIED
+  size        CDATA          #IMPLIED
+  maxlength   %Number;       #IMPLIED
+  src         %URI;          #IMPLIED
+  alt         CDATA          #IMPLIED
+  usemap      %URI;          #IMPLIED
+  tabindex    %Number;       #IMPLIED
+  accesskey   %Character;    #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED
+  onselect    %Script;       #IMPLIED
+  onchange    %Script;       #IMPLIED
+  accept      %ContentTypes; #IMPLIED
+  >
+
+<!ELEMENT select (optgroup|option)+>  <!-- option selector -->
+<!ATTLIST select
+  %attrs;
+  name        CDATA          #IMPLIED
+  size        %Number;       #IMPLIED
+  multiple    (multiple)     #IMPLIED
+  disabled    (disabled)     #IMPLIED
+  tabindex    %Number;       #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED
+  onchange    %Script;       #IMPLIED
+  >
+
+<!ELEMENT optgroup (option)+>   <!-- option group -->
+<!ATTLIST optgroup
+  %attrs;
+  disabled    (disabled)     #IMPLIED
+  label       %Text;         #REQUIRED
+  >
+
+<!ELEMENT option (#PCDATA)>     <!-- selectable choice -->
+<!ATTLIST option
+  %attrs;
+  selected    (selected)     #IMPLIED
+  disabled    (disabled)     #IMPLIED
+  label       %Text;         #IMPLIED
+  value       CDATA          #IMPLIED
+  >
+
+<!ELEMENT textarea (#PCDATA)>     <!-- multi-line text field -->
+<!ATTLIST textarea
+  %attrs;
+  name        CDATA          #IMPLIED
+  rows        %Number;       #REQUIRED
+  cols        %Number;       #REQUIRED
+  disabled    (disabled)     #IMPLIED
+  readonly    (readonly)     #IMPLIED
+  tabindex    %Number;       #IMPLIED
+  accesskey   %Character;    #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED
+  onselect    %Script;       #IMPLIED
+  onchange    %Script;       #IMPLIED
+  >
+
+<!--
+  The fieldset element is used to group form fields.
+  Only one legend element should occur in the content
+  and if present should only be preceded by whitespace.
+-->
+<!ELEMENT fieldset (#PCDATA | legend | %block; | form | %inline; | %misc;)*>
+<!ATTLIST fieldset
+  %attrs;
+  >
+
+<!ELEMENT legend %Inline;>     <!-- fieldset label -->
+<!ATTLIST legend
+  %attrs;
+  accesskey   %Character;    #IMPLIED
+  >
+
+<!--
+ Content is %Flow; excluding a, form and form controls
+--> 
+<!ELEMENT button %button.content;>  <!-- push button -->
+<!ATTLIST button
+  %attrs;
+  name        CDATA          #IMPLIED
+  value       CDATA          #IMPLIED
+  type        (button|submit|reset) "submit"
+  disabled    (disabled)     #IMPLIED
+  tabindex    %Number;       #IMPLIED
+  accesskey   %Character;    #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED
+  >
+
+<!--======================= Tables =======================================-->
+
+<!-- Derived from IETF HTML table standard, see [RFC1942] -->
+
+<!--
+ The border attribute sets the thickness of the frame around the
+ table. The default units are screen pixels.
+
+ The frame attribute specifies which parts of the frame around
+ the table should be rendered. The values are not the same as
+ CALS to avoid a name clash with the valign attribute.
+-->
+<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">
+
+<!--
+ The rules attribute defines which rules to draw between cells:
+
+ If rules is absent then assume:
+     "none" if border is absent or border="0" otherwise "all"
+-->
+
+<!ENTITY % TRules "(none | groups | rows | cols | all)">
+  
+<!-- horizontal placement of table relative to document -->
+<!ENTITY % TAlign "(left|center|right)">
+
+<!-- horizontal alignment attributes for cell contents
+
+  char        alignment char, e.g. char=':'
+  charoff     offset for alignment char
+-->
+<!ENTITY % cellhalign
+  "align      (left|center|right|justify|char) #IMPLIED
+   char       %Character;    #IMPLIED
+   charoff    %Length;       #IMPLIED"
+  >
+
+<!-- vertical alignment attributes for cell contents -->
+<!ENTITY % cellvalign
+  "valign     (top|middle|bottom|baseline) #IMPLIED"
+  >
+
+<!ELEMENT table
+     (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>
+<!ELEMENT caption  %Inline;>
+<!ELEMENT thead    (tr)+>
+<!ELEMENT tfoot    (tr)+>
+<!ELEMENT tbody    (tr)+>
+<!ELEMENT colgroup (col)*>
+<!ELEMENT col      EMPTY>
+<!ELEMENT tr       (th|td)+>
+<!ELEMENT th       %Flow;>
+<!ELEMENT td       %Flow;>
+
+<!ATTLIST table
+  %attrs;
+  summary     %Text;         #IMPLIED
+  width       %Length;       #IMPLIED
+  border      %Pixels;       #IMPLIED
+  frame       %TFrame;       #IMPLIED
+  rules       %TRules;       #IMPLIED
+  cellspacing %Length;       #IMPLIED
+  cellpadding %Length;       #IMPLIED
+  >
+
+<!ENTITY % CAlign "(top|bottom|left|right)">
+
+<!ATTLIST caption
+  %attrs;
+  >
+
+<!--
+colgroup groups a set of col elements. It allows you to group
+several semantically related columns together.
+-->
+<!ATTLIST colgroup
+  %attrs;
+  span        %Number;       "1"
+  width       %MultiLength;  #IMPLIED
+  %cellhalign;
+  %cellvalign;
+  >
+
+<!--
+ col elements define the alignment properties for cells in
+ one or more columns.
+
+ The width attribute specifies the width of the columns, e.g.
+
+     width=64        width in screen pixels
+     width=0.5*      relative width of 0.5
+
+ The span attribute causes the attributes of one
+ col element to apply to more than one column.
+-->
+<!ATTLIST col
+  %attrs;
+  span        %Number;       "1"
+  width       %MultiLength;  #IMPLIED
+  %cellhalign;
+  %cellvalign;
+  >
+
+<!--
+    Use thead to duplicate headers when breaking table
+    across page boundaries, or for static headers when
+    tbody sections are rendered in scrolling panel.
+
+    Use tfoot to duplicate footers when breaking table
+    across page boundaries, or for static footers when
+    tbody sections are rendered in scrolling panel.
+
+    Use multiple tbody sections when rules are needed
+    between groups of table rows.
+-->
+<!ATTLIST thead
+  %attrs;
+  %cellhalign;
+  %cellvalign;
+  >
+
+<!ATTLIST tfoot
+  %attrs;
+  %cellhalign;
+  %cellvalign;
+  >
+
+<!ATTLIST tbody
+  %attrs;
+  %cellhalign;
+  %cellvalign;
+  >
+
+<!ATTLIST tr
+  %attrs;
+  %cellhalign;
+  %cellvalign;
+  >
+
+
+<!-- Scope is simpler than headers attribute for common tables -->
+<!ENTITY % Scope "(row|col|rowgroup|colgroup)">
+
+<!-- th is for headers, td for data and for cells acting as both -->
+
+<!ATTLIST th
+  %attrs;
+  abbr        %Text;         #IMPLIED
+  axis        CDATA          #IMPLIED
+  headers     IDREFS         #IMPLIED
+  scope       %Scope;        #IMPLIED
+  rowspan     %Number;       "1"
+  colspan     %Number;       "1"
+  %cellhalign;
+  %cellvalign;
+  >
+
+<!ATTLIST td
+  %attrs;
+  abbr        %Text;         #IMPLIED
+  axis        CDATA          #IMPLIED
+  headers     IDREFS         #IMPLIED
+  scope       %Scope;        #IMPLIED
+  rowspan     %Number;       "1"
+  colspan     %Number;       "1"
+  %cellhalign;
+  %cellvalign;
+  >
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/xhtml1.0/xhtml1-transitional.dtd	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,1196 @@
+<!--
+   Extensible HTML version 1.0 Transitional DTD
+
+   This is the same as HTML 4.0 Transitional except for
+   changes due to the differences between XML and SGML.
+
+   Namespace = http://www.w3.org/1999/xhtml
+
+   For further information, see: http://www.w3.org/TR/xhtml1
+
+   Copyright (c) 1998-2000 W3C (MIT, INRIA, Keio),
+   All Rights Reserved. 
+
+   This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+   PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+   SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
+
+   $Revision: 1.1 $
+   $Date: 2002-04-08 21:19:32 $
+
+-->
+
+<!--================ Character mnemonic entities =========================-->
+
+<!ENTITY % HTMLlat1 PUBLIC
+   "-//W3C//ENTITIES Latin 1 for XHTML//EN"
+   "xhtml-lat1.ent">
+%HTMLlat1;
+
+<!ENTITY % HTMLsymbol PUBLIC
+   "-//W3C//ENTITIES Symbols for XHTML//EN"
+   "xhtml-symbol.ent">
+%HTMLsymbol;
+
+<!ENTITY % HTMLspecial PUBLIC
+   "-//W3C//ENTITIES Special for XHTML//EN"
+   "xhtml-special.ent">
+%HTMLspecial;
+
+<!--================== Imported Names ====================================-->
+
+<!ENTITY % ContentType "CDATA">
+    <!-- media type, as per [RFC2045] -->
+
+<!ENTITY % ContentTypes "CDATA">
+    <!-- comma-separated list of media types, as per [RFC2045] -->
+
+<!ENTITY % Charset "CDATA">
+    <!-- a character encoding, as per [RFC2045] -->
+
+<!ENTITY % Charsets "CDATA">
+    <!-- a space separated list of character encodings, as per [RFC2045] -->
+
+<!ENTITY % LanguageCode "NMTOKEN">
+    <!-- a language code, as per [RFC1766] -->
+
+<!ENTITY % Character "CDATA">
+    <!-- a single character from [ISO10646] -->
+
+<!ENTITY % Number "CDATA">
+    <!-- one or more digits -->
+
+<!ENTITY % LinkTypes "CDATA">
+    <!-- space-separated list of link types -->
+
+<!ENTITY % MediaDesc "CDATA">
+    <!-- single or comma-separated list of media descriptors -->
+
+<!ENTITY % URI "CDATA">
+    <!-- a Uniform Resource Identifier, see [RFC2396] -->
+
+<!ENTITY % UriList "CDATA">
+    <!-- a space separated list of Uniform Resource Identifiers -->
+
+<!ENTITY % Datetime "CDATA">
+    <!-- date and time information. ISO date format -->
+
+<!ENTITY % Script "CDATA">
+    <!-- script expression -->
+
+<!ENTITY % StyleSheet "CDATA">
+    <!-- style sheet data -->
+
+<!ENTITY % Text "CDATA">
+    <!-- used for titles etc. -->
+
+<!ENTITY % FrameTarget "NMTOKEN">
+    <!-- render in this frame -->
+
+<!ENTITY % Length "CDATA">
+    <!-- nn for pixels or nn% for percentage length -->
+
+<!ENTITY % MultiLength "CDATA">
+    <!-- pixel, percentage, or relative -->
+
+<!ENTITY % MultiLengths "CDATA">
+    <!-- comma-separated list of MultiLength -->
+
+<!ENTITY % Pixels "CDATA">
+    <!-- integer representing length in pixels -->
+
+<!-- these are used for image maps -->
+
+<!ENTITY % Shape "(rect|circle|poly|default)">
+
+<!ENTITY % Coords "CDATA">
+    <!-- comma separated list of lengths -->
+
+<!-- used for object, applet, img, input and iframe -->
+<!ENTITY % ImgAlign "(top|middle|bottom|left|right)">
+
+<!-- a color using sRGB: #RRGGBB as Hex values -->
+<!ENTITY % Color "CDATA">
+
+<!-- There are also 16 widely known color names with their sRGB values:
+
+    Black  = #000000    Green  = #008000
+    Silver = #C0C0C0    Lime   = #00FF00
+    Gray   = #808080    Olive  = #808000
+    White  = #FFFFFF    Yellow = #FFFF00
+    Maroon = #800000    Navy   = #000080
+    Red    = #FF0000    Blue   = #0000FF
+    Purple = #800080    Teal   = #008080
+    Fuchsia= #FF00FF    Aqua   = #00FFFF
+-->
+
+<!--=================== Generic Attributes ===============================-->
+
+<!-- core attributes common to most elements
+  id       document-wide unique id
+  class    space separated list of classes
+  style    associated style info
+  title    advisory title/amplification
+-->
+<!ENTITY % coreattrs
+ "id          ID             #IMPLIED
+  class       CDATA          #IMPLIED
+  style       %StyleSheet;   #IMPLIED
+  title       %Text;         #IMPLIED"
+  >
+
+<!-- internationalization attributes
+  lang        language code (backwards compatible)
+  xml:lang    language code (as per XML 1.0 spec)
+  dir         direction for weak/neutral text
+-->
+<!ENTITY % i18n
+ "lang        %LanguageCode; #IMPLIED
+  xml:lang    %LanguageCode; #IMPLIED
+  dir         (ltr|rtl)      #IMPLIED"
+  >
+
+<!-- attributes for common UI events
+  onclick     a pointer button was clicked
+  ondblclick  a pointer button was double clicked
+  onmousedown a pointer button was pressed down
+  onmouseup   a pointer button was released
+  onmousemove a pointer was moved onto the element
+  onmouseout  a pointer was moved away from the element
+  onkeypress  a key was pressed and released
+  onkeydown   a key was pressed down
+  onkeyup     a key was released
+-->
+<!ENTITY % events
+ "onclick     %Script;       #IMPLIED
+  ondblclick  %Script;       #IMPLIED
+  onmousedown %Script;       #IMPLIED
+  onmouseup   %Script;       #IMPLIED
+  onmouseover %Script;       #IMPLIED
+  onmousemove %Script;       #IMPLIED
+  onmouseout  %Script;       #IMPLIED
+  onkeypress  %Script;       #IMPLIED
+  onkeydown   %Script;       #IMPLIED
+  onkeyup     %Script;       #IMPLIED"
+  >
+
+<!-- attributes for elements that can get the focus
+  accesskey   accessibility key character
+  tabindex    position in tabbing order
+  onfocus     the element got the focus
+  onblur      the element lost the focus
+-->
+<!ENTITY % focus
+ "accesskey   %Character;    #IMPLIED
+  tabindex    %Number;       #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED"
+  >
+
+<!ENTITY % attrs "%coreattrs; %i18n; %events;">
+
+<!-- text alignment for p, div, h1-h6. The default is
+     align="left" for ltr headings, "right" for rtl -->
+
+<!ENTITY % TextAlign "align (left|center|right) #IMPLIED">
+
+<!--=================== Text Elements ====================================-->
+
+<!ENTITY % special
+   "br | span | bdo | object | applet | img | map | iframe">
+
+<!ENTITY % fontstyle "tt | i | b | big | small | u
+                      | s | strike |font | basefont">
+
+<!ENTITY % phrase "em | strong | dfn | code | q | sub | sup |
+                   samp | kbd | var | cite | abbr | acronym">
+
+<!ENTITY % inline.forms "input | select | textarea | label | button">
+
+<!-- these can occur at block or inline level -->
+<!ENTITY % misc "ins | del | script | noscript">
+
+<!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">
+
+<!-- %Inline; covers inline or "text-level" elements -->
+<!ENTITY % Inline "(#PCDATA | %inline; | %misc;)*">
+
+<!--================== Block level elements ==============================-->
+
+<!ENTITY % heading "h1|h2|h3|h4|h5|h6">
+<!ENTITY % lists "ul | ol | dl | menu | dir">
+<!ENTITY % blocktext "pre | hr | blockquote | address | center | noframes">
+
+<!ENTITY % block
+    "p | %heading; | div | %lists; | %blocktext; | isindex |fieldset | table">
+
+<!ENTITY % Block "(%block; | form | %misc;)*">
+
+<!-- %Flow; mixes Block and Inline and is used for list items etc. -->
+<!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc;)*">
+
+<!--================== Content models for exclusions =====================-->
+
+<!-- a elements use %Inline; excluding a -->
+
+<!ENTITY % a.content
+   "(#PCDATA | %special; | %fontstyle; | %phrase; | %inline.forms; | %misc;)*">
+
+<!-- pre uses %Inline excluding img, object, applet, big, small,
+     sub, sup, font, or basefont -->
+
+<!ENTITY % pre.content
+   "(#PCDATA | a | br | span | bdo | map | tt | i | b | u | s |
+      %phrase; | %inline.forms;)*">
+
+<!-- form uses %Flow; excluding form -->
+
+<!ENTITY % form.content "(#PCDATA | %block; | %inline; | %misc;)*">
+
+<!-- button uses %Flow; but excludes a, form, form controls, iframe -->
+
+<!ENTITY % button.content
+   "(#PCDATA | p | %heading; | div | %lists; | %blocktext; |
+      table | br | span | bdo | object | applet | img | map |
+      %fontstyle; | %phrase; | %misc;)*">
+
+<!--================ Document Structure ==================================-->
+
+<!-- the namespace URI designates the document profile -->
+
+<!ELEMENT html (head, body)>
+<!ATTLIST html
+  %i18n;
+  xmlns       %URI;          #FIXED 'http://www.w3.org/1999/xhtml'
+  >
+
+<!--================ Document Head =======================================-->
+
+<!ENTITY % head.misc "(script|style|meta|link|object|isindex)*">
+
+<!-- content model is %head.misc; combined with a single
+     title and an optional base element in any order -->
+
+<!ELEMENT head (%head.misc;,
+     ((title, %head.misc;, (base, %head.misc;)?) |
+      (base, %head.misc;, (title, %head.misc;))))>
+
+<!ATTLIST head
+  %i18n;
+  profile     %URI;          #IMPLIED
+  >
+
+<!-- The title element is not considered part of the flow of text.
+       It should be displayed, for example as the page header or
+       window title. Exactly one title is required per document.
+    -->
+<!ELEMENT title (#PCDATA)>
+<!ATTLIST title %i18n;>
+
+<!-- document base URI -->
+
+<!ELEMENT base EMPTY>
+<!ATTLIST base
+  href        %URI;          #IMPLIED
+  target      %FrameTarget;  #IMPLIED
+  >
+
+<!-- generic metainformation -->
+<!ELEMENT meta EMPTY>
+<!ATTLIST meta
+  %i18n;
+  http-equiv  CDATA          #IMPLIED
+  name        CDATA          #IMPLIED
+  content     CDATA          #REQUIRED
+  scheme      CDATA          #IMPLIED
+  >
+
+<!--
+  Relationship values can be used in principle:
+
+   a) for document specific toolbars/menus when used
+      with the link element in document head e.g.
+        start, contents, previous, next, index, end, help
+   b) to link to a separate style sheet (rel="stylesheet")
+   c) to make a link to a script (rel="script")
+   d) by stylesheets to control how collections of
+      html nodes are rendered into printed documents
+   e) to make a link to a printable version of this document
+      e.g. a PostScript or PDF version (rel="alternate" media="print")
+-->
+
+<!ELEMENT link EMPTY>
+<!ATTLIST link
+  %attrs;
+  charset     %Charset;      #IMPLIED
+  href        %URI;          #IMPLIED
+  hreflang    %LanguageCode; #IMPLIED
+  type        %ContentType;  #IMPLIED
+  rel         %LinkTypes;    #IMPLIED
+  rev         %LinkTypes;    #IMPLIED
+  media       %MediaDesc;    #IMPLIED
+  target      %FrameTarget;  #IMPLIED
+  >
+
+<!-- style info, which may include CDATA sections -->
+<!ELEMENT style (#PCDATA)>
+<!ATTLIST style
+  %i18n;
+  type        %ContentType;  #REQUIRED
+  media       %MediaDesc;    #IMPLIED
+  title       %Text;         #IMPLIED
+  xml:space   (preserve)     #FIXED 'preserve'
+  >
+
+<!-- script statements, which may include CDATA sections -->
+<!ELEMENT script (#PCDATA)>
+<!ATTLIST script
+  charset     %Charset;      #IMPLIED
+  type        %ContentType;  #REQUIRED
+  language    CDATA          #IMPLIED
+  src         %URI;          #IMPLIED
+  defer       (defer)        #IMPLIED
+  xml:space   (preserve)     #FIXED 'preserve'
+  >
+
+<!-- alternate content container for non script-based rendering -->
+
+<!ELEMENT noscript %Flow;>
+<!ATTLIST noscript
+  %attrs;
+  >
+
+<!--======================= Frames =======================================-->
+
+<!-- inline subwindow -->
+
+<!ELEMENT iframe %Flow;>
+<!ATTLIST iframe
+  %coreattrs;
+  longdesc    %URI;          #IMPLIED
+  name        NMTOKEN        #IMPLIED
+  src         %URI;          #IMPLIED
+  frameborder (1|0)          "1"
+  marginwidth %Pixels;       #IMPLIED
+  marginheight %Pixels;      #IMPLIED
+  scrolling   (yes|no|auto)  "auto"
+  align       %ImgAlign;     #IMPLIED
+  height      %Length;       #IMPLIED
+  width       %Length;       #IMPLIED
+  >
+
+<!-- alternate content container for non frame-based rendering -->
+
+<!ELEMENT noframes %Flow;>
+<!ATTLIST noframes
+  %attrs;
+  >
+
+<!--=================== Document Body ====================================-->
+
+<!ELEMENT body %Flow;>
+<!ATTLIST body
+  %attrs;
+  onload      %Script;       #IMPLIED
+  onunload    %Script;       #IMPLIED
+  background  %URI;          #IMPLIED
+  bgcolor     %Color;        #IMPLIED
+  text        %Color;        #IMPLIED
+  link        %Color;        #IMPLIED
+  vlink       %Color;        #IMPLIED
+  alink       %Color;        #IMPLIED
+  >
+
+<!ELEMENT div %Flow;>  <!-- generic language/style container -->
+<!ATTLIST div
+  %attrs;
+  %TextAlign;
+  >
+
+<!--=================== Paragraphs =======================================-->
+
+<!ELEMENT p %Inline;>
+<!ATTLIST p
+  %attrs;
+  %TextAlign;
+  >
+
+<!--=================== Headings =========================================-->
+
+<!--
+  There are six levels of headings from h1 (the most important)
+  to h6 (the least important).
+-->
+
+<!ELEMENT h1  %Inline;>
+<!ATTLIST h1
+  %attrs;
+  %TextAlign;
+  >
+
+<!ELEMENT h2 %Inline;>
+<!ATTLIST h2
+  %attrs;
+  %TextAlign;
+  >
+
+<!ELEMENT h3 %Inline;>
+<!ATTLIST h3
+  %attrs;
+  %TextAlign;
+  >
+
+<!ELEMENT h4 %Inline;>
+<!ATTLIST h4
+  %attrs;
+  %TextAlign;
+  >
+
+<!ELEMENT h5 %Inline;>
+<!ATTLIST h5
+  %attrs;
+  %TextAlign;
+  >
+
+<!ELEMENT h6 %Inline;>
+<!ATTLIST h6
+  %attrs;
+  %TextAlign;
+  >
+
+<!--=================== Lists ============================================-->
+
+<!-- Unordered list bullet styles -->
+
+<!ENTITY % ULStyle "(disc|square|circle)">
+
+<!-- Unordered list -->
+
+<!ELEMENT ul (li)+>
+<!ATTLIST ul
+  %attrs;
+  type        %ULStyle;     #IMPLIED
+  compact     (compact)     #IMPLIED
+  >
+
+<!-- Ordered list numbering style
+
+    1   arabic numbers      1, 2, 3, ...
+    a   lower alpha         a, b, c, ...
+    A   upper alpha         A, B, C, ...
+    i   lower roman         i, ii, iii, ...
+    I   upper roman         I, II, III, ...
+
+    The style is applied to the sequence number which by default
+    is reset to 1 for the first list item in an ordered list.
+-->
+<!ENTITY % OLStyle "CDATA">
+
+<!-- Ordered (numbered) list -->
+
+<!ELEMENT ol (li)+>
+<!ATTLIST ol
+  %attrs;
+  type        %OLStyle;      #IMPLIED
+  compact     (compact)      #IMPLIED
+  start       %Number;       #IMPLIED
+  >
+
+<!-- single column list (DEPRECATED) --> 
+<!ELEMENT menu (li)+>
+<!ATTLIST menu
+  %attrs;
+  compact     (compact)     #IMPLIED
+  >
+
+<!-- multiple column list (DEPRECATED) --> 
+<!ELEMENT dir (li)+>
+<!ATTLIST dir
+  %attrs;
+  compact     (compact)     #IMPLIED
+  >
+
+<!-- LIStyle is constrained to: "(%ULStyle;|%OLStyle;)" -->
+<!ENTITY % LIStyle "CDATA">
+
+<!-- list item -->
+
+<!ELEMENT li %Flow;>
+<!ATTLIST li
+  %attrs;
+  type        %LIStyle;      #IMPLIED
+  value       %Number;       #IMPLIED
+  >
+
+<!-- definition lists - dt for term, dd for its definition -->
+
+<!ELEMENT dl (dt|dd)+>
+<!ATTLIST dl
+  %attrs;
+  compact     (compact)      #IMPLIED
+  >
+
+<!ELEMENT dt %Inline;>
+<!ATTLIST dt
+  %attrs;
+  >
+
+<!ELEMENT dd %Flow;>
+<!ATTLIST dd
+  %attrs;
+  >
+
+<!--=================== Address ==========================================-->
+
+<!-- information on author -->
+
+<!ELEMENT address %Inline;>
+<!ATTLIST address
+  %attrs;
+  >
+
+<!--=================== Horizontal Rule ==================================-->
+
+<!ELEMENT hr EMPTY>
+<!ATTLIST hr
+  %attrs;
+  align       (left|center|right) #IMPLIED
+  noshade     (noshade)      #IMPLIED
+  size        %Pixels;       #IMPLIED
+  width       %Length;       #IMPLIED
+  >
+
+<!--=================== Preformatted Text ================================-->
+
+<!-- content is %Inline; excluding 
+        "img|object|applet|big|small|sub|sup|font|basefont" -->
+
+<!ELEMENT pre %pre.content;>
+<!ATTLIST pre
+  %attrs;
+  width       %Number;      #IMPLIED
+  xml:space   (preserve)    #FIXED 'preserve'
+  >
+
+<!--=================== Block-like Quotes ================================-->
+
+<!ELEMENT blockquote %Flow;>
+<!ATTLIST blockquote
+  %attrs;
+  cite        %URI;          #IMPLIED
+  >
+
+<!--=================== Text alignment ===================================-->
+
+<!-- center content -->
+<!ELEMENT center %Flow;>
+<!ATTLIST center
+  %attrs;
+  >
+
+<!--=================== Inserted/Deleted Text ============================-->
+
+<!--
+  ins/del are allowed in block and inline content, but its
+  inappropriate to include block content within an ins element
+  occurring in inline content.
+-->
+<!ELEMENT ins %Flow;>
+<!ATTLIST ins
+  %attrs;
+  cite        %URI;          #IMPLIED
+  datetime    %Datetime;     #IMPLIED
+  >
+
+<!ELEMENT del %Flow;>
+<!ATTLIST del
+  %attrs;
+  cite        %URI;          #IMPLIED
+  datetime    %Datetime;     #IMPLIED
+  >
+
+<!--================== The Anchor Element ================================-->
+
+<!-- content is %Inline; except that anchors shouldn't be nested -->
+
+<!ELEMENT a %a.content;>
+<!ATTLIST a
+  %attrs;
+  charset     %Charset;      #IMPLIED
+  type        %ContentType;  #IMPLIED
+  name        NMTOKEN        #IMPLIED
+  href        %URI;          #IMPLIED
+  hreflang    %LanguageCode; #IMPLIED
+  rel         %LinkTypes;    #IMPLIED
+  rev         %LinkTypes;    #IMPLIED
+  accesskey   %Character;    #IMPLIED
+  shape       %Shape;        "rect"
+  coords      %Coords;       #IMPLIED
+  tabindex    %Number;       #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED
+  target      %FrameTarget;  #IMPLIED
+  >
+
+<!--===================== Inline Elements ================================-->
+
+<!ELEMENT span %Inline;> <!-- generic language/style container -->
+<!ATTLIST span
+  %attrs;
+  >
+
+<!ELEMENT bdo %Inline;>  <!-- I18N BiDi over-ride -->
+<!ATTLIST bdo
+  %coreattrs;
+  %events;
+  lang        %LanguageCode; #IMPLIED
+  xml:lang    %LanguageCode; #IMPLIED
+  dir         (ltr|rtl)      #REQUIRED
+  >
+
+<!ELEMENT br EMPTY>   <!-- forced line break -->
+<!ATTLIST br
+  %coreattrs;
+  clear       (left|all|right|none) "none"
+  >
+
+<!ELEMENT em %Inline;>   <!-- emphasis -->
+<!ATTLIST em %attrs;>
+
+<!ELEMENT strong %Inline;>   <!-- strong emphasis -->
+<!ATTLIST strong %attrs;>
+
+<!ELEMENT dfn %Inline;>   <!-- definitional -->
+<!ATTLIST dfn %attrs;>
+
+<!ELEMENT code %Inline;>   <!-- program code -->
+<!ATTLIST code %attrs;>
+
+<!ELEMENT samp %Inline;>   <!-- sample -->
+<!ATTLIST samp %attrs;>
+
+<!ELEMENT kbd %Inline;>  <!-- something user would type -->
+<!ATTLIST kbd %attrs;>
+
+<!ELEMENT var %Inline;>   <!-- variable -->
+<!ATTLIST var %attrs;>
+
+<!ELEMENT cite %Inline;>   <!-- citation -->
+<!ATTLIST cite %attrs;>
+
+<!ELEMENT abbr %Inline;>   <!-- abbreviation -->
+<!ATTLIST abbr %attrs;>
+
+<!ELEMENT acronym %Inline;>   <!-- acronym -->
+<!ATTLIST acronym %attrs;>
+
+<!ELEMENT q %Inline;>   <!-- inlined quote -->
+<!ATTLIST q
+  %attrs;
+  cite        %URI;          #IMPLIED
+  >
+
+<!ELEMENT sub %Inline;> <!-- subscript -->
+<!ATTLIST sub %attrs;>
+
+<!ELEMENT sup %Inline;> <!-- superscript -->
+<!ATTLIST sup %attrs;>
+
+<!ELEMENT tt %Inline;>   <!-- fixed pitch font -->
+<!ATTLIST tt %attrs;>
+
+<!ELEMENT i %Inline;>   <!-- italic font -->
+<!ATTLIST i %attrs;>
+
+<!ELEMENT b %Inline;>   <!-- bold font -->
+<!ATTLIST b %attrs;>
+
+<!ELEMENT big %Inline;>   <!-- bigger font -->
+<!ATTLIST big %attrs;>
+
+<!ELEMENT small %Inline;>   <!-- smaller font -->
+<!ATTLIST small %attrs;>
+
+<!ELEMENT u %Inline;>   <!-- underline -->
+<!ATTLIST u %attrs;>
+
+<!ELEMENT s %Inline;>   <!-- strike-through -->
+<!ATTLIST s %attrs;>
+
+<!ELEMENT strike %Inline;>   <!-- strike-through -->
+<!ATTLIST strike %attrs;>
+
+<!ELEMENT basefont EMPTY>  <!-- base font size -->
+<!ATTLIST basefont
+  id          ID             #IMPLIED
+  size        CDATA          #REQUIRED
+  color       %Color;        #IMPLIED
+  face        CDATA          #IMPLIED
+  >
+
+<!ELEMENT font %Inline;> <!-- local change to font -->
+<!ATTLIST font
+  %coreattrs;
+  %i18n;
+  size        CDATA          #IMPLIED
+  color       %Color;        #IMPLIED
+  face        CDATA          #IMPLIED
+  >
+
+<!--==================== Object ======================================-->
+<!--
+  object is used to embed objects as part of HTML pages.
+  param elements should precede other content. Parameters
+  can also be expressed as attribute/value pairs on the
+  object element itself when brevity is desired.
+-->
+
+<!ELEMENT object (#PCDATA | param | %block; | form | %inline; | %misc;)*>
+<!ATTLIST object
+  %attrs;
+  declare     (declare)      #IMPLIED
+  classid     %URI;          #IMPLIED
+  codebase    %URI;          #IMPLIED
+  data        %URI;          #IMPLIED
+  type        %ContentType;  #IMPLIED
+  codetype    %ContentType;  #IMPLIED
+  archive     %UriList;      #IMPLIED
+  standby     %Text;         #IMPLIED
+  height      %Length;       #IMPLIED
+  width       %Length;       #IMPLIED
+  usemap      %URI;          #IMPLIED
+  name        NMTOKEN        #IMPLIED
+  tabindex    %Number;       #IMPLIED
+  align       %ImgAlign;     #IMPLIED
+  border      %Pixels;       #IMPLIED
+  hspace      %Pixels;       #IMPLIED
+  vspace      %Pixels;       #IMPLIED
+  >
+
+<!--
+  param is used to supply a named property value.
+  In XML it would seem natural to follow RDF and support an
+  abbreviated syntax where the param elements are replaced
+  by attribute value pairs on the object start tag.
+-->
+<!ELEMENT param EMPTY>
+<!ATTLIST param
+  id          ID             #IMPLIED
+  name        CDATA          #REQUIRED
+  value       CDATA          #IMPLIED
+  valuetype   (data|ref|object) "data"
+  type        %ContentType;  #IMPLIED
+  >
+
+<!--=================== Java applet ==================================-->
+<!--
+  One of code or object attributes must be present.
+  Place param elements before other content.
+-->
+<!ELEMENT applet (#PCDATA | param | %block; | form | %inline; | %misc;)*>
+<!ATTLIST applet
+  %coreattrs;
+  codebase    %URI;          #IMPLIED
+  archive     CDATA          #IMPLIED
+  code        CDATA          #IMPLIED
+  object      CDATA          #IMPLIED
+  alt         %Text;         #IMPLIED
+  name        NMTOKEN        #IMPLIED
+  width       %Length;       #REQUIRED
+  height      %Length;       #REQUIRED
+  align       %ImgAlign;     #IMPLIED
+  hspace      %Pixels;       #IMPLIED
+  vspace      %Pixels;       #IMPLIED
+  >
+
+<!--=================== Images ===========================================-->
+
+<!--
+   To avoid accessibility problems for people who aren't
+   able to see the image, you should provide a text
+   description using the alt and longdesc attributes.
+   In addition, avoid the use of server-side image maps.
+-->
+
+<!ELEMENT img EMPTY>
+<!ATTLIST img
+  %attrs;
+  src         %URI;          #REQUIRED
+  alt         %Text;         #REQUIRED
+  name        NMTOKEN        #IMPLIED
+  longdesc    %URI;          #IMPLIED
+  height      %Length;       #IMPLIED
+  width       %Length;       #IMPLIED
+  usemap      %URI;          #IMPLIED
+  ismap       (ismap)        #IMPLIED
+  align       %ImgAlign;     #IMPLIED
+  border      %Length;       #IMPLIED
+  hspace      %Pixels;       #IMPLIED
+  vspace      %Pixels;       #IMPLIED
+  >
+
+<!-- usemap points to a map element which may be in this document
+  or an external document, although the latter is not widely supported -->
+
+<!--================== Client-side image maps ============================-->
+
+<!-- These can be placed in the same document or grouped in a
+     separate document although this isn't yet widely supported -->
+
+<!ELEMENT map ((%block; | form | %misc;)+ | area+)>
+<!ATTLIST map
+  %i18n;
+  %events;
+  id          ID             #REQUIRED
+  class       CDATA          #IMPLIED
+  style       %StyleSheet;   #IMPLIED
+  title       %Text;         #IMPLIED
+  name        CDATA          #IMPLIED
+  >
+
+<!ELEMENT area EMPTY>
+<!ATTLIST area
+  %attrs;
+  shape       %Shape;        "rect"
+  coords      %Coords;       #IMPLIED
+  href        %URI;          #IMPLIED
+  nohref      (nohref)       #IMPLIED
+  alt         %Text;         #REQUIRED
+  tabindex    %Number;       #IMPLIED
+  accesskey   %Character;    #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED
+  target      %FrameTarget;  #IMPLIED
+  >
+
+<!--================ Forms ===============================================-->
+
+<!ELEMENT form %form.content;>   <!-- forms shouldn't be nested -->
+
+<!ATTLIST form
+  %attrs;
+  action      %URI;          #REQUIRED
+  method      (get|post)     "get"
+  name        NMTOKEN        #IMPLIED
+  enctype     %ContentType;  "application/x-www-form-urlencoded"
+  onsubmit    %Script;       #IMPLIED
+  onreset     %Script;       #IMPLIED
+  accept      %ContentTypes; #IMPLIED
+  accept-charset %Charsets;  #IMPLIED
+  target      %FrameTarget;  #IMPLIED
+  >
+
+<!--
+  Each label must not contain more than ONE field
+  Label elements shouldn't be nested.
+-->
+<!ELEMENT label %Inline;>
+<!ATTLIST label
+  %attrs;
+  for         IDREF          #IMPLIED
+  accesskey   %Character;    #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED
+  >
+
+<!ENTITY % InputType
+  "(text | password | checkbox |
+    radio | submit | reset |
+    file | hidden | image | button)"
+   >
+
+<!-- the name attribute is required for all but submit & reset -->
+
+<!ELEMENT input EMPTY>     <!-- form control -->
+<!ATTLIST input
+  %attrs;
+  type        %InputType;    "text"
+  name        CDATA          #IMPLIED
+  value       CDATA          #IMPLIED
+  checked     (checked)      #IMPLIED
+  disabled    (disabled)     #IMPLIED
+  readonly    (readonly)     #IMPLIED
+  size        CDATA          #IMPLIED
+  maxlength   %Number;       #IMPLIED
+  src         %URI;          #IMPLIED
+  alt         CDATA          #IMPLIED
+  usemap      %URI;          #IMPLIED
+  tabindex    %Number;       #IMPLIED
+  accesskey   %Character;    #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED
+  onselect    %Script;       #IMPLIED
+  onchange    %Script;       #IMPLIED
+  accept      %ContentTypes; #IMPLIED
+  align       %ImgAlign;     #IMPLIED
+  >
+
+<!ELEMENT select (optgroup|option)+>  <!-- option selector -->
+<!ATTLIST select
+  %attrs;
+  name        CDATA          #IMPLIED
+  size        %Number;       #IMPLIED
+  multiple    (multiple)     #IMPLIED
+  disabled    (disabled)     #IMPLIED
+  tabindex    %Number;       #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED
+  onchange    %Script;       #IMPLIED
+  >
+
+<!ELEMENT optgroup (option)+>   <!-- option group -->
+<!ATTLIST optgroup
+  %attrs;
+  disabled    (disabled)     #IMPLIED
+  label       %Text;         #REQUIRED
+  >
+
+<!ELEMENT option (#PCDATA)>     <!-- selectable choice -->
+<!ATTLIST option
+  %attrs;
+  selected    (selected)     #IMPLIED
+  disabled    (disabled)     #IMPLIED
+  label       %Text;         #IMPLIED
+  value       CDATA          #IMPLIED
+  >
+
+<!ELEMENT textarea (#PCDATA)>     <!-- multi-line text field -->
+<!ATTLIST textarea
+  %attrs;
+  name        CDATA          #IMPLIED
+  rows        %Number;       #REQUIRED
+  cols        %Number;       #REQUIRED
+  disabled    (disabled)     #IMPLIED
+  readonly    (readonly)     #IMPLIED
+  tabindex    %Number;       #IMPLIED
+  accesskey   %Character;    #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED
+  onselect    %Script;       #IMPLIED
+  onchange    %Script;       #IMPLIED
+  >
+
+<!--
+  The fieldset element is used to group form fields.
+  Only one legend element should occur in the content
+  and if present should only be preceded by whitespace.
+-->
+<!ELEMENT fieldset (#PCDATA | legend | %block; | form | %inline; | %misc;)*>
+<!ATTLIST fieldset
+  %attrs;
+  >
+
+<!ENTITY % LAlign "(top|bottom|left|right)">
+
+<!ELEMENT legend %Inline;>     <!-- fieldset label -->
+<!ATTLIST legend
+  %attrs;
+  accesskey   %Character;    #IMPLIED
+  align       %LAlign;       #IMPLIED
+  >
+
+<!--
+ Content is %Flow; excluding a, form, form controls, iframe
+--> 
+<!ELEMENT button %button.content;>  <!-- push button -->
+<!ATTLIST button
+  %attrs;
+  name        CDATA          #IMPLIED
+  value       CDATA          #IMPLIED
+  type        (button|submit|reset) "submit"
+  disabled    (disabled)     #IMPLIED
+  tabindex    %Number;       #IMPLIED
+  accesskey   %Character;    #IMPLIED
+  onfocus     %Script;       #IMPLIED
+  onblur      %Script;       #IMPLIED
+  >
+
+<!-- single-line text input control (DEPRECATED) -->
+<!ELEMENT isindex EMPTY>
+<!ATTLIST isindex
+  %coreattrs;
+  %i18n;
+  prompt      %Text;         #IMPLIED
+  >
+
+<!--======================= Tables =======================================-->
+
+<!-- Derived from IETF HTML table standard, see [RFC1942] -->
+
+<!--
+ The border attribute sets the thickness of the frame around the
+ table. The default units are screen pixels.
+
+ The frame attribute specifies which parts of the frame around
+ the table should be rendered. The values are not the same as
+ CALS to avoid a name clash with the valign attribute.
+-->
+<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">
+
+<!--
+ The rules attribute defines which rules to draw between cells:
+
+ If rules is absent then assume:
+     "none" if border is absent or border="0" otherwise "all"
+-->
+
+<!ENTITY % TRules "(none | groups | rows | cols | all)">
+  
+<!-- horizontal placement of table relative to document -->
+<!ENTITY % TAlign "(left|center|right)">
+
+<!-- horizontal alignment attributes for cell contents
+
+  char        alignment char, e.g. char=':'
+  charoff     offset for alignment char
+-->
+<!ENTITY % cellhalign
+  "align      (left|center|right|justify|char) #IMPLIED
+   char       %Character;    #IMPLIED
+   charoff    %Length;       #IMPLIED"
+  >
+
+<!-- vertical alignment attributes for cell contents -->
+<!ENTITY % cellvalign
+  "valign     (top|middle|bottom|baseline) #IMPLIED"
+  >
+
+<!ELEMENT table
+     (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>
+<!ELEMENT caption  %Inline;>
+<!ELEMENT thead    (tr)+>
+<!ELEMENT tfoot    (tr)+>
+<!ELEMENT tbody    (tr)+>
+<!ELEMENT colgroup (col)*>
+<!ELEMENT col      EMPTY>
+<!ELEMENT tr       (th|td)+>
+<!ELEMENT th       %Flow;>
+<!ELEMENT td       %Flow;>
+
+<!ATTLIST table
+  %attrs;
+  summary     %Text;         #IMPLIED
+  width       %Length;       #IMPLIED
+  border      %Pixels;       #IMPLIED
+  frame       %TFrame;       #IMPLIED
+  rules       %TRules;       #IMPLIED
+  cellspacing %Length;       #IMPLIED
+  cellpadding %Length;       #IMPLIED
+  align       %TAlign;       #IMPLIED
+  bgcolor     %Color;        #IMPLIED
+  >
+
+<!ENTITY % CAlign "(top|bottom|left|right)">
+
+<!ATTLIST caption
+  %attrs;
+  align       %CAlign;       #IMPLIED
+  >
+
+<!--
+colgroup groups a set of col elements. It allows you to group
+several semantically related columns together.
+-->
+<!ATTLIST colgroup
+  %attrs;
+  span        %Number;       "1"
+  width       %MultiLength;  #IMPLIED
+  %cellhalign;
+  %cellvalign;
+  >
+
+<!--
+ col elements define the alignment properties for cells in
+ one or more columns.
+
+ The width attribute specifies the width of the columns, e.g.
+
+     width=64        width in screen pixels
+     width=0.5*      relative width of 0.5
+
+ The span attribute causes the attributes of one
+ col element to apply to more than one column.
+-->
+<!ATTLIST col
+  %attrs;
+  span        %Number;       "1"
+  width       %MultiLength;  #IMPLIED
+  %cellhalign;
+  %cellvalign;
+  >
+
+<!--
+    Use thead to duplicate headers when breaking table
+    across page boundaries, or for static headers when
+    tbody sections are rendered in scrolling panel.
+
+    Use tfoot to duplicate footers when breaking table
+    across page boundaries, or for static footers when
+    tbody sections are rendered in scrolling panel.
+
+    Use multiple tbody sections when rules are needed
+    between groups of table rows.
+-->
+<!ATTLIST thead
+  %attrs;
+  %cellhalign;
+  %cellvalign;
+  >
+
+<!ATTLIST tfoot
+  %attrs;
+  %cellhalign;
+  %cellvalign;
+  >
+
+<!ATTLIST tbody
+  %attrs;
+  %cellhalign;
+  %cellvalign;
+  >
+
+<!ATTLIST tr
+  %attrs;
+  %cellhalign;
+  %cellvalign;
+  bgcolor     %Color;        #IMPLIED
+  >
+
+<!-- Scope is simpler than headers attribute for common tables -->
+<!ENTITY % Scope "(row|col|rowgroup|colgroup)">
+
+<!-- th is for headers, td for data and for cells acting as both -->
+
+<!ATTLIST th
+  %attrs;
+  abbr        %Text;         #IMPLIED
+  axis        CDATA          #IMPLIED
+  headers     IDREFS         #IMPLIED
+  scope       %Scope;        #IMPLIED
+  rowspan     %Number;       "1"
+  colspan     %Number;       "1"
+  %cellhalign;
+  %cellvalign;
+  nowrap      (nowrap)       #IMPLIED
+  bgcolor     %Color;        #IMPLIED
+  width       %Pixels;       #IMPLIED
+  height      %Pixels;       #IMPLIED
+  >
+
+<!ATTLIST td
+  %attrs;
+  abbr        %Text;         #IMPLIED
+  axis        CDATA          #IMPLIED
+  headers     IDREFS         #IMPLIED
+  scope       %Scope;        #IMPLIED
+  rowspan     %Number;       "1"
+  colspan     %Number;       "1"
+  %cellhalign;
+  %cellvalign;
+  nowrap      (nowrap)       #IMPLIED
+  bgcolor     %Color;        #IMPLIED
+  width       %Pixels;       #IMPLIED
+  height      %Pixels;       #IMPLIED
+  >
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/xhtml1.1/xhtml11-model-1.mod	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,250 @@
+<!-- ....................................................................... -->
+<!-- XHTML 1.1 Document Model Module  ...................................... -->
+<!-- file: xhtml11-model-1.mod
+
+     This is XHTML 1.1, a reformulation of HTML as a modular XML application.
+     Copyright 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
+     Revision: $Id: xhtml11-model-1.mod,v 1.1 2004-02-23 16:11:21 ylafon Exp $ SMI
+
+     This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+       PUBLIC "-//W3C//ENTITIES XHTML 1.1 Document Model 1.0//EN"
+       SYSTEM "http://www.w3.org/TR/xhtml11/DTD/xhtml11-model-1.mod"
+
+     Revisions:
+     (none)
+     ....................................................................... -->
+
+<!-- XHTML 1.1 Document Model
+
+     This module describes the groupings of elements that make up
+     common content models for XHTML elements.
+
+     XHTML has three basic content models:
+
+         %Inline.mix;  character-level elements
+         %Block.mix;   block-like elements, eg., paragraphs and lists
+         %Flow.mix;    any block or inline elements
+
+     Any parameter entities declared in this module may be used
+     to create element content models, but the above three are
+     considered 'global' (insofar as that term applies here).
+
+     The reserved word '#PCDATA' (indicating a text string) is now
+     included explicitly with each element declaration that is
+     declared as mixed content, as XML requires that this token
+     occur first in a content model specification.
+-->
+<!-- Extending the Model
+
+     While in some cases this module may need to be rewritten to
+     accommodate changes to the document model, minor extensions
+     may be accomplished by redeclaring any of the three *.extra;
+     parameter entities to contain extension element types as follows:
+
+         %Misc.extra;    whose parent may be any block or
+                         inline element.
+
+         %Inline.extra;  whose parent may be any inline element.
+
+         %Block.extra;   whose parent may be any block element.
+
+     If used, these parameter entities must be an OR-separated
+     list beginning with an OR separator ("|"), eg., "| a | b | c"
+
+     All block and inline *.class parameter entities not part
+     of the *struct.class classes begin with "| " to allow for
+     exclusion from mixes.
+-->
+
+<!-- ..............  Optional Elements in head  .................. -->
+
+<!ENTITY % HeadOpts.mix
+     "( %script.qname; | %style.qname; | %meta.qname;
+      | %link.qname; | %object.qname; )*"
+>
+
+<!-- .................  Miscellaneous Elements  .................. -->
+
+<!-- ins and del are used to denote editing changes
+-->
+<!ENTITY % Edit.class "| %ins.qname; | %del.qname;" >
+
+<!-- script and noscript are used to contain scripts
+     and alternative content
+-->
+<!ENTITY % Script.class "| %script.qname; | %noscript.qname;" >
+
+<!ENTITY % Misc.extra "" >
+
+<!-- These elements are neither block nor inline, and can
+     essentially be used anywhere in the document body.
+-->
+<!ENTITY % Misc.class
+     "%Edit.class;
+      %Script.class;
+      %Misc.extra;"
+>
+
+<!-- ....................  Inline Elements  ...................... -->
+
+<!ENTITY % InlStruct.class "%br.qname; | %span.qname;" >
+
+<!ENTITY % InlPhras.class
+     "| %em.qname; | %strong.qname; | %dfn.qname; | %code.qname;
+      | %samp.qname; | %kbd.qname; | %var.qname; | %cite.qname;
+      | %abbr.qname; | %acronym.qname; | %q.qname;" >
+
+<!ENTITY % InlPres.class
+     "| %tt.qname; | %i.qname; | %b.qname; | %big.qname;
+      | %small.qname; | %sub.qname; | %sup.qname;" >
+
+<!ENTITY % I18n.class "| %bdo.qname;" >
+
+<!ENTITY % Anchor.class "| %a.qname;" >
+
+<!ENTITY % InlSpecial.class
+     "| %img.qname; | %map.qname;
+      | %object.qname;" >
+
+<!ENTITY % InlForm.class
+     "| %input.qname; | %select.qname; | %textarea.qname;
+      | %label.qname; | %button.qname;" >
+
+<!ENTITY % Inline.extra "" >
+
+<!ENTITY % Ruby.class "| %ruby.qname;" >
+
+<!-- %Inline.class; includes all inline elements,
+     used as a component in mixes
+-->
+<!ENTITY % Inline.class
+     "%InlStruct.class;
+      %InlPhras.class;
+      %InlPres.class;
+      %I18n.class;
+      %Anchor.class;
+      %InlSpecial.class;
+      %InlForm.class;
+      %Ruby.class;
+      %Inline.extra;"
+>
+
+<!-- %InlNoRuby.class; includes all inline elements
+     except ruby, used as a component in mixes
+-->
+<!ENTITY % InlNoRuby.class
+     "%InlStruct.class;
+      %InlPhras.class;
+      %InlPres.class;
+      %I18n.class;
+      %Anchor.class;
+      %InlSpecial.class;
+      %InlForm.class;
+      %Inline.extra;"
+>
+
+<!-- %NoRuby.content; includes all inlines except ruby
+-->
+<!ENTITY % NoRuby.content
+     "( #PCDATA
+      | %InlNoRuby.class;
+      %Misc.class; )*"
+>
+
+<!-- %InlNoAnchor.class; includes all non-anchor inlines,
+     used as a component in mixes
+-->
+<!ENTITY % InlNoAnchor.class
+     "%InlStruct.class;
+      %InlPhras.class;
+      %InlPres.class;
+      %I18n.class;
+      %InlSpecial.class;
+      %InlForm.class;
+      %Ruby.class;
+      %Inline.extra;"
+>
+
+<!-- %InlNoAnchor.mix; includes all non-anchor inlines
+-->
+<!ENTITY % InlNoAnchor.mix
+     "%InlNoAnchor.class;
+      %Misc.class;"
+>
+
+<!-- %Inline.mix; includes all inline elements, including %Misc.class;
+-->
+<!ENTITY % Inline.mix
+     "%Inline.class;
+      %Misc.class;"
+>
+
+<!-- .....................  Block Elements  ...................... -->
+
+<!-- In the HTML 4.0 DTD, heading and list elements were included
+     in the %block; parameter entity. The %Heading.class; and
+     %List.class; parameter entities must now be included explicitly
+     on element declarations where desired.
+-->
+
+<!ENTITY % Heading.class
+     "%h1.qname; | %h2.qname; | %h3.qname;
+      | %h4.qname; | %h5.qname; | %h6.qname;" >
+
+<!ENTITY % List.class "%ul.qname; | %ol.qname; | %dl.qname;" >
+
+<!ENTITY % Table.class "| %table.qname;" >
+
+<!ENTITY % Form.class  "| %form.qname;" >
+
+<!ENTITY % Fieldset.class  "| %fieldset.qname;" >
+
+<!ENTITY % BlkStruct.class "%p.qname; | %div.qname;" >
+
+<!ENTITY % BlkPhras.class
+     "| %pre.qname; | %blockquote.qname; | %address.qname;" >
+
+<!ENTITY % BlkPres.class "| %hr.qname;" >
+
+<!ENTITY % BlkSpecial.class
+     "%Table.class;
+      %Form.class;
+      %Fieldset.class;"
+>
+
+<!ENTITY % Block.extra "" >
+
+<!-- %Block.class; includes all block elements,
+     used as an component in mixes
+-->
+<!ENTITY % Block.class
+     "%BlkStruct.class;
+      %BlkPhras.class;
+      %BlkPres.class;
+      %BlkSpecial.class;
+      %Block.extra;"
+>
+
+<!-- %Block.mix; includes all block elements plus %Misc.class;
+-->
+<!ENTITY % Block.mix
+     "%Heading.class;
+      | %List.class;
+      | %Block.class;
+      %Misc.class;"
+>
+
+<!-- ................  All Content Elements  .................. -->
+
+<!-- %Flow.mix; includes all text content, block and inline
+-->
+<!ENTITY % Flow.mix
+     "%Heading.class;
+      | %List.class;
+      | %Block.class;
+      | %Inline.class;
+      %Misc.class;"
+>
+
+<!-- end of xhtml11-model-1.mod -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/util/xml/xhtml1.1/xhtml11.dtd	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,294 @@
+<!-- ....................................................................... -->
+<!-- XHTML 1.1 DTD  ........................................................ -->
+<!-- file: xhtml11.dtd
+-->
+
+<!-- XHTML 1.1 DTD
+
+     This is XHTML, a reformulation of HTML as a modular XML application.
+
+     The Extensible HyperText Markup Language (XHTML)
+     Copyright 1998-2001 World Wide Web Consortium
+        (Massachusetts Institute of Technology, Institut National de
+         Recherche en Informatique et en Automatique, Keio University).
+         All Rights Reserved.
+
+     Permission to use, copy, modify and distribute the XHTML DTD and its 
+     accompanying documentation for any purpose and without fee is hereby 
+     granted in perpetuity, provided that the above copyright notice and 
+     this paragraph appear in all copies.  The copyright holders make no 
+     representation about the suitability of the DTD for any purpose.
+
+     It is provided "as is" without expressed or implied warranty.
+
+        Author:     Murray M. Altheim <altheim@eng.sun.com>
+        Revision:   $Id: xhtml11.dtd,v 1.1 2004-02-23 16:11:21 ylafon Exp $
+
+-->
+<!-- This is the driver file for version 1.1 of the XHTML DTD.
+
+     Please use this formal public identifier to identify it:
+
+         "-//W3C//DTD XHTML 1.1//EN"
+-->
+<!ENTITY % XHTML.version  "-//W3C//DTD XHTML 1.1//EN" >
+
+<!-- Use this URI to identify the default namespace:
+
+         "http://www.w3.org/1999/xhtml"
+
+     See the Qualified Names module for information
+     on the use of namespace prefixes in the DTD.
+-->
+<!ENTITY % NS.prefixed "IGNORE" >
+<!ENTITY % XHTML.prefix "" >
+
+<!-- Reserved for use with the XLink namespace:
+-->
+<!ENTITY % XLINK.xmlns "" >
+<!ENTITY % XLINK.xmlns.attrib "" >
+
+<!-- For example, if you are using XHTML 1.1 directly, use the FPI
+     in the DOCTYPE declaration, with the xmlns attribute on the
+     document element to identify the default namespace:
+
+       <?xml version="1.0"?>
+       <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "xhtml11.dtd">
+       <html xmlns="http://www.w3.org/1999/xhtml"
+             xml:lang="en">
+       ...
+       </html>
+
+     Revisions:
+     (none)
+-->
+
+<!-- reserved for future use with document profiles -->
+<!ENTITY % XHTML.profile  "" >
+
+<!-- Bidirectional Text features
+     This feature-test entity is used to declare elements
+     and attributes used for bidirectional text support.
+-->
+<!ENTITY % XHTML.bidi  "INCLUDE" >
+
+<?doc type="doctype" role="title" { XHTML 1.1 } ?>
+
+<!-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
+
+<!-- Pre-Framework Redeclaration placeholder  .................... -->
+<!-- this serves as a location to insert markup declarations
+     into the DTD prior to the framework declarations.
+-->
+<!ENTITY % xhtml-prefw-redecl.module "IGNORE" >
+<![%xhtml-prefw-redecl.module;[
+%xhtml-prefw-redecl.mod;
+<!-- end of xhtml-prefw-redecl.module -->]]>
+
+<!ENTITY % xhtml-events.module "INCLUDE" >
+
+<!-- Inline Style Module  ........................................ -->
+<!ENTITY % xhtml-inlstyle.module "INCLUDE" >
+<![%xhtml-inlstyle.module;[
+<!ENTITY % xhtml-inlstyle.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Inline Style 1.0//EN"
+            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-inlstyle-1.mod" >
+%xhtml-inlstyle.mod;]]>
+
+<!-- declare Document Model module instantiated in framework
+-->
+<!ENTITY % xhtml-model.mod
+     PUBLIC "-//W3C//ENTITIES XHTML 1.1 Document Model 1.0//EN"
+            "xhtml11-model-1.mod" >
+
+<!-- Modular Framework Module (required) ......................... -->
+<!ENTITY % xhtml-framework.module "INCLUDE" >
+<![%xhtml-framework.module;[
+<!ENTITY % xhtml-framework.mod
+     PUBLIC "-//W3C//ENTITIES XHTML Modular Framework 1.0//EN"
+            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-framework-1.mod" >
+%xhtml-framework.mod;]]>
+
+<!-- Post-Framework Redeclaration placeholder  ................... -->
+<!-- this serves as a location to insert markup declarations
+     into the DTD following the framework declarations.
+-->
+<!ENTITY % xhtml-postfw-redecl.module "IGNORE" >
+<![%xhtml-postfw-redecl.module;[
+%xhtml-postfw-redecl.mod;
+<!-- end of xhtml-postfw-redecl.module -->]]>
+
+<!-- Text Module (Required)  ..................................... -->
+<!ENTITY % xhtml-text.module "INCLUDE" >
+<![%xhtml-text.module;[
+<!ENTITY % xhtml-text.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Text 1.0//EN"
+            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-text-1.mod" >
+%xhtml-text.mod;]]>
+
+<!-- Hypertext Module (required) ................................. -->
+<!ENTITY % xhtml-hypertext.module "INCLUDE" >
+<![%xhtml-hypertext.module;[
+<!ENTITY % xhtml-hypertext.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Hypertext 1.0//EN"
+            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-hypertext-1.mod" >
+%xhtml-hypertext.mod;]]>
+
+<!-- Lists Module (required)  .................................... -->
+<!ENTITY % xhtml-list.module "INCLUDE" >
+<![%xhtml-list.module;[
+<!ENTITY % xhtml-list.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Lists 1.0//EN"
+            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-list-1.mod" >
+%xhtml-list.mod;]]>
+
+<!-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
+
+<!-- Edit Module  ................................................ -->
+<!ENTITY % xhtml-edit.module "INCLUDE" >
+<![%xhtml-edit.module;[
+<!ENTITY % xhtml-edit.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Editing Elements 1.0//EN"
+            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-edit-1.mod" >
+%xhtml-edit.mod;]]>
+
+<!-- BIDI Override Module  ....................................... -->
+<!ENTITY % xhtml-bdo.module "%XHTML.bidi;" >
+<![%xhtml-bdo.module;[
+<!ENTITY % xhtml-bdo.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML BIDI Override Element 1.0//EN"
+            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-bdo-1.mod" >
+%xhtml-bdo.mod;]]>
+
+<!-- Ruby Module  ................................................ -->
+<!ENTITY % Ruby.common.attlists "INCLUDE" >
+<!ENTITY % Ruby.common.attrib "%Common.attrib;" >
+<!ENTITY % xhtml-ruby.module "INCLUDE" >
+<![%xhtml-ruby.module;[
+<!ENTITY % xhtml-ruby.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Ruby 1.0//EN"
+            "http://www.w3.org/TR/ruby/xhtml-ruby-1.mod" >
+%xhtml-ruby.mod;]]>
+
+<!-- Presentation Module  ........................................ -->
+<!ENTITY % xhtml-pres.module "INCLUDE" >
+<![%xhtml-pres.module;[
+<!ENTITY % xhtml-pres.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Presentation 1.0//EN"
+            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-pres-1.mod" >
+%xhtml-pres.mod;]]>
+
+<!-- Link Element Module  ........................................ -->
+<!ENTITY % xhtml-link.module "INCLUDE" >
+<![%xhtml-link.module;[
+<!ENTITY % xhtml-link.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Link Element 1.0//EN"
+            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-link-1.mod" >
+%xhtml-link.mod;]]>
+
+<!-- Document Metainformation Module  ............................ -->
+<!ENTITY % xhtml-meta.module "INCLUDE" >
+<![%xhtml-meta.module;[
+<!ENTITY % xhtml-meta.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Metainformation 1.0//EN"
+            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-meta-1.mod" >
+%xhtml-meta.mod;]]>
+
+<!-- Base Element Module  ........................................ -->
+<!ENTITY % xhtml-base.module "INCLUDE" >
+<![%xhtml-base.module;[
+<!ENTITY % xhtml-base.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Base Element 1.0//EN"
+            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-base-1.mod" >
+%xhtml-base.mod;]]>
+
+<!-- Scripting Module  ........................................... -->
+<!ENTITY % xhtml-script.module "INCLUDE" >
+<![%xhtml-script.module;[
+<!ENTITY % xhtml-script.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Scripting 1.0//EN"
+            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-script-1.mod" >
+%xhtml-script.mod;]]>
+
+<!-- Style Sheets Module  ......................................... -->
+<!ENTITY % xhtml-style.module "INCLUDE" >
+<![%xhtml-style.module;[
+<!ENTITY % xhtml-style.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Style Sheets 1.0//EN"
+            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-style-1.mod" >
+%xhtml-style.mod;]]>
+
+<!-- Image Module  ............................................... -->
+<!ENTITY % xhtml-image.module "INCLUDE" >
+<![%xhtml-image.module;[
+<!ENTITY % xhtml-image.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Images 1.0//EN"
+            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-image-1.mod" >
+%xhtml-image.mod;]]>
+
+<!-- Client-side Image Map Module  ............................... -->
+<!ENTITY % xhtml-csismap.module "INCLUDE" >
+<![%xhtml-csismap.module;[
+<!ENTITY % xhtml-csismap.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Client-side Image Maps 1.0//EN"
+            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-csismap-1.mod" >
+%xhtml-csismap.mod;]]>
+
+<!-- Server-side Image Map Module  ............................... -->
+<!ENTITY % xhtml-ssismap.module "INCLUDE" >
+<![%xhtml-ssismap.module;[
+<!ENTITY % xhtml-ssismap.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Server-side Image Maps 1.0//EN"
+            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-ssismap-1.mod" >
+%xhtml-ssismap.mod;]]>
+
+<!-- Param Element Module  ....................................... -->
+<!ENTITY % xhtml-param.module "INCLUDE" >
+<![%xhtml-param.module;[
+<!ENTITY % xhtml-param.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Param Element 1.0//EN"
+            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-param-1.mod" >
+%xhtml-param.mod;]]>
+
+<!-- Embedded Object Module  ..................................... -->
+<!ENTITY % xhtml-object.module "INCLUDE" >
+<![%xhtml-object.module;[
+<!ENTITY % xhtml-object.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Embedded Object 1.0//EN"
+            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-object-1.mod" >
+%xhtml-object.mod;]]>
+
+<!-- Tables Module ............................................... -->
+<!ENTITY % xhtml-table.module "INCLUDE" >
+<![%xhtml-table.module;[
+<!ENTITY % xhtml-table.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Tables 1.0//EN"
+            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-table-1.mod" >
+%xhtml-table.mod;]]>
+
+<!-- Forms Module  ............................................... -->
+<!ENTITY % xhtml-form.module "INCLUDE" >
+<![%xhtml-form.module;[
+<!ENTITY % xhtml-form.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Forms 1.0//EN"
+            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-form-1.mod" >
+%xhtml-form.mod;]]>
+
+<!-- Legacy Markup ............................................... -->
+<!ENTITY % xhtml-legacy.module "IGNORE" >
+<![%xhtml-legacy.module;[
+<!ENTITY % xhtml-legacy.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Legacy Markup 1.0//EN"
+            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-legacy-1.mod" >
+%xhtml-legacy.mod;]]>
+
+<!-- Document Structure Module (required)  ....................... -->
+<!ENTITY % xhtml-struct.module "INCLUDE" >
+<![%xhtml-struct.module;[
+<!ENTITY % xhtml-struct.mod
+     PUBLIC "-//W3C//ELEMENTS XHTML Document Structure 1.0//EN"
+            "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-struct-1.mod" >
+%xhtml-struct.mod;]]>
+
+<!-- end of XHTML 1.1 DTD  ................................................. -->
+<!-- ....................................................................... -->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/values/ATSCColor.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,622 @@
+//
+// $Id: ATSCColor.java,v 1.8 2009-03-06 14:34:36 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 org.w3c.css.values;
+
+import java.util.HashMap;
+
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+
+/**
+ *   <H3>
+ *     &nbsp;&nbsp; Color units
+ *   </H3>
+ *   <P>
+ *   A color is a either a keyword or a numerical RGB specification.
+ *   <P>
+ *   The suggested list of keyword color names is: aqua, black, blue, fuchsia,
+ *   gray, green, lime, maroon, navy, olive, purple, red, silver, teal, white,
+ *   and yellow. These 16 colors are taken from the Windows VGA palette, and their
+ *   RGB values are not defined in this specification.
+ *   <PRE>
+ *   BODY {color: black; background: white }
+ *   H1 { color: maroon }
+ *   H2 { color: olive }
+ * </PRE>
+ *   <P>
+ *   The RGB color model is being used in numerical color specifications. These
+ *   examples all specify the same color:
+ *   <PRE>
+ *   EM { color: #f00 }              / * #rgb * /
+ *   EM { color: #ff0000 }           / * #rrggbb * /
+ *   EM { color: rgb(255,0,0) }      / * integer range 0 - 255 * /
+ *   EM { color: rgb(100%, 0%, 0%) } / * float range 0.0% - 100.0% * /
+ * </PRE>
+ *   <P>
+ *   The format of an RGB value in hexadecimal notation is a '#' immediately followed
+ *   by either three or six hexadecimal characters. The three-digit RGB notation
+ *   (#rgb) is converted into six-digit form (#rrggbb) by replicating digits,
+ *   not by adding zeros. For example, #fb0 expands to #ffbb00. This makes sure
+ *   that white (#ffffff) can be specified with the short notation (#fff) and
+ *   removes any dependencies on the color depth of the display.
+ *   <P>
+ *   The format of an RGB value in the functional notation is 'rgb(' followed
+ *   by a comma-separated list of three numerical values (either three integer
+ *   values in the range of 0-255, or three percentage values in the range of
+ *   0.0% to 100.0%) followed by ')'. Whitespace characters are allowed around
+ *   the numerical values.
+ *   <P>
+ *   Values outside the numerical ranges should be clipped. The three rules below
+ *   are therefore equivalent:
+ *   <PRE>
+ *   EM { color: rgb(255,0,0) }       / * integer range 0 - 255 * /
+ *   EM { color: rgb(300,0,0) }       / * clipped to 255 * /
+ *   EM { color: rgb(110%, 0%, 0%) }  / * clipped to 100% * /
+ * </PRE>
+ *   <P>
+ *   RGB colors are specified in the sRGB color space <A HREF="#ref9">[9]</A>.
+ *   UAs may vary in the fidelity with which they represent these colors, but
+ *   use of sRGB provides an unambiguous and objectively measurable definition
+ *   of what the color should be, which can be related to international standards
+ *   <A HREF="#ref10">[10]</A>.
+ *   <P>
+ *   UAs may limit their efforts in displaying colors to performing a gamma-correction
+ *   on them. sRGB specifies a display gamma of 2.2 under specified viewing
+ *   conditions. UAs adjust the colors given in CSS such that, in combination
+ *   with an output device's "natural" display gamma, an effective display gamma
+ *   of 2.2 is produced. <A HREF="#appendix-d">Appendix D</A> gives further details
+ *   of this. Note that only colors specified in CSS are affected; e.g., images
+ *   are expected to carry their own color information.
+ *
+ *
+ *   <H2>
+ *     <A NAME="appendix-d">Appendix D: Gamma correction</A>
+ *   </H2>
+ *   <P>
+ *   (This appendix is informative, not normative)
+ *   <P>
+ *   See the <A href="http://www.w3.org/pub/WWW/TR/PNG-GammaAppendix">Gamma
+ *   Tutorial</A> in the PNG specification <A href="#ref12">[12]</A> if you aren't
+ *   already familiar with gamma issues.
+ *   <P>
+ *   In the computation, UAs displaying on a CRT may assume an ideal CRT and ignore
+ *   any effects on apparent gamma caused by dithering. That means the minimal
+ *   handling they need to do on current platforms is:
+ *   <DL>
+ *     <DT>
+ *       PC using MS-Windows
+ *     <DD>
+ *       none
+ *     <DT>
+ *       Unix using X11
+ *     <DD>
+ *       none
+ *     <DT>
+ *       Mac using QuickDraw
+ *     <DD>
+ *       apply gamma 1.39 <A HREF="#ref13">[13]</A> (ColorSync-savvy applications
+ *       may simply pass the sRGB ICC profile <A HREF="#ref14">[14]</A> to ColorSync
+ *       to perform correct color correction)
+ *     <DT>
+ *       SGI using X
+ *     <DD>
+ *       apply the gamma value from <TT>/etc/config/system.glGammaVal</TT> (the default
+ *       value being 1.70; applications running on Irix 6.2 or above may simply pass
+ *       the sRGB ICC profile to the color management system)
+ *     <DT>
+ *       NeXT using NeXTStep
+ *     <DD>
+ *       apply gamma 2.22
+ *   </DL>
+ *   <P>
+ *   "Applying gamma" means that each of the three R, G and B must be converted
+ *   to R'=R<SUP>gamma</SUP>, G'=G<SUP>gamma</SUP>, G'=B<SUP>gamma</SUP>, before
+ *   handing to the OS.
+ *   <P>
+ *   This may rapidly be done by building a 256-element lookup table once per
+ *   browser invocation thus:
+ *   <PRE>
+ *   for i := 0 to 255 do
+ *     raw := i / 255;
+ *     corr := pow (raw, gamma);
+ *     table[i] := trunc (0.5 + corr * 255.0)
+ *   end
+ * </PRE>
+ *   <P>
+ *   which then avoids any need to do transcendental math per color attribute,
+ *   far less per pixel.
+
+ * See also
+ * <P>
+ * <A NAME="ref9">[9]</A> M Anderson, R Motta, S Chandrasekar, M Stokes:
+ * "<A HREF="http://www.hpl.hp.com/personal/Michael_Stokes/srgb.htm">Proposal
+ * for a Standard Color Space for the Internet - sRGB</A>"
+ * (http://www.hpl.hp.com/personal/Michael_Stokes/srgb.htm)
+ *   <P>
+ *  <A NAME="ref10">[10]</A> CIE Publication 15.2-1986,
+ *  "<A HREF="http://www.hike.te.chiba-u.ac.jp/ikeda/CIE/publ/abst/15-2-86.html">Colorimetry,
+ *  Second Edition</A>", ISBN 3-900-734-00-3
+ *  (http://www.hike.te.chiba-u.ac.jp/ikeda/CIE/publ/abst/15-2-86.html)
+ * <P>
+ * <A NAME="ref12">[12]</A>
+ * "<A href="http://www.w3.org/pub/WWW/TR/REC-png-multi.html">PNG (Portable
+ * Network Graphics) Specification, Version 1.0 specification</A>"
+ * (http://www.w3.org/pub/WWW/TR/REC-png-multi.html)
+ * <P>
+ * <A NAME="ref13">[13]</A> Charles A. Poynton:
+ * "<A HREF="ftp://ftp.inforamp.net/pub/users/poynton/doc/Mac/Mac_gamma.pdf">Gamma
+ * correction on the Macintosh Platform</A>"
+ * (ftp://ftp.inforamp.net/pub/users/poynton/doc/Mac/Mac_gamma.pdf)
+ * <P>
+ * <A NAME="ref14">[14]</A> International Color Consortium:
+ * "<A HREF="ftp://sgigate.sgi.com/pub/icc/ICC32.pdf">ICC Profile Format
+ *  Specification, version 3.2</A>", 1995 (ftp://sgigate.sgi.com/pub/icc/ICC32.pdf)
+ *
+ * @version $Revision: 1.8 $
+ */
+public class ATSCColor extends CssValue
+        implements CssColorConstants, CssOperator {
+
+    Object color;
+    RGBATSC rgb;
+    static HashMap<String,Object> definedColorsATSC;
+    static CssIdent inherit = new CssIdent("inherit");
+
+    /**
+     * Create a new CssColor.
+     */
+    public ATSCColor() {
+	color = inherit;
+    }
+
+    /**
+     * Create a new ATSCColor with a color name.
+     *
+     * @param s The name color.
+     * @exception InvalidParamException the color is incorrect
+     */
+    public ATSCColor(ApplContext ac, String s) throws InvalidParamException {
+	//	setIdentColor(s.toLowerCase(), ac);
+	setIdentColor(s, ac);
+    }
+
+    /**
+     * Set the value from a defined color RBG.
+     *
+     * @param s the string representation of the color.
+     * @exception InvalidParamException the color is incorrect.
+     */
+    public void set(String s, ApplContext ac)  throws InvalidParamException {
+	if (s.startsWith("#")) {
+	    setShortRGBColor(s.toLowerCase(), ac);
+	} else {
+	    setIdentColor(s, ac);
+	}
+    }
+
+    /**
+     * Return the internal value.
+     */
+    public Object get() {
+	if (color != null) {
+	    if (color == inherit) {
+		return null;
+	    } else {
+		return color;
+	    }
+	} else {
+	    return rgb.r;
+	}
+    }
+
+    /**
+     * Returns <code>true</code> if the internal value is the default value
+     * (e.g. 'inherited').
+     */
+    public boolean isDefault() {
+	return color == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (color != null) {
+	    if (color == inherit) {
+		return inherit.toString();
+	    } else {
+		return color.toString();
+	    }
+	} else {
+	    return rgb.toString();
+	}
+    }
+
+    /**
+     * Parse a RGB color.
+     * format rgb(<num>%?, <num>%?, <num>%?)
+     */
+    public void setRGBColor(CssExpression exp, ApplContext ac)
+  	    throws InvalidParamException {
+	CssValue val = exp.getValue();
+	char op = exp.getOperator();
+	color = null;
+	rgb = new RGBATSC();
+
+	if (val == null || op != COMMA) {
+	    throw new InvalidParamException("invalid-color", ac);
+	}
+
+	if (val instanceof CssNumber) {
+	    rgb.r = ((Float) val.get());//.intValue();
+	} else if (val instanceof CssPercentage) {
+	    rgb.r = ((Float) val.get());//.floatValue();
+	} else {
+	    throw new InvalidParamException("rgb", val, ac);
+	}
+
+	exp.next();
+	val = exp.getValue();
+	op = exp.getOperator();
+
+	if (val == null || op != COMMA) {
+	    throw new InvalidParamException("invalid-color", ac);
+	}
+
+	if (val instanceof CssNumber) {
+	    rgb.g = ((Float) val.get());//.intValue();
+	} else if (val instanceof CssPercentage) {
+	    rgb.g = ((Float) val.get());//.floatValue();
+	} else {
+	    throw new InvalidParamException("rgb", val, ac);
+	}
+
+	exp.next();
+	val = exp.getValue();
+	op = exp.getOperator();
+
+	if (val == null) {
+	    throw new InvalidParamException("invalid-color", ac);
+	}
+
+	if (val instanceof CssNumber) {
+	    rgb.b = ((Float) val.get());//.intValue();
+	} else if (val instanceof CssPercentage) {
+	    rgb.b = ((Float) val.get());//.floatValue();
+	} else {
+	    throw new InvalidParamException("rgb", val, ac);
+	}
+
+	exp.next();
+	if (exp.getValue() != null) {
+	    throw new InvalidParamException("rgb", exp.getValue(), ac);
+	}
+    }
+
+    public void setATSCrgba(CssExpression exp, ApplContext ac)
+	throws InvalidParamException{
+
+	CssValue val = exp.getValue();
+	char op = exp.getOperator();
+	color = null;
+	rgb = new RGBATSC();
+
+	if (val == null || op != COMMA) {
+	    throw new InvalidParamException("invalid-color", ac);
+	}
+
+	if (val instanceof CssNumber) {
+	    rgb.r = ((Float) val.get());//.intValue();
+	} else if (val instanceof CssPercentage) {
+	    rgb.r = ((Float) val.get());//.floatValue();
+	} else {
+	    throw new InvalidParamException("ATSCrgb", val, ac);
+	}
+
+	exp.next();
+	val = exp.getValue();
+	op = exp.getOperator();
+
+	if (val == null || op != COMMA) {
+	    throw new InvalidParamException("invalid-color", ac);
+	}
+
+	if (val instanceof CssNumber) {
+	    rgb.g = ((Float) val.get());//.intValue();
+	} else if (val instanceof CssPercentage) {
+	    rgb.g = ((Float) val.get());//.floatValue();
+	} else {
+	    throw new InvalidParamException("ATSCrgb", val, ac);
+	}
+
+	exp.next();
+	val = exp.getValue();
+	op = exp.getOperator();
+
+	if (val == null) {
+	    throw new InvalidParamException("invalid-color", ac);
+	}
+
+	if (val instanceof CssNumber) {
+	    rgb.b = ((Float) val.get());//.intValue();
+	} else if (val instanceof CssPercentage) {
+	    rgb.b = ((Float) val.get());//.floatValue();
+	} else {
+	    throw new InvalidParamException("ATSCrgb", val, ac);
+	}
+
+	exp.next();
+	val = exp.getValue();
+	op = exp.getOperator();
+
+	if (val == null) {
+	    throw new InvalidParamException("invalid-color", ac);
+	}
+
+	if (val instanceof CssNumber) {
+	    rgb.o = ((Float) val.get());//.intValue();
+	} else if (val instanceof CssPercentage) {
+	    rgb.o = ((Float) val.get());//.floatValue();
+	} else {
+	    throw new InvalidParamException("ATSCrgb", val, ac);
+	}
+
+	exp.next();
+	if (exp.getValue() != null) {
+	    throw new InvalidParamException("ATSCrgb", exp.getValue(), ac);
+	}
+
+    }
+
+    /**
+     * Parse a RGB color.
+     * format #(3-6)<hexnum>
+     */
+    private void setShortRGBColor(String s, ApplContext ac)
+	    throws InvalidParamException {
+	int r;
+	int g;
+	int b;
+
+	rgb = new RGBATSC();
+	color = null;
+	s = s.substring(1);
+
+	if (s.length() != 3 && s.length() != 6) {
+	    throw new InvalidParamException("rgb", s, ac);
+	}
+	if (s.length() == 3) {
+	    String sh = s.substring(0,1);
+	    r = Integer.parseInt(sh+sh, 16);
+	    sh = s.substring(1,2);
+	    g = Integer.parseInt(sh+sh, 16);
+	    sh = s.substring(2,3);
+	    b = Integer.parseInt(sh+sh, 16);
+	} else {
+	    r = Integer.parseInt(s.substring(0,2), 16);
+	    g = Integer.parseInt(s.substring(2,4), 16);
+	    b = Integer.parseInt(s.substring(4,6), 16);
+	}
+	rgb.r = new Integer(r);
+	rgb.g = new Integer(g);
+	rgb.b = new Integer(b);
+	rgb.output = "#" + s;
+    }
+
+    /**
+     * Parse an ident color.
+     */
+    private void setIdentColor(String s, ApplContext ac)
+	    throws InvalidParamException {
+	String lower_s = s.toLowerCase();
+	Object obj = definedColorsATSC.get(lower_s);
+	if (obj != null) {
+	    if (obj instanceof RGBATSC) {
+		color = lower_s;
+		rgb = (RGBATSC) obj;
+	    } else if (obj instanceof String) {
+		color = (String) obj;
+// 2007-05 - this warning on color string capitalization is plain silly, 
+// commenting it out-- ot@w3.org
+//		if (!obj.equals(s)) {
+//		    ac.getFrame().addWarning("color.mixed-capitalization",
+//					     s);
+//		}
+	    }
+	    return;
+	}
+
+	throw new InvalidParamException("value", s, "color", ac);
+    }
+
+    /**
+     * Compares two values for equality.
+     *
+     * @param value The other value.
+     */
+    public boolean equals(Object cssColor) {
+	return ((cssColor instanceof ATSCColor) &&
+		((color != null && color.equals(((ATSCColor) cssColor).color))
+		 || ((color == null)
+		     && (rgb != null)
+		     && (((ATSCColor) cssColor).rgb != null)
+		     && (rgb.r.equals(((ATSCColor) cssColor).rgb.r)
+			 && rgb.g.equals(((ATSCColor) cssColor).rgb.g)
+			 && rgb.b.equals(((ATSCColor) cssColor).rgb.b)))));
+    }
+
+    /**
+     * Gets the red component of this color.
+     */
+    public Object getRed() {
+	return rgb.r;
+    }
+
+    /**
+     * Gets the green component of this color.
+     */
+    public Object getGreen() {
+	return rgb.g;
+    }
+
+    /**
+     * Gets the blue component of this color.
+     */
+    public Object getBlue() {
+	return rgb.b;
+    }
+
+    static {
+	definedColorsATSC = new HashMap<String,Object>();
+	definedColorsATSC.put("black",
+			  new RGBATSC(new Integer(0),
+				      new Integer(0),
+				      new Integer(0),
+				      new Integer(255)));
+	definedColorsATSC.put("silver",
+			  new RGBATSC(new Integer(192),
+				      new Integer(192),
+				      new Integer(192),
+				      new Integer(255)));
+	definedColorsATSC.put("gray",
+			  new RGBATSC(new Integer(128),
+				      new Integer(128),
+				      new Integer(128),
+				      new Integer(255)));
+	definedColorsATSC.put("white",
+			  new RGBATSC(new Integer(255),
+				      new Integer(255),
+				      new Integer(255),
+				      new Integer(255)));
+	definedColorsATSC.put("maroon",
+			  new RGBATSC(new Integer(128),
+				      new Integer(0),
+				      new Integer(0),
+				      new Integer(255)));
+	definedColorsATSC.put("red",
+			  new RGBATSC(new Integer(255),
+				      new Integer(0),
+				      new Integer(0),
+				      new Integer(255)));
+	definedColorsATSC.put("purple",
+			  new RGBATSC(new Integer(128),
+				      new Integer(0),
+				      new Integer(128),
+				      new Integer(255)));
+	definedColorsATSC.put("fuchsia",
+			  new RGBATSC(new Integer(255),
+				      new Integer(0),
+				      new Integer(255),
+				      new Integer(255)));
+	definedColorsATSC.put("green",
+			  new RGBATSC(new Integer(0),
+				      new Integer(128),
+				      new Integer(0),
+				      new Integer(255)));
+	definedColorsATSC.put("lime",
+			  new RGBATSC(new Integer(0),
+				      new Integer(255),
+				      new Integer(0),
+				      new Integer(255)));
+	definedColorsATSC.put("olive",
+			  new RGBATSC(new Integer(128),
+				      new Integer(128),
+				      new Integer(0),
+				      new Integer(255)));
+	definedColorsATSC.put("yellow",
+			  new RGBATSC(new Integer(255),
+				      new Integer(255),
+				      new Integer(0),
+				      new Integer(255)));
+	definedColorsATSC.put("navy",
+			  new RGBATSC(new Integer(0),
+				      new Integer(0),
+				      new Integer(128),
+				      new Integer(255)));
+	definedColorsATSC.put("blue",
+			  new RGBATSC(new Integer(0),
+				      new Integer(0),
+				      new Integer(255),
+				      new Integer(255)));
+	definedColorsATSC.put("teal",
+			  new RGBATSC(new Integer(0),
+				      new Integer(128),
+				      new Integer(128),
+				      new Integer(255)));
+	definedColorsATSC.put("aqua",
+			  new RGBATSC(new Integer(0),
+				      new Integer(255),
+				      new Integer(255),
+				      new Integer(255)));
+        definedColorsATSC.put("activeborder", "ActiveBorder");
+        definedColorsATSC.put("activecaption", "ActiveCaption");
+        definedColorsATSC.put("appworkspace", "AppWorkspace");
+        definedColorsATSC.put("background", "Background");
+        definedColorsATSC.put("buttonface", "ButtonFace");
+        definedColorsATSC.put("buttonhighlight", "ButtonHighlight");
+        definedColorsATSC.put("buttonshadow", "ButtonShadow");
+        definedColorsATSC.put("buttontext", "ButtonText");
+        definedColorsATSC.put("captiontext", "CaptionText");
+        definedColorsATSC.put("graytext", "GrayText");
+        definedColorsATSC.put("highlight", "Highlight");
+        definedColorsATSC.put("highlighttext", "HighlightText");
+        definedColorsATSC.put("inactiveborder", "InactiveBorder");
+        definedColorsATSC.put("inactivecaption", "InactiveCaption");
+        definedColorsATSC.put("inactivecaptiontext", "InactiveCaptionText");
+        definedColorsATSC.put("infobackground", "InfoBackground");
+        definedColorsATSC.put("infotext", "InfoText");
+        definedColorsATSC.put("menu", "Menu");
+        definedColorsATSC.put("menutext", "MenuText");
+        definedColorsATSC.put("scrollbar", "Scrollbar");
+        definedColorsATSC.put("threeddarkshadow", "ThreeDDarkShadow");
+        definedColorsATSC.put("threedface", "ThreeDFace");
+        definedColorsATSC.put("threedhighlight", "ThreeDHighlight");
+        definedColorsATSC.put("threedlightshadow", "ThreeDLightShadow");
+        definedColorsATSC.put("threedshadow", "ThreeDShadow");
+        definedColorsATSC.put("window", "Window");
+        definedColorsATSC.put("windowframe", "WindowFrame");
+        definedColorsATSC.put("windowtext", "WindowText");
+    }
+
+}
+
+class RGBATSC {
+
+    String output = null;
+    Object r;
+    Object g;
+    Object b;
+    Object o;
+
+    /**
+     * Create a new RGBATSC
+     */
+    public RGBATSC() {
+    }
+
+    /**
+     * Create a new RGBATSC with default values
+     */
+    public RGBATSC(Object r, Object g, Object b, Object o) {
+	this.r = r;
+	this.g = g;
+	this.b = b;
+	this.o = o;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (output == null) {
+	    return "rgb("+r+","+g+","+b+","+o+")";
+	} else {
+	    return output;
+	}
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/values/CssAngle.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,237 @@
+//
+// $Id: CssAngle.java,v 1.7 2008-03-25 18:30:11 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 org.w3c.css.values;
+
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.util.Util;
+
+/**
+ * <H3>Angle</H3>
+
+ * <P>Angle units are used with aural cascading style sheets.
+ *
+ * <P>These are the legal angle units:
+ *
+ * <UL>
+ * <LI>deg: degrees
+ * <LI>grad: gradians
+ * <LI>rad: radians
+ * </UL>
+ *
+ * <p>Values in these units may be negative. They should be normalized to the
+ * range 0-360deg by the UA. For example, -10deg and 350deg are equivalent.
+ *
+ * @version $Revision: 1.7 $ */
+public class CssAngle extends CssValue implements CssValueFloat {
+
+    public static final int type = CssTypes.CSS_ANGLE;
+    
+    public final int getType() {
+	return type;
+    }
+
+    Float value;
+    int unit;
+    static String[] units = { "deg", "grad", "rad" };
+    static int[] hash_units;
+    static Float defaultValue = new Float(0);
+
+    /**
+     * Create a new CssAngle.
+     */
+    public CssAngle() {
+	this(defaultValue);
+    }
+
+    /**
+     * Create a new CssAngle
+     */
+    public CssAngle(float v) {
+	this(new Float(v));
+    }
+
+    /**
+     * Create a new CssAngle
+     */
+    public CssAngle(Float angle) {
+	value = angle;
+    }
+
+    /**
+     * Set the value of this angle.
+     *
+     * @param s The string representation of the angle
+     * @param frame For errors and warnings reports
+     * @exception InvalidParamException The unit is incorrect
+     */
+    public void set(String s, ApplContext ac) throws InvalidParamException {
+	s = s.toLowerCase();
+	int length = s.length();
+	String unit;
+	//float v;
+	if (s.indexOf("grad") == -1) {
+	    unit = s.substring(length-3, length);
+	    value = new Float(s.substring(0, length-3));
+	} else {
+	    unit = "grad";
+	    value = new Float(s.substring(0, length-4));
+	}
+	int hash = unit.hashCode();
+
+
+	int i = 0;
+	while (i<units.length) {
+	    if (hash == hash_units[i]) {
+		this.unit = i;
+		break;
+	    }
+	    i++;
+	}
+
+	if (i > 2) {
+	    throw new InvalidParamException("unit", unit, ac);
+	}
+
+	this.unit = i; // there is no unit by default
+
+	/* clipping with degree */
+	/*
+	  while (v < 0) {
+	  v += 360;
+	  }
+	  while (v > 360) {
+	  v -= 360;
+	  }
+	*/
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    public float getValue() {
+	return value.floatValue();
+    }
+
+    /**
+     * Returns the current value
+     */
+    public String getUnit() {
+	return units[unit];
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+
+	if (value.floatValue() != 0) {
+	    return Util.displayFloat(value) + getUnit();
+	} else {
+	    return Util.displayFloat(value);
+	}
+    }
+
+    /**
+     * Compares two values for equality.
+     *
+     * @param value The other value.
+     */
+    public boolean equals(Object value) {
+	return (value instanceof CssAngle &&
+		this.value.equals(((CssAngle) value).value) &&
+		unit == ((CssAngle) value).unit);
+    }
+
+
+    private float normalize(float degree) {
+	while (degree < 0) {
+	    degree += 360;
+	}
+	while (degree > 360) {
+	    degree -= 360;
+	}
+	return degree;
+    }
+
+    //@@FIXME I should return the remainder for all ...
+
+    public float getDegree() {
+	float angle = value.floatValue();
+	switch (unit) {
+	case 0:
+	    // angle % 360
+	    return normalize(angle);
+	case 1:
+	    return normalize(angle * (9.f / 10.f));
+	case 2:
+	    return normalize(angle * (180.f / ((float) Math.PI)));
+	default:
+	    System.err.println("[ERROR] in org.w3c.css.values.CssAngle");
+	    System.err.println("[ERROR] Please report (" + unit + ")");
+	    return (float) 0;
+	}
+    }
+/*
+ // These functions are not used, don't normalize angles, and are false
+ // (int operations instead of float ones)
+
+    public float getGradian() {
+	float grad = value.floatValue();
+	switch (unit) {
+	case 0:
+	    return (grad * (((float) Math.PI) / 180));
+	case 1:
+	    return grad;
+	case 2:
+	    return (grad * (((float) Math.PI) / 100));
+	default:
+	    System.err.println("[ERROR] in org.w3c.css.values.CssAngle");
+	    System.err.println("[ERROR] Please report (" + unit + ")");
+	    return (float) 0;
+	}
+    }
+
+    public float getRadian() {
+	float rad = value.floatValue();
+	switch (unit) {
+	case 0:
+	    return (rad * (5 / 9));
+	case 1:
+	    return (rad * (100 / ((float) Math.PI)));
+	case 2:
+	    return rad;
+	default:
+	    System.err.println("[ERROR] in org.w3c.css.values.CssAngle");
+	    System.err.println("[ERROR] Please report (" + unit + ")");
+	    return (float) 0;
+	}
+    }
+*/
+    public boolean isDegree() {
+	return unit == 0;
+    }
+
+    public boolean isGradian() {
+	return unit == 1;
+    }
+
+    public boolean isRadian() {
+	return unit == 2;
+    }
+
+    static {
+	hash_units = new int[units.length];
+	for (int i=0; i<units.length; i++)
+	    hash_units[i] = units[i].hashCode();
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/values/CssColor.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,1117 @@
+//
+// $Id: CssColor.java,v 1.18 2009-03-09 17:17:48 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 org.w3c.css.values;
+
+import java.util.HashMap;
+import java.util.Vector;
+
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.util.Util;
+
+/**
+ *   <H3>
+ *     &nbsp;&nbsp; Color units
+ *   </H3>
+ *   <P>
+ *   A color is a either a keyword or a numerical RGB specification.
+ *   <P>
+ *   The suggested list of keyword color names is: aqua, black, blue, fuchsia,
+ *   gray, green, lime, maroon, navy, olive, purple, red, silver, teal, white,
+ *   and yellow. These 16 colors are taken from the Windows VGA palette,
+ *   and their RGB values are not defined in this specification.
+ *   <PRE>
+ *   BODY {color: black; background: white }
+ *   H1 { color: maroon }
+ *   H2 { color: olive }
+ * </PRE>
+ *   <P>
+ *   The RGB color model is being used in numerical color specifications. These
+ *   examples all specify the same color:
+ *   <PRE>
+ *   EM { color: #f00 }              / * #rgb * /
+ *   EM { color: #ff0000 }           / * #rrggbb * /
+ *   EM { color: rgb(255,0,0) }      / * integer range 0 - 255 * /
+ *   EM { color: rgb(100%, 0%, 0%) } / * float range 0.0% - 100.0% * /
+ * </PRE>
+ *   <P>
+ *   The format of an RGB value in hexadecimal notation is a '#' immediately followed
+ *   by either three or six hexadecimal characters. The three-digit RGB notation
+ *   (#rgb) is converted into six-digit form (#rrggbb) by replicating digits,
+ *   not by adding zeros. For example, #fb0 expands to #ffbb00. This makes sure
+ *   that white (#ffffff) can be specified with the short notation (#fff) and
+ *   removes any dependencies on the color depth of the display.
+ *   <P>
+ *   The format of an RGB value in the functional notation is 'rgb(' followed
+ *   by a comma-separated list of three numerical values (either three integer
+ *   values in the range of 0-255, or three percentage values in the range of
+ *   0.0% to 100.0%) followed by ')'. Whitespace characters are allowed around
+ *   the numerical values.
+ *   <P>
+ *   Values outside the numerical ranges should be clipped. The three rules below
+ *   are therefore equivalent:
+ *   <PRE>
+ *   EM { color: rgb(255,0,0) }       / * integer range 0 - 255 * /
+ *   EM { color: rgb(300,0,0) }       / * clipped to 255 * /
+ *   EM { color: rgb(110%, 0%, 0%) }  / * clipped to 100% * /
+ * </PRE>
+ *   <P>
+ *   RGB colors are specified in the sRGB color space <A HREF="#ref9">[9]</A>.
+ *   UAs may vary in the fidelity with which they represent these colors, but
+ *   use of sRGB provides an unambiguous and objectively measurable definition
+ *   of what the color should be, which can be related to international standards
+ *   <A HREF="#ref10">[10]</A>.
+ *   <P>
+ *   UAs may limit their efforts in displaying colors to performing a gamma-correction
+ *   on them. sRGB specifies a display gamma of 2.2 under specified viewing
+ *   conditions. UAs adjust the colors given in CSS such that, in combination
+ *   with an output device's "natural" display gamma, an effective display gamma
+ *   of 2.2 is produced. <A HREF="#appendix-d">Appendix D</A> gives further details
+ *   of this. Note that only colors specified in CSS are affected; e.g., images
+ *   are expected to carry their own color information.
+ *
+ *
+ *   <H2>
+ *     <A NAME="appendix-d">Appendix D: Gamma correction</A>
+ *   </H2>
+ *   <P>
+ *   (This appendix is informative, not normative)
+ *   <P>
+ *   See the <A href="http://www.w3.org/pub/WWW/TR/PNG-GammaAppendix">Gamma
+ *   Tutorial</A> in the PNG specification <A href="#ref12">[12]</A> if you aren't
+ *   already familiar with gamma issues.
+ *   <P>
+ *   In the computation, UAs displaying on a CRT may assume an ideal CRT and ignore
+ *   any effects on apparent gamma caused by dithering. That means the minimal
+ *   handling they need to do on current platforms is:
+ *   <DL>
+ *     <DT>
+ *       PC using MS-Windows
+ *     <DD>
+ *       none
+ *     <DT>
+ *       Unix using X11
+ *     <DD>
+ *       none
+ *     <DT>
+ *       Mac using QuickDraw
+ *     <DD>
+ *       apply gamma 1.39 <A HREF="#ref13">[13]</A> (ColorSync-savvy applications
+ *       may simply pass the sRGB ICC profile <A HREF="#ref14">[14]</A> to ColorSync
+ *       to perform correct color correction)
+ *     <DT>
+ *       SGI using X
+ *     <DD>
+ *       apply the gamma value from <TT>/etc/config/system.glGammaVal</TT> (the default
+ *       value being 1.70; applications running on Irix 6.2 or above may simply pass
+ *       the sRGB ICC profile to the color management system)
+ *     <DT>
+ *       NeXT using NeXTStep
+ *     <DD>
+ *       apply gamma 2.22
+ *   </DL>
+ *   <P>
+ *   "Applying gamma" means that each of the three R, G and B must be converted
+ *   to R'=R<SUP>gamma</SUP>, G'=G<SUP>gamma</SUP>, G'=B<SUP>gamma</SUP>, before
+ *   handing to the OS.
+ *   <P>
+ *   This may rapidly be done by building a 256-element lookup table once per
+ *   browser invocation thus:
+ *   <PRE>
+ *   for i := 0 to 255 do
+ *     raw := i / 255;
+ *     corr := pow (raw, gamma);
+ *     table[i] := trunc (0.5 + corr * 255.0)
+ *   end
+ * </PRE>
+ *   <P>
+ *   which then avoids any need to do transcendental math per color attribute,
+ *   far less per pixel.
+
+ * See also
+ * <P>
+ * <A NAME="ref9">[9]</A> M Anderson, R Motta, S Chandrasekar, M Stokes:
+ * "<A HREF="http://www.hpl.hp.com/personal/Michael_Stokes/srgb.htm">Proposal
+ * for a Standard Color Space for the Internet - sRGB</A>"
+ * (http://www.hpl.hp.com/personal/Michael_Stokes/srgb.htm)
+ *   <P>
+ *  <A NAME="ref10">[10]</A> CIE Publication 15.2-1986,
+ *  "<A HREF="http://www.hike.te.chiba-u.ac.jp/ikeda/CIE/publ/abst/15-2-86.html">Colorimetry,
+ *  Second Edition</A>", ISBN 3-900-734-00-3
+ *  (http://www.hike.te.chiba-u.ac.jp/ikeda/CIE/publ/abst/15-2-86.html)
+ * <P>
+ * <A NAME="ref12">[12]</A>
+ * "<A href="http://www.w3.org/pub/WWW/TR/REC-png-multi.html">PNG (Portable
+ * Network Graphics) Specification, Version 1.0 specification</A>"
+ * (http://www.w3.org/pub/WWW/TR/REC-png-multi.html)
+ * <P>
+ * <A NAME="ref13">[13]</A> Charles A. Poynton:
+ * "<A HREF="ftp://ftp.inforamp.net/pub/users/poynton/doc/Mac/Mac_gamma.pdf">Gamma
+ * correction on the Macintosh Platform</A>"
+ * (ftp://ftp.inforamp.net/pub/users/poynton/doc/Mac/Mac_gamma.pdf)
+ * <P>
+ * <A NAME="ref14">[14]</A> International Color Consortium:
+ * "<A HREF="ftp://sgigate.sgi.com/pub/icc/ICC32.pdf">ICC Profile Format
+ *  Specification, version 3.2</A>", 1995 (ftp://sgigate.sgi.com/pub/icc/ICC32.pdf)
+ *
+ * @version $Revision: 1.18 $
+ */
+public class CssColor extends CssValue
+    implements CssColorConstants, CssOperator {
+
+    public static final int type = CssTypes.CSS_COLOR;
+    public final int getType() {
+	return type;
+    }
+
+    Object color = null;
+    RGB rgb      = null;
+    RGBA rgba    = null;
+    HSL hsl      = null;
+    HSLA hsla    = null;
+
+    static HashMap<String,Object> definedColors;
+    static HashMap<String,String> deprecatedColors;
+    static CssIdent inherit;
+
+    /**
+     * Create a new CssColor.
+     */
+    public CssColor() {
+	color = inherit;
+    }
+
+    /**
+     * Create a new CssColor with a color name.
+     *
+     * @param s The name color.
+     * @exception InvalidParamException the color is incorrect
+     */
+    public CssColor(ApplContext ac, String s) throws InvalidParamException {
+	//	setIdentColor(s.toLowerCase(), ac);
+	setIdentColor(s, ac);
+    }
+
+    /**
+     * Set the value from a defined color RBG.
+     *
+     * @param s the string representation of the color.
+     * @exception InvalidParamException the color is incorrect.
+     */
+    public void set(String s, ApplContext ac)  throws InvalidParamException {
+	if (s.charAt(0) == '#') {
+	    setShortRGBColor(s.toLowerCase(), ac);
+	} else {
+	    setIdentColor(s, ac);
+	}
+    }
+
+    /**
+     * Return the internal value.
+     */
+    public Object get() {
+	if (color != null) {
+	    if (color == inherit) {
+		return null;
+	    } else {
+		return color;
+	    }
+	} else {
+	    return rgb;
+	}
+    }
+
+    /**
+     * Returns <code>true</code> if the internal value is the default value
+     * (e.g. 'inherited').
+     */
+    public boolean isDefault() {
+	return color == inherit;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (color != null) {
+	    if (color == inherit) {
+		return inherit.toString();
+	    } else {
+		return color.toString();
+	    }
+	} else if (rgba != null) {
+	    return rgba.toString();
+	} else if (hsl != null) {
+	    return hsl.toString();
+	} else if (hsla != null) {
+	    return hsla.toString();
+	} else {
+	    return rgb.toString();
+	}
+    }
+
+    /**
+     * Parse a RGB color.
+     * format rgb(<num>%?, <num>%?, <num>%?)
+     */
+    public void setRGBColor(CssExpression exp, ApplContext ac)
+	throws InvalidParamException
+    {
+	CssValue val = exp.getValue();
+	char op = exp.getOperator();
+	color = null;
+	rgb = new RGB();
+
+	if (val == null || op != COMMA) {
+	    throw new InvalidParamException("invalid-color", ac);
+	}
+
+	switch (val.getType()) {
+	case CssTypes.CSS_NUMBER:
+	    CssNumber number = (CssNumber) val;
+	    rgb.setRed(clippedIntValue(number.getInt(), ac));
+	    rgb.setPercent(false);
+	    break;
+	case CssTypes.CSS_PERCENTAGE:
+	    CssPercentage percent = (CssPercentage) val;
+	    rgb.setRed(clippedPercentValue(percent.getValue(),ac));
+	    rgb.setPercent(true);
+	    break;
+	default:
+	    throw new InvalidParamException("rgb", val, ac);
+	}
+
+	exp.next();
+	val = exp.getValue();
+	op = exp.getOperator();
+
+	if (val == null || op != COMMA) {
+	    throw new InvalidParamException("invalid-color", ac);
+	}
+
+	switch (val.getType()) {
+	case CssTypes.CSS_NUMBER:
+	    if (rgb.isPercent()) {
+		throw new InvalidParamException("percent", val, ac);
+	    }
+	    CssNumber number = (CssNumber) val;
+	    rgb.setGreen(clippedIntValue(number.getInt(), ac));
+	    break;
+	case CssTypes.CSS_PERCENTAGE:
+	    if (!rgb.isPercent()) {
+		throw new InvalidParamException("integer", val, ac);
+	    }
+	    CssPercentage percent = (CssPercentage) val;
+	    rgb.setGreen(clippedPercentValue(percent.getValue(),ac));
+	    break;
+	default:
+	    throw new InvalidParamException("rgb", val, ac);
+	}
+
+	exp.next();
+	val = exp.getValue();
+	op = exp.getOperator();
+
+	if (val == null) {
+	    throw new InvalidParamException("invalid-color", ac);
+	}
+
+	switch (val.getType()) {
+	case CssTypes.CSS_NUMBER:
+	    if (rgb.isPercent()) {
+		throw new InvalidParamException("percent", val, ac);
+	    }
+	    CssNumber number = (CssNumber) val;
+	    rgb.setBlue(clippedIntValue(number.getInt(), ac));
+	    break;
+	case CssTypes.CSS_PERCENTAGE:
+	    if (!rgb.isPercent()) {
+		throw new InvalidParamException("integer", val, ac);
+	    }
+	    CssPercentage percent = (CssPercentage) val;
+	    rgb.setBlue(clippedPercentValue(percent.getValue(),ac));
+	    break;
+	default:
+	    throw new InvalidParamException("rgb", val, ac);
+	}
+
+	exp.next();
+	if (exp.getValue() != null) {
+	    throw new InvalidParamException("rgb", exp.getValue(), ac);
+	}
+    }
+
+    /**
+     * Parse a RGB color.
+     * format #(3-6)<hexnum>
+     */
+    private void setShortRGBColor(String s, ApplContext ac)
+	throws InvalidParamException {
+	int r;
+	int g;
+	int b;
+	int v;
+	int idx;
+	boolean islong;
+
+	v = s.length();
+	islong = (v == 7);
+	if (v != 4 && !islong) {
+	    throw new InvalidParamException("rgb", s, ac);
+	}		
+	idx = 1;
+	r = Character.digit(s.charAt(idx++), 16);
+	if (r < 0) {
+	    throw new InvalidParamException("rgb", s, ac);
+	}
+	if (islong) {
+	    v = Character.digit(s.charAt(idx++), 16);
+	    if (v < 0) {
+		throw new InvalidParamException("rgb", s, ac);
+	    }	
+	    r = (r<<4) + v;
+	} else {
+	    r |= (r<<4);
+	}
+	g = Character.digit(s.charAt(idx++), 16);
+	if (g < 0) {
+	    throw new InvalidParamException("rgb", s, ac);
+	}	
+	if (islong) {
+	    v = Character.digit(s.charAt(idx++), 16);
+	    if (v < 0) {
+		throw new InvalidParamException("rgb", s, ac);
+	    }
+	    g = (g<<4) + v;
+	} else {
+	    g |= (g<<4);
+	}
+	b = Character.digit(s.charAt(idx), 16);
+	if (b < 0) {
+	    throw new InvalidParamException("rgb", s, ac);
+	}
+	if (islong) {
+	    v = Character.digit(s.charAt(++idx), 16);
+	    if (v < 0) {
+		throw new InvalidParamException("rgb", s, ac);
+	    }	    
+	    b = (b<<4) + v;
+	} else {
+	    b |= (b<<4);
+	}
+	
+
+	color = null;
+	rgb = new RGB(r, g, b);
+	rgb.output = s;
+    }
+
+    protected boolean computeIdentColor(HashMap<String,Object> definitions,
+				      String s) 
+    {
+	Object obj = definitions.get(s);
+	if (obj != null) {
+	    if (obj instanceof RGB) {
+		color = s;
+		rgb = (RGB) obj;
+	    } else if (obj instanceof RGBA) {
+		color = s;
+		rgba = (RGBA) obj;
+	    } else if (obj instanceof String) {
+		color = (String) obj;
+	    }
+	    return true;
+	}
+	return false;
+    }
+    /**
+     * Parse an ident color.
+     */
+    private void setIdentColor(String s, ApplContext ac)
+	throws InvalidParamException
+    {
+	String lower_s = s.toLowerCase();
+	if (computeIdentColor(definedColors, lower_s)) {
+	    return;
+	} else if (deprecatedColors.get(lower_s) != null) {
+	    color = lower_s;
+	    ac.getFrame().addWarning("deprecated", s);
+	    return;
+	}
+
+	throw new InvalidParamException("value", s, "color", ac);
+    }
+
+    /**
+     * Compares two values for equality.
+     *
+     * @param value The other value.
+     */
+    public boolean equals(Object cssColor) {
+	if (!(cssColor  instanceof CssColor)) {
+	    return false;
+	}
+	CssColor otherColor = (CssColor) cssColor;
+	// FIXME we can have rgba(a,b,c,1) == rgb(a,b,c)
+	if ((color != null) && (otherColor.color != null)) {
+	    return color.equals(otherColor.color);
+	} else if ((rgb != null) && (otherColor.rgb != null)) {
+	    return rgb.equals(otherColor.rgb);
+	} else if ((rgba != null) && (otherColor.rgba != null)) {
+	    return rgba.equals(otherColor.rgba);
+	} else if ((hsl != null) && (otherColor.hsl != null)) {
+	    return hsl.equals(otherColor.hsl);
+	} else if ((hsla != null) && (otherColor.hsla != null)) {
+	    return hsla.equals(otherColor.hsla);
+	}
+	return false;
+    }
+
+    public void setRGBAColor(CssExpression exp, ApplContext ac)
+	throws InvalidParamException 
+    {
+	CssValue val;
+	char op;
+	color = null;
+	rgba = new RGBA();
+
+	val = exp.getValue();
+	op = exp.getOperator();
+	if (val == null || op != COMMA) {
+	    throw new InvalidParamException("invalid-color", ac);
+	}
+
+	switch (val.getType()) {
+	case CssTypes.CSS_NUMBER:
+	    CssNumber number = (CssNumber) val;
+	    rgba.setRed(clippedIntValue(number.getInt(), ac));
+	    rgba.setPercent(false);
+	    break;
+	case CssTypes.CSS_PERCENTAGE:
+	    CssPercentage percent = (CssPercentage) val;
+	    rgba.setRed(clippedPercentValue(percent.getValue(), ac));
+	    rgba.setPercent(true);
+	    break;
+	default:
+	    throw new InvalidParamException("rgb", val, ac); // FIXME rgba
+	}
+	exp.next();
+	val = exp.getValue();
+	op = exp.getOperator();
+	if (val == null || op != COMMA) {
+	    throw new InvalidParamException("invalid-color", ac);
+	}
+	// green
+	// and validate against the "percentageness"
+	switch (val.getType()) {
+	case CssTypes.CSS_NUMBER:
+	    if (rgba.isPercent()) {
+		exp.starts();
+		throw new InvalidParamException("percent", val, ac);
+	    }
+	    CssNumber number = (CssNumber) val;
+	    rgba.setGreen(clippedIntValue(number.getInt(), ac));
+	    break;
+	case CssTypes.CSS_PERCENTAGE:
+	    if (!rgba.isPercent()) {
+		exp.starts();
+		throw new InvalidParamException("integer", val, ac);
+	    }
+	    CssPercentage percent = (CssPercentage) val;
+	    rgba.setGreen(clippedPercentValue(percent.getValue(), ac));
+	    break;
+	default:
+	    exp.starts();
+	    throw new InvalidParamException("rgb", val, ac); // FIXME rgba
+	}
+	exp.next();
+	val = exp.getValue();
+	op = exp.getOperator();
+	if (val == null || op != COMMA) {
+	    exp.starts();
+	    throw new InvalidParamException("invalid-color", ac);
+	}
+	 // blue
+	// and validate against the "percentageness"
+	switch (val.getType()) {
+	case CssTypes.CSS_NUMBER:
+	    if (rgba.isPercent()) {
+		exp.starts();
+		throw new InvalidParamException("percent", val, ac);
+	    }
+	    CssNumber number = (CssNumber) val;
+	    rgba.setBlue(clippedIntValue(number.getInt(), ac));
+	    break;
+	case CssTypes.CSS_PERCENTAGE:
+	    if (!rgba.isPercent()) {
+		exp.starts();
+		throw new InvalidParamException("integer", val, ac);
+	    }
+	    CssPercentage percent = (CssPercentage) val;
+	    rgba.setBlue(clippedPercentValue(percent.getValue(), ac));
+	    break;
+	default:
+	    exp.starts();
+	    throw new InvalidParamException("rgb", val, ac); // FIXME rgba
+	}
+	exp.next();
+	val = exp.getValue();
+	if (val == null) {
+	    exp.starts();
+	    throw new InvalidParamException("invalid-color", ac);
+	}
+	if (val.getType() == CssTypes.CSS_NUMBER) {
+	    CssNumber number = (CssNumber) val;
+	    rgba.setAlpha(clippedAlphaValue(number.getValue(), ac));
+	} else {
+	    exp.starts();
+	    throw new InvalidParamException("rgb", val, ac); // FIXME rgba
+	} 
+	exp.next();
+	if (exp.getValue() != null) {
+	    exp.starts();
+	    throw new InvalidParamException("invalid-color", ac);
+	}    
+    }
+
+    public void setHSLColor(CssExpression exp, ApplContext ac) 
+	throws InvalidParamException
+    {
+	color = null;
+	hsl = new HSL();
+	
+	CssValue val = exp.getValue();
+	char op = exp.getOperator();
+	// H
+	if (val == null || op != COMMA) {
+	    throw new InvalidParamException("invalid-color", ac);
+	}
+	if (val.getType() == CssTypes.CSS_NUMBER) {
+	    CssNumber number = (CssNumber) val;
+	    hsl.setHue(angleValue(number.getValue(), ac));
+	} else {
+	    throw new InvalidParamException("rgb", val, ac); // FIXME hsl
+	}
+
+	// S
+	exp.next();
+	val = exp.getValue();
+	op = exp.getOperator();
+	if (val == null || op != COMMA) {
+	    exp.starts();
+	    throw new InvalidParamException("invalid-color", ac);
+	}
+	if (val.getType() == CssTypes.CSS_PERCENTAGE) {
+	    CssPercentage percent = (CssPercentage) val;
+	    hsl.setSaturation(clippedPercentValue(percent.getValue(),ac));
+	} else {
+	    exp.starts();
+	    throw new InvalidParamException("rgb", val, ac); // FIXME hsl
+	}
+	
+	// L
+	exp.next();
+	val = exp.getValue();
+	op = exp.getOperator();
+	if (val == null) {
+	    exp.starts();
+	    throw new InvalidParamException("invalid-color", ac);
+	}
+
+	if (val.getType() == CssTypes.CSS_PERCENTAGE) {
+	    CssPercentage percent = (CssPercentage) val;
+	    hsl.setLightness(clippedPercentValue(percent.getValue(),ac));
+	} else {
+	    exp.starts();
+	    throw new InvalidParamException("rgb", val, ac); // FIXME hsl
+	}
+	
+	exp.next();
+	if (exp.getValue() != null) {
+	    exp.starts();
+	    throw new InvalidParamException("rgb", exp.getValue(), ac);
+	}
+    }
+
+
+    public void setHSLAColor(CssExpression exp, ApplContext ac) 
+	throws InvalidParamException
+    {
+	color = null;
+	hsla = new HSLA();
+	
+	CssValue val = exp.getValue();
+	char op = exp.getOperator();
+	// H
+	if (val == null || op != COMMA) {
+	    throw new InvalidParamException("invalid-color", ac);
+	}
+	if (val.getType() == CssTypes.CSS_NUMBER) {
+	    CssNumber number = (CssNumber) val;
+	    hsla.setHue(angleValue(number.getValue(), ac));
+	} else {
+	    throw new InvalidParamException("rgb", val, ac); // FIXME hsl
+	}
+
+	// S
+	exp.next();
+	val = exp.getValue();
+	op = exp.getOperator();
+	if (val == null || op != COMMA) {
+	    exp.starts();
+	    throw new InvalidParamException("invalid-color", ac);
+	}
+	if (val.getType() == CssTypes.CSS_PERCENTAGE) {
+	    CssPercentage percent = (CssPercentage) val;
+	    hsla.setSaturation(clippedPercentValue(percent.getValue(),ac));
+	} else {
+	    exp.starts();
+	    throw new InvalidParamException("rgb", val, ac); // FIXME hsl
+	}
+	
+	// L
+	exp.next();
+	val = exp.getValue();
+	op = exp.getOperator();
+	if (val == null || op != COMMA) {
+	    exp.starts();
+	    throw new InvalidParamException("invalid-color", ac);
+	}
+	if (val.getType() == CssTypes.CSS_PERCENTAGE) {
+	    CssPercentage percent = (CssPercentage) val;
+	    hsla.setLightness(clippedPercentValue(percent.getValue(),ac));
+	} else {
+	    exp.starts();
+	    throw new InvalidParamException("rgb", val, ac); // FIXME hsl
+	}
+
+	// A
+	exp.next();
+	val = exp.getValue();
+	if (val == null) {
+	    exp.starts();
+	    throw new InvalidParamException("invalid-color", ac);
+	}
+	if (val.getType() == CssTypes.CSS_NUMBER) {
+	    CssNumber number = (CssNumber) val;
+	    hsla.setAlpha(clippedAlphaValue(number.getValue(), ac));
+	} else {
+	    exp.starts();
+	    throw new InvalidParamException("rgb", val, ac); // FIXME hsl
+	}
+	// extra values?
+	exp.next();
+	if (exp.getValue() != null) {
+	    exp.starts();
+	    throw new InvalidParamException("rgb", exp.getValue(), ac);
+	}
+    }
+
+    private int clippedIntValue(int rgb, ApplContext ac) {
+	if (rgb < 0 || rgb > 255) {
+	    ac.getFrame().addWarning("out-of-range", Util.displayFloat(rgb));
+	    return (rgb < 0) ? 0 : 255;
+	}
+	return rgb;
+    }
+
+    private float clippedPercentValue(float p, ApplContext ac) {
+	if (p < 0. || p > 100.) {
+	    ac.getFrame().addWarning("out-of-range", Util.displayFloat(p));
+	    return (p < 0.) ? (float)0 : (float)100 ;
+	}
+	return p;
+    }
+
+    private float clippedAlphaValue(float p, ApplContext ac) {
+	if (p < 0. || p > 1.) {
+	    ac.getFrame().addWarning("out-of-range", Util.displayFloat(p));
+	    return  (float)((p<0.)?0.:1.);
+	}
+	return p;
+    }
+
+    private float angleValue(float p, ApplContext ac) {
+	if (p<0.0 || p >= 360.0) {
+	    ac.getFrame().addWarning("out-of-range", Util.displayFloat(p));
+	}
+	return p;
+    }
+
+    /**
+     * Gets the red component of this color.
+     */
+    //    public Object getRed() {
+    //	return rgb.r;
+    //}
+
+    /**
+     * Gets the green component of this color.
+     */
+    //    public Object getGreen() {
+    //	return rgb.g;
+    //}
+
+    /**
+     * Gets the blue component of this color.
+     */
+    //public Object getBlue() {
+    //	return rgb.b;
+    //}
+
+    static {
+	inherit = new CssIdent("inherit");
+	definedColors = new HashMap<String,Object>();
+	deprecatedColors = new HashMap<String,String>();
+
+	definedColors.put("aliceblue",
+		new RGB(240, 248, 255));
+	definedColors.put("antiquewhite",
+		new RGB(250, 235, 215));
+	definedColors.put("aqua",
+		new RGB(0, 255, 255));
+	definedColors.put("aquamarine",
+		new RGB(127, 255, 212));
+	definedColors.put("azure",
+		new RGB(240, 255, 255));
+	definedColors.put("beige",
+		new RGB(245, 245, 220));
+	definedColors.put("bisque",
+		new RGB(255, 228, 196));
+	definedColors.put("black",
+		new RGB(0, 0, 0));
+	definedColors.put("blanchedalmond",
+		new RGB(255, 235, 205));
+	definedColors.put("blue",
+		new RGB(0, 0, 255));
+	definedColors.put("blueviolet",
+		new RGB(138, 43, 226));
+	definedColors.put("brown",
+		new RGB(165, 42, 42));
+	definedColors.put("burlywood",
+		new RGB(222, 184, 135));
+	definedColors.put("cadetBlue",
+		new RGB(95, 158, 160));
+	definedColors.put("chartreuse",
+		new RGB(127, 255, 0));
+	definedColors.put("chocolate",
+		new RGB(210, 105, 30));
+	definedColors.put("coral",
+		new RGB(255, 127, 80));
+	definedColors.put("cornflowerblue",
+		new RGB(100, 149, 237));
+	definedColors.put("cornsilk",
+		new RGB(255, 248, 220));
+	definedColors.put("crimson",
+		new RGB(220, 20, 60));
+	definedColors.put("cyan",
+		new RGB(0, 255, 255));
+	definedColors.put("darkblue",
+		new RGB(0, 0, 139));
+	definedColors.put("darkcyan",
+		new RGB(0, 139, 139));
+	definedColors.put("darkgoldenrod",
+		new RGB(184, 134, 11));
+	definedColors.put("darkgray",
+		new RGB(169, 169, 169));
+	definedColors.put("darkgreen",
+		new RGB(0, 100, 0));
+	definedColors.put("darkkhaki",
+		new RGB(189, 183, 107));
+	definedColors.put("darkmagenta",
+		new RGB(139, 0, 139));
+	definedColors.put("darkolivegreen",
+		new RGB(85, 107, 47));
+	definedColors.put("darkorange",
+		new RGB(255, 140, 0));
+	definedColors.put("darkorchid",
+		new RGB(153, 50, 204));
+	definedColors.put("darkred",
+		new RGB(139, 0, 0));
+	definedColors.put("darksalmon",
+		new RGB(233, 150, 122));
+	definedColors.put("darkseagreen",
+		new RGB(143, 188, 143));
+	definedColors.put("darkslateblue",
+		new RGB(72, 61, 139));
+	definedColors.put("darkslategray",
+		new RGB(47, 79, 79));
+	definedColors.put("darkturquoise",
+		new RGB(0, 206, 209));
+	definedColors.put("darkviolet",
+		new RGB(148, 0, 211));
+	definedColors.put("deeppink",
+		new RGB(255, 20, 147));
+	definedColors.put("deepskyblue",
+		new RGB(0, 191, 255));
+	definedColors.put("dimgray",
+		new RGB(105, 105, 105));
+	definedColors.put("dodgerblue",
+		new RGB(30, 144, 255));
+	definedColors.put("firebrick",
+		new RGB(178, 34, 34));
+	definedColors.put("floralwhite",
+		new RGB(255, 250, 240));
+	definedColors.put("forestgreen",
+		new RGB(34, 139, 34));
+	definedColors.put("fuchsia",
+		new RGB(255, 0, 255));
+	definedColors.put("gainsboro",
+		new RGB(220, 220, 220));
+	definedColors.put("ghostwhite",
+		new RGB(248, 248, 255));
+	definedColors.put("gold",
+		new RGB(255, 215, 0));
+	definedColors.put("goldenrod",
+		new RGB(218, 165, 32));
+	definedColors.put("gray",
+		new RGB(128, 128, 128));
+	definedColors.put("green",
+		new RGB(0, 128, 0));
+	definedColors.put("greenyellow",
+		new RGB(173, 255, 47));
+	definedColors.put("honeydew",
+		new RGB(240, 255, 240));
+	definedColors.put("hotpink",
+		new RGB(255, 105, 180));
+	definedColors.put("indianred",
+		new RGB(205, 92, 92));
+	definedColors.put("indigo",
+		new RGB(75, 0, 130));
+	definedColors.put("ivory",
+		new RGB(255, 255, 240));
+	definedColors.put("khaki",
+		new RGB(240, 230, 140));
+	definedColors.put("lavender",
+		new RGB(230, 230, 250));
+	definedColors.put("lavenderblush",
+		new RGB(255, 240, 245));
+	definedColors.put("lawngreen",
+		new RGB(124, 252, 0));
+	definedColors.put("lemonchiffon",
+		new RGB(255, 250, 205));
+	definedColors.put("lightblue",
+		new RGB(173, 216, 230));
+	definedColors.put("lightcoral",
+		new RGB(240, 128, 128));
+	definedColors.put("lightcyan",
+		new RGB(224, 255, 255));
+	definedColors.put("lightgoldenrodyellow",
+		new RGB(250, 250, 210));
+	definedColors.put("lightgreen",
+		new RGB(144, 238, 144));
+	definedColors.put("lightgrey",
+		new RGB(211, 211, 211));
+	definedColors.put("lightpink",
+		new RGB(255, 182, 193));
+	definedColors.put("lightsalmon",
+		new RGB(255, 160, 122));
+	definedColors.put("lightseagreen",
+		new RGB(32, 178, 170));
+	definedColors.put("lightskyblue",
+		new RGB(135, 206, 250));
+	definedColors.put("lightslategray",
+		new RGB(119, 136, 153));
+	definedColors.put("lightsteelblue",
+		new RGB(176, 196, 222));
+	definedColors.put("lightyellow",
+		new RGB(255, 255, 224));
+	definedColors.put("lime",
+		new RGB(0, 255, 0));
+	definedColors.put("limegreen",
+		new RGB(50, 205, 50));
+	definedColors.put("linen",
+		new RGB(250, 240, 230));
+	definedColors.put("magenta",
+		new RGB(255, 0, 255));
+	definedColors.put("maroon",
+		new RGB(128, 0, 0));
+	definedColors.put("mediumaquamarine",
+		new RGB(102, 205, 170));
+	definedColors.put("mediumblue",
+		new RGB(0, 0, 205));
+	definedColors.put("mediumorchid",
+		new RGB(186, 85, 211));
+	definedColors.put("mediumpurple",
+		new RGB(147, 112, 219));
+	definedColors.put("mediumseagreen",
+		new RGB(60, 179, 113));
+	definedColors.put("mediumslateblue",
+		new RGB(123, 104, 238));
+	definedColors.put("mediumspringgreen",
+		new RGB(0, 250, 154));
+	definedColors.put("mediumturquoise",
+		new RGB(72, 209, 204));
+	definedColors.put("mediumvioletred",
+		new RGB(199, 21, 133));
+	definedColors.put("midnightblue",
+		new RGB(25, 25, 112));
+	definedColors.put("mintcream",
+		new RGB(245, 255, 250));
+	definedColors.put("mistyrose",
+		new RGB(255, 228, 225));
+	definedColors.put("moccasin",
+		new RGB(255, 228, 181));
+	definedColors.put("navajowhite",
+		new RGB(255, 222, 173));
+	definedColors.put("navy",
+		new RGB(0, 0, 128));
+	definedColors.put("oldlace",
+		new RGB(253, 245, 230));
+	definedColors.put("olive",
+		new RGB(128, 128, 0));
+	definedColors.put("olivedrab",
+		new RGB(107, 142, 35));
+	definedColors.put("orange",
+		new RGB(255, 165, 0));
+	definedColors.put("orangered",
+		new RGB(255, 69, 0));
+	definedColors.put("orchid",
+		new RGB(218, 112, 214));
+	definedColors.put("palegoldenrod",
+		new RGB(238, 232, 170));
+	definedColors.put("palegreen",
+		new RGB(152, 251, 152));
+	definedColors.put("paleturquoise",
+		new RGB(175, 238, 238));
+	definedColors.put("palevioletred",
+		new RGB(219, 112, 147));
+	definedColors.put("papayawhip",
+		new RGB(255, 239, 213));
+	definedColors.put("peachpuff",
+		new RGB(255, 218, 185));
+	definedColors.put("peru",
+		new RGB(205, 133, 63));
+	definedColors.put("pink",
+		new RGB(255, 192, 203));
+	definedColors.put("plum",
+		new RGB(221, 160, 221));
+	definedColors.put("powderBlue",
+		new RGB(176, 224, 230));
+	definedColors.put("purple",
+		new RGB(128, 0, 128));
+	definedColors.put("red",
+		new RGB(255, 0, 0));
+	definedColors.put("rosybrown",
+		new RGB(188, 143, 143));
+	definedColors.put("royalblue",
+		new RGB(65, 105, 225));
+	definedColors.put("saddlebrown",
+		new RGB(139, 69, 19));
+	definedColors.put("salmon",
+		new RGB(250, 128, 114));
+	definedColors.put("sandybrown",
+		new RGB(244, 164, 96));
+	definedColors.put("seagreen",
+		new RGB(46, 139, 87));
+	definedColors.put("seashell",
+		new RGB(255, 245, 238));
+	definedColors.put("sienna",
+		new RGB(160, 82, 45));
+	definedColors.put("silver",
+		new RGB(192, 192, 192));
+	definedColors.put("skyblue",
+		new RGB(135, 206, 235));
+	definedColors.put("slateblue",
+		new RGB(106, 90, 205));
+	definedColors.put("slategray",
+		new RGB(112, 128, 144));
+	definedColors.put("snow",
+		new RGB(255, 250, 250));
+	definedColors.put("springgreen",
+		new RGB(0, 255, 127));
+	definedColors.put("steelblue",
+		new RGB(70, 130, 180));
+	definedColors.put("tan",
+		new RGB(210, 180, 140));
+	definedColors.put("teal",
+		new RGB(0, 128, 128));
+	definedColors.put("thistle",
+		new RGB(216, 191, 216));
+	definedColors.put("tomato",
+		new RGB(255, 99, 71));
+	definedColors.put("turquoise",
+		new RGB(64, 224, 208));
+	definedColors.put("violet",
+		new RGB(238, 130, 238));
+	definedColors.put("wheat",
+		new RGB(245, 222, 179));
+	definedColors.put("white",
+		new RGB(255, 255, 255));
+	definedColors.put("whitesmoke",
+		new RGB(245, 245, 245));
+	definedColors.put("yellow",
+		new RGB(255, 255, 0));
+	definedColors.put("yellowgreen",
+		new RGB(154, 205, 50));
+
+	definedColors.put("grey",
+		new RGB(128, 128, 128));
+	definedColors.put("darkslategrey",
+		new RGB(47, 79, 79));
+	definedColors.put("dimgrey",
+		new RGB(105, 105, 105));
+	definedColors.put("lightgray",
+		new RGB(211, 211, 211));
+	definedColors.put("lightslategrey",
+		new RGB(119, 136, 153));
+	definedColors.put("slategrey",
+		new RGB(112, 128, 144));
+	definedColors.put("transparent",
+			  new RGBA(0, 0, 0, (float)0.0));
+
+	//CSS2 System colors deprecated
+	deprecatedColors.put("activeborder", "ActiveBorder");
+	deprecatedColors.put("activecaption", "ActiveCaption");
+	deprecatedColors.put("appworkspace", "AppWorkspace");
+	deprecatedColors.put("background", "Background");
+	deprecatedColors.put("buttonface", "ButtonFace");
+	deprecatedColors.put("buttonhighlight", "ButtonHighlight");
+	deprecatedColors.put("buttonshadow", "ButtonShadow");
+	deprecatedColors.put("buttontext", "ButtonText");
+	deprecatedColors.put("captiontext", "CaptionText");
+	deprecatedColors.put("graytext", "GrayText");
+	deprecatedColors.put("highlight", "Highlight");
+	deprecatedColors.put("highlighttext", "HighlightText");
+	deprecatedColors.put("inactiveborder", "InactiveBorder");
+	deprecatedColors.put("inactivecaption", "InactiveCaption");
+	deprecatedColors.put("inactivecaptiontext", "InactiveCaptionText");
+	deprecatedColors.put("infobackground", "InfoBackground");
+	deprecatedColors.put("infotext", "InfoText");
+	deprecatedColors.put("menu", "Menu");
+	deprecatedColors.put("menutext", "MenuText");
+	deprecatedColors.put("scrollbar", "Scrollbar");
+	deprecatedColors.put("threeddarkshadow", "ThreeDDarkShadow");
+	deprecatedColors.put("threedface", "ThreeDFace");
+	deprecatedColors.put("threedhighlight", "ThreeDHighlight");
+	deprecatedColors.put("threedlightshadow", "ThreeDLightShadow");
+	deprecatedColors.put("threedshadow", "ThreeDShadow");
+	deprecatedColors.put("window", "Window");
+	deprecatedColors.put("windowframe", "WindowFrame");
+	deprecatedColors.put("windowtext", "WindowText");
+
+	// CSS3 user preferences for hyperlink colors -> removed from spec
+	/*
+	 definedColors.put("ActiveHyperlink", "ActiveHyperlink");
+	 definedColors.put("ActiveHyperlinkText", "ActiveHyperlinkText");
+	 definedColors.put("HoverHyperlink", "HoverHyperlink");
+	 definedColors.put("HoverHyperlinkText", "HoverHyperlinkText");
+	 definedColors.put("Hyperlink", "Hyperlink");
+	 definedColors.put("HyperlinkText", "HyperlinkText");
+	 definedColors.put("VisitedHyperlink", "VisitedHyperlink");
+	 definedColors.put("VisitedHyperlinkText", "VisitedHyperlinkText");
+	 */
+
+	//Flavor system color
+	definedColors.put("flavor","flavor");
+	definedColors.put("currentcolor","currentColor");
+
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/values/CssColorCSS1.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,246 @@
+//
+// $Id: CssColorCSS1.java,v 1.13 2009-03-06 14:26:59 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 org.w3c.css.values;
+
+import java.util.HashMap;
+
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.util.Util;
+
+/**
+ *   <H3>
+ *     &nbsp;&nbsp; Color units
+ *   </H3>
+ *   <P>
+ *   A color is a either a keyword or a numerical RGB specification.
+ *   <P>
+ *   The suggested list of keyword color names is: aqua, black, blue, fuchsia,
+ *   gray, green, lime, maroon, navy, olive, purple, red, silver, teal, white,
+ *   and yellow. These 16 colors are taken from the Windows VGA palette, and their
+ *   RGB values are not defined in this specification.
+ *   <PRE>
+ *   BODY {color: black; background: white }
+ *   H1 { color: maroon }
+ *   H2 { color: olive }
+ * </PRE>
+ *   <P>
+ *   The RGB color model is being used in numerical color specifications. These
+ *   examples all specify the same color:
+ *   <PRE>
+ *   EM { color: #f00 }              / * #rgb * /
+ *   EM { color: #ff0000 }           / * #rrggbb * /
+ *   EM { color: rgb(255,0,0) }      / * integer range 0 - 255 * /
+ *   EM { color: rgb(100%, 0%, 0%) } / * float range 0.0% - 100.0% * /
+ * </PRE>
+ *   <P>
+ *   The format of an RGB value in hexadecimal notation is a '#' immediately followed
+ *   by either three or six hexadecimal characters. The three-digit RGB notation
+ *   (#rgb) is converted into six-digit form (#rrggbb) by replicating digits,
+ *   not by adding zeros. For example, #fb0 expands to #ffbb00. This makes sure
+ *   that white (#ffffff) can be specified with the short notation (#fff) and
+ *   removes any dependencies on the color depth of the display.
+ *   <P>
+ *   The format of an RGB value in the functional notation is 'rgb(' followed
+ *   by a comma-separated list of three numerical values (either three integer
+ *   values in the range of 0-255, or three percentage values in the range of
+ *   0.0% to 100.0%) followed by ')'. Whitespace characters are allowed around
+ *   the numerical values.
+ *   <P>
+ *   Values outside the numerical ranges should be clipped. The three rules below
+ *   are therefore equivalent:
+ *   <PRE>
+ *   EM { color: rgb(255,0,0) }       / * integer range 0 - 255 * /
+ *   EM { color: rgb(300,0,0) }       / * clipped to 255 * /
+ *   EM { color: rgb(110%, 0%, 0%) }  / * clipped to 100% * /
+ * </PRE>
+ *   <P>
+ *   RGB colors are specified in the sRGB color space <A HREF="#ref9">[9]</A>.
+ *   UAs may vary in the fidelity with which they represent these colors, but
+ *   use of sRGB provides an unambiguous and objectively measurable definition
+ *   of what the color should be, which can be related to international standards
+ *   <A HREF="#ref10">[10]</A>.
+ *   <P>
+ *   UAs may limit their efforts in displaying colors to performing a gamma-correction
+ *   on them. sRGB specifies a display gamma of 2.2 under specified viewing
+ *   conditions. UAs adjust the colors given in CSS such that, in combination
+ *   with an output device's "natural" display gamma, an effective display gamma
+ *   of 2.2 is produced. <A HREF="#appendix-d">Appendix D</A> gives further details
+ *   of this. Note that only colors specified in CSS are affected; e.g., images
+ *   are expected to carry their own color information.
+ *
+ *
+ *   <H2>
+ *     <A NAME="appendix-d">Appendix D: Gamma correction</A>
+ *   </H2>
+ *   <P>
+ *   (This appendix is informative, not normative)
+ *   <P>
+ *   See the <A href="http://www.w3.org/pub/WWW/TR/PNG-GammaAppendix">Gamma
+ *   Tutorial</A> in the PNG specification <A href="#ref12">[12]</A> if you aren't
+ *   already familiar with gamma issues.
+ *   <P>
+ *   In the computation, UAs displaying on a CRT may assume an ideal CRT and ignore
+ *   any effects on apparent gamma caused by dithering. That means the minimal
+ *   handling they need to do on current platforms is:
+ *   <DL>
+ *     <DT>
+ *       PC using MS-Windows
+ *     <DD>
+ *       none
+ *     <DT>
+ *       Unix using X11
+ *     <DD>
+ *       none
+ *     <DT>
+ *       Mac using QuickDraw
+ *     <DD>
+ *       apply gamma 1.39 <A HREF="#ref13">[13]</A> (ColorSync-savvy applications
+ *       may simply pass the sRGB ICC profile <A HREF="#ref14">[14]</A> to ColorSync
+ *       to perform correct color correction)
+ *     <DT>
+ *       SGI using X
+ *     <DD>
+ *       apply the gamma value from <TT>/etc/config/system.glGammaVal</TT> (the default
+ *       value being 1.70; applications running on Irix 6.2 or above may simply pass
+ *       the sRGB ICC profile to the color management system)
+ *     <DT>
+ *       NeXT using NeXTStep
+ *     <DD>
+ *       apply gamma 2.22
+ *   </DL>
+ *   <P>
+ *   "Applying gamma" means that each of the three R, G and B must be converted
+ *   to R'=R<SUP>gamma</SUP>, G'=G<SUP>gamma</SUP>, G'=B<SUP>gamma</SUP>, before
+ *   handing to the OS.
+ *   <P>
+ *   This may rapidly be done by building a 256-element lookup table once per
+ *   browser invocation thus:
+ *   <PRE>
+ *   for i := 0 to 255 do
+ *     raw := i / 255;
+ *     corr := pow (raw, gamma);
+ *     table[i] := trunc (0.5 + corr * 255.0)
+ *   end
+ * </PRE>
+ *   <P>
+ *   which then avoids any need to do transcendental math per color attribute,
+ *   far less per pixel.
+
+ * See also
+ * <P>
+ * <A NAME="ref9">[9]</A> M Anderson, R Motta, S Chandrasekar, M Stokes:
+ * "<A HREF="http://www.hpl.hp.com/personal/Michael_Stokes/srgb.htm">Proposal
+ * for a Standard Color Space for the Internet - sRGB</A>"
+ * (http://www.hpl.hp.com/personal/Michael_Stokes/srgb.htm)
+ *   <P>
+ *  <A NAME="ref10">[10]</A> CIE Publication 15.2-1986,
+ *  "<A HREF="http://www.hike.te.chiba-u.ac.jp/ikeda/CIE/publ/abst/15-2-86.html">Colorimetry,
+ *  Second Edition</A>", ISBN 3-900-734-00-3
+ *  (http://www.hike.te.chiba-u.ac.jp/ikeda/CIE/publ/abst/15-2-86.html)
+ * <P>
+ * <A NAME="ref12">[12]</A>
+ * "<A href="http://www.w3.org/pub/WWW/TR/REC-png-multi.html">PNG (Portable
+ * Network Graphics) Specification, Version 1.0 specification</A>"
+ * (http://www.w3.org/pub/WWW/TR/REC-png-multi.html)
+ * <P>
+ * <A NAME="ref13">[13]</A> Charles A. Poynton:
+ * "<A HREF="ftp://ftp.inforamp.net/pub/users/poynton/doc/Mac/Mac_gamma.pdf">Gamma
+ * correction on the Macintosh Platform</A>"
+ * (ftp://ftp.inforamp.net/pub/users/poynton/doc/Mac/Mac_gamma.pdf)
+ * <P>
+ * <A NAME="ref14">[14]</A> International Color Consortium:
+ * "<A HREF="ftp://sgigate.sgi.com/pub/icc/ICC32.pdf">ICC Profile Format
+ *  Specification, version 3.2</A>", 1995 (ftp://sgigate.sgi.com/pub/icc/ICC32.pdf)
+ *
+ * @version $Revision: 1.13 $
+ */
+public class CssColorCSS1 extends CssColor {
+
+    static HashMap<String,Object> definedColorsCSS1;
+
+    /**
+     * Create a new CssColorCSS1
+     */
+    public CssColorCSS1() {
+	//color = new CssIdent("");
+    }
+
+    /**
+     * Create a new CssColor with a color name.
+     *
+     * @param s The name color.
+     * @exception InvalidParamException the color is incorrect
+     */
+    public CssColorCSS1(ApplContext ac, String s) throws InvalidParamException {
+	//	setIdentColor(s.toLowerCase(), ac);
+	setIdentColor(s, ac);
+    }
+
+    /**
+     * Parse an ident color.
+     */
+    private void setIdentColor(String s, ApplContext ac)
+	    throws InvalidParamException {
+	String lower_s = s.toLowerCase();
+	Object obj = definedColorsCSS1.get(lower_s);
+	if (obj != null) {
+	    if (obj instanceof RGB) {
+		color = lower_s;
+		rgb = (RGB) obj;
+	    } else if (obj instanceof String) {
+		color = (String) obj;
+// 2007-05 - this warning on color string capitalization is plain silly, 
+// commenting it out-- ot@w3.org
+//		if (!obj.equals(s)) {
+//		    ac.getFrame().addWarning("color.mixed-capitalization",
+//					     s);
+//		}
+	    }
+	    return;
+	}
+
+	throw new InvalidParamException("value", s, "color", ac);
+    }
+
+    static {
+	definedColorsCSS1 = new HashMap<String,Object>();
+	definedColorsCSS1.put("black",
+			  new RGB(0, 0, 0));
+	definedColorsCSS1.put("silver",
+			  new RGB(192, 192, 192));
+	definedColorsCSS1.put("gray",
+			  new RGB(128, 128, 128));
+	definedColorsCSS1.put("white",
+			  new RGB(255, 255, 255));
+	definedColorsCSS1.put("maroon",
+			  new RGB(128, 0, 0));
+	definedColorsCSS1.put("red",
+			  new RGB(255, 0, 0));
+	definedColorsCSS1.put("purple",
+			  new RGB(128, 0, 128));
+	definedColorsCSS1.put("fuchsia",
+			  new RGB(255, 0, 255));
+	definedColorsCSS1.put("green",
+			  new RGB(0, 128, 0));
+	definedColorsCSS1.put("lime",
+			  new RGB(0, 255, 0));
+	definedColorsCSS1.put("olive",
+			  new RGB(128, 128, 0));
+	definedColorsCSS1.put("yellow",
+			  new RGB(255, 255, 0));
+	definedColorsCSS1.put("navy",
+			  new RGB(0, 0, 128));
+	definedColorsCSS1.put("blue",
+			  new RGB(0, 0, 255));
+	definedColorsCSS1.put("teal",
+			  new RGB(0, 128, 128));
+	definedColorsCSS1.put("aqua",
+			  new RGB(0, 255, 255));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/values/CssColorCSS2.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,259 @@
+//
+// $Id: CssColorCSS2.java,v 1.13 2009-03-09 17:17:48 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 org.w3c.css.values;
+
+import java.util.HashMap;
+
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.util.Util;
+
+/**
+ *   <H3>
+ *     &nbsp;&nbsp; Color units
+ *   </H3>
+ *   <P>
+ *   A color is a either a keyword or a numerical RGB specification.
+ *   <P>
+ *   The suggested list of keyword color names is: aqua, black, blue, fuchsia,
+ *   gray, green, lime, maroon, navy, olive, purple, red, silver, teal, white,
+ *   and yellow. These 16 colors are taken from the Windows VGA palette, and their
+ *   RGB values are not defined in this specification.
+ *   <PRE>
+ *   BODY {color: black; background: white }
+ *   H1 { color: maroon }
+ *   H2 { color: olive }
+ * </PRE>
+ *   <P>
+ *   The RGB color model is being used in numerical color specifications. These
+ *   examples all specify the same color:
+ *   <PRE>
+ *   EM { color: #f00 }              / * #rgb * /
+ *   EM { color: #ff0000 }           / * #rrggbb * /
+ *   EM { color: rgb(255,0,0) }      / * integer range 0 - 255 * /
+ *   EM { color: rgb(100%, 0%, 0%) } / * float range 0.0% - 100.0% * /
+ * </PRE>
+ *   <P>
+ *   The format of an RGB value in hexadecimal notation is a '#' immediately followed
+ *   by either three or six hexadecimal characters. The three-digit RGB notation
+ *   (#rgb) is converted into six-digit form (#rrggbb) by replicating digits,
+ *   not by adding zeros. For example, #fb0 expands to #ffbb00. This makes sure
+ *   that white (#ffffff) can be specified with the short notation (#fff) and
+ *   removes any dependencies on the color depth of the display.
+ *   <P>
+ *   The format of an RGB value in the functional notation is 'rgb(' followed
+ *   by a comma-separated list of three numerical values (either three integer
+ *   values in the range of 0-255, or three percentage values in the range of
+ *   0.0% to 100.0%) followed by ')'. Whitespace characters are allowed around
+ *   the numerical values.
+ *   <P>
+ *   Values outside the numerical ranges should be clipped. The three rules below
+ *   are therefore equivalent:
+ *   <PRE>
+ *   EM { color: rgb(255,0,0) }       / * integer range 0 - 255 * /
+ *   EM { color: rgb(300,0,0) }       / * clipped to 255 * /
+ *   EM { color: rgb(110%, 0%, 0%) }  / * clipped to 100% * /
+ * </PRE>
+ *   <P>
+ *   RGB colors are specified in the sRGB color space <A HREF="#ref9">[9]</A>.
+ *   UAs may vary in the fidelity with which they represent these colors, but
+ *   use of sRGB provides an unambiguous and objectively measurable definition
+ *   of what the color should be, which can be related to international standards
+ *   <A HREF="#ref10">[10]</A>.
+ *   <P>
+ *   UAs may limit their efforts in displaying colors to performing a gamma-correction
+ *   on them. sRGB specifies a display gamma of 2.2 under specified viewing
+ *   conditions. UAs adjust the colors given in CSS such that, in combination
+ *   with an output device's "natural" display gamma, an effective display gamma
+ *   of 2.2 is produced. <A HREF="#appendix-d">Appendix D</A> gives further details
+ *   of this. Note that only colors specified in CSS are affected; e.g., images
+ *   are expected to carry their own color information.
+ *
+ *
+ *   <H2>
+ *     <A NAME="appendix-d">Appendix D: Gamma correction</A>
+ *   </H2>
+ *   <P>
+ *   (This appendix is informative, not normative)
+ *   <P>
+ *   See the <A href="http://www.w3.org/pub/WWW/TR/PNG-GammaAppendix">Gamma
+ *   Tutorial</A> in the PNG specification <A href="#ref12">[12]</A> if you aren't
+ *   already familiar with gamma issues.
+ *   <P>
+ *   In the computation, UAs displaying on a CRT may assume an ideal CRT and ignore
+ *   any effects on apparent gamma caused by dithering. That means the minimal
+ *   handling they need to do on current platforms is:
+ *   <DL>
+ *     <DT>
+ *       PC using MS-Windows
+ *     <DD>
+ *       none
+ *     <DT>
+ *       Unix using X11
+ *     <DD>
+ *       none
+ *     <DT>
+ *       Mac using QuickDraw
+ *     <DD>
+ *       apply gamma 1.39 <A HREF="#ref13">[13]</A> (ColorSync-savvy applications
+ *       may simply pass the sRGB ICC profile <A HREF="#ref14">[14]</A> to ColorSync
+ *       to perform correct color correction)
+ *     <DT>
+ *       SGI using X
+ *     <DD>
+ *       apply the gamma value from <TT>/etc/config/system.glGammaVal</TT> (the default
+ *       value being 1.70; applications running on Irix 6.2 or above may simply pass
+ *       the sRGB ICC profile to the color management system)
+ *     <DT>
+ *       NeXT using NeXTStep
+ *     <DD>
+ *       apply gamma 2.22
+ *   </DL>
+ *   <P>
+ *   "Applying gamma" means that each of the three R, G and B must be converted
+ *   to R'=R<SUP>gamma</SUP>, G'=G<SUP>gamma</SUP>, G'=B<SUP>gamma</SUP>, before
+ *   handing to the OS.
+ *   <P>
+ *   This may rapidly be done by building a 256-element lookup table once per
+ *   browser invocation thus:
+ *   <PRE>
+ *   for i := 0 to 255 do
+ *     raw := i / 255;
+ *     corr := pow (raw, gamma);
+ *     table[i] := trunc (0.5 + corr * 255.0)
+ *   end
+ * </PRE>
+ *   <P>
+ *   which then avoids any need to do transcendental math per color attribute,
+ *   far less per pixel.
+
+ * See also
+ * <P>
+ * <A NAME="ref9">[9]</A> M Anderson, R Motta, S Chandrasekar, M Stokes:
+ * "<A HREF="http://www.hpl.hp.com/personal/Michael_Stokes/srgb.htm">Proposal
+ * for a Standard Color Space for the Internet - sRGB</A>"
+ * (http://www.hpl.hp.com/personal/Michael_Stokes/srgb.htm)
+ *   <P>
+ *  <A NAME="ref10">[10]</A> CIE Publication 15.2-1986,
+ *  "<A HREF="http://www.hike.te.chiba-u.ac.jp/ikeda/CIE/publ/abst/15-2-86.html">Colorimetry,
+ *  Second Edition</A>", ISBN 3-900-734-00-3
+ *  (http://www.hike.te.chiba-u.ac.jp/ikeda/CIE/publ/abst/15-2-86.html)
+ * <P>
+ * <A NAME="ref12">[12]</A>
+ * "<A href="http://www.w3.org/pub/WWW/TR/REC-png-multi.html">PNG (Portable
+ * Network Graphics) Specification, Version 1.0 specification</A>"
+ * (http://www.w3.org/pub/WWW/TR/REC-png-multi.html)
+ * <P>
+ * <A NAME="ref13">[13]</A> Charles A. Poynton:
+ * "<A HREF="ftp://ftp.inforamp.net/pub/users/poynton/doc/Mac/Mac_gamma.pdf">Gamma
+ * correction on the Macintosh Platform</A>"
+ * (ftp://ftp.inforamp.net/pub/users/poynton/doc/Mac/Mac_gamma.pdf)
+ * <P>
+ * <A NAME="ref14">[14]</A> International Color Consortium:
+ * "<A HREF="ftp://sgigate.sgi.com/pub/icc/ICC32.pdf">ICC Profile Format
+ *  Specification, version 3.2</A>", 1995 (ftp://sgigate.sgi.com/pub/icc/ICC32.pdf)
+ *
+ * @version $Revision: 1.13 $
+ */
+public class CssColorCSS2 extends CssColor {
+
+    static HashMap<String,Object> definedColorsCSS2;
+
+    /**
+     * Create a new CssColorCSS2.
+     */
+    public CssColorCSS2() {
+	//color = new CssIdent("");
+    }
+
+    /**
+     * Create a new CssColorCSS2 with a color name.
+     *
+     * @param s The name color.
+     * @exception InvalidParamException the color is incorrect
+     */
+    public CssColorCSS2(ApplContext ac, String s) throws InvalidParamException {
+	//	setIdentColor(s.toLowerCase(), ac);
+	setIdentColor(s, ac);
+    }
+
+    /**
+     * Parse an ident color.
+     */
+    private void setIdentColor(String s, ApplContext ac)
+	    throws InvalidParamException {
+	String lower_s = s.toLowerCase();
+	if (!computeIdentColor(definedColorsCSS2, lower_s)) {
+	    throw new InvalidParamException("value", s, "color", ac);
+	}
+    }
+
+    static {
+	definedColorsCSS2 = new HashMap<String,Object>();
+	definedColorsCSS2.put("black",
+			  new RGB(0, 0, 0));
+	definedColorsCSS2.put("silver",
+			  new RGB(192, 192, 192));
+	definedColorsCSS2.put("gray",
+			  new RGB(128, 128, 128));
+	definedColorsCSS2.put("white",
+			  new RGB(255, 255, 255));
+	definedColorsCSS2.put("maroon",
+			  new RGB(128, 0, 0));
+	definedColorsCSS2.put("red",
+			  new RGB(255, 0, 0));
+	definedColorsCSS2.put("purple",
+			  new RGB(128, 0, 128));
+	definedColorsCSS2.put("fuchsia",
+			  new RGB(255, 0, 255));
+	definedColorsCSS2.put("green",
+			  new RGB(0, 128, 0));
+	definedColorsCSS2.put("lime",
+			  new RGB(0, 255, 0));
+	definedColorsCSS2.put("olive",
+			  new RGB(128, 128, 0));
+	definedColorsCSS2.put("yellow",
+			  new RGB(255, 255, 0));
+	definedColorsCSS2.put("navy",
+			  new RGB(0, 0, 128));
+	definedColorsCSS2.put("blue",
+			  new RGB(0, 0, 255));
+	definedColorsCSS2.put("teal",
+			  new RGB(0, 128, 128));
+	definedColorsCSS2.put("aqua",
+			  new RGB(0, 255, 255));
+        definedColorsCSS2.put("activeborder", "ActiveBorder");
+        definedColorsCSS2.put("activecaption", "ActiveCaption");
+        definedColorsCSS2.put("appworkspace", "AppWorkspace");
+        definedColorsCSS2.put("background", "Background");
+        definedColorsCSS2.put("buttonface", "ButtonFace");
+        definedColorsCSS2.put("buttonhighlight", "ButtonHighlight");
+        definedColorsCSS2.put("buttonshadow", "ButtonShadow");
+        definedColorsCSS2.put("buttontext", "ButtonText");
+        definedColorsCSS2.put("captiontext", "CaptionText");
+        definedColorsCSS2.put("graytext", "GrayText");
+        definedColorsCSS2.put("highlight", "Highlight");
+        definedColorsCSS2.put("highlighttext", "HighlightText");
+        definedColorsCSS2.put("inactiveborder", "InactiveBorder");
+        definedColorsCSS2.put("inactivecaption", "InactiveCaption");
+        definedColorsCSS2.put("inactivecaptiontext", "InactiveCaptionText");
+        definedColorsCSS2.put("infobackground", "InfoBackground");
+        definedColorsCSS2.put("infotext", "InfoText");
+        definedColorsCSS2.put("menu", "Menu");
+        definedColorsCSS2.put("menutext", "MenuText");
+        definedColorsCSS2.put("scrollbar", "Scrollbar");
+        definedColorsCSS2.put("threeddarkshadow", "ThreeDDarkShadow");
+        definedColorsCSS2.put("threedface", "ThreeDFace");
+        definedColorsCSS2.put("threedhighlight", "ThreeDHighlight");
+        definedColorsCSS2.put("threedlightshadow", "ThreeDLightShadow");
+        definedColorsCSS2.put("threedshadow", "ThreeDShadow");
+        definedColorsCSS2.put("window", "Window");
+        definedColorsCSS2.put("windowframe", "WindowFrame");
+        definedColorsCSS2.put("windowtext", "WindowText");
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/values/CssColorCSS21.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,71 @@
+// $Id: CssColorCSS21.java,v 1.5 2009-03-09 17:17:48 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2005.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.values;
+
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+
+/**
+ * CssColorCSS21<br />
+ * Created: Aug 30, 2005 1:53:59 PM<br />
+ */
+public class CssColorCSS21 extends CssColorCSS2 {
+
+    private static int[] tableColorHash;
+    private static int[] tableSystemColorHash;
+
+    static {
+	// We create the two table containing hashvalues of each color
+	tableColorHash = new int[COLORNAME_CSS21.length];
+	for (int i = 0; i < COLORNAME_CSS21.length; i++) {
+	    tableColorHash[i] = COLORNAME_CSS21[i].toLowerCase().hashCode();
+	}
+
+	tableSystemColorHash = new int[SYSTEMCOLORS.length];
+	for (int i = 0; i < tableSystemColorHash.length; i++) {
+	    tableSystemColorHash[i] = SYSTEMCOLORS[i].toLowerCase().hashCode();
+	}
+    }
+
+    public CssColorCSS21(ApplContext ac, String s)
+	throws InvalidParamException 
+    {
+	setIdentColor(s, ac);
+    }
+
+    /**
+     * Parse an ident color.
+     */
+    private void setIdentColor(String s, ApplContext ac)
+	    throws InvalidParamException {
+	String lower_s = s.toLowerCase();
+	int hash = lower_s.hashCode();
+
+	int indexOfColor = searchColor(hash, tableColorHash);
+
+	if (indexOfColor != -1) {
+	    computeIdentColor(definedColors, COLORNAME_CSS21[indexOfColor]);
+	} else {
+	    // the color has not been found, search it the system colors
+	    indexOfColor = searchColor(hash, tableSystemColorHash);
+	    if(indexOfColor != -1) {
+		computeIdentColor(definedColors, SYSTEMCOLORS[indexOfColor]);
+	    } else {
+	    // the color does not exist in this profile, this is an error
+		throw new InvalidParamException("value", s, "color", ac);
+	    }
+	}
+    }
+
+    private int searchColor(int colorHash, int[] tableColorHash) {
+	for (int i =0; i < tableColorHash.length; i++) {
+	    if (tableColorHash[i] == colorHash) {
+		return i;
+	    }
+	}
+	return -1;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/values/CssColorConstants.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,66 @@
+//
+// $Id: CssColorConstants.java,v 1.6 2007-01-03 18:35:23 ot 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 org.w3c.css.values;
+
+/**
+ * This class is ued by CssColor
+ *
+ * @version $Revision: 1.6 $
+ * @see org.w3c.css.values.CssColor
+ */
+public interface CssColorConstants {
+
+  /**
+   * All named colors.
+   */
+  public static final String[] COLORNAME = {
+    "aqua", "black", "blue", "fuchsia", "gray", "green", "lime", "maroon",
+    "navy", "olive", "purple", "red", "silver", "teal", "white", "yellow" };
+
+  public static final String[] COLORNAME_CSS21 = {
+      "aqua", "black", "blue", "fuchsia", "gray", "green", "lime", "maroon",
+      "navy", "olive", "orange", "purple", "red", "silver", "teal", "white",
+      "yellow" };
+
+  public static final String[] SYSTEMCOLORS = {
+      "ActiveBorder", "ActiveCaption", "AppWorkspace", "Background",
+      "ButtonFace", "ButtonHighlight", "ButtonShadow", "ButtonText",
+      "CaptionText", "GrayText", "Highlight", "HighlightText", "InactiveBorder",
+      "InactiveCaption", "InactiveCaptionText", "InfoBackground", "InfoText",
+      "Menu", "MenuText", "Scrollbar", "ThreeDDarkShadow", "ThreeDFace",
+      "ThreeDHighlight", "ThreeDLightShadow", "ThreeDShadow", "Window",
+      "WindowFrame", "WindowText"
+  };
+}/*
+ActiveBorder
+ActiveCaption
+AppWorkspace
+Background
+ButtonFace
+ButtonHighlight
+ButtonShadow
+ButtonText
+CaptionText
+GrayText
+Highlight
+HighlightText
+InactiveBorder
+InactiveCaption
+InactiveCaptionText
+InfoBackground
+InfoText
+Menu
+MenuText
+Scrollbar
+ThreeDDarkShadow
+ThreeDFace
+ThreeDHighlight
+ThreeDLightShadow
+ThreeDShadow
+Window
+WindowFrame
+WindowText*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/values/CssDate.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,105 @@
+//
+// $Id: CssDate.java,v 1.4 2008-03-25 18:30:11 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 org.w3c.css.values;
+
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+
+/**
+ * <H3>Date</H3>
+ *
+ * Legal format is dd/mm/yyyy as in SSML
+ *
+ * @version $Revision: 1.4 $
+ */
+public class CssDate extends CssValue {
+    
+    public static final int type = CssTypes.CSS_DATE;
+    
+    public final int getType() {
+	return type;
+    }
+
+    String day = new String();
+    String month = new String();
+    String year = new String();
+
+  /**
+   * Create a new CssDate.
+   */
+  public CssDate() {
+  }
+
+  /**
+   * Set the value of this date.
+   *
+   * @param s     the string representation of the time.
+   * @param frame For errors and warnings reports.
+   * @exception InvalidParamException The date format is incorrect
+   */
+  public void set(String s, ApplContext ac) throws InvalidParamException {
+    s = s.toLowerCase();
+    int length = s.length();
+
+	if (s.indexOf("/") == -1) {
+		// invalid date
+		throw new InvalidParamException("value",
+		      s, ac);
+
+	} else if (s.indexOf("/") == s.lastIndexOf("/")) {
+		// only one / in date is invalid date
+	      throw new InvalidParamException("value",
+		      s, ac);
+	} else {
+		day = s.substring(0,s.indexOf("/") - 1);
+		month = s.substring(s.indexOf("/"), s.lastIndexOf("/") - 1);
+		year = s.substring(s.lastIndexOf("/"),length);
+
+		Integer d, m, y;
+
+		try {
+			d = new Integer(day);
+			m = new Integer(month);
+			y = new Integer(year);
+		} catch (NumberFormatException e) {
+	      throw new InvalidParamException("value", s, ac);
+		}
+
+		if (d.intValue() > 31 || d.intValue() < 0 || m.intValue() > 12 || m.intValue() < 0 || y.intValue() < 0) {
+			throw new InvalidParamException("value", s, ac);
+		}
+	}
+
+  }
+
+  /**
+   * Returns the current value
+   *  Float
+   */
+  public Object get() {
+    return new String(day + "/" + month + "/" + year);
+  }
+
+  /**
+   * Returns a string representation of the object.
+   */
+  public String toString() {
+	  return day + "/" + month + "/" + year;
+  }
+
+  /**
+   * Compares two values for equality.
+   *
+   * @param value The other value.
+   */
+  public boolean equals(Object value) {
+    return (value instanceof CssDate && this.day.equals(((CssDate)value).day) &&
+    this.month.equals(((CssDate)value).month) && this.year.equals(((CssDate)value).year));
+  }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/values/CssExpression.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,197 @@
+//
+// $Id: CssExpression.java,v 1.7 2009-12-09 17:21:50 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 org.w3c.css.values;
+
+import java.util.Vector;
+
+/**
+ * This class is used by the CSS1 parser to generate all expressions.
+ *
+ * @version $Revision: 1.7 $
+ */
+public class CssExpression implements CssOperator {
+
+    private Vector<ValueOperator> items = new Vector<ValueOperator>();
+    private int count = 0;
+    private int index = 0;
+
+    /**
+     * Add a value to the end of the expression
+     * By default the next operator is a space
+     *
+     * @param value The value to append
+     */
+    public void addValue(CssValue value) {
+	items.addElement(new ValueOperator(value));
+	count++;
+    }
+
+    /**
+     * Change the next operator
+     * Don't check if the operator is correct
+     *
+     * @param operator The operator
+     * @see CssOperator
+     */
+    public void setOperator(char operator) {
+	(items.elementAt(count-1)).operator = operator;
+    }
+
+    /**
+     * Change the next operator for the current position
+     * Don't check if the operator is correct
+     *
+     * @param operator The operator
+     * @see CssOperator
+     */
+    public void setCurrentOperator(char operator) {
+	(items.elementAt(index)).operator = operator;
+    }
+
+    /**
+     * Returns the current value of the expression
+     * don't change the position in the expression
+     */
+    public CssValue getValue() {
+	if (index == count)
+	    return null;
+	else
+	    return (items.elementAt(index)).value;
+    }
+
+    /**
+     * Returns the current value of the expression
+     * don't change the position in the expression
+     */
+    public CssValue getNextValue() {
+	if (index+1 >= count)
+	    return null;
+	else
+	    return (items.elementAt(index+1)).value;
+    }
+
+    /* Modified by Sijtsche de Jong */
+    /**
+     * Returns the operator <strong>after</strong> the current value
+     * don't change the position in the expression
+     */
+    public char getOperator() {
+	if (index == count)
+	    return SPACE;
+	else
+	    return (items.elementAt(index)).operator;
+    }
+
+    /**
+     * Returns the number of elements
+     */
+    public int getCount() {
+	return count;
+    }
+
+    /**
+     * Returns the number of remaining elements
+     */
+    public int getRemainingCount() {
+	return count-index;
+    }
+
+    /**
+     * Insert the current value at the current position.
+     *
+     * @param value The value to insert
+     */
+    public void insert(CssValue value) {
+	items.insertElementAt(new ValueOperator(value), index);
+	count++;
+    }
+
+    /**
+     * Removes the current value and his operator
+     */
+    public void remove() {
+	if (index != count)
+	    items.removeElementAt(index);
+	count--;
+    }
+
+    /**
+     * Returns true if there is no other element
+     */
+    public boolean end() {
+	return index == count;
+    }
+
+    /**
+     * Change the position to the beginning
+     */
+    public void starts() {
+	index = 0;
+    }
+
+    /**
+     * Change the position to the end
+     */
+    public void ends() {
+	index = count;
+    }
+
+    /**
+     * Change the position to the next
+     */
+    public void next() {
+	if (index < count)
+	    index++;
+    }
+
+    /**
+     * Change the position to the precedent
+     */
+    public void precedent() {
+	if (index > 0)
+	    index--;
+    }
+
+    /**
+     * Returns a string representation of the object from the current position.
+     */
+    public String toString() {
+	StringBuilder sb = new StringBuilder();
+	for (int i = index; i < count; i++) {
+	    ValueOperator vo = items.elementAt(i);
+	    sb.append(vo.value.toString()).append(vo.operator);
+	}
+	// remove the last one
+	if (sb.length() > 0) {
+	    return sb.deleteCharAt(sb.length()-1).toString();
+	} else {
+	    return "**invalid state**";
+	}
+    }
+
+    /**
+     * Returns a string representation of the object before the current position.
+     */
+    public String toStringFromStart() {
+	StringBuilder sb = new StringBuilder();
+	for (int i = 0; i < index; i++) {
+	    ValueOperator vo = items.elementAt(i);
+	    sb.append(vo.value.toString()).append(vo.operator);
+	}
+
+	return sb.toString();
+    }
+
+    class ValueOperator {
+	ValueOperator(CssValue value) {
+	    this.value = value;
+	    this.operator = SPACE;
+	}
+	CssValue value;
+	char operator;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/values/CssFrequency.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,143 @@
+//
+// $Id: CssFrequency.java,v 1.6 2008-03-25 18:30:11 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 org.w3c.css.values;
+
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.util.Util;
+
+/**
+ * <H3> Frequencies</H3>
+ *
+ * <P>Frequency units are used with aural cascading style sheets.
+ *
+ * <p>There are two legal frequency units:
+ *
+ * <ul>
+ * <li>Hz: Hertz
+ * <li>kHz: kilo Hertz
+ * </ul>
+ *
+ * <P> For example, 200Hz is a bass sound, and 6kHz is a treble sound.
+ *
+ * @version $Revision: 1.6 $
+ */
+public class CssFrequency extends CssValue {
+
+    public static final int type = CssTypes.CSS_FREQUENCY;
+    
+    public final int getType() {
+	return type;
+    }
+
+  /**
+   * Create a new CssFrequency
+   */
+  public CssFrequency() {
+    value = defaultValue;
+  }
+
+  /**
+   * Create a new CssFrequency with a float number.
+   *
+   * @param value the float number.
+   */
+  public CssFrequency(Float value) {
+    this.value = value;
+  }
+
+  /**
+   * Set the value of this frequency.
+   *
+   * @param s     the string representation of the frequency.
+   * @param frame For errors and warnings reports.
+   * @exception InvalidParamException The unit is incorrect
+   */
+  public void set(String s, ApplContext ac) throws InvalidParamException {
+    s = s.toLowerCase();
+    int length = s.length();
+    String unit;
+    float v;
+    if (s.charAt(length-3) == 'k') {
+      unit = s.substring(length-3, length);
+      v = new Float(s.substring(0, length-3)).floatValue();
+    } else {
+      unit = s.substring(length-2, length);
+      v = new Float(s.substring(0, length-2)).floatValue();
+    }
+    int hash = unit.hashCode();
+
+
+    int i = 0;
+    while (i<units.length) {
+      if (hash == hash_units[i]) {
+	this.unit = i;
+	break;
+      }
+      i++;
+    }
+
+    if (i == units.length) {
+      throw new InvalidParamException("unit", unit, ac);
+    }
+
+    this.value = new Float(v);
+
+  }
+
+  /**
+   * Returns the current value
+   */
+  public Object get() {
+    if (unit == 1) {
+      return new Float(value.floatValue() * 1000);
+    }
+    return value;
+  }
+
+  /**
+   * Returns the current value
+   */
+  public String getUnit() {
+    return units[unit];
+  }
+
+  /**
+   * Returns a string representation of the object.
+   */
+  public String toString() {
+      if (value.floatValue() != 0) {
+	  return Util.displayFloat(value) + getUnit();
+      } else {
+	  return Util.displayFloat(value);
+      }
+  }
+
+  /**
+   * Compares two values for equality.
+   *
+   * @param value The other value.
+   */
+  public boolean equals(Object value) {
+    return (value instanceof CssFrequency
+	        && this.value.equals(((CssFrequency) value).value)
+	        && unit == ((CssFrequency) value).unit);
+  }
+
+  private Float value;
+  private int unit;
+  private static String[] units = { "Hz", "kHz" };
+  private static int[] hash_units;
+  private static Float defaultValue = new Float(0);
+
+  static {
+    hash_units = new int[units.length];
+    for (int i=0; i<units.length; i++)
+      hash_units[i] = units[i].toLowerCase().hashCode();
+  }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/values/CssFunction.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,82 @@
+//
+// $Id: CssFunction.java,v 1.6 2009-03-06 11:02:45 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 org.w3c.css.values;
+
+import org.w3c.css.util.ApplContext;
+
+/**
+ * A CSS float number.
+ *
+ * @version $Revision: 1.6 $
+ */
+public class CssFunction extends CssValue {
+
+    public static final int type = CssTypes.CSS_FUNCTION;
+
+    public final int getType() {
+	return type;
+    }
+
+    String name;
+    CssExpression parameters;
+
+    /**
+     * Set the value of this function
+     *
+     * @param s     the string representation of the frequency.
+     * @param frame For errors and warnings reports.
+     */
+    public void set(String s, ApplContext ac) {
+	// @@TODO
+    }
+
+    public void set(String name, CssExpression parameters) {
+	this.name = name;
+	this.parameters = parameters;
+
+    }
+
+    /**
+     * Returns the value
+     */
+    public Object get() {
+	// @@TODO
+	return null;
+    }
+
+    /**
+     * Returns the name of the function
+     */
+    public String getName() {
+	return name;
+    }
+
+    /**
+     * Returns the parameters expression
+     */
+    public CssExpression getParameters() {
+	return parameters;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return name + "(" + parameters + ")";
+    }
+
+    /**
+     * Compares two values for equality.
+     *
+     * @param value The other value.
+     */
+    public boolean equals(Object value) {
+	// @@FIXME
+	return (value instanceof CssFunction &&
+		this.name.equals(((CssFunction) value).name));
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/values/CssIdent.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,94 @@
+//
+// $Id: CssIdent.java,v 1.7 2008-03-25 18:30:11 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 org.w3c.css.values;
+
+import org.w3c.css.util.ApplContext;
+
+/**
+ * @version $Revision: 1.7 $
+ */
+public class CssIdent extends CssValue {
+
+    public static final int type = CssTypes.CSS_IDENT;
+    
+    private int hashcode = 0;
+
+    public final int getType() {
+	return type;
+    }
+    
+    /**
+     * Create a new CssIdent
+     */
+    public CssIdent() {
+    }
+    
+    /**
+     * Create a new CssIdent
+     *
+     * @param s The identificator
+     */
+    public CssIdent(String s) {
+	value = s;
+    }
+
+    /**
+     * Set the value of this ident.
+     *
+     * @param s     the string representation of the identificator.
+     * @param frame For errors and warnings reports.
+     */
+    public void set(String s, ApplContext ac) {
+	value = s;
+	hashcode = 0;
+    }
+
+    /**
+     * Returns the internal value.
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value;
+    }
+
+    /**
+     * Compares two values for equality.
+     *
+     * @param value The other value.
+     */
+    public boolean equals(Object value) {
+	return (value instanceof CssIdent && value.hashCode() == hashCode());
+    }
+
+    /**
+     * Compares two values for equality.
+     *
+     * @param value The other value.
+     */
+    public boolean equals(CssIdent value) {
+	return (value.hashCode() == hashCode());
+    }
+
+    /**
+     * Returns a hashcode for this ident.
+     */
+    public int hashCode() {
+	// we cache, as we use toLowerCase and don't store the resulting string
+	if (hashcode == 0) {
+	    hashcode = value.toLowerCase().hashCode();
+	}
+	return hashcode;
+    }
+
+    private String value;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/values/CssLength.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,191 @@
+//
+// $Id: CssLength.java,v 1.6 2008-03-25 18:30:11 ylafon Exp $
+// From Philippe Le Hegaret (Philippe.Le_Hegaret@sophia.inria.fr)
+// Updated September 25th 2000 Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT MIT and INRIA, 1997.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.values;
+
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.util.Util;
+
+/**
+ *   <H3>
+ *     &nbsp;&nbsp; Length units
+ *   </H3>
+ *   <P>
+ *   The format of a length value is an optional sign character ('+' or '-', with
+ *   '+' being the default) immediately followed by a number (with or without
+ *   a decimal point) immediately followed by a unit identifier (a two-letter
+ *   abbreviation). After a '0' number, the unit identifier is optional.
+ *   <P>
+ *   Some properties allow negative length units, but this may complicate the
+ *   formatting model and there may be implementation-specific limits. If a negative
+ *   length value cannot be supported, it should be clipped to the nearest value
+ *   that can be supported.
+ *   <P>
+ *   There are two types of length units: relative and absolute. Relative units
+ *   specify a length relative to another length property. Style sheets that use
+ *   relative units will more easily scale from one medium to another (e.g. from
+ *   a computer display to a laser printer). Percentage
+ *   units (described below) and keyword values (e.g. 'x-large') offer similar
+ *   advantages.
+ *   <P>
+ *   These relative units are supported:
+ *   <PRE>
+ *   H1 { margin: 0.5em }      /* ems, the height of the element's font * /
+ *   H1 { margin: 1ex }        /* x-height, ~ the height of the letter 'x' * /
+ *   P  { font-size: 12px }    /* pixels, relative to canvas * /
+ *   P  { layout-grid: strict both 20 pt 15 pt; margin 1gd 3gd 1gd 2gd } /* grid units * /
+ *  </PRE>
+ *   <P>
+ *   The relative units 'em' and 'ex' are relative to the font size of the element
+ *   itself. The only exception to this rule in CSS1 is the 'font-size' property
+ *   where 'em' and 'ex' values refer to the font size of the parent element.
+ *   <P>
+ *   The existence of a grid in an element makes it possible and very useful to express various
+ *   measurements in that element in terms of grid units. Grid units are used very frequently
+ *   in East Asian typography, especially for the left, right, top and bottom element margins.
+ *   Therefore a new length unit is necessary: gd to enable the author to specify the various
+ *   measurements in terms of the grid.
+ *   <P>
+ *   Pixel units, as used in the last rule, are relative to the resolution of
+ *   the canvas, i.e. most often a computer display. If the pixel density of the
+ *   output device is very different from that of a typical computer display,
+ *   the UA should rescale pixel values. The suggested <EM>reference pixel</EM>
+ *   is the visual angle of one pixel on a device with a pixel density of 90dpi
+ *   and a distance from the reader of an arm's length. For a nominal arm's length
+ *   of 28 inches, the visual angle is about 0.0227 degrees.
+ *   <P>
+ *   Child elements inherit the computed value, not the relative value:
+ *   <PRE>
+ *   BODY {
+ *     font-size: 12pt;
+ *     text-indent: 3em;  /* i.e. 36pt * /
+ *   }
+ *   H1 { font-size: 15pt }
+ * </PRE>
+ *   <P>
+ *   In the example above, the 'text-indent' value of 'H1' elements will be 36pt,
+ *   not 45pt.
+ *   <P>
+ *   Absolute length units are only useful when the physical properties of the
+ *   output medium are known. These absolute units are supported:
+ *   <PRE>
+ *   H1 { margin: 0.5in }      /* inches, 1in = 2.54cm * /
+ *   H2 { line-height: 3cm }   /* centimeters * /
+ *   H3 { word-spacing: 4mm }  /* millimeters * /
+ *   H4 { font-size: 12pt }    /* points, 1pt = 1/72 in * /
+ *   H4 { font-size: 1pc }     /* picas, 1pc = 12pt * /
+ * </PRE>
+ *   <P>
+ *   In cases where the specified length cannot be supported, UAs should try to
+ *   approximate. For all CSS1 properties, further computations and inheritance
+ *   should be based on the approximated value.
+ *
+ * @see CssPercentage
+ * @version $Revision: 1.6 $
+ */
+public class CssLength extends CssValue {
+
+    public static final int type = CssTypes.CSS_LENGTH;
+    
+    public final int getType() {
+	return type;
+    }
+    
+    /**
+     * Create a new CssLength
+     */
+    public CssLength() {
+	value = defaultValue;
+    }
+
+    /**
+     * Set the value of this length.
+     *
+     * @param s     the string representation of the length.
+     * @param frame For errors and warnings reports.
+     * @exception InvalidParamException The unit is incorrect
+     */
+    public void set(String s, ApplContext ac) throws InvalidParamException {
+	s = s.toLowerCase();
+	int length = s.length();
+	String unit = s.substring(length-2, length);
+	this.value = new Float(s.substring(0, length-2));
+
+	this.unit = 2; // there is no unit by default
+
+	if (unit.equals("gd") && (cssversion.equals("css2"))) {
+	    throw new InvalidParamException("unit", unit, ac);
+	}
+
+	if (value.floatValue() != 0) {
+	    int hash = unit.hashCode();
+	    int i = 0;
+	    while (i<units.length) {
+		if (hash == hash_units[i]) {
+		    this.unit = i;
+		    return;
+		}
+		i++;
+	    }
+	} else {
+	    return;
+	}
+
+	throw new InvalidParamException("unit", unit, ac);
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the current value
+     */
+    public String getUnit() {
+	return units[unit];
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (value.floatValue() != 0) {
+	    return Util.displayFloat(value) + getUnit();
+	} else {
+	    return Util.displayFloat(value);
+	}
+    }
+
+    /**
+     * Compares two values for equality.
+     *
+     * @param value The other value.
+     */
+    public boolean equals(Object value) {
+	return (value instanceof CssLength &&
+		this.value.equals(((CssLength) value).value) &&
+		unit == ((CssLength) value).unit);
+    }
+
+    private Float value;
+    private int unit;
+    private static String[] units = { "mm", "cm", "pt", "pc", "em", 
+				      "ex", "px", "in", "gd" };
+    private static int[] hash_units;
+    private static Float defaultValue = new Float(0);
+
+    static {
+	hash_units = new int[units.length];
+	for (int i=0; i<units.length; i++)
+	    hash_units[i] = units[i].hashCode();
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/values/CssNumber.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,195 @@
+//
+// $Id: CssNumber.java,v 1.7 2008-03-25 18:30:11 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 org.w3c.css.values;
+
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+
+/**
+ * A CSS float number.
+ *
+ * @version $Revision: 1.7 $
+ */
+public class CssNumber extends CssValue implements CssValueFloat {
+
+    public static final int type = CssTypes.CSS_NUMBER;
+    
+    public final int getType() {
+	return type;
+    }
+
+    ApplContext ac;
+    Float value;
+    boolean isInt = false;
+
+    /**
+     * Create a new CssNumber
+     */
+    public CssNumber() {
+    }
+
+    /**
+     * Create a new CssNumber
+     */
+    public CssNumber(ApplContext ac, float value) {
+	this.ac = ac;
+	this.value = new Float(value);
+    }
+
+    public CssNumber(float value) {
+	this.value = new Float(value);
+    }
+
+    /**
+     * Set the value of this frequency.
+     *
+     * @param s     the string representation of the frequency.
+     * @param frame For errors and warnings reports.
+     */
+    public void set(String s, ApplContext ac) {
+	try {
+	    new Integer(s);
+	    isInt = true;
+	}
+	catch(NumberFormatException e) {
+	    isInt = false;
+	}
+	finally {
+	    value = new Float(s);
+	}
+	this.ac = ac;
+    }
+
+    /**
+     * Returns the value
+     */
+    public Object get() {
+	if(isInt) {
+	    return new Integer(value.intValue());
+	}
+	return value;
+    }
+
+    /**
+     * Return the float value
+     */
+    public float getValue() {
+	return value.floatValue();
+    }
+
+    public int getInt() throws InvalidParamException {
+	if(isInt) {
+	    return value.intValue();
+	}
+	else {
+	    throw new InvalidParamException("invalid-color", ac);
+	}
+    }
+
+    public boolean isInteger() {
+	return isInt;
+    }
+
+    /**
+     * Returns a length.
+     * Only zero can be a length.
+     *
+     * @exception InvalidParamException The value is not zero
+     */
+    public CssLength getLength() throws InvalidParamException {
+	float num = value.floatValue();
+	if (num == 0) {
+	    return new CssLength();
+	} else {
+	    throw new InvalidParamException("zero", "length", ac);
+	}
+    }
+
+    /**
+     * Returns a percentage.
+     * Only zero can be a length.
+     *
+     * @exception InvalidParamException The value is not zero
+     */
+    public CssPercentage getPercentage() throws InvalidParamException {
+	float num = value.floatValue();
+	if (num == 0)
+	    return new CssPercentage();
+	else {
+	    throw new InvalidParamException("zero",
+					    value.toString(),
+					    "percentage", ac);
+	}
+    }
+
+    /**
+     * Returns a time.
+     * Only zero can be a length.
+     *
+     * @exception InvalidParamException The value is not zero
+     */
+    public CssTime getTime() throws InvalidParamException {
+	float num = value.floatValue();
+	if (num == 0)
+	    return new CssTime();
+	else
+	    throw new InvalidParamException("zero", value.toString(),
+					    "time", ac);
+    }
+
+    /**
+     * Returns a angle.
+     * Only zero can be a length.
+     *
+     * @exception InvalidParamException The value is not zero
+     */
+    public CssAngle getAngle() throws InvalidParamException {
+	float num = value.floatValue();
+	if (num == 0)
+	    return new CssAngle();
+	else
+	    throw new InvalidParamException("zero", value.toString(),
+					    "angle", ac);
+    }
+
+    /**
+     * Returns a frequency.
+     * Only zero can be a length.
+     *
+     * @exception InvalidParamException The value is not zero
+     */
+    public CssFrequency getFrequency() throws InvalidParamException {
+	float num = value.floatValue();
+	if (num == 0) {
+	    return new CssFrequency();
+	} else {
+	    throw new InvalidParamException("zero",
+					    value.toString(), "frequency", ac);
+	}
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if(isInt) {
+	    return value.intValue() + "";
+	}
+	return value.toString();
+    }
+
+    /**
+     * Compares two values for equality.
+     *
+     * @param value The other value.
+     */
+    public boolean equals(Object value) {
+	return (value instanceof CssNumber &&
+		this.value.equals(((CssNumber) value).value));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/values/CssOperator.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,20 @@
+//
+// $Id: CssOperator.java,v 1.3 2005-09-08 12:24:10 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 org.w3c.css.values;
+
+/**
+ * Used by properties to verify the semantics
+ *
+ * @version $Revision: 1.3 $
+ */
+public interface CssOperator {
+  public static final char COMMA = ',';
+  public static final char MINUS = '-';
+  public static final char PLUS = '+';
+  public static final char SLASH = '/';
+  public static final char SPACE = ' ';
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/values/CssPercentage.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,125 @@
+//
+// $Id: CssPercentage.java,v 1.7 2009-03-05 18:02:21 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 org.w3c.css.values;
+
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.util.Util;
+
+/**
+ *   <H3>
+ *     &nbsp;&nbsp; Percentage units
+ *   </H3>
+ *   <P>
+ *   The format of a percentage value is an optional sign character ('+' or '-',
+ *   with '+' being the default) immediately followed by a number (with or without
+ *   a decimal point) immediately followed by '%'.
+ *   <P>
+ *   Percentage values are always relative to another value, for example a length
+ *   unit. Each property that allows percentage units also defines what value
+ *   the percentage value refer to. Most often this is the font size of the element
+ *   itself:
+ *   <PRE>
+ *   P { line-height: 120% }   / * 120% of the element's 'font-size' * /
+ * </PRE>
+ *   <P>
+ *   In all inherited CSS1 properties, if the value is specified as a percentage,
+ *   child elements inherit the resultant value, not the percentage value.
+ * @version $Revision: 1.7 $
+ */
+public class CssPercentage extends CssValue {
+
+    public static final int type = CssTypes.CSS_PERCENTAGE;
+    
+    public final int getType() {
+	return type;
+    }
+
+    static Float defaultValue = new Float(0);
+    Float value;
+
+    /**
+     * Create a new CssPercentage
+     */
+    public CssPercentage() {
+	this(defaultValue);
+    }
+
+    /**
+     * Create a new CssPercentage with a number
+     *
+     * @param value The value.
+     */
+    public CssPercentage(int value) {
+	this(new Float(value));
+    }
+
+    /**
+     * Create a new CssPercentage with a float
+     *
+     * @param value the float value.
+     */
+    public CssPercentage(float value) {
+	this(new Float(value));
+    }
+
+    /**
+     * Create a new CssPercentage with a Float value.
+     *
+     * @param value the Float object.
+     */
+    public CssPercentage(Float value) {
+	this.value = value;
+    }
+
+    /**
+     * Set the value of this percentage.
+     *
+     * @param s     the string representation of the percentage.
+     * @param frame For errors and warnings reports.
+     * @exception InvalidParamException The unit is incorrect
+     */
+    public void set(String s, ApplContext ac) throws InvalidParamException {
+	if (s.charAt(s.length()-1) != '%') {
+	    throw new InvalidParamException("percentage", s, ac);
+	}
+	this.value = new Float(s.substring(0, s.length()-1));
+    }
+
+    /**
+     * Returns the current value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the value as a float
+     */
+    public float getValue() {
+	return value.floatValue();
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return Util.displayFloat(value) + "%";
+    }
+
+    /**
+     * Compares two values for equality.
+     *
+     * @param value The other value.
+     */
+    public boolean equals(Object val) {
+	return ((val instanceof CssPercentage)
+		&& value.equals(((CssPercentage) val).value));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/values/CssResolution.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,115 @@
+//
+// $Id: CssResolution.java,v 1.4 2008-03-25 18:30:11 ylafon Exp $
+// From Philippe Le Hegaret (Philippe.Le_Hegaret@sophia.inria.fr)
+// Updated September 25th 2000 Sijtsche de Jong (sy.de.jong@let.rug.nl)
+//
+// (c) COPYRIGHT MIT and INRIA, 1997.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.values;
+
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.util.Util;
+
+/**
+ *   <H3>
+ *     &nbsp;&nbsp; Resolution units
+ *   </H3>
+ *   <P>
+ *	 The dpi and dpcm units describe the resolution of an output device i.e. the density of
+ *   the pixels. In dots per inch and dots per centimeter, respectively. These units are only used in the
+ *   resolution media feature.
+ *   </P>
+ * @version $Revision: 1.4 $
+ */
+public class CssResolution extends CssValue {
+
+    public static final int type = CssTypes.CSS_RESOLUTION;
+    
+    public final int getType() {
+	return type;
+    }
+
+  /**
+   * Create a new CssResolution
+   */
+  public CssResolution() {
+    value = defaultValue;
+  }
+
+  /**
+   * Set the value of this Resolution.
+   *
+   * @param s     the string representation of the Resolution.
+   * @param frame For errors and warnings reports.
+   * @exception InvalidParamException The unit is incorrect
+   */
+  public void set(String s, ApplContext ac) throws InvalidParamException {
+    s = s.toLowerCase();
+    int length = s.length();
+    String unit = "";
+    if (s.toUpperCase().indexOf("DPI") != -1) {
+		unit = s.substring(length-3, length);
+		this.value = new Float(s.substring(0, length-3));
+		if (unit.toUpperCase().equals("DPI")) {
+			this.unit = unit;
+		}
+		return;
+	} else if (s.toUpperCase().indexOf("DPCM") != -1) {
+		unit = s.substring(length-4, length);
+		this.value = new Float(s.substring(0, length-4));
+		if (unit.toUpperCase().equals("DPCM")) {
+			this.unit = unit;
+		}
+		return;
+	}
+
+    if (!ac.getCssVersion().equals("css3")) {
+		throw new InvalidParamException("unit", unit, ac);
+    }
+
+    throw new InvalidParamException("unit", unit, ac);
+  }
+
+  /**
+   * Returns the current value
+   */
+  public Object get() {
+    return value;
+  }
+
+  /**
+   * Returns the current value
+   */
+  public String getUnit() {
+    return unit;
+  }
+
+  /**
+   * Returns a string representation of the object.
+   */
+  public String toString() {
+      if (value.floatValue() != 0) {
+	  return Util.displayFloat(value) + getUnit();
+      } else {
+	  return Util.displayFloat(value);
+      }
+  }
+
+  /**
+   * Compares two values for equality.
+   *
+   * @param value The other value.
+   */
+  public boolean equals(Object value) {
+    return (value instanceof CssResolution &&
+	    this.value.equals(((CssResolution) value).value) &&
+	     unit == ((CssResolution) value).unit);
+  }
+
+  private Float value;
+  private String unit;
+  private static Float defaultValue = new Float(0);
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/values/CssString.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,88 @@
+//
+// $Id: CssString.java,v 1.6 2008-03-25 18:30:11 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 org.w3c.css.values;
+
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+
+/**
+ * A CSS string.
+ *
+ * @version $Revision: 1.6 $
+ */
+public class CssString extends CssValue {
+
+    public static final int type = CssTypes.CSS_STRING;
+    
+    String value;
+
+    public final int getType() {
+	return type;
+    }
+
+    /**
+     * Create a new CssString
+     */
+    public CssString() {
+    }
+
+    /**
+     * Create a new CssString
+     */
+    public CssString(String s) {
+	value = s;
+    }
+
+    /**
+     * Set the value of this string.
+     *
+     * @param s     the string representation of the string.
+     * @param frame For errors and warnings reports.
+     * @exception InvalidParamException The unit is incorrect
+     */
+    public void set(String s, ApplContext ac) throws InvalidParamException {
+//	if (s.indexOf('\'') == -1 &&
+//	    s.indexOf('"') == -1) {
+//	    throw new InvalidParamException("string", s, ac);
+//      }
+// tokenizer is taking care of the validity of the value
+	value = s;
+    }
+
+    /**
+     * Returns the string
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value;
+    }
+
+    /**
+     * Get the hash code of the internal string.
+     */
+    public int hashCode() {
+	return value.hashCode();
+    }
+
+    /**
+     * Compares two values for equality.
+     *
+     * @param value The other value.
+     */
+    public boolean equals(Object value) {
+	return (value instanceof CssString &&
+		this.value.equals(((CssString) value).value));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/values/CssTime.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,148 @@
+//
+// $Id: CssTime.java,v 1.6 2008-03-25 18:30:11 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 org.w3c.css.values;
+
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.util.Util;
+
+/**
+ * <H3>Time</H3>
+ *
+ * <P>Time units are used with aural cascading style sheets.
+ *
+ * <P>These following are legal time units:
+ *
+ * <UL>
+ * <LI>ms: milliseconds
+ * <LI>s: seconds
+ * </UL>
+ *
+ * <p>Time values may not be negative.
+ *
+ * @version $Revision: 1.6 $
+ */
+public class CssTime extends CssValue {
+
+    public static final int type = CssTypes.CSS_TIME;
+    
+    public final int getType() {
+	return type;
+    }
+
+  /**
+   * Create a new CssTime.
+   */
+  public CssTime() {
+    value = defaultValue;
+  }
+
+  /**
+   * Create a new CssTime with a Float object.
+   *
+   * @param value the Float object
+   */
+  public CssTime(Float value) {
+    this.value = value;
+  }
+
+  /**
+   * Set the value of this time.
+   *
+   * @param s     the string representation of the time.
+   * @param frame For errors and warnings reports.
+   * @exception InvalidParamException The unit is incorrect
+   */
+  public void set(String s, ApplContext ac) throws InvalidParamException {
+    s = s.toLowerCase();
+    int length = s.length();
+    String unit;
+
+    if (s.charAt(length-2) == 'm') {
+      unit = s.substring(length-2, length);
+      this.value = new Float(s.substring(0, length-2));
+    } else {
+      unit = s.substring(length-1, length);
+      this.value = Float.valueOf(s.substring(0, length-1));
+    }
+
+    if (this.value.floatValue() < 0) {
+      throw new InvalidParamException("negative-value",
+				      this.value.toString(), ac);
+    }
+
+    this.unit = 1; // there is no unit by default
+
+    if (this.value.floatValue() != 0) {
+      int hash = unit.hashCode();
+      int i = 0;
+      while (i<units.length) {
+	if (hash == hash_units[i]) {
+	  this.unit = i;
+	  return;
+	}
+	i++;
+      }
+    } else {
+      return;
+    }
+
+    throw new InvalidParamException("unit", unit, ac);
+  }
+
+  /**
+   * Returns the current value
+   *  Float
+   */
+  public Object get() {
+    if (unit == 1) {
+      return new Float(value.floatValue() * 1000);
+    }
+    return value;
+  }
+
+  /**
+   * Returns the current value
+   */
+  public String getUnit() {
+    return units[unit];
+  }
+
+  /**
+   * Returns a string representation of the object.
+   */
+  public String toString() {
+      if (value.floatValue() != 0) {
+	  return Util.displayFloat(value) + getUnit();
+      } else {
+	  return Util.displayFloat(value);
+      }
+  }
+
+  /**
+   * Compares two values for equality.
+   *
+   * @param value The other value.
+   */
+  public boolean equals(Object value) {
+    return (value instanceof CssTime && this.value.equals(((CssTime) value).value) &&
+	     unit == ((CssTime) value).unit);
+  }
+
+  private Float value;
+  private int unit;
+  private static String[] units = { "ms", "s" };
+  private static int[] hash_units;
+  private static Float defaultValue = new Float(0);
+
+  static {
+    hash_units = new int[units.length];
+    for (int i=0; i<units.length; i++)
+      hash_units[i] = units[i].hashCode();
+  }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/values/CssTypes.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,28 @@
+//
+// $Id: CssTypes.java,v 1.2 2009-03-06 11:02:46 ylafon Exp $
+//
+// (c) COPYRIGHT MIT, ERCIM and Keio University, 2008.
+// Please first read the full copyright statement in file COPYRIGHT.html
+
+package org.w3c.css.values;
+
+public class CssTypes {
+
+    public static final int CSS_UNKNOWN       = -1;
+
+    public static final int CSS_IDENT         =  0;
+    public static final int CSS_STRING        =  1;
+    public static final int CSS_URL           =  2;
+    public static final int CSS_COLOR         =  3;
+    public static final int CSS_PERCENTAGE    =  4;
+    public static final int CSS_NUMBER        =  5;
+    public static final int CSS_LENGTH        =  6;
+    public static final int CSS_ANGLE         =  7;
+    public static final int CSS_TIME          =  8;
+    public static final int CSS_FREQUENCY     =  9;
+    public static final int CSS_RESOLUTION    = 10;
+    public static final int CSS_DATE          = 11;
+    public static final int CSS_FUNCTION      = 12;
+    public static final int CSS_UNICODE_RANGE = 13;
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/values/CssURL.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,136 @@
+//
+// $Id: CssURL.java,v 1.6 2008-03-25 18:30:11 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 org.w3c.css.values;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.HTTPURL;
+import org.w3c.css.util.InvalidParamException;
+
+/**
+ *   <H3>
+ *     &nbsp;&nbsp; URL
+ *   </H3>
+ *   <P>
+ *   A Uniform Resource Locator (URL) is identified with a functional notation:
+ *   <PRE>
+ *   BODY { background: url(http://www.bg.com/pinkish.gif) }
+ *   </PRE>
+ *   <P>
+ *   The format of a URL value is 'url(' followed by optional white space followed
+ *   by an optional single quote (') or double quote (") character followed by
+ *   the URL itself (as defined in <A HREF="#ref11">[11]</A>) followed by an optional
+ *   single quote (') or double quote (") character followed by optional whitespace
+ *   followed by ')'. Quote characters that are not part of the URL itself must
+ *   be balanced.
+ *   <P>
+ *   Parentheses, commas, whitespace characters, single quotes (') and double
+ *   quotes (") appearing in a URL must be escaped with a backslash: '\(', '\)',
+ *   '\,'.
+ *   <P>
+ *   Partial URLs are interpreted relative to the source of the style sheet, not
+ *   relative to the document:
+ *   <PRE>
+ *   BODY { background: url(yellow) }
+ *   </PRE>
+ *   See also
+ *  <P>
+ *  <A NAME="ref11">[11]</A> T Berners-Lee, L Masinter, M McCahill: "Uniform
+ *  Resource Locators (URL)", <A href="ftp://ds.internic.net/rfc/rfc1738.txt">RFC
+ *  1738</A>, CERN, Xerox Corporation, University of Minnesota, December 1994
+ * @version $Revision: 1.6 $
+ */
+public class CssURL extends CssValue {
+
+    public static final int type = CssTypes.CSS_URL;
+
+    public final int getType() {
+	return type;
+    }
+
+    String value;
+    String full = null;
+
+    URL base;
+
+    /**
+     * Set the value of this URL.
+     *
+     * @param s     the string representation of the URL.
+     * @param frame For errors and warnings reports.
+     * @exception InvalidParamException The unit is incorrect
+     * @deprecated
+     */
+    public void set(String s, ApplContext ac)
+	    throws InvalidParamException {
+	throw new InvalidParamException("Deprecated method invocation", ac);
+    }
+
+    /**
+     * Set the value of this URL.
+     *
+     * @param s     the string representation of the URL.
+     * @param frame For errors and warnings reports.
+     * @param base the base location of the style sheet
+     * @exception InvalidParamException The unit is incorrect
+     */
+    public void set(String s, ApplContext ac, URL base)
+	    throws InvalidParamException {
+	String urlHeading = s.substring(0,3).toLowerCase();
+	String urlname = s.substring(4, s.length()-1).trim();
+	this.base = base;
+
+//	try {
+//	    CssString convert = new CssString();
+//	    convert.set(urlname, ac);
+//	    value = (String) convert.get();
+//	} catch (InvalidParamException e) {
+	    value = urlname;
+	    full = null;
+//	}
+	if (!urlHeading.startsWith("url"))
+	    throw new InvalidParamException("url", s, ac);
+    }
+
+    /**
+     * Get the internal value.
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns the URL
+     */
+    public URL getURL() throws MalformedURLException {
+	return HTTPURL.getURL(base, value);
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (full != null) {
+	    return full;
+	}
+	StringBuilder sb = new StringBuilder("url(");
+	sb.append(value).append(')');
+	return full = sb.toString();
+    }
+
+    /**
+     * Compares two values for equality.
+     *
+     * @param value The other value.
+     */
+    public boolean equals(Object url) {
+	return (url instanceof CssURL && value.equals(((CssURL) url).value));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/values/CssUnicodeRange.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,73 @@
+//
+// $Id: CssUnicodeRange.java,v 1.5 2008-03-25 18:30:12 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 org.w3c.css.values;
+
+import org.w3c.css.util.ApplContext;
+
+/**
+ */
+public class CssUnicodeRange extends CssValue {
+
+    public static final int type = CssTypes.CSS_UNICODE_RANGE;
+    
+    public final int getType() {
+	return type;
+    }
+
+    String value;
+
+    /**
+     * Create a new CssUnicodeRange
+     */
+    public CssUnicodeRange() {
+    }
+
+    /**
+     * Create a new CssUnicodeRange
+     */
+    public CssUnicodeRange(String value) {
+	this.value = value;
+    }
+
+    /**
+     * Set the value of this frequency.
+     *
+     * @param s     the string representation of the frequency.
+     * @param frame For errors and warnings reports.
+     */
+    public void set(String s, ApplContext ac) {
+	value = s;
+    }
+
+    /**
+     * Returns the value
+     */
+    public Object get() {
+	return value;
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	return value;
+    }
+
+    /**
+     * Compares two values for equality.
+     *
+     * @param value The other value.
+     */
+    public boolean equals(Object value) {
+	return ((value instanceof CssUnicodeRange)
+		&& (value != null)
+		&& this.value.equals(((CssUnicodeRange) value).value));
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/values/CssValue.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,57 @@
+//
+// $Id: CssValue.java,v 1.6 2008-03-25 18:30:12 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 org.w3c.css.values;
+
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+
+/**
+ * @version $Revision: 1.6 $
+ */
+public abstract class CssValue {
+
+    public static int type = CssTypes.CSS_UNKNOWN;
+
+    String cssversion;
+
+    public int getType() {
+	return type;
+    }
+    
+  /**
+   * Set the value of this value.
+   *
+   * @param s     the string representation of the value.
+   * @param frame For errors and warnings reports.
+   * @exception InvalidParamException The unit is incorrect
+   */
+  public abstract void set(String s, ApplContext ac)
+      throws InvalidParamException;
+
+  /**
+   * Returns the internal value
+   */
+  public abstract Object get();
+
+  /**
+   * Compares two values for equality.
+   *
+   * @param value The other value.
+   */
+  public boolean equals(Object value) {
+    return super.equals(value);
+  }
+
+    public void setCssVersion(String cssversion) {
+	this.cssversion = cssversion;
+    }
+
+    public boolean isDefault() {
+	return false;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/values/CssValueFloat.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,18 @@
+//
+// $Id: CssValueFloat.java,v 1.2 2002-04-08 21:19:46 plehegar 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
+/*
+ * CssValueFloat.java
+ * $Id: CssValueFloat.java,v 1.2 2002-04-08 21:19:46 plehegar Exp $
+ */
+package org.w3c.css.values;
+
+/**
+ * @version $Revision: 1.2 $
+ */
+public interface CssValueFloat {
+    float getValue();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/values/HSL.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 2001 World Wide Web Consortium,
+ * (Massachusetts Institute of Technology, Institut National de
+ * Recherche en Informatique et en Automatique, Keio University). All
+ * Rights Reserved. This program is distributed under the W3C's Software
+ * Intellectual Property License. This program is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+ * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ * See W3C License http://www.w3.org/Consortium/Legal/ for more details.
+ *
+ * $Id: HSL.java,v 1.5 2009-03-05 22:45:18 ylafon Exp $
+ */
+package org.w3c.css.values;
+
+import org.w3c.css.util.Util;
+
+public class HSL {
+    String output = null;
+    float fh;
+    float fs;
+    float fl;
+
+    /**
+     * Create a new HSL
+     */
+    public HSL() {
+    }
+
+    public void setHue(float hue) {
+	this.fh = (float)((((double)hue%360.0)+360.0)%360.0);
+    }
+    public void setHue(CssNumber hue) {
+	setHue(hue.getValue());
+    }
+
+    public void setSaturation(float sat) {
+	this.fs = sat;
+    }
+    public void setSaturation(CssNumber sat) {
+	setSaturation(sat.getValue());
+    }
+
+    public void setLightness(float light) {
+	this.fl = light;
+    }
+    public void setLightness(CssNumber light) {
+	setLightness(light.getValue());
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (output == null) {
+	    StringBuilder sb = new StringBuilder("hsl(");
+	    sb.append(Util.displayFloat(fh)).append(", ");
+	    sb.append(Util.displayFloat(fs)).append("%, ");
+	    sb.append(Util.displayFloat(fl)).append("%)");
+	    output = sb.toString();
+	}
+	return output;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/values/HSLA.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,73 @@
+/*
+ * Copyright (c) 2001 World Wide Web Consortium,
+ * (Massachusetts Institute of Technology, Institut National de
+ * Recherche en Informatique et en Automatique, Keio University). All
+ * Rights Reserved. This program is distributed under the W3C's Software
+ * Intellectual Property License. This program is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+ * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ * See W3C License http://www.w3.org/Consortium/Legal/ for more details.
+ *
+ * $Id: HSLA.java,v 1.5 2009-03-05 22:58:38 ylafon Exp $
+ */
+package org.w3c.css.values;
+
+import org.w3c.css.util.Util;
+
+public class HSLA {
+    String output = null;
+    float fh;
+    float fs;
+    float fl;
+    float fa;
+
+    /**
+     * Create a new HSL
+     */
+    public HSLA() {
+    }
+
+    public void setHue(float hue) {
+	this.fh = (float)((((double)hue%360.0)+360.0)%360.0);
+    }
+    public void setHue(CssNumber hue) {
+	setHue(hue.getValue());
+    }
+
+    public void setSaturation(float sat) {
+	this.fs = sat;
+    }
+    public void setSaturation(CssNumber sat) {
+	setSaturation(sat.getValue());
+    }
+
+    public void setLightness(float light) {
+	this.fl = light;
+    }
+    public void setLightness(CssNumber light) {
+	setLightness(light.getValue());
+    }
+
+    public void setAlpha(float alpha) {
+	this.fa = alpha;
+    }
+    public void setAlpha(CssNumber alpha) {
+	setAlpha(alpha.getValue());
+    }
+
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (output == null) {
+	    StringBuilder sb = new StringBuilder("hsl(");
+	    sb.append(Util.displayFloat(fh)).append(", ");
+	    sb.append(Util.displayFloat(fs)).append("%, ");
+	    sb.append(Util.displayFloat(fl)).append("%, ");
+	    sb.append(Util.displayFloat(fa)).append(")");
+	    output = sb.toString();
+	}
+	return output;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/values/Makefile	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,47 @@
+SRCS = CssFrequency.java CssPercentage.java\
+CssAngle.java CssIdent.java CssString.java\
+CssColor.java CssLength.java CssTime.java\
+CssColorConstants.java CssNumber.java CssURL.java\
+CssExpression.java CssOperator.java CssValue.java \
+CssFunction.java
+
+OBJS = $(SRCS:.java=.class)
+
+PACKAGE = org.w3c.css.values
+JAVAC = jc -val
+JAVADOC = javadoc
+JAVADOCFLAGS = -version -d docs -protected
+JAVACFLAGS =
+MAKEDEPEND = jmakedepend
+
+.SUFFIXES: .class .java
+.java.class:; $(JAVAC) $(JAVACFLAGS) $<
+
+all: $(OBJS)
+
+javadoc:; $(JAVADOC) $(JAVADOCFLAGS) $(PACKAGE)
+
+clean:; -rm -f $(OBJS) *~ core
+
+depend:; $(MAKEDEPEND) $(SRCS)
+
+# DO NOT DELETE THIS LINE -- make depend depends on it.
+CssURL.class:: CssURL.java\
+	/u/crash/0/w3c/plehegar/Work/Java/java/net/URL.class\
+	/u/crash/0/w3c/plehegar/Work/Java/java/net/MalformedURLException.class
+CssColor.class:: CssColor.java\
+	/u/crash/0/w3c/plehegar/Work/Java/java/util/Hashtable.class
+CssNumber.class:: CssNumber.java
+CssColorConstants.class:: CssColorConstants.java
+CssValue.class:: CssValue.java
+CssTime.class:: CssTime.java
+CssString.class:: CssString.java
+CssFunction.class:: CssFunction.java
+CssOperator.class:: CssOperator.java
+CssIdent.class:: CssIdent.java
+CssPercentage.class:: CssPercentage.java
+CssFrequency.class:: CssFrequency.java
+CssAngle.class:: CssAngle.java
+CssExpression.class:: CssExpression.java\
+	/u/crash/0/w3c/plehegar/Work/Java/java/util/Vector.class
+CssLength.class:: CssLength.java
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/values/RGB.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,118 @@
+/*
+ * Copyright (c) 2001 World Wide Web Consortium,
+ * (Massachusetts Institute of Technology, Institut National de
+ * Recherche en Informatique et en Automatique, Keio University). All
+ * Rights Reserved. This program is distributed under the W3C's Software
+ * Intellectual Property License. This program is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+ * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ * See W3C License http://www.w3.org/Consortium/Legal/ for more details.
+ *
+ * $Id: RGB.java,v 1.7 2009-07-07 13:32:57 ylafon Exp $
+ */
+package org.w3c.css.values;
+
+public class RGB {
+
+    String output = null;
+    int r, g, b;
+    float fr, fg, fb;
+    
+    boolean percent = false;
+
+    /**
+     * @return Returns the percent.
+     */
+    public final boolean isPercent() {
+        return percent;
+    }
+
+    /**
+     * @param percent The percent to set.
+     */
+    public final void setPercent(boolean percent) {
+        this.percent = percent;
+    }
+
+    public final void setRed(int r) {
+	this.r = r;
+    }
+    public final void setRed(float fr) {
+	this.fr = fr;
+    }
+
+    public final void setGreen(int g) {
+	this.g = g;
+    }
+    public final void setGreen(float fg) {
+	this.fg = fg;
+    }
+
+    public final void setBlue(int b) {
+	this.b = b;
+    }
+    public final void setBlue(float fb) {
+	this.fb = fb;
+    }
+
+    /**
+     * Create a new RGB
+     */
+    public RGB() {
+    }
+
+    /**
+     * Create a new RGB with default values
+     */
+    public RGB(int r, int g, int b) {
+	this.r = r;
+	this.g = g;
+	this.b = b;
+    }
+    
+    public RGB(float fr, float fg, float fb) {
+	this.fr = fr;
+	this.fg = fg;
+	this.fb = fb;
+	percent = true;
+    }
+
+    public boolean equals(RGB other) {
+	if (other != null) {
+	    if (percent) {
+		if (other.percent) {
+		    return ((fr == other.fr) &&
+			    (fg == other.fg) &&
+			    (fb == other.fb));
+		}
+	    } else {
+		if (!other.percent) {
+		    return ((r == other.r) &&
+			    (g == other.g) &&
+			    (b == other.b));		    
+		}
+	    }
+	}
+	return false;
+    }
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (output == null) {
+	    StringBuilder sb = new StringBuilder("rgb(");
+	    if (isPercent()) {
+		sb.append(fr).append("%, ");
+		sb.append(fg).append("%, ");
+		sb.append(fb).append("%)");
+	    } else {
+		sb.append(r).append(", ");
+		sb.append(g).append(", ");
+		sb.append(b).append(')');
+	    }
+	    output = sb.toString();
+	} 
+	return output;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/css/values/RGBA.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,137 @@
+/*
+ * Copyright (c) 2001 World Wide Web Consortium,
+ * (Massachusetts Institute of Technology, Institut National de
+ * Recherche en Informatique et en Automatique, Keio University). All
+ * Rights Reserved. This program is distributed under the W3C's Software
+ * Intellectual Property License. This program is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+ * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE.
+ * See W3C License http://www.w3.org/Consortium/Legal/ for more details.
+ *
+ * $Id: RGBA.java,v 1.6 2009-03-05 22:44:59 ylafon Exp $
+ */
+package org.w3c.css.values;
+
+import org.w3c.css.util.Util;
+
+public class RGBA {
+    String output = null;
+    int r,g,b;
+    float fr,fg,fb,a;
+
+    boolean percent = false;
+
+    /**
+     * @return Returns the percent.
+     */
+    public boolean isPercent() {
+        return percent;
+    }
+
+    /**
+     * @param percent The percent to set.
+     */
+    public void setPercent(boolean percent) {
+        this.percent = percent;
+    }
+
+    public final void setRed(int r) {
+	this.r = r;
+	this.fr = r;
+    }
+    public final void setRed(float fr) {
+	this.fr = fr;
+    }
+
+    public final void setGreen(int g) {
+	this.g = g;
+	this.fg = g;
+    }
+    public final void setGreen(float fg) {
+	this.fg = fg;
+    }
+
+    public final void setBlue(int b) {
+	this.b = b;
+	this.fb = b;
+    }
+    public final void setBlue(float fb) {
+	this.fb = fb;
+    }
+
+    public final void setAlpha(float a) {
+	this.a = a;
+    }
+
+    public boolean equals(RGBA other) {
+	if (other != null) {
+	    if (percent) {
+		if (other.percent) {
+		    return ((fr == other.fr) &&
+			    (fg == other.fg) &&
+			    (fb == other.fb) &&
+			    (a == other.a));
+		}
+	    } else {
+		if (!other.percent) {
+		    return ((r == other.r) &&
+			    (g == other.g) &&
+			    (b == other.b) &&
+			    (a == other.a));	    
+		}
+	    }
+	}
+	return false;
+    }
+
+    /**
+     * Create a new RGBA
+     */
+    public RGBA() {
+    }
+
+    /**
+     * Create a new RGBA with default values
+     */
+    public RGBA(int r, int g, int b, float a) {
+	this.r = r;
+	this.g = g;
+	this.b = b;
+	this.a = a;
+	this.percent = false;
+    }
+
+    /**
+     * Create a new RGBA with default values
+     */
+    public RGBA(float r, float g, float b, float a) {
+	this.fr = r;
+	this.fg = g;
+	this.fb = b;
+	this.a = a;
+	this.percent = true;
+    }
+    
+    
+    /**
+     * Returns a string representation of the object.
+     */
+    public String toString() {
+	if (output == null) {
+	    StringBuilder sb = new StringBuilder("rgba(");
+	    if (isPercent()) {
+		sb.append(Util.displayFloat(fr)).append("%, ");
+		sb.append(Util.displayFloat(fg)).append("%, ");
+		sb.append(Util.displayFloat(fb)).append("%, ");
+	    } else {
+		sb.append(r).append(", ");
+		sb.append(g).append(", ");
+		sb.append(b).append(", ");
+	    }
+	    sb.append(Util.displayFloat(a)).append(')');
+	    output = sb.toString();
+	} 
+	return output;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/www/mime/MimeType.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,448 @@
+// MimeType.java
+// $Id: MimeType.java,v 1.4 2005-09-14 15:15:39 ylafon Exp $
+// (c) COPYRIGHT MIT and INRIA, 1996.
+// Please first read the full copyright statement in file COPYRIGHT.html
+
+package org.w3c.www.mime ;
+
+import java.util.Vector;
+
+import java.io.PrintStream;
+import java.io.Serializable;
+
+/**
+ * This class is used to represent parsed MIME types.
+ * It creates this representation from a string based representation of
+ * the MIME type, as defined in the RFC 1345.
+ */
+
+public class MimeType implements Serializable, Cloneable {
+    /**
+     * List of well known MIME types:
+     */
+    public static MimeType TEXT_HTML                         = null ;
+    public static MimeType APPLICATION_POSTSCRIPT            = null ;
+    public static MimeType TEXT_PLAIN                        = null ;
+    public static MimeType APPLICATION_X_WWW_FORM_URLENCODED = null ;
+    public static MimeType APPLICATION_OCTET_STREAM          = null ;
+    public static MimeType MULTIPART_FORM_DATA               = null ;
+    public static MimeType APPLICATION_X_JAVA_AGENT          = null ;
+    public static MimeType MESSAGE_HTTP                      = null ;
+    public static MimeType TEXT_CSS                          = null ;
+    public static MimeType TEXT_XML                          = null ;
+    public static MimeType APPLICATION_XML                   = null ;
+    public static MimeType TEXT                              = null ;
+    public static MimeType APPLICATION_RDF_XML               = null ;
+    public static MimeType APPLICATION_XHTML_XML             = null ;
+
+    public static String star = "*".intern();
+
+    static {
+	try {
+	    TEXT_HTML
+		= new MimeType("text/html");
+	    APPLICATION_POSTSCRIPT
+		= new MimeType ("application/postscript") ;
+	    TEXT_PLAIN
+		= new MimeType("text/plain") ;
+	    APPLICATION_X_WWW_FORM_URLENCODED
+		= new MimeType("application/x-www-form-urlencoded") ;
+	    APPLICATION_OCTET_STREAM
+		= new MimeType("application/octet-stream") ;
+	    MULTIPART_FORM_DATA
+		= new MimeType("multipart/form-data") ;
+	    APPLICATION_X_JAVA_AGENT
+		= new MimeType("application/x-java-agent") ;
+	    MESSAGE_HTTP
+		= new MimeType("message/http");
+	    TEXT_CSS
+		= new MimeType("text/css");
+	    TEXT_XML
+		= new MimeType("text/xml");
+	    TEXT
+		= new MimeType("text/*");
+	    APPLICATION_RDF_XML
+		= new MimeType("application/rdf+xml");
+	    APPLICATION_XHTML_XML
+		= new MimeType("application/xhtml+xml");
+            APPLICATION_XML
+                = new MimeType("application/xml");
+	} catch (MimeTypeFormatException e) {
+	    System.out.println ("httpd.MimeType: invalid static init.") ;
+	    System.exit (1) ;
+	}
+    }
+
+    public final static int NO_MATCH               = -1 ;
+    public final static int MATCH_TYPE             =  1 ;
+    public final static int MATCH_SPECIFIC_TYPE    =  2 ;
+    public final static int MATCH_SUBTYPE          =  3 ;
+    public final static int MATCH_SPECIFIC_SUBTYPE =  4 ;
+
+    /**
+     * String representation of type
+     *
+     * @serial
+     */
+    protected String type      = null ;
+    /**
+     * String representation of subtype
+     *
+     * @serial
+     */
+    protected String subtype   = null ;
+    /**
+     * parameter names
+     *
+     * @serial
+     */
+    protected String pnames[]  = null;
+    /**
+     * parameter values
+     *
+     * @serial
+     */
+    protected String pvalues[] = null;
+    /**
+     * external form of this mime type
+     *
+     * @serial
+     */
+    protected String external  = null ;
+
+    /**
+     * How good the given MimeType matches the receiver of the method ?
+     *  This method returns a matching level among:
+     * <dl>
+     * <dt>NO_MATCH<dd>Types not matching,</dd>
+     * <dt>MATCH_TYPE<dd>Types match,</dd>
+     * <dt>MATCH_SPECIFIC_TYPE<dd>Types match exactly,</dd>
+     * <dt>MATCH_SUBTYPE<dd>Types match, subtypes matches too</dd>
+     * <dt>MATCH_SPECIFIC_SUBTYPE<dd>Types match, subtypes matches exactly</dd>
+     * </dl>
+     * The matches are ranked from worst match to best match, a simple
+     * Max ( match[i], matched) will give the best match.
+     * @param other The other MimeType to match against ourself.
+     */
+
+    public int match (MimeType other) {
+	int match = NO_MATCH;
+	// match types:
+	if ( (type == star) || (other.type == star) ) {
+	    return MATCH_TYPE;
+	} else if ( type != other.type ) {
+	    return NO_MATCH ;
+	} else {
+	    match = MATCH_SPECIFIC_TYPE;
+	}
+	// match subtypes:
+	if ( (subtype == star) || (other.subtype == star) ) {
+	    match = MATCH_SUBTYPE ;
+	} else if ( subtype != other.subtype ) {
+	    return NO_MATCH;
+	} else {
+	    match = MATCH_SPECIFIC_SUBTYPE;
+	}
+	return match;
+    }
+
+    /**
+     * Find out if mime types are equivalent, based on heuristics
+     * like text/xml <=> application/xml and other problems related
+     * to format that may have multiple mime types.
+     * Note that text/html and application/xhtml+xml are not exactly
+     * the same
+     * @param mtype, a MimeType
+     * @return a boolean, true if the two mime types are equivalent
+     */
+    public  boolean equiv(MimeType mtype) {
+	if (match(mtype) == MATCH_SPECIFIC_SUBTYPE) {
+	    return true;
+	}
+	if ((match(TEXT_XML) == MATCH_SPECIFIC_SUBTYPE) ||
+	    (match(APPLICATION_XML)== MATCH_SPECIFIC_SUBTYPE) ) {
+	    if ((mtype.match(TEXT_XML) == MATCH_SPECIFIC_SUBTYPE) ||
+		(mtype.match(APPLICATION_XML) == MATCH_SPECIFIC_SUBTYPE)) {
+		return true;
+	    }
+	}
+	return false;
+    }
+    /**
+     * A printable representation of this MimeType.
+     * The printed representation is guaranteed to be parseable by the
+     * String constructor.
+     */
+
+    public String toString () {
+	if ( external == null ) {
+	    StringBuffer sb = new StringBuffer (type) ;
+	    sb.append((char) '/') ;
+	    sb.append (subtype) ;
+	    if ( pnames != null ) {
+		for (int i = 0 ; i < pnames.length; i++) {
+		    sb.append(';');
+		    sb.append(pnames[i]);
+		    if ( pvalues[i] != null ) {
+			sb.append('=');
+			sb.append(pvalues[i]);
+		    }
+		}
+	    }
+	    external = sb.toString().intern();
+	}
+	return external ;
+    }
+
+    /**
+     * Does this MIME type has some value for the given parameter ?
+     * @param name The parameter to check.
+     * @return <strong>True</strong> if this parameter has a value, false
+     *    otherwise.
+     */
+    public boolean hasParameter (String name) {
+	if (name != null) {
+	    if ( pnames != null ) {
+		String lname = name.toLowerCase();
+		for (int i = 0 ; i < pnames.length ; i++) {
+		    if ( pnames[i].equals(name) )
+			return true ;
+		}
+	    }
+	}
+	return false ;
+    }
+
+    /**
+     * Get the major type of this mime type.
+     * @return The major type, encoded as a String.
+     */
+
+    public String getType() {
+	return type;
+    }
+
+    /**
+     * Get the minor type (subtype) of this mime type.
+     * @return The minor or subtype encoded as a String.
+     */
+    public String getSubtype() {
+	return subtype;
+    }
+
+    /**
+     * Get a mime type parameter value.
+     * @param name The parameter whose value is to be returned.
+     * @return The parameter value, or <b>null</b> if not found.
+     */
+    public String getParameterValue (String name) {
+	if (name != null) {
+	    if ( pnames != null ) {
+	    String lname = name.toLowerCase();
+		for (int i = 0 ; i < pnames.length ; i++) {
+		    if ( pnames[i].equals(lname) )
+			return pvalues[i];
+		}
+	    }
+	}
+	return null ;
+    }
+
+    /**
+     * adds some parameters to a MimeType
+     * @param param a String array of parameter names
+     * @param values the corresponding String array of values
+     */
+    public void addParameters(String[] param, String[] values) {
+	// sanity check
+	if ((param == null) || (values == null) ||
+	    (values.length != param.length))
+	    return;
+	if (pnames == null) {
+	    pnames = param;
+	    pvalues = values;
+	} else {
+	    String[] nparam = new String[pnames.length+param.length];
+	    String[] nvalues = new String[pvalues.length+values.length];
+	    System.arraycopy(pnames, 0, nparam, 0, pnames.length);
+	    System.arraycopy(param, 0, nparam, pnames.length, param.length);
+	    System.arraycopy(pvalues, 0, nvalues, 0, pvalues.length);
+	    System.arraycopy(values,0, nvalues, pvalues.length, values.length);
+	    pnames = nparam;
+	    pvalues = nvalues;
+	}
+	for (int i = 0; i < pnames.length; i++) {
+	    pnames[i] = pnames[i].toLowerCase();
+	}
+	external = null;
+    }
+
+    /**
+     * get a clone of this object
+     * @return another cloned instance of MimeType
+     */
+    public MimeType getClone() {
+	try {
+	    return (MimeType) clone();
+	} catch (CloneNotSupportedException ex) {
+	    // should never happen as we are Cloneable!
+	}
+	// never reached
+	return null;
+    }
+
+    /**
+     * adds a parameterto a MimeType
+     * @param param the parameter name, as a String
+     * @param value  the parameter value, as a Sting
+     */
+    public void addParameter(String param, String value) {
+	String[] p = new String[1];
+	String[] v = new String[1];
+	p[0] = param;
+	v[0] = value;
+	addParameters(p, v);
+    }
+
+    /**
+     * Set the parameter to a MimeType (replace old value if any).
+     * @param param the parameter name, as a String
+     * @param value  the parameter value, as a Sting
+     */
+    public void setParameter(String param, String value) {
+	if (pnames == null) {
+	    addParameter(param, value);
+	} else {
+	    String lparam = param.toLowerCase();
+	    for (int i = 0 ; i < pnames.length ; i++) {
+		if (pnames[i].equals(lparam)) {
+		    pvalues[i] = value;
+		    return;
+		}
+	    }
+	    addParameter(lparam, value);
+	}
+    }
+
+    /**
+     * Construct  MimeType object for the given string.
+     * The string should be the representation of the type. This methods
+     * tries to be compliant with HTTP1.1, p 15, although it is not
+     * (because of quoted-text not being accepted).
+     * FIXME
+     * @parameter spec A string representing a MimeType
+     * @return A MimeType object
+     * @exception MimeTypeFormatException if the string couldn't be parsed.
+     */
+    public MimeType (String spec)
+	throws MimeTypeFormatException
+    {
+	int strl  = spec.length() ;
+	int start = 0, look = -1 ;
+	// skip leading/trailing blanks:
+	while ((start < strl) && (spec.charAt (start)) <= ' ')
+	    start++ ;
+	while ((strl > start) && (spec.charAt (strl-1) <= ' '))
+	    strl-- ;
+	// get the type:
+	StringBuffer sb = new StringBuffer () ;
+	while ((start < strl) && ((look = spec.charAt(start)) != '/')) {
+	    sb.append (Character.toLowerCase((char) look)) ;
+	    start++ ;
+	}
+	if ( look != '/' )
+	    throw new MimeTypeFormatException (spec) ;
+	this.type = sb.toString().intern() ;
+	// get the subtype:
+	start++ ;
+	sb.setLength(0) ;
+	while ((start < strl)
+	       && ((look = spec.charAt(start)) > ' ') && (look != ';')) {
+	    sb.append (Character.toLowerCase((char) look)) ;
+	    start++ ;
+	}
+	this.subtype = sb.toString().intern() ;
+	// get parameters, if any:
+	while ((start < strl) && ((look = spec.charAt(start)) <= ' '))
+	    start++ ;
+	if ( start < strl ) {
+	    if (spec.charAt(start) != ';')
+		throw new MimeTypeFormatException (spec) ;
+	    start++ ;
+	    Vector vp = new Vector(4) ;
+	    Vector vv = new Vector(4) ;
+	    while ( start < strl ) {
+		while ((start < strl) && (spec.charAt(start) <= ' ')) start++ ;
+		// get parameter name:
+		sb.setLength (0) ;
+		while ((start < strl)
+		       && ((look=spec.charAt(start)) > ' ') && (look != '=')) {
+		    sb.append (Character.toLowerCase((char) look)) ;
+		    start++ ;
+		}
+		String name = sb.toString() ;
+		// get the value:
+		while ((start < strl) && (spec.charAt(start) <= ' ')) start++ ;
+		if (spec.charAt(start) != '=')
+		    throw new MimeTypeFormatException (spec) ;
+		start++ ;
+		while ((start < strl) &&
+		       ((spec.charAt(start) == '"') ||
+			(spec.charAt(start) <= ' '))) start++ ;
+		sb.setLength(0) ;
+		while ((start < strl)
+		       && ((look=spec.charAt(start)) > ' ')
+		       && (look != ';')
+		       && (look != '"')) {
+		    sb.append ((char) look) ;
+		    start++ ;
+		}
+		while ((start < strl) && (spec.charAt(start) != ';')) start++ ;
+		start++ ;
+		String value = sb.toString() ;
+		vp.addElement(name);
+		vv.addElement(value);
+	    }
+	    this.pnames = new String[vp.size()];
+	    vp.copyInto(pnames);
+	    this.pvalues = new String[vv.size()];
+	    vv.copyInto(pvalues);
+	}
+    }
+
+    public MimeType (String type, String subtype
+		     , String pnames[], String pvalues[]) {
+	this.type    = type.toLowerCase().intern() ;
+	this.subtype = subtype.toLowerCase().intern() ;
+	this.pnames  = pnames;
+	this.pvalues = pvalues;
+    }
+
+    public MimeType (String type, String subtype) {
+	this.type    = type.toLowerCase().intern();
+	this.subtype = subtype.toLowerCase().intern();
+    }
+
+    public static void main (String args[]) {
+	if ( args.length == 1) {
+	    MimeType type = null ;
+	    try {
+		type = new MimeType (args[0]) ;
+	    } catch (MimeTypeFormatException e) {
+	    }
+	    if ( type != null ) {
+		System.out.println (type) ;
+		if (type.getClone().match(type) == MATCH_SPECIFIC_SUBTYPE) {
+		    System.out.println("Clone OK");
+		} else {
+		    System.out.println("Cloning failed");
+		}
+	    } else {
+		System.out.println ("Invalid mime type specification.") ;
+	    }
+	} else {
+	    System.out.println ("Usage: java MimeType <type-to-parse>") ;
+	}
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidation-src/org/w3c/www/mime/MimeTypeFormatException.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,14 @@
+// MimeType.java
+// $Id: MimeTypeFormatException.java,v 1.1 2004-02-09 09:42:02 sijtsche Exp $
+// (c) COPYRIGHT MIT and INRIA, 1996.
+// Please first read the full copyright statement in file COPYRIGHT.html
+
+package org.w3c.www.mime ;
+
+public class MimeTypeFormatException extends Exception {
+
+    public MimeTypeFormatException(String msg) {
+	super(msg);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidator-mods-src/org/w3c/css/css/StyleSheet.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,287 @@
+//
+// $Id: StyleSheet.java,v 1.15 2008-03-28 16:36:46 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 org.w3c.css.css;
+
+import java.io.PrintWriter;
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.Vector;
+
+import org.w3c.css.parser.AtRule;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.parser.Errors;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.SortedHashtable;
+import org.w3c.css.util.Util;
+import org.w3c.css.util.Warnings;
+
+/**
+ * This class contains a style sheet with all rules, errors and warnings.
+ *
+ * @version $Revision: 1.15 $
+ */
+public class StyleSheet {
+
+    private CssCascadingOrder cascading;
+    private SortedHashtable rules;
+    private Errors   errors;
+    private Warnings warnings;
+    private String   type;
+    private Vector atRuleList;
+    private boolean doNotAddRule;
+    private boolean doNotAddAtRule;
+    private static final boolean debug = false;
+
+    /**
+     * Create a new StyleSheet.
+     */
+    public StyleSheet() {
+	rules = new SortedHashtable();
+	errors  = new Errors();
+	warnings = new Warnings();
+	cascading = new CssCascadingOrder();
+	atRuleList = new Vector();
+    }
+
+    public void setWarningLevel(int warningLevel) {
+    	warnings.setWarningLevel(warningLevel);
+    }
+    
+    /**
+     * Get a style in a specific context.
+     * No resolution are perfomed when this function is called
+     *
+     * @param context The context for the style
+     * @return The style for the specific context.
+     */
+    public CssStyle getStyle(CssSelectors context) {
+	if (debug) {
+	    Util.verbose("StyleSheet.getStyle("+context+")");
+	}
+	if (getContext(context) != null) {
+	    CssSelectors realContext = (CssSelectors) getContext(context);
+	    CssStyle style = realContext.getStyle();
+	    style.setStyleSheet(this);
+	    style.setSelector(realContext);
+	    return style;
+	} else {
+	    getRules().put(context, context);
+	    context.getStyle().setStyleSheet(this);
+	    context.getStyle().setSelector(context);
+	    return context.getStyle();
+	}
+
+    }
+
+    /**
+     * Add a property to this style sheet.
+     *
+     * @param selector The context where the property is defined
+     * @param property The property to add
+     */
+    public void addProperty(CssSelectors selector, CssProperty property) {
+	if (debug) {
+	    Util.verbose("add property "
+			 + getContext(selector)
+			 + " " + property);
+	}
+	getContext(selector).addProperty(property, warnings);
+    }
+
+    public void remove(CssSelectors selector) {
+	rules.remove(selector);
+    }
+
+    public void setType(String type) {
+	this.type = type;
+    }
+
+    public String getType() {
+	if (type == null) {
+	    return "text/css";
+	} else {
+	    return type;
+	}
+    }
+
+    /**
+     * Add some errors to this style.
+     *
+     * @param errors Some errors.
+     */
+    public void addErrors(Errors errors) {
+	if (errors.getErrorCount() != 0) {
+	    getErrors().addErrors(errors);
+	}
+    }
+
+    /**
+     * Add some warnings to this style.
+     *
+     * @param warnings Some warnings.
+     */
+    public void addWarnings(Warnings warnings) {
+	if (warnings.getWarningCount() != 0)
+	    getWarnings().addWarnings(warnings);
+    }
+
+    /**
+     * Returns all errors.
+     */
+    public final Errors getErrors() {
+	return errors;
+    }
+
+    /**
+     * Returns all warnings.
+     */
+    public final Warnings getWarnings() {
+	return warnings;
+    }
+
+    /**
+     * Returns all rules
+     */
+    public final Hashtable getRules() {
+	return rules;
+    }
+
+    /**
+     * Returns the property for a context.
+     *
+     * @param property The default value returned if there is no property.
+     * @param style The current style sheet where we can find all properties
+     * @param selector The current context
+     * @return the property with the right value
+     */
+    public final CssProperty CascadingOrder(CssProperty property,
+					    StyleSheet style,
+					    CssSelectors selector) {
+	return cascading.order(property, style, selector);
+    }
+
+    /**
+     * Find all conflicts for this style sheet.
+     */
+    public void findConflicts(ApplContext ac) {
+	Hashtable rules = getRules();
+	CssSelectors[] all = new CssSelectors[rules.size()];
+	all = (CssSelectors[]) rules.values().toArray(all);
+	for (int i = 0; i< all.length; i++) {
+	    all[i].markAsFinal();
+	}
+	for (int i = 0; i< all.length; i++) {
+	    CssSelectors sel = all[i];
+	    sel.findConflicts(ac, warnings, all);
+	}
+    }
+
+    /**
+     * Returns the unique context for a context
+     *
+     * @param selector the context to find.
+     */
+    protected CssSelectors getContext(CssSelectors selector) {
+	if (getRules().containsKey(selector)) {
+	    return (CssSelectors) getRules().get(selector);
+	} else {
+	    if (selector.getNext() != null) {
+		CssSelectors next = getContext(selector.getNext());
+		selector.setNext(next);
+	    }
+	    getRules().put(selector, selector);
+	    return selector;
+	}
+    }
+
+//    /**
+//     * dump this style sheet.
+//     */
+//    public void dump() {
+//	StyleSheetGenerator style =
+//	    new StyleSheetGenerator("", this, "text", -1);
+//	style.print(new PrintWriter(System.out));
+//    }
+
+    //part added by Sijtsche de Jong
+
+    public void addCharSet(String charset) {
+	this.charset = charset;
+    }
+
+    public void newAtRule(AtRule atRule) {
+	CssRuleList rulelist = new CssRuleList();
+	rulelist.addAtRule(atRule);
+	atRuleList.addElement(rulelist);
+	indent = "   ";
+    }
+
+    public void endOfAtRule() {
+	if (!doNotAddAtRule) {
+	    CssRuleList rulelist = new CssRuleList();
+	    atRuleList.addElement(rulelist); //for the new set of rules
+	}
+	important = false;
+	selectortext = "";
+	indent = "";
+	doNotAddAtRule = false;
+    }
+
+    public void setImportant(boolean important) {
+	this.important = important;
+    }
+
+    public void setSelectorList(Vector selectors) {
+	String slave = selectors.toString();
+	selectortext = slave.substring(slave.indexOf("[") + 1,
+				       slave.lastIndexOf("]"));
+    }
+
+    public void setProperty(Vector properties) {
+	this.properties = properties;
+    }
+
+    public void endOfRule() {
+	CssRuleList rulelist;
+	boolean useless;
+	if (!doNotAddRule) {
+	    CssStyleRule stylerule = new CssStyleRule(indent, selectortext,
+						      properties, important);
+	    if (!atRuleList.isEmpty()) {
+		rulelist = (CssRuleList)atRuleList.lastElement();
+		useless = atRuleList.removeElement(rulelist);
+	    } else {
+		rulelist = new CssRuleList();
+	    }
+	    rulelist.addStyleRule(stylerule);
+	    atRuleList.addElement(rulelist);
+	}
+	selectortext = "";
+	doNotAddRule = false;
+    }
+
+    public void removeThisRule() {
+	doNotAddRule = true;
+    }
+
+    public void removeThisAtRule() {
+	doNotAddAtRule = true;
+    }
+
+    public Vector newGetRules() {
+	return atRuleList;
+    }
+
+    String selectortext;
+    boolean important;
+    Vector properties;
+    String indent =  new String();
+    public String charset;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidator-mods-src/org/w3c/css/util/ApplContext.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,441 @@
+/*
+ * (c) COPYRIGHT 1999 World Wide Web Consortium
+ * (Massachusetts Institute of Technology, Institut National de Recherche
+ *  en Informatique et en Automatique, Keio University).
+ * All Rights Reserved. http://www.w3.org/Consortium/Legal/
+ *
+ * $Id: ApplContext.java,v 1.17 2009-02-16 16:42:14 ylafon Exp $
+ */
+package org.w3c.css.util;
+
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.nio.charset.Charset;
+import java.nio.charset.IllegalCharsetNameException;
+import java.nio.charset.UnsupportedCharsetException;
+import java.util.HashMap;
+
+import org.apache.velocity.io.UnicodeInputStream;
+import org.w3c.css.parser.Frame;
+
+/**
+ * @version $Revision: 1.17 $
+ * @author Philippe Le Hegaret
+ */
+public class ApplContext {
+
+    // the charset of the first source (url/uploaded/text)
+    public static Charset defaultCharset;  
+    public static Charset utf8Charset;
+
+    static {
+	try {
+	    defaultCharset = Charset.forName("iso-8859-1");
+	    utf8Charset = Charset.forName("utf-8");
+	} catch (Exception ex) {
+	    // we are in deep trouble here
+	    defaultCharset = null;
+	    utf8Charset    = null;
+	}
+    }
+
+    // charset definition of traversed URLs
+    private HashMap<URL,Charset> uricharsets = null;
+
+    // namespace definitions
+    private HashMap<URL,HashMap<String,String>> namespaces = null;
+
+    // default prefix
+    public static String defaultPrefix = "*defaultprefix*";
+    public static String noPrefix = "*noprefix*";
+
+    String credential = null;
+    String lang;
+    Messages msgs;
+    Frame frame;
+    String cssversion;
+    String profile;
+    String input;
+    Class cssselectorstyle;
+    int origin = -1;
+    String medium;
+    private String link;
+    int warningLevel = 0;
+
+    FakeFile fakefile = null;
+    String   faketext = null;
+    URL      fakeurl  = null;
+
+    /**
+     * Creates a new ApplContext
+     */
+    public ApplContext(String lang) {
+	this.lang = lang;
+	msgs = new Messages(lang);
+    }
+
+    public int getWarningLevel() {
+	return warningLevel;
+    }
+
+    public void setWarningLevel(int warningLevel) {
+	this.warningLevel = warningLevel;
+    }
+
+    // as ugly as everything else
+    public String getCredential() {
+	return credential;
+    }
+
+    public void setCredential(String credential) {
+	this.credential = credential;
+    }
+
+    public void setFrame(Frame frame) {
+	this.frame = frame;
+	frame.ac = this;
+    }
+
+    public Frame getFrame() {
+	return frame;
+    }
+
+    public Class getCssSelectorsStyle() {
+	return cssselectorstyle;
+    }
+
+    public void setCssSelectorsStyle(Class s) {
+	cssselectorstyle = s;
+    }
+
+    public Messages getMsg() {
+	return msgs;
+    }
+
+    public String getContentType() {
+	return (msgs != null) ? msgs.getString("content-type") : null;
+    }
+
+    public String getContentLanguage() {
+	return (msgs != null) ? msgs.getString("content-language") : null;
+    }
+
+    /**
+     * Searches the properties list for a content-encoding one. If it does not
+     * exist, searches for output-encoding-name. If it still does not exists,
+     * the method returns the default utf-8 value
+     * 
+     * @return the output encoding of this ApplContext
+     */
+    public String getContentEncoding() {
+	// return (msgs != null) ? msgs.getString("content-encoding") : null;
+	String res = null;
+	if (msgs != null) {
+	    res = msgs.getString("content-encoding");
+	    if (res == null) {
+		res = msgs.getString("output-encoding-name");
+	    }
+	    if (res != null) {
+		// if an encoding has been found, return it
+		return res;
+	    }
+	}
+	// default encoding
+	return Utf8Properties.ENCODING;
+    }
+    
+    public String getLang() {
+	return lang;
+    }
+    
+    public void setCssVersion(String cssversion) {
+	this.cssversion = cssversion;
+    }
+
+    public String getCssVersion() {
+	if (cssversion == null) {
+	    cssversion = "css2";
+	}
+	return cssversion;
+    }
+
+    public void setProfile(String profile) {
+	this.profile = profile;
+    }
+
+    public String getProfile() {
+	if (profile == null) {
+	    return "";
+	}
+	return profile;
+    }
+
+    public void setOrigin(int origin) {
+	this.origin = origin;
+    }
+
+    public int getOrigin() {
+	return origin;
+    }
+
+    public void setMedium(String medium) {
+	this.medium = medium;
+    }
+
+    public String getMedium() {
+	return medium;
+    }
+
+    public String getInput() {
+	return input;
+    }
+
+    public void setInput(String input) {
+	this.input = input;
+    }
+	
+    public String getLink() {
+	return link;
+    }
+
+    public void setLink(String queryString) {
+	this.link = queryString;
+    }
+
+//    /**
+//     * Sets the content encoding to the first charset that appears in
+//     * <i>acceptCharset</i>. If the charset is not supported, the content
+//     * encoding will be utf-8
+//     * 
+//     * @param acceptCharset
+//     *            a String representing the Accept-Charset request parameter
+//     */
+//    public void setContentEncoding(String acceptCharset) {
+//	if (acceptCharset != null) {
+//	    // uses some Jigsaw classes to parse the Accept-Charset
+//	    // these classes need to load a lot of stuff, so it may be quite
+//	    // long the first time
+//	    HttpAcceptCharsetList charsetList;
+//	    HttpAcceptCharset[] charsets;
+//
+//	    charsetList = HttpFactory.parseAcceptCharsetList(acceptCharset);
+//	    charsets = (HttpAcceptCharset[]) charsetList.getValue();
+//
+//	    String encoding = null;
+//	    double quality = 0.0;
+//
+//	    String biasedcharset = getMsg().getString("output-encoding-name");
+//
+//	    for (int i = 0; i < charsets.length && quality < 1.0; i++) {
+//		HttpAcceptCharset charset = charsets[i];
+//
+//		String currentCharset = charset.getCharset();
+//
+//		// checks that the charset is supported by Java
+//
+//		if (isCharsetSupported(currentCharset)) {
+//		    double currentQuality = charset.getQuality();
+//
+//		    // we prefer utf-8
+//		    // FIXME (the bias value and the biased charset
+//		    // should be dependant on the language)
+//		    if ((biasedcharset != null) && 
+//			!biasedcharset.equalsIgnoreCase(currentCharset)) {
+//			currentQuality = currentQuality * 0.5;
+//		    }
+//		    if (currentQuality > quality) {
+//			quality = currentQuality;
+//			encoding = charset.getCharset();
+//		    }
+//		}
+//	    }
+//	    if (encoding != null) {
+//		getMsg().properties.setProperty("content-encoding", encoding);
+//	    } else {
+//		// no valid charset
+//		getMsg().properties.remove("content-encoding");
+//	    }
+//	} else {
+//	    // no Accept-Charset given
+//	    getMsg().properties.remove("content-encoding");
+//	}
+//    }
+
+    private boolean isCharsetSupported(String charset) {
+	if ("*".equals(charset)) {
+	    return true;
+	}
+	try {
+	    return Charset.isSupported(charset);
+	} catch (Exception e) {
+	    return false;
+	}
+    }
+
+    /**
+     * used for storing the charset of the document in use
+     *  and its update by a @charset statement, or through 
+     *  automatic discovery
+     */
+    public void setCharsetForURL(URL url, String charset) {
+	if (uricharsets == null) {
+	    uricharsets = new HashMap<URL,Charset>();
+	}
+	Charset c = null;
+	try {
+	    c = Charset.forName(charset);
+	} catch (IllegalCharsetNameException icex) {
+	    // FIXME add a warning in the CSS
+	} catch (UnsupportedCharsetException ucex) {
+	    // FIXME inform about lack of support
+	}
+	if (c != null) {
+	    uricharsets.put(url, c);
+	}
+    }
+
+    /**
+     * used for storing the charset of the document in use
+     *  and its update by a @charset statement, or through 
+     *  automatic discovery
+     */
+    public void setCharsetForURL(URL url, Charset charset) {
+	if (uricharsets == null) {
+	    uricharsets = new HashMap<URL,Charset>();
+	}
+	uricharsets.put(url, charset);
+    }
+  
+    /**
+     * used for storing the charset of the document in use
+     *  and its update by a @charset statement, or through 
+     *  automatic discovery
+     */
+    public String getCharsetForURL(URL url) {
+	Charset c;
+	if (uricharsets == null) {
+	    return null;
+	}
+	c = uricharsets.get(url);
+	if (c != null) {
+	    return c.toString();
+	}
+	return null;
+    }
+    
+    /**
+     * used for storing the charset of the document in use
+     *  and its update by a @charset statement, or through 
+     *  automatic discovery
+     */
+    public Charset getCharsetObjForURL(URL url) {
+	Charset c;
+	if (uricharsets == null) {
+	    return null;
+	}
+	return uricharsets.get(url);
+    }
+
+    /**
+     * store content of uploaded file 
+     */
+    public void setFakeFile(FakeFile fakefile) {
+	this.fakefile = fakefile;
+    }
+
+    /**
+     * store content of entered text
+     */
+    public void setFakeText(String faketext) {
+	this.faketext = faketext;
+    }
+
+    public InputStream getFakeInputStream(URL source) 
+	throws IOException 
+    {
+	InputStream is = null;
+	if (fakefile != null) {
+	    is = fakefile.getInputStream();
+	}
+	if (faketext != null) {
+	    is = new ByteArrayInputStream(faketext.getBytes());
+	}
+	if (is == null) {
+	    return null;
+	}
+	Charset c = getCharsetObjForURL(source);
+	if (c == null) {
+	    UnicodeInputStream uis = new UnicodeInputStream(is);
+	    String guessedCharset = uis.getEncodingFromStream();
+	    if (guessedCharset != null) {
+		setCharsetForURL(source, guessedCharset);
+	    }
+	    return uis;
+	} else {
+	    if (utf8Charset.compareTo(c) == 0) {
+		return new UnicodeInputStream(is);
+	    }
+	}
+	return is;
+    }
+    
+    public boolean isInputFake() {
+	return ((faketext != null) || (fakefile != null));
+    }
+
+    public void setFakeURL(String fakeurl) {
+	try {
+	    this.fakeurl = new URL(fakeurl);
+	} catch (Exception ex) {
+	}
+    }
+
+    public URL getFakeURL() {
+	return fakeurl;
+    }
+	
+    /**
+     * support for namespaces
+     */
+    public void setNamespace(URL url, String prefix, String nsname) {
+	if (namespaces == null) {
+	    namespaces = new HashMap<URL,HashMap<String,String>>();
+	}
+	// reformat the prefix if null.
+	if ((prefix == null) || "".equals(prefix)) {
+	    prefix = defaultPrefix;
+	}
+
+	HashMap<String,String> nsdefs = namespaces.get(url);
+	if (nsdefs == null) {
+	    nsdefs =  new HashMap<String,String>();
+	    nsdefs.put(prefix, nsname);
+	    namespaces.put(url, nsdefs);
+	} else {
+	    // do we need to check if we have a redefinition ?
+	    nsdefs.put(prefix, nsname);
+	}
+    }
+
+    // true if a namespace is defined in the document (CSS fragment)
+    // defined by the URL, with prefix "prefix"
+    public boolean isNamespaceDefined(URL url, String prefix) {
+	if (prefix == null) { // no prefix, always match
+	    return true;
+	}
+	if (prefix.equals("*")) { // any ns, always true
+	    return true;
+	}
+	if ("".equals(prefix)) {
+	    prefix = "*defaultprefix*";
+	}
+	HashMap<String,String> nsdefs = namespaces.get(url);
+	if (nsdefs == null) {
+	    return false;
+	}
+	return nsdefs.containsKey(prefix);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidator-removed-src/css/.cvsignore	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,2 @@
+observer-response.xsd
+properties.zip
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidator-removed-src/css/CssValidator.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,249 @@
+/*
+ * CssValidatoralidator.java
+ *
+ * Created on April 19, 2006, 2:50 PM
+ *
+ * To change this template, choose Tools | Template Manager
+ * and open the template in the editor.
+ */
+
+package org.w3c.css.css;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.Vector;
+import org.w3c.css.error.ErrorReport;
+import org.w3c.css.error.ErrorReportFactory;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.properties.PropertiesLoader;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.HTTPURL;
+import org.w3c.css.util.Utf8Properties;
+import org.w3c.css.util.Util;
+import org.w3c.tools.resources.ProtocolException;
+
+/**
+ *
+ * @author jean
+ */
+public class CssValidator {
+    
+    ApplContext ac;
+    PrintWriter out;
+    Vector uris = new Vector();
+    Hashtable params;
+    
+    // @@ HACK
+    static boolean showCSS = false;
+    
+    private Exception exception;
+        
+ /**	
+		 * 
+	 * Creates a new instance of CssValidator with the following default values:
+	 * <ul>
+	 *   <li>profile = css21</li>
+	 *   <li>medium = all</li>
+	 *   <li>output = text</li>
+	 *   <li>lang = en</li>
+	 *   <li>warning = 2</li>
+	 *   <li>showCSS = false</li>
+	 * </ul>
+	 */
+    public CssValidator() {	
+	params = new Hashtable();
+	params.put("profile", PropertiesLoader.config.getProperty("defaultProfile"));
+	params.put("medium", "all");
+	params.put("output", "text");
+	params.put("lang", "en");
+	params.put("warning", "2");	
+    }
+    
+    public static void main(String args[])
+	throws IOException, MalformedURLException {
+	
+	CssSelectors selector = null;
+	
+	CssValidator style = new CssValidator();
+	
+	// first, we get the parameters and create an application context
+	try {    
+	    style.getParams(args); 
+	    style.ac = new ApplContext((String)style.params.get("lang"));	    	    
+	    System.out.println(style.params);
+	} catch (Exception e) {
+	    System.out.println( "Usage: java org.w3c.css.css.CssValidator " +
+		    " [OPTIONS] | [URL]*");
+	    System.out.println("OPTIONS");
+	    System.out.println("\t-p, --printCSS");
+	    System.out.println("\t\tPrints the validated CSS (only with text " +
+		    "output, the CSS is printed with other outputs)");
+	    System.out.println("\t-profile PROFILE, --profile=PROFILE");
+	    System.out.println("\t\tChecks the Stylesheet against PROFILE");
+	    System.out.println("\t\tPossible values for PROFILE are css1, " +
+		    "css2, css21 (default), css3, svg, svgbasic, svgtiny, " +
+		    "atsc-tv, mobile, tv");
+	    System.out.println("\t-medium MEDIUM, --medium=MEDIUM");
+	    System.out.println("\t\tChecks the Stylesheet using the medium MEDIUM");
+	    System.out.println("\t\tPossible values for MEDIUM are all " +
+		    "(default), aural, braille, embossed, handheld, print, " +
+		    "projection, screen, tty, tv, presentation");
+	    System.out.println("\t-output OUTPUT, --output=OUTPUT");
+	    System.out.println("\t\tPrints the result in the selected format");
+	    System.out.println("\t\tPossible values for OUTPUT are text (default), xhtml, " +
+		    "html (same result as xhtml), soap12");
+	    System.out.println("\t-lang LANG, --lang=LANG");
+	    System.out.println("\t\tPrints the result in the specified language");
+	    System.out.println("\t\tPossible values for LANG are " +
+		    "de, en (default), es, fr, ja, ko, nl, zh-cn, pl, it");
+	    System.out.println("\t-warning WARN, --warning=WARN");
+	    System.out.println("\t\tWarnings verbosity level");
+	    System.out.println("\t\tPossible values for WARN are -1 (no " +
+		    "warning), 0, 1, 2 (default, all the warnings");
+	    System.out.println();
+	    System.out.println("URL");
+	    System.out.println("\tURL can either represent a distant " +
+		    "web resource (http://) or a local file (file:/)");
+	    System.exit(1);
+	}
+	
+	// CSS version to use
+	String profile = (String) style.params.get("profile");
+	if (profile != null && !"none".equals(profile)) {
+	    if ("css1".equals(profile) || "css2".equals(profile) || "css21".equals(profile)
+	    || "css3".equals(profile) || "svg".equals(profile)
+	    || "svgbasic".equals(profile) || "svgtiny".equals(profile)) {
+		style.ac.setCssVersion(profile);
+	    } else {
+		style.ac.setProfile(profile);
+		style.ac.setCssVersion(PropertiesLoader.config.getProperty("defaultProfile"));
+	    }
+	} else {
+		style.ac.setProfile(profile);
+	    style.ac.setCssVersion(PropertiesLoader.config.getProperty("defaultProfile"));
+	}
+	
+	// medium to use
+	style.ac.setMedium((String) style.params.get("medium"));
+	
+	String encoding = style.ac.getMsg().getString("output-encoding-name");
+	if(encoding != null) style.out = new PrintWriter(new OutputStreamWriter(System.out, encoding));
+	else style.out = new PrintWriter(new OutputStreamWriter(System.out));
+	
+	for(int i = 0; i < style.uris.size(); i++) {
+	    String uri = (String) style.uris.get(i);	    	    
+	    	    	    
+	    if (uri != null) {
+		// HTML document
+		try {
+		    uri = HTTPURL.getURL(uri).toString(); // needed to be sure
+		    // that it is a valid
+		    // url
+		    DocumentParser URLparser = new DocumentParser(style.ac,
+			    uri);
+		    
+		    style.handleRequest(style.ac, uri, URLparser.getStyleSheet(), 
+			    (String)style.params.get("output"),
+			    Integer.parseInt((String)style.params.get("warning")), 
+			    true);		    
+		} catch (ProtocolException pex) {
+		    if (Util.onDebug) {
+			pex.printStackTrace();
+		    }
+		} catch (Exception e) {
+		    e.printStackTrace();		    
+		}
+	    }
+	}
+    }
+    
+    private void handleRequest(ApplContext ac,
+			       String title, StyleSheet styleSheet,
+			       String output, int warningLevel,
+			       boolean errorReport) throws Exception {
+
+	if (styleSheet == null) {
+	    throw new IOException(ac.getMsg().getServletString("process") + " "
+				  + title);
+	}
+
+	styleSheet.findConflicts(ac);
+
+	StyleReport style = StyleReportFactory.getStyleReport(ac, title,
+							     styleSheet, 
+							     output, 
+							     warningLevel);
+		
+	if (!errorReport) {
+	    style.desactivateError();
+	}
+	    
+	    style.print(out);	    
+	
+    }                
+        
+    /**
+     * Analyses the command-line parameters
+     * @param args the parameters list
+     **/
+    private void getParams(String[] args) throws Exception {
+	
+	// first, we get an enumeration from the array, because it's easier to
+	// manage
+	Vector v = new Vector(java.util.Arrays.asList(args));
+	Enumeration e = v.elements();
+	
+	while(e.hasMoreElements()) {
+	    
+	    String paramName = "";
+	    String paramValue = "";
+	    
+	    // the current command-line argument
+	    String param = (String) e.nextElement();
+	    
+	    if(param.equals("--printCSS") || param.equals("-p")) {
+		// special case
+		showCSS = true;
+	    }
+	    // all the parameters have the form --param=PARAM...    
+	    else if(param.startsWith("--")) {
+		int separator = param.indexOf("=");
+		paramName = param.substring(2, separator);
+		paramValue = param.substring(separator+1);			
+	    }
+	    // ... or -param PARAM
+	    else if(param.startsWith("-")) {
+		paramName = param.substring(1);
+		if(e.hasMoreElements()) {
+		    paramValue = (String) e.nextElement();
+		}
+		else {
+		    paramValue = "";
+		}
+	    }
+	    // this is not a parameter, so it's probably a URL
+	    else {
+		uris.add(param);
+	    }
+	    
+	    if(!paramName.equals("") && params.containsKey(paramName)) {		
+		if(paramValue.equals("")) {
+		    // empty value
+		    throw new Exception("You must specify a value for the " 
+				+ "parameter " + paramName);
+		}
+		else {
+		    // update the params table
+		    params.put(paramName, paramValue);
+		}
+	    }    
+	}
+    }	
+    
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidator-removed-src/css/StyleReportFactory.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,21 @@
+// $Id: StyleReportFactory.java,v 1.10 2007-07-30 11:40:04 julien Exp $
+// Author: Yves Lafon <ylafon@w3.org>
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2003.
+// Please first read the full copyright statement in file COPYRIGHT.html
+
+package org.w3c.css.css;
+
+import org.w3c.css.util.ApplContext;
+
+public class StyleReportFactory {
+
+	/**
+	 * Give back a "StyleReport" object based on various parameters, but mainly
+	 * output"
+	 */
+	public static StyleReport getStyleReport(ApplContext ac, String title, StyleSheet style, String document,
+			int warningLevel) {
+		String output = (StyleSheetGenerator.isAvailableFormat(document)) ? document : "xhtml";
+		return new StyleSheetGenerator(ac, title, style, output, warningLevel);
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidator-removed-src/css/StyleSheetCom.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,286 @@
+//
+// $Id: StyleSheetCom.java,v 1.22 2007-09-13 09:35:46 julien 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 org.w3c.css.css;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLConnection;
+
+import org.w3c.css.parser.CssFouffa;
+import org.w3c.css.parser.CssSelectors;
+import org.w3c.css.parser.CssStyle;
+import org.w3c.css.properties.PropertiesLoader;
+import org.w3c.css.properties.css1.CssProperty;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.HTTPURL;
+import org.w3c.css.util.Util;
+
+import org.w3c.www.mime.MimeType;
+
+/**
+ * @version $Revision: 1.22 $import javax.servlet.http.HttpServletResponse;
+ */
+public class StyleSheetCom {
+
+    /*    ApplContext ac = new ApplContext("ja, en, zh"); */
+    ApplContext ac;
+    String lang;
+    String documentBase = "text";
+    URL htmlURL;
+    String file;
+    int warningLevel = 2;
+    PrintWriter out;
+    String defaultmedium;
+    String cssversion;
+    String profile;
+    String contenttype;
+
+    // @@ HACK
+    static boolean showCSS = false;
+
+    private Exception exception;
+
+    public void htmlRequest() throws Exception {
+	StyleSheet style = null;
+
+	TagSoupStyleSheetHandler handler = new TagSoupStyleSheetHandler(htmlURL, ac);
+	handler.parse(htmlURL);
+	style = handler.getStyleSheet();
+	if (style != null) {
+	    style.setType("text/html");
+	}
+	if (style != null) {
+	    style.findConflicts(ac);
+	    StyleSheetGenerator output =
+		    new StyleSheetGenerator(ac, file,
+						 style,
+						 documentBase,
+						 warningLevel);
+		output.print(out);
+	} else {
+	    System.err.println("No style sheet found in your HTML document");
+	}
+	ac.setInput("text/xml");
+    }
+
+    public void xmlRequest() throws Exception {
+	StyleSheet style = null;
+
+	XMLStyleSheetHandler handler = new XMLStyleSheetHandler(htmlURL, ac);
+	handler.parse(htmlURL);
+	style = handler.getStyleSheet();
+	if (style != null) {
+	    style.setType("text/xml");
+	    style.findConflicts(ac);
+	} else {
+	    System.err.println("No style sheet found in your HTML document");
+	}
+	StyleSheetGenerator output =
+	    new StyleSheetGenerator(ac, file,
+					 style,
+					 documentBase,
+					 warningLevel);
+	output.print(out);
+	ac.setInput("text/xml");
+    }
+
+    public void cssRequest(CssSelectors selector, String defaultmedium) {
+	CssParser parser = new StyleSheetParser();
+	ac.setMedium(defaultmedium);
+
+	/*
+	  if (defaultmedium != null) {
+	  parser.setDefaultMedium(defaultmedium);
+	  }
+	*/
+	parser.parseURL(ac, htmlURL, null, null, null,
+			StyleSheetOrigin.AUTHOR);
+	parser.getStyleSheet().findConflicts(ac);
+	if (selector != null) {
+	    System.err.println("<color value=\""
+			       + parser.getStyleSheet().CascadingOrder(new org.w3c.css.properties.css1.CssColor(),
+								       parser.getStyleSheet(),
+								       selector));
+	    CssStyle s = parser.getStyleSheet().getStyle(selector);
+	    CssProperty _sl =
+		((org.w3c.css.properties.css1.Css1Style) s).getColor();
+
+	    s.print(new org.w3c.css.parser.CssPrinterStyle () {
+		    public void print(CssProperty property) {
+			System.out.print(property.getPropertyName());
+			System.out.print(": ");
+			System.out.print(property.toString());
+			System.out.println(';');
+		    }
+		});
+	} else {
+	    StyleSheetGenerator output =
+		new StyleSheetGenerator(ac, file,
+					 parser.getStyleSheet(),
+					 documentBase,
+					 warningLevel);
+	    output.print(out);
+	}
+    }
+
+    public static void main(String args[])
+	throws IOException, MalformedURLException {
+	int i = 0;
+	CssSelectors selector = null;
+
+	StyleSheetCom style = new StyleSheetCom();
+
+        // Fix for http://www.w3.org/Bugs/Public/show_bug.cgi?id=292
+        style.contenttype = "text";
+
+	try {
+	    style.file = args[i];
+
+	    while (i < args.length && args[i].charAt(0) == '-') {
+		String argument = args[i].substring(1).toLowerCase();
+		if (argument.equals("e")) {
+		    style.warningLevel = -1;
+		} else if (argument.equals("s")) {
+		    StyleSheetCom.showCSS = true;
+		} else if (argument.equals("c")) {
+		    selector = createSelectors(args[++i]);
+		} else if (argument.equals("format")) {
+		    StyleSheetGenerator.
+			printAvailableFormat(new PrintWriter(System.err));
+		} else if (argument.startsWith("@")) {
+		    style.defaultmedium = argument;
+		} else if (argument.equals("css1") ||
+                          argument.equals("css2") ||
+                          argument.equals("css21") ||
+                          argument.equals("css3") ||
+			   argument.equals("svg") ||
+			   argument.equals("svgbasic") ||
+			   argument.equals("svgtiny")) {
+		    style.cssversion = argument;
+		} else if (argument.equals("mobile") || argument.equals("tv")) {
+		    style.profile = argument;
+	    } else if (argument.equals("atsc")) {
+			style.profile = "atsc-tv";
+		} else {
+		    int idx = argument.lastIndexOf('.');
+		    if(idx >= 0 && idx < argument.length() - 1) {
+			style.lang = argument.substring(idx+1);
+		    } else {
+			style.lang = "en";
+		    }
+		    style.documentBase = argument;
+		}
+		i++;
+	    }
+	    style.ac = new ApplContext(style.lang);
+	    if (style.cssversion != null)
+		style.ac.setCssVersion(style.cssversion);
+	    if (style.profile != null) {
+		style.ac.setProfile(style.profile);
+		style.ac.setCssVersion(PropertiesLoader.config.getProperty("defaultProfile"));
+	    }
+	    if (style.cssversion == null && style.ac.getCssVersion() == null) {
+		style.ac.setCssVersion(PropertiesLoader.config.getProperty("defaultProfile"));
+	    }
+	} catch (Exception e) {
+	    /* System.out.println( "Usage: validator " +
+	       StyleSheetCom.class.getName() +
+				// " [-<your format>] [-fromxml] <url>");
+				" [-s||-e||-<your format>] [<url>|<file>]*");
+	    */
+	    System.out.println( "Usage: validator " +
+				" [ -s || -e || -<your format> || -cssversion/profile ] [<url>|<file>]*");
+	    System.out.println( "\t-s\tShow the validated style sheet");
+	    System.out.println( "\t-e\tDo NOT show warnings");
+	    System.out.println( "\tuse the option -format to see"
+				+ " available format.");
+	    System.out.println( "\tCSS version\t-css1 || -css2 || -css21 || -css3 || -svg || -svgbasic || -svgtiny");
+	    System.out.println( "\tProfile\t\t -atsc || -mobile || tv");
+	    //System.out.println( "\tCSS version\t-css1 || -css2");
+	    //	    System.out.println( "\tProfile\t\t-svg || -atsc || -mobile");
+	    System.exit(1);
+	}
+
+	String encoding = style.ac.getMsg().getString("output-encoding-name");
+	if(encoding != null) style.out = new PrintWriter(new OutputStreamWriter(System.out, encoding));
+	else style.out = new PrintWriter(new OutputStreamWriter(System.out));
+
+	while (i < args.length) {
+	    try {
+		String doc = args[i];
+		try {
+		    style.htmlURL = new URL(doc);
+		    style.file = style.htmlURL.toString();
+		} catch (MalformedURLException ex) {
+		    File f = new File(args[i]);
+		    style.file = f.getAbsolutePath();
+		    style.htmlURL = new URL("file", null, -1, style.file);
+		}
+		i++;
+
+		String urlLower = style.htmlURL.toString().toLowerCase();
+		if (urlLower.endsWith(".css")) {
+		    style.cssRequest(selector, style.defaultmedium);		    
+		} else if (urlLower.endsWith(".html")
+			   || urlLower.endsWith(".shtml")
+			   || urlLower.endsWith("/")) {		    
+		    style.htmlRequest();
+		} else if (urlLower.endsWith(".xml")) {
+		    style.xmlRequest();
+		} else {
+		    URLConnection urlC = HTTPURL.getConnection(style.htmlURL, null);
+
+		    if (urlC.getContentType() != null) {
+			MimeType mt = null;
+			try {
+			    mt = new MimeType(urlC.getContentType());
+			} catch (Exception ex) {};
+			if (MimeType.TEXT_HTML.match(mt) == MimeType.MATCH_SPECIFIC_SUBTYPE) {
+			    style.htmlRequest();
+			} else if ((MimeType.TEXT_XML.match(mt) == MimeType.MATCH_SPECIFIC_SUBTYPE) ||
+				   (MimeType.APPLICATION_XHTML_XML.match(mt) == MimeType.MATCH_SPECIFIC_SUBTYPE)) {
+			    style.xmlRequest();
+			} else if (MimeType.TEXT_CSS.match(mt) == MimeType.MATCH_SPECIFIC_SUBTYPE) {
+			    style.cssRequest(selector, style.defaultmedium);
+			}
+		    } else {
+			style.cssRequest(selector, style.defaultmedium);
+		    }
+		    try {
+			urlC.getInputStream().close();
+		    } catch (IOException e) {
+			e.printStackTrace();
+		    }
+		}
+	    } catch (org.xml.sax.SAXException e) {
+		if (e.getException() != null) {
+		    e.getException().printStackTrace();
+		}
+	    } catch (Exception e) {
+		e.printStackTrace();
+	    }
+	}
+    }
+
+    private static CssSelectors createSelectors(String s) {
+	try {
+	    CssFouffa fouffa =
+		new CssFouffa(null, new java.io.StringBufferInputStream(s),
+			      new URL("file://nofile"));
+	    return fouffa.parseSelector();
+	} catch (Exception e) {
+	    System.err.println(e);
+	    return null;
+	}
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidator-removed-src/css/StyleSheetGenerator.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,488 @@
+package org.w3c.css.css;
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.net.URL;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.TimeZone;
+import java.util.Vector;
+
+import org.apache.velocity.VelocityContext;
+import org.apache.velocity.Template;
+import org.apache.velocity.app.Velocity;
+import org.apache.velocity.exception.ResourceNotFoundException;
+import org.apache.velocity.exception.ParseErrorException;
+import org.w3c.css.error.ErrorReportHTML;
+import org.w3c.css.parser.CssError;
+import org.w3c.css.parser.CssErrorToken;
+import org.w3c.css.parser.CssParseException;
+import org.w3c.css.parser.Errors;
+import org.w3c.css.properties.PropertiesLoader;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.util.Messages;
+import org.w3c.css.util.Utf8Properties;
+import org.w3c.css.util.Warnings;
+import org.w3c.css.util.Warning;
+
+/**
+ * @author Julien Grand-Mourcel
+ * @author Maria Kaceriakova
+ * @date 2007-06-29
+ * This class uses Velocity to output the validator results
+ * 
+ */
+public class StyleSheetGenerator extends StyleReport {
+
+    private PrintWriter out;
+    private Template template;
+    private String template_file;
+    private String default_lang = "en"; 
+    private ApplContext ac;
+    private StyleSheet style;
+    private String title;
+    private VelocityContext context;
+    private Warnings warnings;
+    private Errors errors;
+    private Vector items;
+    private static Utf8Properties availableFormat;
+    private static Utf8Properties availablePropertiesURL;
+
+    static {
+        availableFormat = new Utf8Properties();
+        try {
+            java.io.InputStream f;
+	    f = StyleSheetGenerator.class.getResourceAsStream(
+							   "format.properties");
+            availableFormat.load(f);
+            f.close();
+        } catch (Exception e) {
+            System.err.println("org.w3c.css.css.StyleSheetGeneratorHTML: "+
+			       "couldn't load format properties ");
+            System.err.println("  " + e.toString());
+        }
+
+        availablePropertiesURL = new Utf8Properties();
+        try {
+            java.io.InputStream f;
+	    f = StyleSheetGenerator.class.getResourceAsStream(
+							     "urls.properties");
+            availablePropertiesURL.load(f);
+            f.close();
+        } catch (Exception e) {
+            System.err.println("org.w3c.css.css.StyleSheetGeneratorHTML: "+
+			       "couldn't load URLs properties ");
+            System.err.println("  " + e.toString());
+        }
+
+        try {
+            Velocity.setProperty(Velocity.RESOURCE_LOADER, "file");
+            Velocity.addProperty(Velocity.RESOURCE_LOADER, "jar");
+            Velocity.setProperty("jar." + Velocity.RESOURCE_LOADER + ".class",
+	       "org.apache.velocity.runtime.resource.loader.JarResourceLoader");
+            URL path = StyleSheetGenerator.class.getResource("/");
+            if(path != null) {
+                Velocity.addProperty("file." + Velocity.RESOURCE_LOADER +
+				     ".path", path.getFile());
+                Velocity.setProperty( "jar." + Velocity.RESOURCE_LOADER+".path",
+				      "jar:" + path + "css-validator.jar");
+            }
+            Velocity.init();
+        } catch(Exception e) {
+            System.err.println("Failed to initialize Velocity. "+
+			       "Validator might not work as expected.");
+        }
+    }
+	
+    public StyleSheetGenerator(String title, StyleSheet style, String document,
+			       int warningLevel)
+    {
+        this(null, title, style, document, warningLevel);
+    }
+
+    public StyleSheetGenerator(ApplContext ac, String title, StyleSheet style,
+			       String document, int warningLevel) {
+        this.ac = ac;
+        this.style = style;
+        this.title = title;
+        this.template_file = availableFormat.getProperty(document);
+
+        context = new VelocityContext();
+	// adjust the source name if needed
+	if (ac.isInputFake()) {
+	    title = title.substring(title.lastIndexOf('/')+1);
+	}
+	context.put("file_title", queryReplace(title));
+	        
+        // W3C_validator_result
+        warnings = style.getWarnings();
+        errors = style.getErrors();
+        items = style.newGetRules();
+
+        // Setting all the variables of the velocity context
+        ApplContext ac_default = new ApplContext(default_lang);
+        String k;
+        if (ac.getLang() == null || ac.getLang().equals(default_lang)) {
+            Iterator it = ac_default.getMsg().properties.keySet().iterator();
+            while (it.hasNext()) {
+                k = String.valueOf(it.next());
+                context.put(k, ac.getMsg().getString(k));
+            }
+        } else {
+            Iterator it = ac_default.getMsg().properties.keySet().iterator();
+            while (it.hasNext()) {
+                k = String.valueOf(it.next());
+                if (ac.getMsg().getString(k) == null)
+                    context.put(k, ac_default.getMsg().getString(k));
+                else
+                    context.put(k, ac.getMsg().getString(k));
+            }
+        }
+		
+        if (ac.getLink() != null) {
+	    int arraysize = Messages.languages_name.size();
+	    ArrayList<HashMap<String,String>> languages;
+	    languages = new ArrayList<HashMap<String,String>>(arraysize);
+            String name;
+            for (int i = 0; i < arraysize; ++i) {
+                name = String.valueOf(Messages.languages_name.get(i));
+                HashMap<String,String> l = new HashMap<String,String>();
+                l.put("name", name);
+                l.put("real", ((Utf8Properties) Messages.languages.get(name)).getProperty("language_name"));
+		languages.add(i, l);
+            }
+            context.put("languages", languages.toArray());
+            String link = ac.getLink().replaceAll("&lang=.*&", "&");
+            link = link.replaceAll("&lang=.*$", "");
+            context.put("link", "?" + link.replaceAll("&", "&amp;"));
+        }
+		
+        // generated values
+        SimpleDateFormat formatter;
+	formatter = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss'Z'");
+        formatter.setTimeZone(TimeZone.getTimeZone("UTC"));
+        context.put("currentdate", formatter.format(new Date()));
+        context.put("lang", ac.getContentLanguage());
+        context.put("errors_count", new Integer(errors.getErrorCount()));
+        context.put("warnings_count", new Integer(warnings.getWarningCount()));
+        context.put("ignored-warnings_count", 
+		               new Integer(warnings.getIgnoredWarningCount()));
+        context.put("warning_level", new Integer(warningLevel));
+        context.put("rules_count", new Integer(items.size()));
+        context.put("no_errors_report", new Boolean(false));
+        context.put("charset", ac.getContentEncoding());
+        context.put("cssversion", ac.getCssVersion());
+        context.put("css_profile", ac.getProfile());
+        context.put("css", ac.getMsg().getString(ac.getCssVersion()));
+        context.put("css_link",getURLProperty("@url-base_"+ac.getCssVersion()));
+        context.put("is_valid", (errors.getErrorCount() == 0)?"true":"false");
+	context.put("fake_input", new Boolean(ac.isInputFake()));
+        context.put("author", "www-validator-css");
+        context.put("author-email", "Email.html");
+        if (style.charset != null)
+            context.put("style_charset", style.charset);
+
+        produceError();
+        produceWarning();
+        produceStyleSheet();
+
+        try {
+            template = Velocity.getTemplate("org/w3c/css/css/" + template_file);
+	    template.setEncoding("utf-8");
+        } catch (ResourceNotFoundException rnfe) {
+            System.err.println(rnfe.getMessage());
+            rnfe.printStackTrace();
+        } catch (ParseErrorException pee) {
+            System.err.println(pee.getMessage());
+            pee.printStackTrace();
+        } catch (Exception e) {
+            System.err.println(e.getMessage());
+            e.printStackTrace();
+        }
+    }
+
+    private final static String getURLProperty(String name) {
+        return availablePropertiesURL.getProperty(name);
+    }
+	
+    public final static void printAvailableFormat(PrintWriter out) {
+        Enumeration e = availableFormat.propertyNames();
+        out.println(" -- listing available output format --");
+        while (e.hasMoreElements()) {
+            String key = ((String) e.nextElement()).toLowerCase();
+            out.println("Format : " + key);
+            out.println("   File : " + getDocumentName(key));
+        }
+        out.flush();
+    }
+	
+
+    /**
+     * Test if <tt>document</tt> is an available output
+     * @param document, the desired output
+     * @return <tt>true</tt> if the desired output is available
+     */
+    public static boolean isAvailableFormat(String document) {
+        return availableFormat.containsKey(document);
+    }
+	
+
+    private final static String getDocumentName(String documentName) {
+        String document = availableFormat.getProperty(documentName
+                                                      .toLowerCase());
+        if (document == null) {
+            System.err.println("Unable to find " + documentName.toLowerCase()
+                               + " output format");
+            return documentName;
+        } else {
+            return document;
+        }
+    }
+	
+    /**
+     * Add the style information to the context
+     */
+    private void produceStyleSheet() {
+        context.put("at_rules_list", style.newGetRules());
+    }
+
+    /**
+     * Add the errors information to the context
+     * For each error,
+     * <ul>
+     * <li> the error type and message, and
+     * <li> the context type and value
+     * </ul>
+     * are set.
+     */
+    private void produceError() {
+        Hashtable[] errors_content = new Hashtable[errors.getErrorCount()];
+
+        try {
+            if (errors.getErrorCount() != 0) {
+                CssError[] error = errors.getErrors();
+                int nbError = error.length;
+                for (int i=0; i < nbError; i++) {
+                    CssError csserror = error[i];
+                    Throwable ex = csserror.getException();
+                    Hashtable<String,Object> h = new Hashtable<String,Object>();
+                    errors_content[i] = h;
+                    h.put("Error", csserror);
+                    h.put("CtxName", "nocontext");
+                    h.put("CtxMsg", "");
+                    h.put("ErrorMsg", ((ex.getMessage() == null) ? "" :
+				                             ex.getMessage()));
+                    h.put("ClassName", "unkownerror");
+                    if (ex instanceof FileNotFoundException) {
+                        h.put("ClassName", "notfound");
+                        h.put("ErrorMsg", 
+			      ac.getMsg().getGeneratorString("not-found") + 
+			      ": " + ex.getMessage());
+                    } else if (ex instanceof CssParseException) {
+                        produceParseException((CssParseException) ex, h);
+                    } else if (ex instanceof InvalidParamException) {
+                        h.put("ClassName", "invalidparam");
+                    } else if (ex instanceof IOException) {
+                        String stringError = ex.toString();
+                        // int index = stringError.indexOf(':');
+                        // The Exception name 'StringError' was previously
+                        // displayed
+                        // between </td> and <td class='nocontext' ...
+                        // It's now displayed inside the <td class='nocontext'>
+                        // tag
+                        // because we would need a new variable to put it there
+                        // for
+                        // just one rare case
+                        // TODO: why not using ex.toString()?
+                        h.put("CtxMsg", stringError);// .substring(0,
+                        // index));
+                        h.put("ClassName", "io");
+
+                    } else if (csserror instanceof CssErrorToken) {
+                        CssErrorToken terror = (CssErrorToken) csserror;
+                        h.put("ClassName", "errortoken");
+                        h.put("ErrorMsg", terror.getErrorDescription() + " : "
+                              + terror.getSkippedString());
+                    } else {
+                        h.put("ClassName", "unkownerror");
+                        h.put("ErrorMsg", ac.getMsg().getErrorString("unknown")
+			                  + " " + ex);
+                        if (ex instanceof NullPointerException) {
+                            // ohoh, a bug
+                            ex.printStackTrace();
+                        }
+                    }
+                }
+            }
+            context.put("errors_content", errors_content);
+        } catch (Exception e) {
+            context.put("errors_content", errors_content);
+            context.put("request", ac.getMsg().getGeneratorString("request"));
+            System.err.println(e.getMessage());
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * Add an array of warnings to the context so it c an be displayed
+     * 
+     */
+    private void produceWarning() {
+        try {
+            if (warnings.getWarningCount() != 0) {
+                warnings.sort();
+                context.put("warnings_list", warnings.getWarnings());
+            }
+        } catch (Exception e) {
+            out.println(ac.getMsg().getGeneratorString("request"));
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * Some error need more details
+     * We can add a link or information of this kind
+     * @param error, the error to check
+     * @param ht_error, the Hastable with information about this error
+     */
+    private void produceParseException(CssParseException error, 
+				       Hashtable<String,Object> ht_error) {
+        if (error.getContexts() != null && error.getContexts().size() != 0) {
+            ht_error.put("CtxName", "codeContext");
+            StringBuilder buf = new StringBuilder();
+            // Loop on the list of contexts for errors
+	    Enumeration e;
+            for (e = error.getContexts().elements(); e.hasMoreElements();) {
+                Object t = e.nextElement();
+                // if the list is not null, add a comma
+                if (t != null) {
+                    buf.append(t);
+                    if (e.hasMoreElements()) {
+                        buf.append(", ");
+                    }
+                }
+            }
+            if (buf.length() != 0) {
+                ht_error.put("CtxMsg", String.valueOf(buf));
+	    }
+        } else {
+            ht_error.put("CtxName", "nocontext");
+        }
+        ht_error.put("ClassName", "parse-error");
+        String name = error.getProperty();
+        String ret;
+        if ((name != null) && (getURLProperty(name) != null) && 
+	    PropertiesLoader.getProfile(ac.getCssVersion()).containsKey(name)) {
+            //we add a link information
+            // we check if the property doesn't exist in this css version
+            ht_error.put("link_before_parse_error",
+			 ac.getMsg().getGeneratorString("property"));
+            // Since CSS3 is only a working draft, the links don't exist yet
+	    // in CSS3...
+            // And this is the same with CSS1 because the links are not working
+	    // the same way...
+            // This can be removed as soon as the CSS3 specifications are made
+	    // and CSS1 use the links
+            // and the link is changed in urls.properties
+            String lnk;
+            if (ac.getCssVersion().equals("css3")) {
+                lnk = getURLProperty("@url-base_css2.1");
+            } else if (ac.getCssVersion().equals("css1")) {
+                lnk = getURLProperty("@url-base_css2"); 
+            } else {
+                lnk = context.get("css_link").toString();
+	    }
+            // this would be replaced by :
+            // ht_error.put("link_value_parse_error",
+	    //              context.get("css_link") + getURLProperty(name));
+            ht_error.put("link_value_parse_error", lnk + getURLProperty(name));
+            ht_error.put("link_name_parse_error", name);
+        }
+        if ((error.getException() != null) && (error.getMessage() != null)) {
+            if (error.isParseException()) {
+                ret = queryReplace(error.getMessage());
+            } else {
+                Exception ex = error.getException();
+                if (ex instanceof NumberFormatException) {
+                    ret = ac.getMsg().getGeneratorString("invalid-number");
+                } else {
+                    ret = queryReplace(ex.getMessage());
+                }
+            }
+            if (error.getSkippedString() != null) {
+                ht_error.put("span_class_parse_error", "skippedString");
+                ht_error.put("span_value_parse_error", 
+			     queryReplace(error.getSkippedString()));
+            } else if (error.getExp() != null) {
+                ret += " : " + queryReplace(error.getExp().toStringFromStart());
+                ht_error.put("span_class_parse_error", "exp");
+                ht_error.put("span_value_parse_error", 
+			     queryReplace(error.getExp().toString()));
+            }
+        } else {
+            ret = ac.getMsg().getGeneratorString("unrecognize");
+            ht_error.put("span_class_parse_error", "unrecognized");
+            ht_error.put("span_value_parse_error", 
+			 queryReplace(error.getSkippedString()));
+        }
+        ht_error.put("ErrorMsg", ret);
+    }
+
+    /**
+     * 
+     * @param s, the string to convert
+     * @return the string s with html character escaped
+     */
+    private String queryReplace(String s) {
+        if (s != null) {
+            int len = s.length();
+            StringBuilder ret = new StringBuilder(len+16);
+            char c;
+
+            for (int i = 0; i < len; i++) {
+                switch (c = s.charAt(i)) {
+                case '&'  : ret.append("&amp;"); break;
+                case '\'' : ret.append("&#39;"); break;
+                case '"'  : ret.append("&quot;"); break;
+                case '<'  : ret.append("&lt;"); break;
+                case '>'  : ret.append("&gt;"); break;
+                default   : ret.append(c);
+                }
+            }
+            return ret.toString();
+        }
+        return "[empty string]";
+    }
+
+    /**
+     * Display the output 
+     * @require VelocityContext to be set and init()
+     */
+    public void print(PrintWriter out) {
+        this.out = out;
+        try {
+            // Velocity context must have been setup in IndexGenerator
+            template.merge(context, out);
+        } catch (Exception e) {
+            new ErrorReportHTML(ac, title, "", e).print(out);
+        }
+        out.flush();
+    }
+
+    /**
+     * The user doesn't want to see the error report when this function 
+     * is called
+     */
+    public void desactivateError() {
+        context.put("no_errors_report", new Boolean(true));
+	// activate the no errors report
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidator-removed-src/error/ErrorReport.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,15 @@
+// $Id: ErrorReport.java,v 1.1 2005-07-22 09:45:01 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2003.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.error;
+
+import java.io.PrintWriter;
+
+/**
+ * ErrorReport<br />
+ * Created: Jul 13, 2005 2:05:41 PM<br />
+ */
+public abstract class ErrorReport {
+    abstract public void print(PrintWriter out);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidator-removed-src/error/ErrorReportFactory.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,30 @@
+// $Id: ErrorReportFactory.java,v 1.1 2005-07-22 09:45:01 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2003.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.error;
+
+import org.w3c.css.util.ApplContext;
+
+/**
+ * ErrorReportFactory<br />
+ * Created: Jul 13, 2005 2:00:54 PM<br />
+ */
+public class ErrorReportFactory {
+    /**
+     * Give back an "ErrorReport" object based on various parameters, but mainly
+     * output"
+     */
+    public static ErrorReport getErrorReport(ApplContext ac, String title,
+   					     String output, Exception e,
+   					     boolean validURI) {
+   	if ((output == null) || (output.equals("html"))
+   	    || (output.equals("xhtml"))) {
+   	    return new ErrorReportHTML(ac, title, output, e);
+   	}
+   	if (output.equals("soap12")) {
+   	    return new ErrorReportSOAP12(ac, title, output, e, validURI);
+   	}
+   	return new ErrorReportHTML(ac, title, output, e);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidator-removed-src/error/ErrorReportHTML.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,98 @@
+// $Id: ErrorReportHTML.java,v 1.4 2007-07-13 13:32:21 julien Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2003.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.error;
+
+import java.io.DataInputStream;
+import java.io.EOFException;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.net.URL;
+
+import org.apache.velocity.exception.ResourceNotFoundException;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.Util;
+import org.xml.sax.SAXParseException;
+
+/**
+ * ErrorReportHTML<br />
+ * Created: Jul 13, 2005 2:05:51 PM<br />
+ * This class is used to create an (x)html page when a URI error is thrown by
+ * the servlet
+ */
+public class ErrorReportHTML extends ErrorReport {
+
+	// ApplContext ac;
+	String title;
+	Exception e;
+
+	public ErrorReportHTML(ApplContext ac, String title, String output, Exception e) {
+		// ac is not used for now, but may be useful
+		// this.ac = ac;
+		this.title = title;
+		this.e = e;
+	}
+
+	/**
+	 * @see org.w3c.css.error.ErrorReport#print(java.io.PrintWriter)
+	 */
+	public void print(PrintWriter out) {
+		try {
+			URL localURL = ErrorReportHTML.class.getResource("error.html");
+			DataInputStream in = new DataInputStream(localURL.openStream());
+			try {
+				while (true) {
+					out.print((char) in.readUnsignedByte());
+				}
+			} catch (EOFException eof) {
+				out.println("<h2>Target: " + Util.escapeHTML(title) + "</h2>");
+				out.println("<div class=\"error\">");
+				if (e instanceof ResourceNotFoundException) {
+					out.println("<p>" + e.toString() + "</p>");
+				} else if (e instanceof IOException) {
+					out.println("<p>I/O Error: ");
+					out.println(Util.escapeHTML(e.getMessage()));
+				} else if (e instanceof SAXParseException) {
+					SAXParseException saxe = (SAXParseException) e;
+					out.println("<p>Please, validate your XML document" + " first!</p>");
+					if (saxe.getLineNumber() != -1) {
+						out.print("<p>Line ");
+						out.print(saxe.getLineNumber());
+						out.println("</p>");
+					}
+					if (saxe.getColumnNumber() != -1) {
+						out.print("<p>Column ");
+						out.print(saxe.getColumnNumber());
+						out.print("</p>\n");
+					}
+					out.println("<p>" + Util.escapeHTML(e.getMessage()));
+				} else if (e instanceof NullPointerException) {
+					out.println("<p>Oups! Internal error!</p><p>");
+					e.printStackTrace();
+				} else {
+					out.println(e.toString());
+				}
+				out.println("</p></div>\n<hr />\n<p><img src='images/mwc"
+						+ "ss.gif' alt='made with CSS' /></p>\n<addres" + "s><a href='Email.html'>www-validator-css</a"
+						+ "></address>\n</body></html>");
+				out.flush();
+				/*
+				 * System.err.println("CSS Validator: request failed.");
+				 * e.printStackTrace();
+				 */
+			}
+		} catch (Exception unknown) {
+			if (out != null) {
+				out.println("org.w3c.css.servlet.CssValidator: couldn't " + "load  error file");
+				out.flush();
+			}
+			unknown.printStackTrace();
+		} finally {
+			if (out != null) {
+				out.close();
+			}
+		}
+	}
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidator-removed-src/error/ErrorReportSOAP12.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,139 @@
+// $Id: ErrorReportSOAP12.java,v 1.2 2005-09-14 15:14:18 ylafon Exp $
+// Author: Jean-Guilhem Rouel
+// (c) COPYRIGHT MIT, ERCIM and Keio, 2003.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package org.w3c.css.error;
+
+import java.io.PrintWriter;
+import java.net.URL;
+import java.net.UnknownHostException;
+
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.Utf8Properties;
+
+/**
+ * ErrorReportSOAP12<br />
+ * Created: Jul 13, 2005 2:06:00 PM<br />
+ * This class allows to create 2 different soap messages to handle errors:
+ * <ul>
+ * <li>Sender errors if the URI given in parameter of the servlet is invalid</li>
+ * <li>Receiver errors if the URI given is valid but inreachable</li>
+ * </ul>
+ */
+public class ErrorReportSOAP12 extends ErrorReport {
+
+    private String title;
+    private boolean validURI;
+    private Exception exception;
+
+    private ApplContext ac;
+    private static Utf8Properties messages;
+
+    private PrintWriter out;
+
+    ErrorReportSOAP12(ApplContext ac, String title, String output, Exception e,
+	    boolean validURI) {
+	this.ac = ac;
+	this.exception = e;
+	this.validURI = validURI;
+	this.title = title;
+    }
+
+    /**
+     * @see org.w3c.css.error.ErrorReport#print(java.io.PrintWriter)
+     */
+    public void print(PrintWriter out) {
+	this.out = out;
+
+	// the error message
+	String errorMessage = exception.getMessage();
+	// the string containing the soap response pattern
+	String report;
+	if(validURI) {
+	    report = messages.getProperty("receiver");
+	    if(exception instanceof UnknownHostException) {
+		errorMessage = "The host name " + errorMessage +
+			       " couldn't be resolved";
+            }
+	}
+	else {
+	    report = messages.getProperty("sender");
+	}
+	processError(report, errorMessage , title + " " + exception);
+    }
+
+    /**
+     * Prints on the output the soap message str, where each entity<br/>
+     * has been replaced by it's value<br/>
+     * An entity is an xml comment (&lt;!-- --&gt;) containing a single word
+     *  beginning by #<br/>
+     * Valid entities names are:
+     * <ul>
+     * <li><i>charset</i>: prints the charset defined in the Applcontext</li>
+     * <li><i>reason</i>: prints the reason of the error</li>
+     * <li><i>details</i>: prints the detailed reason of the error</li>
+     * </ul>
+     * @param str the soap message pattern
+     * @param errorMessage the error message (see reason entity)
+     * @param details the detailed message error (see details entity)
+     */
+    private void processError(String str, String errorMessage, String details) {
+	try {
+	    int i = 0;
+	    while ((i = str.indexOf("<!-- #", i)) >= 0) {
+		int lastIndexOfEntity = str.indexOf("-->", i);
+		String entity = str.substring(i + 6, lastIndexOfEntity - 1)
+		    .toLowerCase();
+		// reason entity
+		if (entity.equals("reason")) {
+		    out.print(str.substring(0, i));
+		    str = str.substring(lastIndexOfEntity + 3);
+		    i = 0;
+		    out.print(errorMessage);
+		}
+		// details entity
+		else if (entity.equals("details")) {
+		    out.print(str.substring(0, i));
+		    str = str.substring(lastIndexOfEntity + 3);
+		    i = 0;
+		    out.print(details);
+		}
+		//charset entity
+		else if (entity.equals("charset")) {
+		    out.print(str.substring(0, i));
+		    str = str.substring(lastIndexOfEntity + 3);
+		    i = 0;
+		    out.print(ac.getContentEncoding());
+		}
+		else {
+		    i += 6; // skip this unknown entity
+		}
+	    }
+	    // print the end of the string
+	    if(str != null) {
+		out.print(str);
+	    }
+	} catch (Exception e) {
+	    e.printStackTrace();
+	    if(str != null) {
+		out.print(str);
+	    }
+	}
+    }
+
+    static {
+	// load the soaperror.properties
+	URL url;
+	messages = new Utf8Properties();
+	try {
+	    url = ErrorReportSOAP12.class.getResource("soaperror.properties");
+	    java.io.InputStream f = url.openStream();
+	    messages.load(f);
+	    f.close();
+	} catch (Exception e) {
+	    System.err.println("org.w3c.css.error.ErrorReportSOAP12: "
+			       + "couldn't load soap error messages properties ");
+	    System.err.println("  " + e.toString());
+	}
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidator-removed-src/error/error.html	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,18 @@
+<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'
+                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html lang='en' xml:lang='en' xmlns='http://www.w3.org/1999/xhtml'>
+  <head>
+    <meta name="ROBOTS" content="NOINDEX, NOFOLLOW" />
+    <title>CSS Validator : Error</title>
+    <link type="text/css" rel='stylesheet' href='http://jigsaw.w3.org/css-validator/style/error.css' />
+  </head>
+
+  <body>
+    <div>
+      <a href="http://www.w3.org/"><img src="http://www.w3.org/Icons/w3c_home" alt="w3c" /></a>
+    </div>
+    <hr />
+    <div class="t1">CSS</div>
+    <div class="t2">Validator</div>
+    <div class="t3">Error</div>
+      
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidator-removed-src/error/soaperror.properties	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,47 @@
+sender:\
+<?xml version='1.0' encoding="<!-- #charset -->"?>\n\
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"\n\
+            xmlns:m='http://www.w3.org/2005/07/css-validator'>\n\
+  <env:Body>\n\
+   <env:Fault>\n\
+     <env:Code>\n\
+       <env:Value>env:Sender</env:Value>\n\
+       <env:Subcode>\n\
+        <env:Value>m:Exception</env:Value>\n\
+       </env:Subcode>\n\
+     </env:Code>\n\
+     <env:Reason>\n\
+      <env:Text xml:lang="en-US"><!-- #reason --></env:Text>\n\
+     </env:Reason>\n\
+     <env:Detail>\n\
+        <m:errordetail xml:lang="en-US">\n\
+            Target: <!-- #details -->\n\
+        </m:errordetail>\n\
+     </env:Detail>\n\
+   </env:Fault>\n\
+ </env:Body>\n\
+</env:Envelope>
+
+receiver:\
+<?xml version='1.0' encoding="<!-- #charset -->"?>\n\
+<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"\n\
+            xmlns:m='http://www.w3.org/2005/07/css-validator'>\n\
+  <env:Body>\n\
+   <env:Fault>\n\
+     <env:Code>\n\
+       <env:Value>env:Receiver</env:Value>\n\
+       <env:Subcode>\n\
+        <env:Value>m:IOError</env:Value>\n\
+       </env:Subcode>\n\
+     </env:Code>\n\
+     <env:Reason>\n\
+      <env:Text xml:lang="en-US"><!-- #reason --></env:Text>\n\
+     </env:Reason>\n\
+     <env:Detail>\n\
+        <m:errordetail xml:lang="en-US">\n\
+            Details: "<!-- #details -->"\n\
+        </m:errordetail>\n\
+     </env:Detail>\n\
+   </env:Fault>\n\
+ </env:Body>\n\
+</env:Envelope>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidator-removed-src/index/IndexGenerator.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,157 @@
+/**
+ * This class is used to generates the index pages
+ * of the CSS validator in all the availables languages
+ * it'll create the outputs validator.en.html, validator.fr.html, ...
+ * according to the template file validator.vm
+ */
+package org.w3c.css.index;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+
+import org.apache.velocity.Template;
+import org.apache.velocity.VelocityContext;
+import org.apache.velocity.app.Velocity;
+import org.apache.velocity.exception.MethodInvocationException;
+import org.apache.velocity.exception.ParseErrorException;
+import org.apache.velocity.exception.ResourceNotFoundException;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.Messages;
+import org.w3c.css.util.Utf8Properties;
+
+/**
+ * @author julien
+ * 
+ */
+public class IndexGenerator {
+
+    // the velocity context used to generate the index
+    // (NB: the same context is used for each index page, changing every thing
+    // inside)
+    public static VelocityContext vc = new VelocityContext();
+    private static String template_name = "validator.vm";
+    private static String html_files_path = "../../../../";
+    private static boolean done = false;
+
+    /**
+     * @param args
+     */
+    public static void main(String[] args) {
+        IndexGenerator.generatesIndex(false);
+    }
+
+    /**
+     * This method generates the index in every possible language we have the translation
+     * @see org.w3c.css.util.Messages
+     * @param servlet, if this method is called from the servlet,
+     * the path is a bit different and need to be changed.
+     */
+    public static synchronized void generatesIndex(boolean servlet) {
+        if (done)
+            return;
+		
+        String default_lang = "en";
+        String k, name, path;
+        ApplContext ac_default = new ApplContext(default_lang);
+        File tmpFile;
+        Iterator it;
+
+        // Getting the differents languages informations (for the lang choice)
+        HashMap[] languages = new HashMap[Messages.languages_name.size()];
+        for (int i = 0; i < Messages.languages_name.size(); ++i) {
+            name = String.valueOf(Messages.languages_name.get(i));
+            HashMap<String,String> l = new HashMap<String,String>();
+            l.put("name", name);
+            l.put("real", ((Utf8Properties) Messages.languages.get(name)).getProperty("language_name"));
+            languages[i] = l;
+        }
+        // Adding the result to the context
+        vc.put("languages", languages);
+
+        try {
+            //setting the path were to find the template
+            path = IndexGenerator.class.getResource("").getPath();
+            if (servlet)
+                path = path.replace("file://localhost", "");
+            else
+                path = new URI(path).getPath();
+
+            /*
+             * This code set the velocity properties to be used
+             * A new jar is needed to use file logging (avalon-logkit.jar)
+             */
+            Velocity.setProperty(Velocity.FILE_RESOURCE_LOADER_PATH, path);
+            Velocity.addProperty(Velocity.FILE_RESOURCE_LOADER_PATH, path + "../../../../");
+            Velocity.setProperty(Velocity.RUNTIME_LOG,
+                                 "velocity-" + new SimpleDateFormat("yyyy-MM-dd_HHmm").format(new Date()) + ".log");
+			
+            Velocity.setProperty(Velocity.RUNTIME_LOG_LOGSYSTEM_CLASS, "org.apache.velocity.runtime.log.AvalonLogChute");
+            Velocity.init();
+            if (!new File(path + template_name).exists()) {
+                template_name = template_name;
+                html_files_path = "";
+            }
+            Template tpl = Velocity.getTemplate(template_name, "UTF-8");
+            int count = 0;
+
+            // For each language, we set the context are create the template
+            for (int i = 0; i < Messages.languages_name.size(); ++i) {
+                name = String.valueOf(Messages.languages_name.get(i));
+                tmpFile = new File(path + html_files_path + "validator.html." + name);
+
+                // Checking if the index files exists
+                // and if they have been created after the last template modification
+                if ((tmpFile.lastModified() < tpl.getLastModified()) || !tmpFile.exists()) {
+                    ApplContext ac = new ApplContext(name);
+                    vc.put("lang", name);
+
+                    if (ac.getLang().equals(default_lang)) {
+                        it = ac_default.getMsg().properties.keySet().iterator();
+                        while (it.hasNext()) {
+                            k = String.valueOf(it.next());
+                            vc.put(k, ac.getMsg().getString(k));
+                        }
+                    } else {
+                        it = ac_default.getMsg().properties.keySet().iterator();
+                        while (it.hasNext()) {
+                            k = String.valueOf(it.next());
+                            if (ac.getMsg().getString(k) == null)
+                                vc.put(k, ac_default.getMsg().getString(k));
+                            else
+                                vc.put(k, ac.getMsg().getString(k));
+                        }
+                    }
+                    OutputStreamWriter aFileWriter = new OutputStreamWriter(new FileOutputStream(tmpFile), "UTF-8");
+                    tpl.merge(vc, aFileWriter);
+                    aFileWriter.close();
+                    ++count;
+                }
+            }
+            Velocity.getLog().info("IndexGenerator : " + count + " index file(s) created or modified");
+            done = true;
+        } catch (ResourceNotFoundException e) {
+            e.printStackTrace();
+        } catch (ParseErrorException e) {
+            e.printStackTrace();
+        } catch (MethodInvocationException e) {
+            e.printStackTrace();
+        } catch (IOException e) {
+            e.printStackTrace();
+        } catch (URISyntaxException e1) {
+            e1.printStackTrace();
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            done = true;
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidator-removed-src/index/TranslationTableGenerator.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,187 @@
+/**
+ * This class is used to generates the index pages
+ * of the CSS validator in all the availables languages
+ * it'll create the outputs validator.en.html, validator.fr.html, ...
+ * according to the template file validator.vm
+ */
+package org.w3c.css.index;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import org.apache.velocity.Template;
+import org.apache.velocity.VelocityContext;
+import org.apache.velocity.app.Velocity;
+import org.apache.velocity.exception.MethodInvocationException;
+import org.apache.velocity.exception.ParseErrorException;
+import org.apache.velocity.exception.ResourceNotFoundException;
+import org.apache.commons.lang.StringEscapeUtils;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Vector;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Set;
+import java.lang.Integer;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.Messages;
+import org.w3c.css.util.Utf8Properties;
+
+
+/**
+ * @author olivier Thereaux <ot@w3.org> for W3C
+ * 
+ * 
+ */
+class AlphaComparator implements Comparator<String> {
+    public int compare(String s1, String s2) {
+	return s1.compareToIgnoreCase(s2);
+    }
+}
+
+public class TranslationTableGenerator {
+
+    // the velocity context used to generate the index
+    // (NB: the same context is used for each index page, changing every thing
+    // inside)
+    public static VelocityContext vc = new VelocityContext();
+    private static String html_files_path = "../../../../";
+    private static boolean done = false;
+    private static String template_name = "translations.vm";
+    
+
+    /**
+     * @param args
+     */
+    public static void main(String[] args) {
+	TranslationTableGenerator.generateTable();
+    }
+
+    /**
+     * This method generates the index in every possible language we have the translation
+     * @see org.w3c.css.util.Messages
+     */
+    public static synchronized void generateTable() {
+		
+	String default_lang = "en";
+	String name, path;
+	StringBuilder table_head = new StringBuilder();
+	StringBuilder translations_table = new StringBuilder();
+	File out_file;
+	path = TranslationTableGenerator.class.getResource("").getPath();
+
+        try {
+	    path = new URI(path).getPath();
+	    Velocity.setProperty(Velocity.FILE_RESOURCE_LOADER_PATH, path);
+	    Velocity.addProperty(Velocity.FILE_RESOURCE_LOADER_PATH, path + "../css/");
+	    Velocity.setProperty(Velocity.RUNTIME_LOG,
+				 "velocity-" + new SimpleDateFormat("yyyy-MM-dd_HHmm").format(new Date()) + ".log");
+	    
+	    Velocity.setProperty(Velocity.RUNTIME_LOG_LOGSYSTEM_CLASS, "org.apache.velocity.runtime.log.AvalonLogChute");
+	    Velocity.init();
+		
+	    Template tpl = Velocity.getTemplate(template_name, "UTF-8");
+	    out_file = new File(path + html_files_path + "translations.html");
+		
+            ApplContext ac_default= new ApplContext(default_lang);
+	    // Getting the differents languages informations (for the lang choice)
+	    ArrayList<HashMap<String,String>> languages;
+	    languages = new ArrayList<HashMap<String,String>>(Messages.languages_name.size());
+	    HashMap<String,ApplContext> translations = new HashMap<String,ApplContext>();
+	    HashMap<String,Integer> translation_completeness = new HashMap<String,Integer>();
+	    table_head.append("<tr><th scope='col'>Property</th>");
+	    for (int i = 0; i < Messages.languages_name.size(); ++i) {
+		name = String.valueOf(Messages.languages_name.get(i));
+		HashMap<String,String> l = new HashMap<String,String>();
+		l.put("name", name);
+		l.put("real", ((Utf8Properties) Messages.languages.get(name)).getProperty("language_name"));
+		languages.add(i, l);
+		ApplContext ac_translated = new ApplContext(name);
+		if (!name.equals(default_lang)) {
+		    table_head.append("<th>").append(l.get("real")).append("</th>");
+                }
+		translations.put(name,ac_translated);
+		translation_completeness.put(name, 0);
+		        
+	    }
+	    table_head.append("</tr>");
+	    Vector<String> sorted_properties_keys;
+	    Set properties_keyset = ac_default.getMsg().properties.keySet();
+	    sorted_properties_keys = new Vector<String>(properties_keyset);
+	    Collections.sort(sorted_properties_keys, new AlphaComparator());
+            Iterator properties_iterator = sorted_properties_keys.iterator();
+	    translations_table.append("<tbody>");
+	    int num_properties = 0;
+	    while (properties_iterator.hasNext()) {
+		++num_properties;
+		String property_name = String.valueOf(properties_iterator.next());
+		translations_table.append("<tr><th scope=\"row\" class=\"property_name\">").append(property_name);
+		translations_table.append("<p>").append(StringEscapeUtils.escapeHtml(ac_default.getMsg().getString(property_name)));
+		translations_table.append("</p></th>");
+		for (int i = 0; i < Messages.languages_name.size(); ++i) {
+		    HashMap<String,String> language = languages.get(i);
+		    ApplContext translation = (ApplContext) translations.get(language.get("name"));
+		    String property_translated = translation.getMsg().getString(property_name);
+		    if (language.get("name").equals(default_lang)) {
+			vc.put(property_name, property_translated);
+		    } else {
+			URI mail_translation = new URI("mailto", "w3c-translators@w3.org?Subject=["+property_name+"] CSS Validator Translation&body=Property:\n  "+property_name+"\n\nText in English:\n  "+ac_default.getMsg().getString(property_name)+"\n\nLanguage:\n  "+language.get("name")+"\n\nTranslation:\n\n\n-- Help translate the CSS Validator:\nhttp://qa-dev.w3.org:8001/css-validator/translations.html", "");
+			if (property_translated == null) {
+			    translations_table.append("<td class=\"table_translation_missing\"><a title=\"submit a missing translation\" href=\"").append(StringEscapeUtils.escapeHtml(mail_translation.toASCIIString())).append("\">✘</a></td>\n");    			        
+			} else if ( property_translated.matches(".*translation unavailable.*")) {
+			    translations_table.append("<td class=\"table_translation_missing\"><a title=\"submit a missing translation\" href=\"").append(StringEscapeUtils.escapeHtml(mail_translation.toASCIIString())).append("\">✘</a></td>\n");
+			} else {
+			    translations_table.append("<td class=\"table_translation_ok\"><span title=\"").append(StringEscapeUtils.escapeHtml(property_translated)).append("\">✔</span></td>\n");
+			    int completed = Integer.parseInt(translation_completeness.get(language.get("name")).toString());
+			    completed++;
+			    translation_completeness.put(language.get("name"), completed);
+			    //System.out.println(language.get("name")+": "+completed);
+			}
+		    }
+                }
+                translations_table.append("</tr>");
+                if ( num_properties % 12 == 0) {
+                    translations_table.append("</tbody><tbody>").append(table_head);
+                }
+            }
+            translations_table.append("</tbody></table>");
+            for (int i = 0; i < Messages.languages_name.size(); i++) {
+		name = String.valueOf(Messages.languages_name.get(i));
+		HashMap<String,String> l = languages.get(i);
+		int completeness_percent = 100*Integer.parseInt(translation_completeness.get(l.get("name")).toString());
+		completeness_percent = completeness_percent /ac_default.getMsg().properties.size();
+		l.put("completeness", Integer.toString(completeness_percent));
+		// FIXME not needed // languages[i] = l;
+	    }
+	    vc.put("languages", languages);
+	    vc.put("num_languages", Messages.languages_name.size());
+	    vc.put("total_properties", ac_default.getMsg().properties.size());
+    	    vc.put("translations_table", translations_table.toString());
+    	    vc.put("lang", "en");
+	    OutputStreamWriter aFileWriter = new OutputStreamWriter(new FileOutputStream(out_file), "UTF-8");
+	    tpl.merge(vc, aFileWriter);
+	    aFileWriter.close();
+    	} catch (URISyntaxException e) {
+	    e.printStackTrace();
+    	} catch (ResourceNotFoundException e) {
+	    e.printStackTrace();
+	} catch (ParseErrorException e) {
+	    e.printStackTrace();
+	} catch (MethodInvocationException e) {
+	    e.printStackTrace();
+	} catch (IOException e) {
+	    e.printStackTrace();
+	} catch (Exception e) {
+	    e.printStackTrace();
+	} finally {
+	    done = true;
+	}
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidator-removed-src/index/footer.vm	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,57 @@
+  <ul class="navbar" id="menu">
+    <li><a href="about.html" title="$about_title">$about</a> <span class="hideme">|</span></li>
+    <li><a href="documentation.html" title="$doc_title">$doc</a> <span class="hideme">|</span></li>
+    <li><a href="DOWNLOAD.html" title="$dl_title">$dl</a> <span class="hideme">|</span></li>
+    <li><a href="Email.html" title="$feedback_title">$feedback</a> <span class="hideme">|</span></li>
+    <li><a href="thanks.html" title="$credits_title">$credits</a></li>
+  </ul>
+
+   <ul id="lang_choice">
+#foreach ( $language in $languages )
+    #set ( $name = $language.get("name") )
+    #if ( $language.get("real") )
+        #set ( $real =  $language.get("real") )
+    #else
+        #set ( $real = $language.get("name") )
+    #end
+
+        <li><a href="validator.html.$name"
+            lang="$name"
+            xml:lang="$name"
+            hreflang="$name"
+            rel="alternate">$real</a>
+        </li>
+#end
+   </ul>
+
+<div id="footer">
+   <p id="activity_logos">
+     <a href="http://www.w3.org/QA/" title="$W3C_quality_msg"><img src="http://www.w3.org/QA/2002/12/qa-small.png" alt="QA" /></a><a href="http://www.w3.org/Style/CSS/learning" title="$learn_more_msg"><img src="images/woolly-icon" alt="CSS" /></a>
+   </p>
+   <p id="support_logo">
+   <a href="http://www.w3.org/QA/Tools/Donate">
+   <img src="http://www.w3.org/QA/Tools/I_heart_validator" alt="I heart Validator logo" title=" Validators Donation Program" />
+   </a>
+   </p>
+
+    <p class="copyright">
+      <a rel="Copyright" href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright">Copyright</a> &copy; 1994-2009
+      <a href="http://www.w3.org/"><acronym title="World Wide Web Consortium">W3C</acronym></a>&reg;
+
+      (<a href="http://www.csail.mit.edu/"><acronym title="Massachusetts Institute of Technology">MIT</acronym></a>,
+      <a href="http://www.ercim.org/"><acronym title="European Research Consortium for Informatics and Mathematics">ERCIM</acronym></a>,
+      <a href="http://www.keio.ac.jp/">Keio</a>),
+      All Rights Reserved.
+      W3C <a href="http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>,
+      <a href="http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a>,
+      <a rel="Copyright" href="http://www.w3.org/Consortium/Legal/copyright-documents">document use</a>
+      and <a rel="Copyright" href="http://www.w3.org/Consortium/Legal/copyright-software">software licensing</a>
+
+      rules apply. Your interactions with this site are in accordance
+      with our <a href="http://www.w3.org/Consortium/Legal/privacy-statement#Public">public</a> and
+      <a href="http://www.w3.org/Consortium/Legal/privacy-statement#Members">Member</a> privacy
+      statements.
+    </p>
+</div>
+  </body>
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidator-removed-src/index/header.vm	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,30 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="$lang" lang="$lang" dir="$direction">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+    <meta http-equiv="Content-Script-Type" content="text/javascript" />
+    <meta http-equiv="Content-Style-Type" content="text/css" />
+    <title>$W3C_CSS_validation_service</title>
+    <link rev="made" href="mailto:www-validator-css@w3.org" />
+    <link rev="start" href="./" title="$home_title" />
+    <style type="text/css" media="all">
+      @import "style/base.css";
+	  #if ( $page_type == "doc" )
+      @import "style/docs.css";
+	  #end
+    </style>   
+  #if ( $page_type != "doc" )
+    <script type="text/javascript" src="scripts/mootools.js"></script>
+    <script type="text/javascript" src="scripts/w3c-validator.js"></script>
+  #end
+  </head>
+
+  <body>
+   <div id="banner">
+    <h1 id="title"><a href="http://www.w3.org/"><img alt="W3C" width="110" height="61" id="logo" src="./images/w3c.png" /></a>
+    <a href="./"><span>CSS Validation Service</span></a></h1>
+    <p id="tagline">
+      $check_CSS
+    </p>
+   </div>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidator-removed-src/index/translations.vm	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,44 @@
+#set ( $page_type = "doc" )
+#parse("./header.vm")
+<div class="doc">
+<h2>Translation of the W3C CSS Validator</h2>
+
+<p>The CSS Validation service is currently available in $num_languages languages. The translations are mainly contributed by <a href="thanks.html">volunteers</a>.</p>
+
+<h3>Translate the CSS validator in a new language</h3>
+<p>If the CSS validator is not yet available in your native language and you would like to translate it:</p>
+<ol class="translations_instructions">
+  <li><a href="http://www.w3.org/QA/Tools/css-validator/translation_kit.zip">Download the translation kit</a>. Unpack the kit: It includes a number of HTML documents, a file with all the strings used for the validator messages, and a text files with instructions.</li>
+  <li><a href="http://www.w3.org/Consortium/Translation/#discussions">Get in touch with us</a> <strong>before</strong> you start translating: someone may already be on the job. Someone from the W3C staff or validator development team will get back to you with details about how to translate the validator.</li>
+  <li>Translate. Congratulations, you have made the CSS validator more accessible to a lot more Web developers and designers.</li>
+</ol>
+
+  <h3>Help complete the translation of the validator in your language</h3>
+
+<p>The table below lists all the text strings used to translate the CSS validator:</p>
+<ul class="translations_instructions">
+<li>Cells marked <span class='table_translation_missing'><a title="Cross Mark">✘</a></span> need a new or updated translation. Click on the relevant ✘ to submit a translation by mail.</li>
+<li>Cells marked <span class='table_translation_ok'>✔</span> are translated and up-to-date. Hover above  ✔ to read the current translation for each string.</li>
+</ul>
+<p>You can help fill the blanks and complete the translation in <strong>your</strong> language!</p>
+<table id="translation_summary">
+<thead><tr>
+<th scope='col' class="property_name" id="properties">Property</th>
+#foreach ( $language in $languages )
+    #set ( $name = $language.get("name") )
+	#if ($name != "en")
+	    #if ( $language.get("real") )
+	        #set ( $real =  $language.get("real") )
+	    #else
+	        #set ( $real = $language.get("name") )
+	    #end
+		#set ($completeness = $language.get("completeness") )
+		<th scope='col'>$real <br /> $completeness%</th>
+	#end
+#end
+</tr></thead>
+
+
+$translations_table
+</div>
+#parse("./footer.vm")
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidator-removed-src/index/validator.vm	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,143 @@
+#set ( $page_type = "UI" )
+#macro( moreOptionMacro $submit_message $tab_id)
+  <fieldset id="extra_opt_$tab_id" class="moreoptions">
+    <legend class="toggletext" title="$title_more_options">$more_options</legend>
+    <div class="options">
+    <table>
+    <tr>
+    <th id="header_profile_$tab_id">
+      <label for="profile_$tab_id">$profile :</label>
+    </th>
+    <td headers="header_profile_$tab_id">
+      <select id="profile_$tab_id" name="profile">
+        <option value="none">$no_special_profile</option>
+        <option value="css1">$css1</option>
+        <option value="css2">$css2</option>
+        <option selected="selected" value="css21">$css21</option>
+        <option value="css3">$css3</option>
+        <option value="svg">$SVG</option>
+        <option value="svgbasic">$svgbasic</option>
+        <option value="svgtiny">$svgtiny</option>  
+        <option value="mobile">$mobile</option>
+        <option value="atsc-tv">$ATSC_TV_profile</option>
+        <option value="tv">$TV_profile</option>
+      </select>
+    </td>
+    <th id="header_medium_$tab_id">
+      <label for="medium_$tab_id">$medium :</label>
+    </th>
+    <td headers="header_medium_$tab_id">
+      <select id="medium_$tab_id" name="usermedium">
+        <option selected="selected" value="all">$all</option>
+        <option value="aural">$aural</option>
+        <option value="braille">$braille</option>
+        <option value="embossed">$embossed</option>
+        <option value="handheld">$handheld</option>
+        <option value="print">$print</option>
+        <option value= "projection">$projection</option>
+        <option value="screen">$screen</option>
+        <option value="tty">$tty</option>
+        <option value="tv">$tv</option>
+        <option value="presentation">$presentation</option>
+      </select>
+    </td>
+    </tr>
+    <tr>
+    #if ($tab_id == "input")
+    <th id="header_type_$tab_id">
+      <label for="type_$tab_id">$type :</label>
+    </th>
+    <td headers="header_type_$tab_id">
+      <select id="type_$tab_id" name="type">
+        <option selected="selected" value="none">$no_special_type</option>
+        <option value="html">$html_doc</option>
+        <option value="css">$css_doc</option>
+      </select>
+    </td>
+    #end
+    <th id="header_warning_$tab_id">
+      <label for="warning_$tab_id">$warnings :</label>
+    </th>
+    <td
+    #if ($tab_id != "input")
+    colspan="3"
+    #end
+     headers="header_warning_$tab_id">
+      <select id="warning_$tab_id" name="warning"> 
+        <option value="2">$all</option>
+        <option selected="selected" value="1">$normal_report</option>
+        <option value="0">$most_important</option>
+        <option value="no">$no_warnings</option>
+      </select>
+    </td>
+    </tr>
+    </table>
+    </div><!-- item_contents -->
+  </fieldset><!-- invisible -->
+  
+  <p class="submit_button">
+  <input type="hidden" name="lang" value="$lang" />
+    <label title="$submit_message">
+      <input type="submit" value="$check" />
+    </label>
+  </p>
+#end
+#parse("./header.vm")
+
+  <div id="frontforms">
+      <ul id="tabset_tabs">
+        <li><a href="#validate-by-uri" class="active">$by_URI</a></li><li><a href="#validate-by-upload">$by_file_upload</a></li><li><a href="#validate-by-input">$by_direct_input</a></li>
+      </ul>
+      <div id="fields">
+
+      <fieldset id="validate-by-uri" class="tabset_content front">
+        <legend class="tabset_label">$validate_by_URI</legend>
+        <form method="get" action="validator">
+        <p class="instructions">
+          $enter_uri :
+        </p>
+        <p>
+           <label title="$page_address" for="uri">$address :
+             <input type="text" name="uri" id="uri" size="45" />
+           </label>
+        </p>
+      #set($tab_id = "uri")
+      #moreOptionMacro($submit_uri $tab_id)
+      </form>
+      </fieldset>
+
+      <fieldset id="validate-by-upload"  class="tabset_content front">
+        <legend class="tabset_label">$validate_by_file_upload</legend>
+      <form method="post" enctype="multipart/form-data" action="validator">
+        <p class="instructions">$choose_document :</p>
+        <p>
+          <label title="$choose_local_file" for="file">$local_CSS_file :
+          <input type="file" id="file" name="file" size="30" /></label></p>
+          #set($tab_id = "upload")
+          #moreOptionMacro($submit_file $tab_id)
+      </form>
+      </fieldset>
+
+      <fieldset id="validate-by-input"  class="tabset_content front">
+        <legend class="tabset_label">$validate_by_input</legend>
+        <form action="validator" enctype="multipart/form-data" method="post">
+        <p class="instructions">$enter_CSS :</p>
+        <p>
+          <textarea name="text" rows="12" cols="70"></textarea>
+        </p>      
+      #set($tab_id = "input")
+      #moreOptionMacro($submit_input $tab_id)
+      </form>
+      </fieldset>
+      </div><!-- fields -->
+  </div> <!-- frontforms -->
+  
+  <div class="intro" id="don_program"></div>  
+  <script type="text/javascript" src="http://www.w3.org/QA/Tools/don_prog.js"></script>
+  
+  
+  <div class="intro">
+  <p><strong>$note</strong>: $note_xhtml_valid.
+  </p>
+  </div>
+#parse("./footer.vm")
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidator-removed-src/servlet/CssValidator.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,851 @@
+//
+// $Id: CssValidator.java,v 1.42 2009-02-26 10:41:25 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 org.w3c.css.servlet;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import java.net.ProtocolException;
+import java.net.URL;
+
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletInputStream;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.w3c.css.css.CssParser;
+import org.w3c.css.css.DocumentParser;
+import org.w3c.css.css.StyleReport;
+import org.w3c.css.css.StyleReportFactory;
+import org.w3c.css.css.StyleSheet;
+import org.w3c.css.css.StyleSheetParser;
+import org.w3c.css.css.TagSoupStyleSheetHandler;
+import org.w3c.css.error.ErrorReport;
+import org.w3c.css.error.ErrorReportFactory;
+import org.w3c.css.index.IndexGenerator;
+import org.w3c.css.properties.PropertiesLoader;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.Codecs;
+import org.w3c.css.util.FakeFile;
+import org.w3c.css.util.HTTPURL;
+import org.w3c.css.util.NVPair;
+import org.w3c.css.util.Utf8Properties;
+import org.w3c.css.util.Util;
+import org.w3c.www.mime.MimeType;
+import org.w3c.www.mime.MimeTypeFormatException;
+
+/**
+ * This class is a servlet to use the validator.
+ * 
+ * @version $Revision: 1.42 $
+ */
+public final class CssValidator extends HttpServlet {
+
+    final static String texthtml    = "text/html";
+
+    final static String applxhtml   = "application/xhtml+xml";
+    
+    final static String textplain   = "text/plain";
+    
+    final static String textcss   = "text/css";
+
+    final static String textunknwon = "text/unknown";
+
+    final static String soap12      = "application/soap+xml";
+
+    final static String json      = "application/json";
+
+    final static String server_name = "Jigsaw/2.2.5 "
+	+ "W3C_CSS_Validator_JFouffa/2.0";
+
+    final static String headers_name = "X-W3C-Validator-";
+    /**
+     * Create a new CssValidator.
+     */
+    public CssValidator() {
+    }
+
+    /**
+     * Initializes the servlet and logs the initialization. The init method is
+     * called once, automatically, by the network service each time it loads
+     * the servlet. It is guaranteed to finish before any service requests are
+     * accepted. On fatal initialization errors, an UnavailableException should
+     * be thrown. Do not call the method System.exit.
+     *
+     * <p>
+     * The init method stores the ServletConfig object. Servlet writers who
+     * specialize this method should call either super.init, or store the
+     * ServletConfig object themselves. If an implementor decides to store the
+     * ServletConfig object in a different location, then the getServletConfig
+     * method must also be overridden.
+     *
+     * <P>
+     * <DL>
+     * <STRONG>Init parameters:</STRONG>
+     * <DT>debug
+     * <DD><code>true</code> if you want to be in debug mode.
+     * <DT>aural
+     * <DD><code>true</code> if you want to be in aural mode.
+     * <DT>import
+     * <DD><code>false</code> if you don't want to activate the import
+     * statement. For security reasons, you shoud be careful when you lunch the
+     * servlet on a HTTP server with special access authorization.
+     * <DT>input
+     * <DD><code>html</code> if the user have an HTML input or
+     * <code>xml</code> otherwise. <strong>deprecated</strong>
+     * </DL>
+     *
+     * @param config
+     *            servlet configuration information.
+     * @exception ServletException
+     *                if a servlet exception has occurred.
+     */
+    public void init(ServletConfig config) throws ServletException {
+	super.init(config);
+
+	// [SECURITY] don't forget this !
+	Util.servlet = true;
+
+	if (config.getInitParameter("debug") != null) {
+	    // servlet debug mode
+	    // define a boolean property CSS.StyleSheet.debug if you want more
+	    // debug.
+	    Util.onDebug = config.getInitParameter("debug").equals("true");
+	    System.err.println("RUN IN DEBUG MODE: "
+			       + config.getInitParameter("debug").equals("true"));
+	} else if (Util.onDebug) {
+	    System.err.println("RUN IN DEBUG MODE"+
+	    		       " but activated outside the servlet");
+	}
+
+	if ((config.getInitParameter("import") != null)
+	    && (config.getInitParameter("import").equals("false"))) {
+	    Util.importSecurity = true;
+	}
+	
+	// The following code will check if the index files are missing or outdated
+	// If so, the files will be regenerated
+	// This is done in a Thread so that the validation can carry on.
+	new Thread () {
+	    public void run () {
+		IndexGenerator.generatesIndex(true);
+	    }
+	}.start();
+
+    }
+
+    private PrintWriter getLocalPrintWriter(OutputStream os, String encoding)
+	throws IOException {
+	if (encoding != null) {
+	    return new PrintWriter(new OutputStreamWriter(os, encoding));
+	} else {
+	    return new PrintWriter(new OutputStreamWriter(os,
+							  Utf8Properties.ENCODING));
+	}
+    }
+
+    /**
+     * Performs the HTTP GET operation.
+     * An HTTP BAD_REQUEST error is reported if
+     * an error occurs. This servlet writers shouldn't set the headers for the
+     * requested entity (content type and encoding).
+     *
+     * <P>
+     * Note that the GET operation is expected to be <em>safe</em>, without
+     * any side effects for which users might be held responsible. For example,
+     * most form queries have no side effects. Requests intended to change
+     * stored data should use some other HTTP method. (There have been cases of
+     * significant security breaches reported because web-based applications
+     * used GET inappropriately.)
+     *
+     * <P>
+     * The GET operation is also expected to be <em>idempotent</em>, meaning
+     * that it can safely be repeated. This is not quite the same as being
+     * safe, but in some common examples the requirements have the same result.
+     * For example, repeating queries is both safe and idempotent
+     * (unless payment is required!), but buying something or modifying data
+     * is neither safe nor idempotent.
+     *
+     * <P>
+     * <DL>
+     * <STRONG>Forms parameters:</STRONG>
+     * <DT>URL
+     * <DD>the URL to be parsed.
+     * <DT>submitURL
+     * <DD>if the user want to parse an URL.
+     * <DT>text
+     * <DD>The text to be parsed.
+     * <DT>submitTEXT
+     * <DD>if the user want to parse the text.
+     * <DT>output
+     * <DD>HTML if the user want an HTML output or XML otherwise.
+     * <DT>input
+     * <DD>HTML if the user have an HTML input or XML otherwise.
+     * </DL>
+     *
+     * @param req
+     *            encapsulates the request to the servlet.
+     * @param resp
+     *            encapsulates the response from the servlet.
+     * @exception ServletException
+     *                if the request could not be handled.
+     * @exception IOException
+     *                if detected when handling the request.
+     * @see org.w3c.css.css.StyleSheetGenerator
+     */
+    public void doGet(HttpServletRequest req, HttpServletResponse res)
+	throws ServletException, IOException {
+
+
+	boolean errorReport = true;
+	int warningLevel = 2;
+	CssParser parser = null;
+
+	String lang = null;	
+	try {
+	    lang = req.getParameter("lang");
+	}
+	catch(Exception e) {
+	    lang = null;
+	}
+	
+	if(lang == null || lang.equals("")) {
+	    lang = req.getHeader("Accept-Language");
+	}
+	else {
+	    lang += ',' + req.getHeader("Accept-Language");
+	}
+	ApplContext ac = new ApplContext(lang);
+	ac.setLink(req.getQueryString());
+	ac.setContentEncoding(req.getHeader("Accept-Charset"));
+	String output = req.getParameter("output");
+	
+	String uri = null;
+	try {
+	    uri = req.getParameter("uri"); // null if the parameter does not
+	    // exist
+	} catch (Exception ex) {
+	    // pb in URI decoding (bad escaping, most probably)
+	    handleError(res, ac, output, "No file", new IOException(
+								    "Invalid escape sequence in URI"), false);
+	}
+	String text = null;
+	try {
+	    text = req.getParameter("text");            
+	} catch (Exception ex) {
+	    // pb in URI decoding (bad escaping, most probably)
+	    // not sure it will work here, as it may be catched by the first
+	    // getParameter call
+	    handleError(res, ac, output, "Invalid text", new IOException(
+									 "Invalid escape sequence in URI"), false);
+	}
+
+	String warning = req.getParameter("warning");
+	String error = req.getParameter("error");
+	String profile = req.getParameter("profile");
+	String usermedium = req.getParameter("usermedium");
+	String type = req.getParameter("type");
+	if (type == null)
+	    type = "none";
+
+	String credential = req.getHeader("Authorization");
+	if ((credential != null) && (credential.length() > 1)) {
+	    ac.setCredential(credential);
+	}
+
+	if (usermedium == null || "".equals(usermedium)) {
+	    usermedium = "all";
+	}
+
+	InputStream in = req.getInputStream();
+
+	ac.setMedium(usermedium);
+
+	if (req.getParameter("debug") != null) {
+	    Util.onDebug = req.getParameter("debug").equals("true");
+	    if (Util.onDebug) {
+		System.err.println("SWITCH DEBUG MODE REQUEST");
+	    }
+	}
+	else {
+	    Util.onDebug = false;
+	}
+
+	//text = Util.suppressWhiteSpace(text);
+	uri = Util.suppressWhiteSpace(uri);
+
+	if (output == null) {
+	    output = texthtml;
+	}
+
+	// CSS version
+	if (profile != null && (!"none".equals(profile) || "".equals(profile))) {
+	    if ("css1".equals(profile) || "css2".equals(profile)
+		|| "css21".equals(profile)
+		|| "css3".equals(profile) || "svg".equals(profile)
+		|| "svgbasic".equals(profile) || "svgtiny".equals(profile)) {
+	    	ac.setCssVersion(profile);
+	    } else {
+		ac.setProfile(profile);
+		ac.setCssVersion(PropertiesLoader.config.getProperty("defaultProfile"));
+	    }
+	} else {
+	    ac.setProfile("none");
+	    ac.setCssVersion(PropertiesLoader.config.getProperty("defaultProfile"));
+	}
+	if (Util.onDebug) {
+	    System.err.println("[DEBUG]  profile is : " + ac.getCssVersion()
+			       + " medium is " + usermedium);
+	}
+
+	// verify the request
+	if ((uri == null) && (text == null)) {
+	    // res.sendError(res.SC_BAD_REQUEST,
+	    // "You have send an invalid request.");
+	    handleError(res, ac, output, "No file",
+			new IOException(ac.getMsg().getServletString("invalid-request")),
+			false);
+	    return;
+	}
+
+	in.close();
+
+	// set the warning output
+	if (warning != null) {
+	    if (warning.equals("no")) {
+		warningLevel = -1;
+	    } else {
+		try {
+		    warningLevel = Integer.parseInt(warning);
+		} catch (Exception e) {
+		    System.err.println(e);
+		}
+	    }
+	    ac.setWarningLevel(warningLevel);
+	}
+
+	// set the error report
+	if (error != null && error.equals("no")) {
+	    errorReport = false;
+	}
+
+	// debug mode
+	Util.verbose("\nServlet request ");
+	if (uri != null) {
+	    Util.verbose("Source file : " + uri);
+	} else {
+	    Util.verbose("TEXTAREA Input");
+	}
+	// verbose("From " + req.getRemoteHost() +
+	// " (" + req.getRemoteAddr() + ") at " + (new Date()) );
+	
+	if (uri != null) {
+	    // HTML document
+	    try {
+		uri = HTTPURL.getURL(uri).toString(); // needed to be sure
+		// that it is a valid
+		// url
+		uri = uri.replaceAll(" ", "%20");
+		DocumentParser URLparser = new DocumentParser(ac, uri);
+
+		handleRequest(ac, res, uri, URLparser.getStyleSheet(), output,
+			      warningLevel, errorReport);
+	    } catch (ProtocolException pex) {
+		if (Util.onDebug) {
+		    pex.printStackTrace();
+		}
+		res.setHeader("WWW-Authenticate", pex.getMessage());
+		res.sendError(HttpServletResponse.SC_UNAUTHORIZED);
+	    } catch (Exception e) {
+		handleError(res, ac, output, uri, e, true);
+	    }
+	} else if (text != null) {
+	    String fileName = "TextArea";
+	    Util.verbose("- " + fileName + " Data -");
+	    Util.verbose(text);
+	    Util.verbose("- End of " + fileName + " Data");
+	    InputStream is = new ByteArrayInputStream(text.getBytes());
+	    fileName = "file://localhost/" + fileName;
+		
+	    try {
+		
+		if ("css".equals(type) || ( "none".equals(type) && isCSS(text))) {
+		    // if CSS:
+		    parser = new StyleSheetParser();
+		    parser.parseStyleElement(ac, is, null, usermedium,
+					     new URL(fileName), 0);
+		  	  
+		    handleRequest(ac, res, fileName, parser
+				  .getStyleSheet(), output, warningLevel, errorReport);
+		} else {
+		    // else, trying HTML
+		    TagSoupStyleSheetHandler handler = new TagSoupStyleSheetHandler(null, ac);
+		    handler.parse(is, fileName);
+	
+		    handleRequest(ac, res, fileName, handler.getStyleSheet(), output,
+				  warningLevel, errorReport);
+		}
+	    } catch (ProtocolException pex) {
+		if (Util.onDebug) {
+		    pex.printStackTrace();
+		}
+		res.setHeader("WWW-Authenticate", pex.getMessage());
+		res.sendError(HttpServletResponse.SC_UNAUTHORIZED);
+	    } catch (Exception e) {
+		handleError(res, ac, output, fileName, e, false);
+	    }
+	}
+	Util.verbose("CssValidator: Request terminated.\n");
+    }
+
+    /**
+     * This method is used for the direct input
+     * If the &lt;style&gt; tag is found, it may be an HTML entry
+     * The exception is when this tag is inside comment
+     * It might also be an HTML document with no CSS => why ?
+     * Or with only imports (we can't chack thoses imports...)
+     * @param text, the textarea to test
+     * @return <tt>false</tt> if it contains the style tag well formed 
+     */
+    private boolean isCSS(String text) {
+	try {
+	    text = text.toLowerCase();
+	    int p = text.indexOf("<style");
+	    return p == -1 || p > text.indexOf("</style>");
+	} catch (Exception e) {
+	    System.err.println("error: " + e.getMessage());
+	    return true;
+	}
+		
+    }
+
+    /**
+     * Performs the HTTP POST operation. An HTTP BAD_REQUEST error is reported
+     * if an error occurs. The headers that are set should include content type,
+     * length, and encoding. Setting content length allows the servlet to take
+     * advantage of HTTP "connection keep alive". If content length can not be
+     * set in advance, the performance penalties associated with not using keep
+     * alives will sometimes be avoided if the response entity fits in an
+     * internal buffer. The servlet implementor must write the headers before
+     * the response data because the headers can be flushed at any time after
+     * the data starts to be written.
+     *
+     * <P>
+     * This method does not need to be either "safe" or "idempotent". Operations
+     * requested through POST could be ones for which users need to be held
+     * accountable. Specific examples including updating stored data or buying
+     * things online.
+     *
+     * <P>
+     * <DL>
+     * <STRONG>Forms parameters:</STRONG>
+     * <DT>file
+     * <DD>The input file to be parsed.
+     * <DT>output
+     * <DD>The format output.
+     * <DT>input
+     * <DD>HTML if the user have an HTML input or XML otherwise.
+     * </DL>
+     *
+     * @param req
+     *            encapsulates the request to the servlet
+     * @param resp
+     *            encapsulates the response from the servlet
+     * @exception ServletException
+     *                if the request could not be handled
+     * @exception IOException
+     *                if detected when handling the request
+     * @see org.w3c.css.css.StyleSheetGenerator
+     */
+    public void doPost(HttpServletRequest req, HttpServletResponse res)
+	throws ServletException, IOException {
+
+	String lang = null;	
+	try {
+	    lang = req.getParameter("lang");
+	}
+	catch(Exception e) {
+	    lang = null;
+	}
+
+	boolean errorReport = true;
+	int warningLevel = 2;
+	CssParser parser = null;
+	FakeFile file = null;
+	String text = null;
+	String output = null;
+	//boolean XMLinput = false;
+	String warning = null;
+	String error = null;
+	String profile = "none";
+	String usermedium = "all";
+
+	ServletInputStream in = req.getInputStream();
+
+	byte[] buf = new byte[2048];
+	byte[] general = new byte[65536];
+	int count = 0;
+	int len;
+
+	if (req.getParameter("debug") != null) {
+	    Util.onDebug = req.getParameter("debug").equals("true");
+	    if (Util.onDebug) {
+		System.err.println("SWITCH DEBUG MODE REQUEST");
+	    }
+	}
+	else {
+	    Util.onDebug = false;
+	}
+
+	Util.verbose("\nCssValidator: Servlet request ");
+	// verbose("From " + req.getRemoteHost() +
+	// " (" + req.getRemoteAddr() + ") at " + (new Date()) );
+	Util.verbose("Content-length : " + req.getContentLength());
+
+	if (req.getContentType().trim().startsWith("multipart/form-data")) {
+	    Util.verbose("Content-type : multipart/form-data");
+	}
+
+	try {
+	    while ((len = in.readLine(buf, 0, buf.length)) != -1) {
+		if (len >= 2 && buf[len - 1] == '\n' && buf[len - 2] == '\r') {
+		    len -= 1;
+		    buf[len - 1] = (byte) '\n';
+		}
+		if (len != 0 && buf[len - 1] == '\r') {
+		    buf[len - 1] = (byte) '\n';
+		}
+
+		if (general.length < (count + len)) {
+		    byte[] old = general;
+		    general = new byte[old.length * 2];
+		    System.arraycopy(old, 0, general, 0, old.length);
+		}
+		System.arraycopy(buf, 0, general, count, len);
+		count += len;
+	    }
+	} finally {
+	    in.close();
+	}
+	
+	try {
+	    buf = new byte[count];
+	    System.arraycopy(general, 0, buf, 0, count);
+	    NVPair[] tmp = Codecs.mpFormDataDecode(buf, req.getContentType());
+	    for (int i = 0; i < tmp.length; i++) {
+		if (tmp[i].getName().equals("file")) {
+		    file = (FakeFile) tmp[i].getValue();
+		} else if (tmp[i].getName().equals("text")) {
+		    text = (String) tmp[i].getValue();
+		} else if (tmp[i].getName().equals("lang")) {
+		    lang = (String) tmp[i].getValue();
+		} else if (tmp[i].getName().equals("output")) {
+		    output = (String) tmp[i].getValue();
+		} else if (tmp[i].getName().equals("warning")) {
+		    warning = (String) tmp[i].getValue();
+		} else if (tmp[i].getName().equals("error")) {
+		    warning = (String) tmp[i].getValue();
+		    //} else if (tmp[i].getName().equals("input")) {
+		    //    XMLinput = ((String) tmp[i].getValue()).equals("XML");
+		} else if (tmp[i].getName().equals("profile")) {
+		    profile = (String) tmp[i].getValue();
+		} else if (tmp[i].getName().equals("usermedium")) {
+		    usermedium = (String) tmp[i].getValue();
+		    if (usermedium == null || "".equals(usermedium)) {
+			usermedium = "all";
+		    }
+		}
+	    }
+	} catch (Exception e) {
+	    System.out.println("Oups! Error in Util/Codecs.java?!?");
+	    e.printStackTrace();
+	}
+
+	
+	if(lang == null || lang.equals("")) {
+	    lang = req.getHeader("Accept-Language");
+	}
+	else {
+	    lang += ',' + req.getHeader("Accept-Language");
+	}
+	
+	ApplContext ac = new ApplContext(lang);
+	ac.setLink(req.getQueryString());
+	ac.setMedium(usermedium);
+
+	if (output == null) {
+	    output = texthtml;
+	}
+	if ((file == null || file.getSize() == 0) && 
+	    (text == null || text.length() == 0)) {
+	    // res.sendError(res.SC_BAD_REQUEST,
+	    // "You have send an invalid request");
+	    handleError(res, ac, output, "No file",
+		    	new IOException(ac.getMsg().getServletString(
+							   "invalid-request")),
+		    	false);
+	    return;
+	}
+
+	// set the warning output
+	if (warning != null) {
+	    if (warning.equals("no")) {
+		warningLevel = -1;
+	    } else {
+		try {
+		    warningLevel = Integer.parseInt(warning);
+		} catch (Exception e) {
+		    System.err.println(e);
+		}
+	    }
+	    ac.setWarningLevel(warningLevel);
+	}
+
+	// set the error report
+	if (error != null && error.equals("no")) {
+	    errorReport = false;
+	}
+
+	// CSS version
+	if (profile != null && (!"none".equals(profile) ||"".equals(profile))) {
+	    if ("css1".equals(profile) || "css2".equals(profile)
+		|| "css21".equals(profile)
+		|| "css3".equals(profile) || "svg".equals(profile)
+		|| "svgbasic".equals(profile) || "svgtiny".equals(profile)) {
+	    	ac.setCssVersion(profile);
+	    } else {
+		ac.setProfile(profile);
+		ac.setCssVersion(PropertiesLoader.config.getProperty(
+							     "defaultProfile"));
+	    }
+	} else {
+	    ac.setProfile("none");
+	    ac.setCssVersion(PropertiesLoader.config.getProperty(
+							     "defaultProfile"));
+	}
+	String fileName = "";
+	InputStream is = null;
+	boolean isCSS = false;
+	
+	if (file != null && file.getSize() != 0) {
+	    ac.setFakeFile(file);
+	    fileName = file.getName();
+	    Util.verbose("File : " + fileName);
+	    // another way to get file type...
+	    isCSS = file.getContentType().equals(textcss);
+	} else if (text != null ) {
+	    ac.setFakeText(text);
+	    fileName = "TextArea";
+	    Util.verbose("- " + fileName + " Data -");
+	    Util.verbose(text);
+	    Util.verbose("- End of " + fileName + " Data");
+	    //quick test that works in most cases to determine wether it's 
+	    //HTML or CSS
+	    isCSS = isCSS(text);
+	}
+	fileName = "file://localhost/" + fileName;
+  	try {
+	    URL u = new URL(fileName);
+	    is = ac.getFakeInputStream(u);
+
+	    ac.setFakeURL(fileName);
+	    if (isCSS) {
+		//if CSS:
+		parser = new StyleSheetParser();
+		parser.parseStyleElement(ac, is, null, usermedium,
+					 new URL(fileName), 0);
+	  	  
+		handleRequest(ac, res, fileName, parser.getStyleSheet(),
+			      output, warningLevel, errorReport);
+	    } else {
+		// else, trying HTML
+		TagSoupStyleSheetHandler handler;
+		handler = new TagSoupStyleSheetHandler(null, ac);
+		handler.parse(is, fileName);
+
+		handleRequest(ac, res, fileName, handler.getStyleSheet(),
+			      output, warningLevel, errorReport);
+	    }
+	} catch (ProtocolException pex) {
+	    if (Util.onDebug) {
+		//pex.printStackTrace();
+	    }
+	    res.setHeader("WWW-Authenticate", pex.getMessage());
+	    res.sendError(HttpServletResponse.SC_UNAUTHORIZED);
+  	} catch (Exception e) {
+  	    handleError(res, ac, output, fileName, e, false);
+  	}
+  
+  
+	Util.verbose("CssValidator: Request terminated.\n");
+    }
+
+    private void handleRequest(ApplContext ac, HttpServletResponse res,
+			       String title, StyleSheet styleSheet,
+			       String output, int warningLevel,
+			       boolean errorReport) throws Exception {
+
+	buildHeader(ac, res, output);
+
+	if (styleSheet == null) {
+	    throw new IOException(ac.getMsg().getServletString("process") + " "
+				  + title);
+	}
+
+	// if the output parameter was a mime type, we convert it
+	// to an understandable value for the StyleReportFactory
+	if ("text/xml".equals(ac.getInput()) && texthtml.equals(output)) {
+	    output = "xhtml";
+	} else if (texthtml.equals(output)) {
+	    output = "html";
+	} else if (soap12.equals(output)) {
+	    output = "soap12";
+	} else if (json.equals(output)) {
+	    output = "json";
+	} else if(textplain.equals(output)) {
+	    output = "text";
+	}
+	styleSheet.findConflicts(ac);
+
+	StyleReport style = StyleReportFactory.getStyleReport(ac, title,
+							      styleSheet, output, warningLevel);
+	if (!errorReport) {
+	    style.desactivateError();
+	}
+	PrintWriter out = getLocalPrintWriter(res.getOutputStream(), ac
+					      .getContentEncoding());
+	int nb_errors = styleSheet.getErrors().getErrorCount();
+	res.setHeader(headers_name + "Errors", String.valueOf(nb_errors));
+	res.setHeader(headers_name + "Status", nb_errors == 0 ? "Valid" : "Invalid");
+
+	try {
+	    style.print(out);
+	    
+	} finally {
+	    out.close();
+	}
+    }
+
+    /**
+     * Generates the response header
+     * @param ac
+     * @param res
+     * @param output
+     * @throws MimeTypeFormatException
+     */
+    private void buildHeader(ApplContext ac, HttpServletResponse res, 
+			     String output)
+    {
+	// I don't want cache for the response (inhibits proxy)
+	res.setHeader("Pragma", "no-cache"); // @@deprecated
+	res.setHeader("Cache-Control", "no-cache");
+	// Here is a little joke :-)
+	// res.setHeader("Server", server_name);
+
+	if(output == null) {
+	    output = new String(texthtml);
+	}
+
+	// set the content-type for the response
+	MimeType outputMt = null;
+	if (output.equals(texthtml) || output.equals("html")) {	    
+	    outputMt = MimeType.TEXT_HTML.getClone();
+	} else if (output.equals(applxhtml) || output.equals("xhtml")) {
+	    outputMt = MimeType.APPLICATION_XHTML_XML.getClone();
+	} else if (output.equals(soap12) || output.equals("soap12")) {
+	    // invert the comments on the following lines to (de)activate
+	    // the soap Mime Type
+	    try {
+		outputMt = new MimeType(soap12);
+	    }
+	    catch (MimeTypeFormatException e) {
+		outputMt = MimeType.TEXT_PLAIN.getClone();
+	    }
+	    //outputMt = MimeType.TEXT_PLAIN.getClone();
+	} else if(output.equals("ucn")) {
+	    outputMt = MimeType.APPLICATION_XML.getClone();
+        } else if(output.equals("json")) {
+            try {
+                outputMt = new MimeType(json);
+            }
+            catch (MimeTypeFormatException e) {
+                outputMt = MimeType.TEXT_PLAIN.getClone();
+            }
+	} else {
+	    // Change this line if you want text/html output when incorrect
+	    // output is passed
+	    outputMt = MimeType.TEXT_PLAIN.getClone();
+	}
+
+	if(ac != null) {
+	    // ignore content encoding if output is SOAP
+	    if(output.equals("soap12")) {
+		ac.setContentEncoding(null);
+	    }
+
+	    if (ac.getContentEncoding() != null) {
+		outputMt.setParameter("charset", ac.getContentEncoding());
+	    }
+	    res.setContentType(outputMt.toString());
+
+	    if (ac.getContentLanguage() != null) {
+		res.setHeader("Content-Language", ac.getContentLanguage());
+	    } else {
+		res.setHeader("Content-Language", "en");
+	    }
+	}
+	else {
+	    res.setHeader("Content-Language", "en");
+	    res.setHeader("charset", Utf8Properties.ENCODING);
+	}
+	res.setHeader("Vary", "Accept-Language");
+    }
+
+    private void handleError(HttpServletResponse res, ApplContext ac,
+			     String output, String title, Exception e,
+			     boolean validURI)
+    	throws IOException {
+
+	System.err.println("[ERROR VALIDATOR] " + title);
+	System.err.println(e.toString());
+	e.printStackTrace();
+
+	buildHeader(ac, res, output);
+	res.setStatus(500);
+
+	if((e instanceof java.net.UnknownHostException) ||
+	   ((e instanceof java.io.FileNotFoundException) &&
+	    ((e.getMessage().indexOf("Not Found") != -1) ||
+	     (e.getMessage().indexOf("Service Unavailable") != -1)))) {
+	    validURI = true;
+	}
+	else {
+	    validURI = false;
+	}
+
+	PrintWriter out = getLocalPrintWriter(res.getOutputStream(), ac
+					      .getContentEncoding());
+
+	ErrorReport error = ErrorReportFactory.getErrorReport(ac, title, output,
+							      e, validURI);
+	res.setHeader(headers_name + "Status", "Abort");
+
+	try {
+	    error.print(out);
+	}
+	finally {
+	    out.close();
+	}
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidator-removed-src/servlet/Makefile	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,24 @@
+SRCS = CssValidator.java
+
+OBJS = $(SRCS:.java=.class)
+
+PACKAGE = org.w3c.css.servlet
+JAVAC = jc -val
+JAVADOC = javadoc
+JAVADOCFLAGS = -version -d docs -protected
+JAVACFLAGS =
+MAKEDEPEND = jmakedepend
+
+.SUFFIXES: .class .java
+.java.class:; $(JAVAC) $(JAVACFLAGS) $<
+
+all: $(OBJS)
+
+javadoc:; $(JAVADOC) $(JAVADOCFLAGS) $(PACKAGE)
+
+clean:; -rm -f $(OBJS) *~ core
+
+depend:; $(MAKEDEPEND) $(SRCS)
+
+# DO NOT DELETE THIS LINE -- make depend depends on it.
+CssValidator.class:: CssValidator.java
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidator-removed-src/servlet/check.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,105 @@
+//
+// $Id: check.java,v 1.14 2009-02-24 21:45:14 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 org.w3c.css.servlet;
+
+import java.io.IOException;
+
+import java.net.URLEncoder;
+
+import java.util.Enumeration;
+
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * This class is a servlet to use the validator.
+ *
+ * @version $Revision: 1.14 $
+ */
+public final class check extends HttpServlet {
+
+    private static String validatorURI = null;
+
+
+    /**
+     * Performs the HTTP GET operation.
+     * It redirects to the value contained in "Referer"
+     *
+     * @param req encapsulates the request to the servlet.
+     * @param resp encapsulates the response from the servlet.
+     * @exception ServletException if the request could not be handled.
+     * @exception IOException if detected when handling the request.
+     */
+    public void doGet(HttpServletRequest req, HttpServletResponse res)
+	throws ServletException, IOException
+    {
+
+	String uri = req.getHeader("Referer");
+	String encodeEnc = req.getCharacterEncoding();
+	if (encodeEnc == null) {
+	    encodeEnc = "8859_1";
+	}
+	uri = URLEncoder.encode(uri, encodeEnc);
+
+	if (uri == null) {
+	    res.setContentType("text/plain");
+	    res.sendError(400, "Referer field empty");
+	    return;
+	}
+	res.setHeader("Cache-Control", "max-age=86400");
+	res.setHeader("Vary", "Referer");
+
+	Enumeration e = req.getParameterNames();
+	StringBuilder sb = new StringBuilder(validatorURI);
+	boolean first = true;
+	boolean uridone = false;
+
+	if (e != null) {
+	    while (e.hasMoreElements()) {
+		String paramname = (String) e.nextElement();
+		String paramvalue = req.getParameter(paramname);
+		if ("uri".equals(paramname)) {
+		    uridone = true;
+		    paramvalue = uri;
+		}
+		if (first) {
+		    sb.append('?');
+		    first = false;
+		} else {
+		    sb.append('&');
+		}
+		sb.append(paramname);
+		if (paramvalue != null) {
+		    sb.append('=');
+		    sb.append(paramvalue);
+		}
+	    }
+	}
+	if (!uridone) {
+	    if (first) {
+		sb.append("?uri=");
+	    } else {
+		sb.append("&uri=");
+	    }
+	    sb.append(uri);
+	}
+	res.sendRedirect(sb.toString());
+    }
+
+    public void init(ServletConfig config) throws ServletException {
+	super.init(config);
+	if (config.getInitParameter("validatorURI") == null) {
+	    validatorURI = "validator";
+	} else {
+	    validatorURI = config.getInitParameter("validatorURI");
+	}
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/cssvalidator-removed-src/servlet/error.html	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,18 @@
+<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'
+                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html lang='en' xml:lang='en' xmlns='http://www.w3.org/1999/xhtml'>
+  <head>
+    <meta name="ROBOTS" content="NOINDEX, NOFOLLOW" />
+    <title>CSS Validator : Error</title>
+    <link type="text/css" rel='stylesheet' href='http://jigsaw.w3.org/css-validator/style/error.css' />
+  </head>
+
+  <body>
+    <div>
+      <a href="http://www.w3.org/"><img src="http://www.w3.org/Icons/w3c_home" alt="w3c" /></a>
+    </div>
+    <hr />
+    <div class="t1">CSS</div>
+    <div class="t2">Validator</div>
+    <div class="t3">Error</div>
+      
Binary file org.symbian.tools.wrttools/icons/Thumbs.db has changed
Binary file org.symbian.tools.wrttools/icons/flickr.gif has changed
Binary file org.symbian.tools.wrttools/icons/main16.gif has changed
Binary file org.symbian.tools.wrttools/icons/rss.gif has changed
Binary file org.symbian.tools.wrttools/lib/tagsoup-1.2.jar has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/licenses/cssvalidator-license.html	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,93 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang='en' lang='en'>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+<link rel="stylesheet" type="text/css" href="http://www.w3.org/StyleSheets/base.css" />
+<title>W3C IPR SOFTWARE NOTICE</title>
+</head>
+<body>
+<h1>W3C<sup>&reg;</sup> SOFTWARE NOTICE AND LICENSE</h1>
+
+<h3>Copyright &copy; 1997-2002 <a href="http://www.w3.org/">World
+Wide Web Consortium</a>, (<a
+href="http://www.lcs.mit.edu/">Massachusetts Institute of
+Technology</a>, <a href="http://www.inria.fr/">Institut National de
+Recherche en Informatique et en Automatique</a>, <a
+href="http://www.keio.ac.jp/">Keio University</a>). All Rights
+Reserved. http://www.w3.org/Consortium/Legal/</h3>
+
+<p>This W3C work (including software, documents, or other related
+items) is being provided by the copyright holders under the
+following license. By obtaining, using and/or copying this work,
+you (the licensee) agree that you have read, understood, and will
+comply with the following terms and conditions:</p>
+
+<p>Permission to use, copy, modify, and distribute this software
+and its documentation, with or without modification,&nbsp; for any
+purpose and without fee or royalty is hereby granted, provided that
+you include the following on ALL copies of the software and
+documentation or portions thereof, including modifications, that
+you make:</p>
+
+<ol>
+<li>The full text of this NOTICE in a location viewable to users of
+the redistributed or derivative work.</li>
+
+<li>Any pre-existing intellectual property disclaimers, notices, or
+terms and conditions. If none exist, a short notice of the
+following form (hypertext is preferred, text is permitted) should
+be used within the body of any redistributed or derivative code:
+"Copyright &copy; [$date-of-software] <a
+href="http://www.w3.org/">World Wide Web Consortium</a>, (<a
+href="http://www.lcs.mit.edu/">Massachusetts Institute of
+Technology</a>, <a href="http://www.inria.fr/">Institut National de
+Recherche en Informatique et en Automatique</a>, <a
+href="http://www.keio.ac.jp/">Keio University</a>). All Rights
+Reserved. http://www.w3.org/Consortium/Legal/"</li>
+
+<li>Notice of any changes or modifications to the W3C files,
+including the date changes were made. (We recommend you provide
+URIs to the location from which the code is derived.)</li>
+</ol>
+
+<p>THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND
+COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF
+MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE
+USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD
+PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.</p>
+
+<p>COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT,
+SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE
+SOFTWARE OR DOCUMENTATION.</p>
+
+<p>The name and trademarks of copyright holders may NOT be used in
+advertising or publicity pertaining to the software without
+specific, written prior permission. Title to copyright in this
+software and any associated documentation will at all times remain
+with copyright holders.</p>
+
+<p>____________________________________</p>
+
+<p>This formulation of W3C's notice and license became active on
+August 14 1998 so as to improve compatibility with GPL. This
+version ensures that W3C software licensing terms are no more
+restrictive than GPL and consequently W3C software may be
+distributed in GPL packages. See the <a
+href="copyright-software-19980519.html">older formulation</a> for
+the policy prior to this date. Please see our <a
+href="IPR-FAQ.html">Copyright FAQ</a> for common questions about
+using materials from our site, including specific terms and
+conditions for packages like libwww, Amaya, and Jigsaw. Other
+questions about this notice can be directed to <a
+href="mailto:site-policy@w3.org">site-policy@w3.org</a>.<br />
+&nbsp;</p>
+
+<p>&nbsp;</p>
+
+<address><a href="http://www.w3.org/Help/Webmaster.html">webmaster</a><br />
+ (last updated $Date: 2004-05-29 04:04:36 $)</address>
+
+</body>
+</html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/licenses/license.txt	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,70 @@
+Eclipse Public License - v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+b) in the case of each subsequent Contributor:
+i) changes to the Program, and
+ii) additions to the Program;
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program.
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents" mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form.
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement.
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+b) its license agreement:
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose;
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits;
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange.
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+b) a copy of this Agreement must be included with each copy of the Program.
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/licenses/tagsoup-license.txt	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
\ No newline at end of file
--- a/org.symbian.tools.wrttools/plugin.xml	Thu Jan 07 14:00:45 2010 -0800
+++ b/org.symbian.tools.wrttools/plugin.xml	Thu Jan 07 14:06:06 2010 -0800
@@ -30,26 +30,77 @@
             id="org.symbian.tools.wrttools.builder.PropertiesFileAuditor">
       </builder>
    </extension>
-   
+   <extension-point id="projectTemplates" name="WRT application project templates" schema="schema/projectTemplates.exsd"/>
+    <extension
+         id="org.symbian.tools.wrttools.core.cssvalidator"
+         name="CSS Validator"
+         point="org.eclipse.wst.validation.validatorV2">
+      <validator
+            build="true"
+            class="org.symbian.tools.wrttools.core.internal.validation.CssBuildValidator"
+            manual="true"
+            markerId="org.symbian.tools.wrttools.core.cssValidationMarker"
+            version="0.0.1">
+         <include>
+            <rules>
+               <contentType
+                     exactMatch="false"
+                     id="org.eclipse.wst.css.core.csssource">
+               </contentType>
+            </rules>
+         </include>
+      </validator>
+   </extension>
    <extension
          point="org.eclipse.ui.newWizards">
       <category
-            name="Web Runtime (WRT)"
-            id="org.symbian.tools.wrttools.newWizards.widget">
+            id="org.symbian.tools.wrttools.core.category"
+            name="Symbian WRT">
       </category>
       <wizard
-            category="org.symbian.tools.wrttools.newWizards.widget"
-            class="org.symbian.tools.wrttools.wizards.WRTProjectWizard"
-            finalPerspective="org.eclipse.ui.resourcePerspective"
+            category="org.symbian.tools.wrttools.core.category"
+            class="org.symbian.tools.wrttools.wizards.WrtWidgetWizard"
+            finalPerspective="org.eclipse.wst.jsdt.ui.JavaPerspective"
+            hasPages="true"
             icon="icons/main16.gif"
-            id="org.symbian.tools.wrt.wizards.WRTProjectWizard"
-            name="New Web Runtime Widget"
+            id="org.symbian.tools.wrttools.core.wrtwidgetwizard"
+            name="WRT Widget"
             project="true">
          <description>
-            Creates a new widget based on existing project workspaces.
+            Creates a new Symbian WRT widget project using one of the provided templates
          </description>
       </wizard>
    </extension>
+   <extension
+         point="org.symbian.tools.wrttools.projectTemplates">
+      <projectTemplate
+            archive="projecttemplates/basic.zip"
+            default-css-name="basic"
+            default-html-name="index"
+            default-js-name="basic"
+            icon="icons/main16.gif"
+            id-pattern="com.{0}.basic.widget"
+            name="Basic Widget Project">
+         <description>
+            This wizard generates an empty widget project with a minimal Info.plist, html,css and js.
+         </description>
+      </projectTemplate>
+   </extension>
+   <extension
+         point="org.eclipse.ui.importWizards">
+      <category
+            id="org.symbian.tools.wrttools.import"
+            name="WRT Tools">
+      </category>
+      <wizard
+            category="org.symbian.tools.wrttools.import"
+            class="org.symbian.tools.wrttools.wizards.AptanaProjectsImportWizard"
+            icon="icons/main16.gif"
+            id="org.symbian.tools.wrttools.import.aptanaImport"
+            name="Aptana IDE WRT Project">
+      </wizard>
+   </extension>
+
    
    <extension
          id="org.eclipse.wst.xml.ui.ExampleProjectCreationWizardExtension"
Binary file org.symbian.tools.wrttools/projecttemplates/basic.zip has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/schema/projectTemplates.exsd	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,171 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.symbian.tools.wrttools.editing.core" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+      <appinfo>
+         <meta.schema plugin="org.symbian.tools.wrttools.editing.core" id="projectTemplates" name="WRT application project templates"/>
+      </appinfo>
+      <documentation>
+         [Enter description of this extension point.]
+      </documentation>
+   </annotation>
+
+   <element name="extension">
+      <annotation>
+         <appinfo>
+            <meta.element />
+         </appinfo>
+      </annotation>
+      <complexType>
+         <sequence minOccurs="0" maxOccurs="unbounded">
+            <element ref="projectTemplate"/>
+         </sequence>
+         <attribute name="point" type="string" use="required">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="id" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="name" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+               <appinfo>
+                  <meta.attribute translatable="true"/>
+               </appinfo>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <element name="projectTemplate">
+      <complexType>
+         <sequence>
+            <element ref="description" minOccurs="0" maxOccurs="1"/>
+         </sequence>
+         <attribute name="name" type="string" use="required">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+               <appinfo>
+                  <meta.attribute translatable="true"/>
+               </appinfo>
+            </annotation>
+         </attribute>
+         <attribute name="icon" type="string" use="required">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+               <appinfo>
+                  <meta.attribute kind="resource"/>
+               </appinfo>
+            </annotation>
+         </attribute>
+         <attribute name="archive" type="string" use="required">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+               <appinfo>
+                  <meta.attribute kind="resource"/>
+               </appinfo>
+            </annotation>
+         </attribute>
+         <attribute name="id-pattern" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="default-html-name" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="default-css-name" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="default-js-name" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="wizard-page-factory" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+               <appinfo>
+                  <meta.attribute kind="java" basedOn=":org.symbian.tools.wrttools.editing.core.wizard.IWizardPageFactory"/>
+               </appinfo>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <element name="description" type="string">
+      <annotation>
+         <appinfo>
+            <meta.element translatable="true"/>
+         </appinfo>
+      </annotation>
+   </element>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="since"/>
+      </appinfo>
+      <documentation>
+         [Enter the first release in which this extension point appears.]
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="examples"/>
+      </appinfo>
+      <documentation>
+         [Enter extension point usage example here.]
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="apiinfo"/>
+      </appinfo>
+      <documentation>
+         [Enter API information here.]
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="implementation"/>
+      </appinfo>
+      <documentation>
+         [Enter information about supplied implementation of this extension point.]
+      </documentation>
+   </annotation>
+
+
+</schema>
--- a/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/Activator.java	Thu Jan 07 14:00:45 2010 -0800
+++ b/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/Activator.java	Thu Jan 07 14:06:06 2010 -0800
@@ -18,6 +18,8 @@
  */
 package org.symbian.tools.wrttools;
 
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
 import org.eclipse.ui.plugin.AbstractUIPlugin;
 import org.osgi.framework.BundleContext;
 
@@ -64,5 +66,13 @@
 	public static Activator getDefault() {
 		return plugin;
 	}
+	
+	public static void log(Exception e) {
+		log(e.getLocalizedMessage(), e);
+	}
+
+	public static void log(String message, Exception e) {
+		getDefault().getLog().log(new Status(IStatus.ERROR, PLUGIN_ID, message, e));
+	}
 
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/core/ProjectTemplate.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,133 @@
+/*******************************************************************************
+ * Copyright (c) 2009 Symbian Foundation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of the License "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Symbian Foundation - initial contribution.
+ * Contributors:
+ * Description:
+ * Overview:
+ * Details:
+ * Platforms/Drives/Compatibility:
+ * Assumptions/Requirement/Pre-requisites:
+ * Failures and causes:
+ **/
+package org.symbian.tools.wrttools.core;
+
+import java.net.URL;
+
+import org.eclipse.core.databinding.DataBindingContext;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.swt.graphics.Image;
+import org.osgi.framework.Bundle;
+import org.symbian.tools.wrttools.wizards.IWizardPageFactory;
+import org.symbian.tools.wrttools.wizards.WRTProjectDetailsWizardPage;
+import org.symbian.tools.wrttools.wizards.WizardContext;
+import org.symbian.tools.wrttools.Activator;
+
+public class ProjectTemplate {
+	private static ProjectTemplate[] templates;
+	private final IConfigurationElement element;
+
+	private Image icon;
+	
+	public ProjectTemplate(IConfigurationElement element) {
+		this.element = element;
+	}
+	
+	public Image getIcon() {
+		if (icon == null) {
+			String path = element.getAttribute("icon");
+			final ImageDescriptor imageDescriptor;
+			if (path != null) {
+				imageDescriptor = Activator.imageDescriptorFromPlugin(element.getNamespaceIdentifier(), path);
+			} else {
+				imageDescriptor = ImageDescriptor.getMissingImageDescriptor();
+			}
+			icon = imageDescriptor.createImage(true);
+		}
+		return icon;
+	}
+
+	public String getName() {
+		return element.getAttribute("name");
+	}
+	
+	public String getDescription() {
+		IConfigurationElement[] children = element.getChildren("description");
+		if (children.length == 1) {
+			return children[0].getValue();
+		} else {
+			return "";
+		}
+	}
+	
+	public static ProjectTemplate[] getAllTemplates() {
+		if (templates == null) {
+			IExtensionPoint point = Platform.getExtensionRegistry().getExtensionPoint(Activator.PLUGIN_ID, "projectTemplates");
+			IConfigurationElement[] elements = point.getConfigurationElements();
+			templates = new ProjectTemplate[elements.length];
+			for (int i = 0; i < elements.length; i++) {
+				IConfigurationElement element = elements[i];
+				templates[i] = new ProjectTemplate(element);
+			}
+		}
+		return templates;
+	}
+
+	public String getDefaultCssFile() {
+		String file = element.getAttribute("default-css-name");
+		return file != null ? file : "main";
+	}
+
+	public String getDefaultJsFile() {
+		String file = element.getAttribute("default-js-name");
+		return file != null ? file : "main";
+	}
+
+	public String getDefaultHtmlFile() {
+		String file = element.getAttribute("default-html-name");
+		return file != null ? file : "index";
+	}
+
+	public String getIdFormat() {
+		String pattern = element.getAttribute("id-pattern");
+		return pattern != null ? pattern : "com.{0}.widget";
+	}
+
+	public WRTProjectDetailsWizardPage createWizardPage(WizardContext context,
+			DataBindingContext bindingContext) {
+		try {
+			if (element.getAttribute("wizard-page-factory") != null) {
+				IWizardPageFactory factory = (IWizardPageFactory) element.createExecutableExtension("wizard-page-factory");
+				return factory.createPage(context, bindingContext);
+			}
+		}catch (CoreException e) {
+			Activator.log("Problem with template " + getName(), e);
+		}
+		return new WRTProjectDetailsWizardPage(context, bindingContext);
+	}
+	
+	@Override
+	public String toString() {
+		return getName();
+	}
+
+	public URL getProjectContents() {
+		String uri = element.getAttribute("archive");
+		if (uri != null) {
+			Bundle bundle = Platform.getBundle(element.getContributor().getName());
+			URL resource = bundle.getResource(uri);
+			return resource;
+		}
+		return null;
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/core/internal/validation/CssBuildValidator.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,129 @@
+/*******************************************************************************
+ * Copyright (c) 2009 Symbian Foundation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of the License "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Symbian Foundation - initial contribution.
+ * Contributors:
+ * Description:
+ * Overview:
+ * Details:
+ * Platforms/Drives/Compatibility:
+ * Assumptions/Requirement/Pre-requisites:
+ * Failures and causes:
+ *******************************************************************************/
+package org.symbian.tools.wrttools.core.internal.validation;
+
+import java.io.IOException;
+
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.wst.validation.AbstractValidator;
+import org.eclipse.wst.validation.ValidationResult;
+import org.eclipse.wst.validation.ValidationState;
+import org.eclipse.wst.validation.ValidatorMessage;
+import org.symbian.tools.wrttools.Activator;
+import org.w3c.*;
+import org.w3c.css.css.DocumentParser;
+import org.w3c.css.css.StyleSheet;
+import org.w3c.css.parser.CssError;
+import org.w3c.css.properties.PropertiesLoader;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.Warning;
+
+public class CssBuildValidator extends AbstractValidator {
+
+	@Override
+	public ValidationResult validate(IResource resource, int kind,
+			ValidationState state, IProgressMonitor monitor) {
+		return main(resource.getLocationURI().toString(), resource);
+	}
+
+	public ValidationResult main(String uri, IResource resource) {
+		String language = "en";
+		String profile = "css3"; // css2, css21 (default), css3, svg, svgbasic,
+		// svgtiny, atsc-tv, mobile, tv
+		String medium = ""; // (default), aural, braille, embossed,
+		// handheld, print, projection, screen,
+		// tty, tv, presentation
+		int warningLevel = 2; // -1 (no warning), 0, 1, 2 (default, all the
+		// warnings)
+
+		// first, we get the parameters and create an application context
+		ApplContext ac = new ApplContext(language);
+
+		if (profile != null && !"none".equals(profile)) {
+			if ("css1".equals(profile) || "css2".equals(profile)
+					|| "css21".equals(profile) || "css3".equals(profile)
+					|| "svg".equals(profile) || "svgbasic".equals(profile)
+					|| "svgtiny".equals(profile)) {
+				ac.setCssVersion(profile);
+			} else {
+				ac.setProfile(profile);
+				ac.setCssVersion(PropertiesLoader.config
+						.getProperty("defaultProfile"));
+			}
+		} else {
+			ac.setProfile(profile);
+			ac.setCssVersion(PropertiesLoader.config
+					.getProperty("defaultProfile"));
+		}
+
+		// medium to use
+		ac.setMedium(medium);
+
+		// HTML document
+		try {
+			DocumentParser URLparser = new DocumentParser(ac, uri);
+
+			return handleRequest(ac, uri, URLparser.getStyleSheet(),
+					warningLevel, true, resource);
+		} catch (Exception e) {
+			Activator.log(e);
+		}
+		return null;
+	}
+
+	private ValidationResult handleRequest(ApplContext ac, String title,
+			StyleSheet styleSheet, int warningLevel,
+			boolean errorReport, IResource resource) throws Exception {
+
+		if (styleSheet == null) {
+			throw new IOException(ac.getMsg().getServletString("process") + " "
+					+ title);
+		}
+
+		styleSheet.findConflicts(ac);
+		ValidationResult result = new ValidationResult();
+		CssError[] errors = styleSheet.getErrors().getErrors();
+		for (CssError cssError : errors) {
+			String msg = cssError.getException().getLocalizedMessage();
+			if (msg != null && msg.trim().length() > 0) {
+				ValidatorMessage message = createMessage(resource, cssError
+						.getLine(), msg, IMarker.SEVERITY_ERROR);
+				result.add(message);
+			}
+		}
+		Warning[] warnings = styleSheet.getWarnings().getWarnings();
+		for (Warning warning : warnings) {
+			ValidatorMessage message = createMessage(resource, warning
+					.getLine(), warning.getWarningMessage(),
+					IMarker.SEVERITY_WARNING);
+			result.add(message);
+		}
+		return result;
+	}
+
+	private ValidatorMessage createMessage(IResource resource, int line,
+			String msg, int severity) {
+		ValidatorMessage message = ValidatorMessage.create(msg, resource);
+		message.setAttribute(IMarker.LINE_NUMBER, line);
+		message.setAttribute(IMarker.SEVERITY, severity);
+		return message;
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/projects/ProjectUtils.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,53 @@
+/**
+ * Copyright (c) 2009 Symbian Foundation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of the License "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Symbian Foundation - initial contribution.
+ * Contributors:
+ * Description:
+ * Overview:
+ * Details:
+ * Platforms/Drives/Compatibility:
+ * Assumptions/Requirement/Pre-requisites:
+ * Failures and causes:
+ */
+package org.symbian.tools.wrttools.projects;
+
+import java.net.URI;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.SubProgressMonitor;
+import org.eclipse.wst.jsdt.internal.ui.wizards.buildpaths.BuildPathsBlock;
+import org.eclipse.wst.validation.ValidationFramework;
+
+public class ProjectUtils {
+	public static IProject createWrtProject(String name, URI uri, IProgressMonitor monitor) throws CoreException {
+		monitor.beginTask("Create project resources", 20);
+		IWorkspace workspace = ResourcesPlugin.getWorkspace();
+		IProject project = workspace.getRoot().getProject(
+				name);
+		BuildPathsBlock.createProject(project, uri,
+				new SubProgressMonitor(monitor, 10));
+
+		BuildPathsBlock.addJavaNature(project, new SubProgressMonitor(monitor,
+				10));
+
+		// TODO: Build path, super type, etc.
+		// BuildPathsBlock.flush(classPathEntries, javaScriptProject, superType,
+		// monitor)
+
+		ValidationFramework.getDefault().addValidationBuilder(project);
+
+		monitor.done();
+		return project;
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/util/Helper.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,70 @@
+/**
+ * Copyright (c) 2009 Symbian Foundation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of the License "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Symbian Foundation - initial contribution.
+ * Contributors:
+ * Description:
+ * Overview:
+ * Details:
+ * Platforms/Drives/Compatibility:
+ * Assumptions/Requirement/Pre-requisites:
+ * Failures and causes:
+ */
+package org.symbian.tools.wrttools.util;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+public class Helper {
+	public static void logEvent(Logger log, Level level, Throwable throwable)
+	{
+		if (level==Level.SEVERE)
+		{
+			log.severe(throwable.getLocalizedMessage());
+			if(throwable.getCause()!=null)
+			log.severe(throwable.getCause().toString());
+			log.severe(throwable.getStackTrace().toString());
+		}
+		if (level==Level.WARNING)
+		{
+			log.warning(throwable.getLocalizedMessage());
+			if(throwable.getCause()!=null)
+			log.warning(throwable.getCause().toString());
+			log.warning(throwable.getStackTrace().toString());
+		}
+		if (level==Level.INFO)
+		{
+			log.info(throwable.getLocalizedMessage());
+			if(throwable.getCause()!=null)
+			log.info(throwable.getCause().toString());
+			log.info(throwable.getStackTrace().toString());
+		}
+		
+	}
+	
+	public static String replaceChar(String input, char asciiOutChar, char asciiInChar){
+		char x;
+		int ascii ;
+		String outString="";
+		int outCharAscii= (asciiOutChar > 127) ? '?' : (char)(asciiOutChar & 0x7F);
+		int inCharAscii= (asciiInChar > 127) ? '?' : (char)(asciiInChar & 0x7F);
+		
+		for (int i = 0; i < input.length(); i++) {
+
+			 x = input.charAt(i);	
+			 ascii = (x > 127) ? '?' : (char)(x & 0x7F);
+			 
+			 if(ascii==outCharAscii){
+				 outString=outString+asciiInChar;
+			 }else{
+				 outString=outString+x; 
+			 }
+		
+		}
+		return outString;
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/util/Unzip.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,252 @@
+/**
+ * Copyright (c) 2009 Symbian Foundation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of the License "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Symbian Foundation - initial contribution.
+ * Contributors:
+ * Description:
+ * Overview:
+ * Details:
+ * Platforms/Drives/Compatibility:
+ * Assumptions/Requirement/Pre-requisites:
+ * Failures and causes:
+ */
+package org.symbian.tools.wrttools.util;
+
+	import java.io.File;
+	import java.io.FileOutputStream;
+	import java.io.IOException;
+	import java.io.InputStream;
+	import java.util.Enumeration;
+	import java.util.SortedSet;
+	import java.util.TreeSet;
+	import java.util.logging.Level;
+	import java.util.logging.Logger;
+	import java.util.zip.ZipEntry;
+	import java.util.zip.ZipFile;
+
+	import org.eclipse.core.runtime.Platform;
+
+	public class Unzip {
+		private Logger log = Logger.getLogger(getClass().getName());
+		
+		/** Mode listing */
+		public static final int LIST = 0;
+		
+		/** Mode extracting */
+		public static final int EXTRACT = 1;
+		  
+		/** Operating System Property Name */
+		public static final String OSname = System.getProperty("os.name"); //$NON-NLS-1$
+			
+		/** MAC OS */
+		public static final String MAC_OS ="Mac OS X"; //$NON-NLS-1$
+			
+		/** Type of mode: Extracting or Printing TOC */
+		private int mode = LIST;
+		
+		/** Zip file for reading the archive */
+		private ZipFile zipfile;
+		
+		/** Buffer for reading/writing the zip file data */
+		private byte[] b;
+		
+		private String filePath = System.getProperty("java.io.tmpdir");
+		private String inputfileName = null;
+		private boolean warnedMkDir = false;
+		private boolean isAppendNeeded;
+		private String baseFolder;
+		private boolean baseFolderFound = false;
+		private String zipDirName=null;
+		private boolean  zipDirNameCheckSet=false;
+		private boolean webapp=false;
+		public  static boolean canZip = false;
+		
+		public Unzip(boolean isAppendNeeded) {
+		    b = new byte[8092];
+		    this.isAppendNeeded=isAppendNeeded;
+		}		  
+		  
+	   /** For a given Zip file, process each entry. */
+	   private void unZip(String fileName) {
+			log.finest("unzip  <<--->>");
+			//System.out.println("File nam in unzip is   "+fileName);
+		    dirsMade = new TreeSet();
+		    try {
+		      zipfile = new ZipFile(fileName);
+		      //System.out.println("  zipfile name  : "+zipfile.getName());
+		      canZip = true;
+		      zipDirName=zipfile.getName();
+		      
+		      zipDirName= Helper.replaceChar(zipDirName, File.separatorChar, '/');
+		      zipDirName= zipDirName.substring(zipDirName.lastIndexOf('/')+1);
+
+		      if(zipDirName.endsWith(".zip")||(zipDirName.endsWith(".Zip"))){
+		    	  zipDirName= zipDirName.substring(0,zipDirName.lastIndexOf("."));
+		    	  zipDirNameCheckSet=false;
+		    	  webapp=true;
+		      }
+		      else if(((new File(zipfile.getName()).isFile())&&(zipDirName.substring(zipDirName.lastIndexOf("."))).equalsIgnoreCase(".wgz"))){
+		    	  zipDirName= zipDirName.substring(0,zipDirName.lastIndexOf("."));
+		    	  zipDirNameCheckSet=false;
+		    	  webapp=true;
+		      }
+		      Enumeration all = zipfile.entries();
+		      if(zipfile.size()>1){
+		    	  //System.out.println("In if condition...........zipfile size is  :"+zipfile.size());
+		        while (all.hasMoreElements()) {
+		          getFile((ZipEntry) all.nextElement());
+		        }
+	          }
+		      zipfile.close();
+		    } catch (IOException e) {
+		    	 Helper.logEvent(log, Level.SEVERE, e);
+		    	 canZip = false;
+		      return;
+		    }
+			log.finest("unZip  <<---<<");
+		  }
+		  
+
+		  /**
+		   * Process each file from the zip, given its name. 
+		   * Display the name, or create the file on disk.
+		   */
+		  private void getFile(ZipEntry e) throws IOException {
+				log.finest("getFile  >>--->>");
+			  String zipName = e.getName();
+			  
+			  if(webapp){
+				  
+				 String zipNameStartDir = e.getName();
+				 zipNameStartDir= Helper.replaceChar(zipNameStartDir, File.separatorChar, '/');
+				 zipNameStartDir= zipNameStartDir.substring(0,zipNameStartDir.indexOf('/')+1);				 
+				
+				if(zipNameStartDir!=null&&!zipNameStartDir.equalsIgnoreCase(zipDirName+'/')&&!zipDirNameCheckSet) {				
+					  filePath=	  filePath+zipDirName+'/';
+					  zipDirNameCheckSet=true;				  
+				  }
+		  }
+			  if(zipDirNameCheckSet){
+				  int indexOfName1 = zipName.indexOf('/');
+					int indexOfName2 = zipName.indexOf('\\');
+					int actIndex = indexOfName2;
+					if (indexOfName1 > indexOfName2) {
+						actIndex = indexOfName1;
+					}
+				  zipName = zipName.substring(actIndex+1);
+			  }
+			  if(isAppendNeeded && !(Platform.getOS().equals(Platform.OS_MACOSX) || Platform.getOS().equals(Platform.OS_LINUX))){			  
+				  zipName= filePath+zipName;
+			  } else {
+				  zipName= filePath + File.separator +zipName;
+			  }
+			  //System.out.println(" unZip  -------------->> zipEntyName : "+zipName);
+				
+		    switch (mode) {
+		    case EXTRACT:
+		      if (zipName.startsWith("/")  && !(MAC_OS.equals(OSname)||Platform.getOS().equals(Platform.OS_LINUX))) {
+		        if (!warnedMkDir)
+		        warnedMkDir = true;
+		        zipName = zipName.substring(1);
+		      }
+		      // if a directory, just return. We mkdir for every file,
+		      // since some widely-used Zip creators don't put out
+		      // any directory entries, or put them in the wrong place.
+		      if (zipName.endsWith("/")) {
+		        return;
+		      }
+		      // Else must be a file; open the file for output
+		      // Get the directory part.
+		      int ix = zipName.lastIndexOf('/');
+		      if (ix > 0) {
+		        String dirName = zipName.substring(0, ix);
+		       if(!baseFolderFound){
+		        	baseFolder = dirName.substring(dirName.lastIndexOf(File.separator)+1);
+		        	baseFolderFound=true;
+		        }
+		        if (!dirsMade.contains(dirName)) {
+		          File d = new File(dirName);
+		          // If it already exists as a dir, don't do anything
+		          if (!(d.exists() && d.isDirectory())) {
+		            // Try to create the directory, warn if it fails
+		            if (!d.mkdirs()) {
+		            	log.severe("Warning: unable to mkdir "  + dirName);
+		            }
+		            dirsMade.add(dirName);
+		          }
+		        }
+		      }
+		      FileOutputStream os = new FileOutputStream(zipName);
+		      InputStream is = (InputStream) zipfile.getInputStream(e);
+		      int n = 0;
+		      while ((n = is.read(b)) > 0)
+		        os.write(b, 0, n);
+		      is.close();
+		      os.close();
+		      break;
+		    case LIST:
+		      // Not extracting, just list
+		      if (e.isDirectory()) {
+		      } else {
+		      }
+		      break;
+		    default:
+		      throw new IllegalStateException("mode value (" + mode + ") bad");
+		    }
+			log.finest("getFile  <<---<<");
+		  }
+		  
+		  public void extract(String fileName,String tempDir){
+			log.finest("extract  >>--->>");
+	 		
+		    filePath=tempDir;
+		    setMode(EXTRACT);
+		    unZip(fileName);
+			log.finest("extract  <<---<<");
+		  }
+		  
+		  public void listfilesInZipDir(String fileName){
+			log.finest("listfilesInZipDir  >>--->>");
+	
+		    setMode(LIST);
+		    unZip(fileName);
+			log.finest("listfilesInZipDir  <<---<<");  
+		  }  
+		  
+		  /**
+		   * Simple main program
+		   * Unzip the archive
+		   */
+		  public static void main(String[] argv) {
+			Unzip unzip = new Unzip(true);
+			String zipTest = "C:\\Test\\FlickrApplication.zip";
+			unzip.extract(zipTest, unzip.filePath);
+		  }
+			
+		  /** Set the Mode (list, extract). */
+		  private void setMode(int m) {
+		    if (m == LIST || m == EXTRACT)
+		      mode = m;
+		  }
+
+		  /** Cache of paths we've mkdir()ed. */
+		  private SortedSet dirsMade;
+		  
+		  	  
+		/**
+		 * Returns the base directory of the zip file.
+		 * @return the name of the base directory
+		 */
+		public String getBaseFolder() {
+			return baseFolder;
+		}
+
+		  /** Construct an UnZip object. Just allocate the buffer */
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/wizards/AbstractDataBindingPage.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,111 @@
+/**
+ * Copyright (c) 2009 Symbian Foundation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of the License "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Symbian Foundation - initial contribution.
+ * Contributors:
+ * Description:
+ * Overview:
+ * Details:
+ * Platforms/Drives/Compatibility:
+ * Assumptions/Requirement/Pre-requisites:
+ * Failures and causes:
+ */
+package org.symbian.tools.wrttools.wizards;
+
+import java.text.MessageFormat;
+
+import org.eclipse.core.databinding.DataBindingContext;
+import org.eclipse.core.databinding.UpdateValueStrategy;
+import org.eclipse.core.databinding.beans.BeansObservables;
+import org.eclipse.core.databinding.observable.Observables;
+import org.eclipse.core.databinding.observable.map.IObservableMap;
+import org.eclipse.core.databinding.observable.value.IObservableValue;
+import org.eclipse.core.databinding.validation.IValidator;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.databinding.swt.ISWTObservableValue;
+import org.eclipse.jface.databinding.swt.SWTObservables;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+import org.symbian.tools.wrttools.Activator;
+
+public abstract class AbstractDataBindingPage extends WizardPage {
+	public class NonEmptyStringValidator implements IValidator {
+		private final String propertyName;
+
+		public NonEmptyStringValidator(String propertyName) {
+			this.propertyName = propertyName;
+		}
+
+		@Override
+		public IStatus validate(Object value) {
+			if (isActive()) {
+				if (value == null || value.toString().trim().length() == 0) {
+					return new Status(IStatus.ERROR, Activator.PLUGIN_ID,
+							MessageFormat.format("Field {0} is empty",
+									propertyName));
+				}
+			}
+			return Status.OK_STATUS;
+		}
+	}
+
+	protected final WizardContext context;
+	protected final DataBindingContext bindingContext;
+
+	public AbstractDataBindingPage(WizardContext context,
+			DataBindingContext bindingContext, String name, String title,
+			ImageDescriptor image, String description) {
+		super(name, title, image);
+		this.context = context;
+		this.bindingContext = bindingContext;
+		setDescription(description);
+	}
+
+	protected boolean isActive() {
+		return true;
+	}
+
+	protected Text createText(Composite root, String property,
+			String propertyName) {
+		return createText(root, BeansObservables
+				.observeValue(context, property), propertyName);
+	}
+
+	protected Text createTextForExt(Composite root, String property,
+			String propertyName) {
+		IObservableMap map = BeansObservables.observeMap(context, "extensions");
+		IObservableValue entry = Observables.observeMapEntry(map, property,
+				String.class);
+		return createText(root, entry, propertyName);
+	}
+
+	private Text createText(Composite root, IObservableValue model,
+			String propertyName) {
+		Text text = new Text(root, SWT.BORDER);
+		text.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+		ISWTObservableValue view = SWTObservables.observeText(text, SWT.Modify);
+		UpdateValueStrategy strategy = new UpdateValueStrategy(
+				UpdateValueStrategy.POLICY_UPDATE);
+		strategy
+				.setBeforeSetValidator(new NonEmptyStringValidator(propertyName));
+		bindingContext.bindValue(view, model, strategy, null);
+		return text;
+	}
+
+	protected static void createLabel(Composite root, String text) {
+		Label label = new Label(root, SWT.NONE);
+		label.setText(text);
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/wizards/AptanaProjectLocationWizardPage.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,1556 @@
+/**
+ * Copyright (c) 2009 Symbian Foundation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of the License "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Symbian Foundation - initial contribution.
+ * Contributors:
+ * Description:
+ * Overview:
+ * Details:
+ * Platforms/Drives/Compatibility:
+ * Assumptions/Requirement/Pre-requisites:
+ * Failures and causes:
+ */
+package org.symbian.tools.wrttools.wizards;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.lang.reflect.InvocationTargetException;
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
+import java.util.TreeSet;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipException;
+import java.util.zip.ZipFile;
+
+import javax.swing.filechooser.FileSystemView;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IProjectDescription;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.OperationCanceledException;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.SubProgressMonitor;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.ErrorDialog;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.IDialogSettings;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.layout.PixelConverter;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.jface.viewers.CheckStateChangedEvent;
+import org.eclipse.jface.viewers.CheckboxTreeViewer;
+import org.eclipse.jface.viewers.ICheckStateListener;
+import org.eclipse.jface.viewers.IColorProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerComparator;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.FocusAdapter;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.TraverseEvent;
+import org.eclipse.swt.events.TraverseListener;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.DirectoryDialog;
+import org.eclipse.swt.widgets.FileDialog;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.IWorkingSet;
+import org.eclipse.ui.IWorkingSetManager;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+import org.eclipse.ui.dialogs.IOverwriteQuery;
+import org.eclipse.ui.dialogs.WorkingSetGroup;
+import org.eclipse.ui.internal.ide.IDEWorkbenchMessages;
+import org.eclipse.ui.internal.ide.IDEWorkbenchPlugin;
+import org.eclipse.ui.internal.ide.StatusUtil;
+import org.eclipse.ui.internal.wizards.datatransfer.ArchiveFileManipulations;
+import org.eclipse.ui.internal.wizards.datatransfer.DataTransferMessages;
+import org.eclipse.ui.internal.wizards.datatransfer.ILeveledImportStructureProvider;
+import org.eclipse.ui.internal.wizards.datatransfer.TarEntry;
+import org.eclipse.ui.internal.wizards.datatransfer.TarException;
+import org.eclipse.ui.internal.wizards.datatransfer.TarFile;
+import org.eclipse.ui.internal.wizards.datatransfer.TarLeveledStructureProvider;
+import org.eclipse.ui.internal.wizards.datatransfer.ZipLeveledStructureProvider;
+import org.eclipse.ui.statushandlers.StatusManager;
+import org.eclipse.ui.wizards.datatransfer.FileSystemStructureProvider;
+import org.eclipse.ui.wizards.datatransfer.ImportOperation;
+import org.symbian.tools.wrttools.Activator;
+import org.symbian.tools.wrttools.projects.ProjectUtils;
+
+public class AptanaProjectLocationWizardPage extends WizardPage implements
+		IOverwriteQuery {
+
+	/**
+	 * @since 3.5
+	 * 
+	 */
+	private final class ProjectLabelProvider extends LabelProvider implements
+			IColorProvider {
+
+		public Color getBackground(Object element) {
+			return null;
+		}
+
+		public Color getForeground(Object element) {
+			ProjectRecord projectRecord = (ProjectRecord) element;
+			if (projectRecord.hasConflicts)
+				return getShell().getDisplay().getSystemColor(SWT.COLOR_GRAY);
+			return null;
+		}
+
+		public String getText(Object element) {
+			return ((ProjectRecord) element).getProjectLabel();
+		}
+	}
+
+	/**
+	 * Class declared public only for test suite.
+	 * 
+	 */
+	public class ProjectRecord {
+		IProjectDescription description;
+
+		boolean hasConflicts;
+
+		int level;
+
+		Object parent;
+
+		Object projectArchiveFile;
+
+		String projectName;
+
+		File projectSystemFile;
+
+		/**
+		 * Create a record for a project based on the info in the file.
+		 * 
+		 * @param file
+		 */
+		ProjectRecord(File file) {
+			projectSystemFile = file;
+			setProjectName();
+		}
+
+		/**
+		 * @param file
+		 *            The Object representing the .project file
+		 * @param parent
+		 *            The parent folder of the .project file
+		 * @param level
+		 *            The number of levels deep in the provider the file is
+		 */
+		ProjectRecord(Object file, Object parent, int level) {
+			this.projectArchiveFile = file;
+			this.parent = parent;
+			this.level = level;
+			setProjectName();
+		}
+
+		/**
+		 * Gets the label to be used when rendering this project record in the
+		 * UI.
+		 * 
+		 * @return String the label
+		 * @since 3.4
+		 */
+		public String getProjectLabel() {
+			if (description == null)
+				return projectName;
+
+			String path = projectSystemFile == null ? structureProvider
+					.getLabel(parent) : projectSystemFile.getParent();
+
+			return NLS.bind(
+					DataTransferMessages.WizardProjectsImportPage_projectLabel,
+					projectName, path);
+		}
+
+		/**
+		 * Get the name of the project
+		 * 
+		 * @return String
+		 */
+		public String getProjectName() {
+			return projectName;
+		}
+
+		/**
+		 * @return Returns the hasConflicts.
+		 */
+		public boolean hasConflicts() {
+			return hasConflicts;
+		}
+
+		/**
+		 * Returns whether the given project description file path is in the
+		 * default location for a project
+		 * 
+		 * @param path
+		 *            The path to examine
+		 * @return Whether the given path is the default location for a project
+		 */
+		private boolean isDefaultLocation(IPath path) {
+			// The project description file must at least be within the project,
+			// which is within the workspace location
+			if (path.segmentCount() < 2)
+				return false;
+			return path.removeLastSegments(2).toFile().equals(
+					Platform.getLocation().toFile());
+		}
+
+		/**
+		 * Set the name of the project based on the projectFile.
+		 */
+		private void setProjectName() {
+			try {
+				if (projectArchiveFile != null) {
+					InputStream stream = structureProvider
+							.getContents(projectArchiveFile);
+
+					// If we can get a description pull the name from there
+					if (stream == null) {
+						if (projectArchiveFile instanceof ZipEntry) {
+							IPath path = new Path(
+									((ZipEntry) projectArchiveFile).getName());
+							projectName = path.segment(path.segmentCount() - 2);
+						} else if (projectArchiveFile instanceof TarEntry) {
+							IPath path = new Path(
+									((TarEntry) projectArchiveFile).getName());
+							projectName = path.segment(path.segmentCount() - 2);
+						}
+					} else {
+						description = IDEWorkbenchPlugin.getPluginWorkspace()
+								.loadProjectDescription(stream);
+						stream.close();
+						projectName = description.getName();
+					}
+
+				}
+
+				// If we don't have the project name try again
+				if (projectName == null) {
+					IPath path = new Path(projectSystemFile.getPath());
+					// if the file is in the default location, use the directory
+					// name as the project name
+					if (isDefaultLocation(path)) {
+						projectName = path.segment(path.segmentCount() - 2);
+						description = IDEWorkbenchPlugin.getPluginWorkspace()
+								.newProjectDescription(projectName);
+					} else {
+						description = IDEWorkbenchPlugin.getPluginWorkspace()
+								.loadProjectDescription(path);
+						projectName = description.getName();
+					}
+
+				}
+			} catch (CoreException e) {
+				// no good couldn't get the name
+			} catch (IOException e) {
+				// no good couldn't get the name
+			}
+		}
+	}
+
+	// constant from WizardArchiveFileResourceImportPage1
+	private static final String[] FILE_IMPORT_MASK = {
+			"*.jar;*.zip;*.tar;*.tar.gz;*.tgz", "*.*" }; //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The name of the folder containing metadata information for the workspace.
+	 */
+	public static final String METADATA_FOLDER = ".metadata"; //$NON-NLS-1$
+
+	// Keep track of the archive that we browsed to last time
+	// the wizard was invoked.
+	private static String previouslyBrowsedArchive = ""; //$NON-NLS-1$
+
+	// Keep track of the directory that we browsed to last time
+	// the wizard was invoked.
+	private static String previouslyBrowsedDirectory = ""; //$NON-NLS-1$
+
+	private final static String STORE_ARCHIVE_SELECTED = "WizardProjectsImportPage.STORE_ARCHIVE_SELECTED"; //$NON-NLS-1$
+
+	// dialog store id constants
+	private final static String STORE_COPY_PROJECT_ID = "WizardProjectsImportPage.STORE_COPY_PROJECT_ID"; //$NON-NLS-1$
+
+	private Text archivePathField;
+
+	private Button browseArchivesButton;
+
+	private Button browseDirectoriesButton;
+
+	List createdProjects;
+
+	private IStructuredSelection currentSelection;
+
+	private Text directoryPathField;
+
+	// The initial path to set
+	private String initialPath;
+
+	// The last time that the file or folder at the selected path was modified
+	// to mimize searches
+	private long lastModified;
+
+	// The last selected path to minimize searches
+	private String lastPath;
+
+	private Button projectFromArchiveRadio;
+
+	private Button projectFromDirectoryRadio;
+
+	private CheckboxTreeViewer projectsList;
+	private ProjectRecord[] selectedProjects = new ProjectRecord[0];
+
+	/**
+	 * The import structure provider.
+	 * 
+	 * @since 3.4
+	 */
+	private ILeveledImportStructureProvider structureProvider;
+
+	private WorkingSetGroup workingSetGroup;
+
+	private IProject[] wsProjects;
+
+	private static final Collection<String> EXCLUDED;
+
+	static {
+		EXCLUDED = new TreeSet<String>(Arrays.asList(".project"));
+	}
+
+	public AptanaProjectLocationWizardPage() {
+		super("projectlocation", "Import Aptana WRT Projects", null);
+		setDescription("Select location of the Aptana WRT projects");
+	}
+
+	private void addToWorkingSets() {
+
+		IWorkingSet[] selectedWorkingSets = workingSetGroup
+				.getSelectedWorkingSets();
+		if (selectedWorkingSets == null || selectedWorkingSets.length == 0)
+			return; // no Working set is selected
+		IWorkingSetManager workingSetManager = PlatformUI.getWorkbench()
+				.getWorkingSetManager();
+		for (Iterator i = createdProjects.iterator(); i.hasNext();) {
+			IProject project = (IProject) i.next();
+			workingSetManager.addToWorkingSets(project, selectedWorkingSets);
+		}
+	}
+
+	private void archiveRadioSelected() {
+		if (projectFromArchiveRadio.getSelection()) {
+			directoryPathField.setEnabled(false);
+			browseDirectoriesButton.setEnabled(false);
+			archivePathField.setEnabled(true);
+			browseArchivesButton.setEnabled(true);
+			updateProjectsList(archivePathField.getText());
+			archivePathField.setFocus();
+		}
+	}
+
+	/**
+	 * Collect the list of .project files that are under directory into files.
+	 * 
+	 * @param files
+	 * @param directory
+	 * @param directoriesVisited
+	 *            Set of canonical paths of directories, used as recursion guard
+	 * @param monitor
+	 *            The monitor to report to
+	 * @return boolean <code>true</code> if the operation was completed.
+	 */
+	private boolean collectProjectFilesFromDirectory(Collection files,
+			File directory, Set directoriesVisited, IProgressMonitor monitor) {
+
+		if (monitor.isCanceled()) {
+			return false;
+		}
+		monitor.subTask(NLS.bind(
+				DataTransferMessages.WizardProjectsImportPage_CheckingMessage,
+				directory.getPath()));
+		File[] contents = directory.listFiles();
+		if (contents == null)
+			return false;
+
+		// Initialize recursion guard for recursive symbolic links
+		if (directoriesVisited == null) {
+			directoriesVisited = new HashSet();
+			try {
+				directoriesVisited.add(directory.getCanonicalPath());
+			} catch (IOException exception) {
+				StatusManager.getManager().handle(
+						StatusUtil.newStatus(IStatus.ERROR, exception
+								.getLocalizedMessage(), exception));
+			}
+		}
+
+		// first look for project description files
+		final String dotProject = IProjectDescription.DESCRIPTION_FILE_NAME;
+		for (int i = 0; i < contents.length; i++) {
+			File file = contents[i];
+			if (file.isFile() && file.getName().equals(dotProject)) {
+				files.add(file);
+				// don't search sub-directories since we can't have nested
+				// projects
+				return true;
+			}
+		}
+		// no project description found, so recurse into sub-directories
+		for (int i = 0; i < contents.length; i++) {
+			if (contents[i].isDirectory()) {
+				if (!contents[i].getName().equals(METADATA_FOLDER)) {
+					try {
+						String canonicalPath = contents[i].getCanonicalPath();
+						if (!directoriesVisited.add(canonicalPath)) {
+							// already been here --> do not recurse
+							continue;
+						}
+					} catch (IOException exception) {
+						StatusManager.getManager().handle(
+								StatusUtil.newStatus(IStatus.ERROR, exception
+										.getLocalizedMessage(), exception));
+
+					}
+					collectProjectFilesFromDirectory(files, contents[i],
+							directoriesVisited, monitor);
+				}
+			}
+		}
+		return true;
+	}
+
+	/**
+	 * Collect the list of .project files that are under directory into files.
+	 * 
+	 * @param files
+	 * @param monitor
+	 *            The monitor to report to
+	 * @return boolean <code>true</code> if the operation was completed.
+	 */
+	private boolean collectProjectFilesFromProvider(Collection files,
+			Object entry, int level, IProgressMonitor monitor) {
+
+		if (monitor.isCanceled()) {
+			return false;
+		}
+		monitor.subTask(NLS.bind(
+				DataTransferMessages.WizardProjectsImportPage_CheckingMessage,
+				structureProvider.getLabel(entry)));
+		List children = structureProvider.getChildren(entry);
+		if (children == null) {
+			children = new ArrayList(1);
+		}
+		Iterator childrenEnum = children.iterator();
+		while (childrenEnum.hasNext()) {
+			Object child = childrenEnum.next();
+			if (structureProvider.isFolder(child)) {
+				collectProjectFilesFromProvider(files, child, level + 1,
+						monitor);
+			}
+			String elementLabel = structureProvider.getLabel(child);
+			if (elementLabel.equals(IProjectDescription.DESCRIPTION_FILE_NAME)) {
+				files.add(new ProjectRecord(child, entry, level));
+			}
+		}
+		return true;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets
+	 * .Composite)
+	 */
+	public void createControl(Composite parent) {
+
+		initializeDialogUnits(parent);
+
+		Composite workArea = new Composite(parent, SWT.NONE);
+		setControl(workArea);
+
+		workArea.setLayout(new GridLayout());
+		workArea.setLayoutData(new GridData(GridData.FILL_BOTH
+				| GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL));
+
+		createProjectsRoot(workArea);
+		createProjectsList(workArea);
+		createWorkingSetGroup(workArea);
+		restoreWidgetValues();
+		Dialog.applyDialogFont(workArea);
+
+	}
+
+	/**
+	 * Create the project described in record. If it is successful return true.
+	 * 
+	 * @param record
+	 * @return boolean <code>true</code> if successful
+	 * @throws InterruptedException
+	 */
+	private boolean createExistingProject(final ProjectRecord record,
+			IProgressMonitor monitor) throws InvocationTargetException,
+			InterruptedException {
+		monitor.beginTask(MessageFormat.format("Creating {0}", record
+				.getProjectName()), IProgressMonitor.UNKNOWN);
+
+		try {
+			IProject project = ProjectUtils.createWrtProject(record
+					.getProjectName(), null,
+					new SubProgressMonitor(monitor, 10));
+			createdProjects.add(project);
+			if (record.projectArchiveFile != null) {
+				// import from archive
+				List fileSystemObjects = structureProvider
+						.getChildren(record.parent);
+				fileSystemObjects = filterEntries(fileSystemObjects);
+				structureProvider.setStrip(record.level);
+				ImportOperation operation = new ImportOperation(project
+						.getFullPath(), structureProvider.getRoot(),
+						structureProvider, this, fileSystemObjects);
+				operation.setContext(getShell());
+				operation.run(monitor);
+				return true;
+			} else {
+				File importSource = new File(record.description
+						.getLocationURI());
+				List filesToImport = filterEntries(FileSystemStructureProvider.INSTANCE
+						.getChildren(importSource));
+				ImportOperation operation = new ImportOperation(project
+						.getFullPath(), importSource,
+						FileSystemStructureProvider.INSTANCE, this,
+						filesToImport);
+				operation.setContext(getShell());
+				operation.setOverwriteResources(true); // need to overwrite
+				// .project, .classpath
+				// files
+				operation.setCreateContainerStructure(false);
+				operation.run(monitor);
+			}
+
+		} catch (CoreException e) {
+			Activator.log(e);
+			return false;
+		} finally {
+			monitor.done();
+		}
+		return true;
+	}
+
+	@SuppressWarnings("unchecked")
+	private List filterEntries(List fileSystemObjects) {
+		List result = new LinkedList();
+		for (Object object : fileSystemObjects) {
+			if (accepted(object)) {
+				result.add(object);
+			}
+		}
+		return result;
+	}
+
+	private boolean accepted(Object object) {
+		final String name;
+		if (object instanceof ZipEntry) {
+			name = ((ZipEntry) object).getName();
+		} else if (object instanceof TarEntry) {
+			name = ((TarEntry) object).getName();
+		} else if (object instanceof File) {
+			name = ((File) object).getAbsolutePath();
+		} else {
+			throw new IllegalArgumentException("Unforeseen entry type: "
+					+ object.getClass());
+		}
+		IPath path = new Path(name);
+		return isValidProjectFile(path.lastSegment());
+	}
+
+	private boolean isValidProjectFile(String fileName) {
+		return !EXCLUDED.contains(fileName);
+	}
+
+	/**
+	 * Create the selected projects
+	 * 
+	 * @return boolean <code>true</code> if all project creations were
+	 *         successful.
+	 */
+	public boolean createProjects() {
+		saveWidgetValues();
+
+		final Object[] selected = projectsList.getCheckedElements();
+		createdProjects = new ArrayList();
+		WorkspaceModifyOperation op = new WorkspaceModifyOperation() {
+			protected void execute(IProgressMonitor monitor)
+					throws InvocationTargetException, InterruptedException {
+				try {
+					monitor.beginTask("", selected.length); //$NON-NLS-1$
+					if (monitor.isCanceled()) {
+						throw new OperationCanceledException();
+					}
+					for (int i = 0; i < selected.length; i++) {
+						createExistingProject((ProjectRecord) selected[i],
+								new SubProgressMonitor(monitor, 1));
+					}
+				} finally {
+					monitor.done();
+				}
+			}
+		};
+		// run the new project creation operation
+		try {
+			getContainer().run(true, true, op);
+		} catch (InterruptedException e) {
+			return false;
+		} catch (InvocationTargetException e) {
+			// one of the steps resulted in a core exception
+			Throwable t = e.getTargetException();
+			String message = DataTransferMessages.WizardExternalProjectImportPage_errorMessage;
+			IStatus status;
+			if (t instanceof CoreException) {
+				status = ((CoreException) t).getStatus();
+			} else {
+				status = new Status(IStatus.ERROR,
+						IDEWorkbenchPlugin.IDE_WORKBENCH, 1, message, t);
+			}
+			ErrorDialog.openError(getShell(), message, null, status);
+			return false;
+		}
+		ArchiveFileManipulations.closeStructureProvider(structureProvider,
+				getShell());
+
+		// Adds the projects to the working sets
+		addToWorkingSets();
+
+		return true;
+	}
+
+	/**
+	 * Create the checkbox list for the found projects.
+	 * 
+	 * @param workArea
+	 */
+	private void createProjectsList(Composite workArea) {
+
+		Label title = new Label(workArea, SWT.NONE);
+		title
+				.setText(DataTransferMessages.WizardProjectsImportPage_ProjectsListTitle);
+
+		Composite listComposite = new Composite(workArea, SWT.NONE);
+		GridLayout layout = new GridLayout();
+		layout.numColumns = 2;
+		layout.marginWidth = 0;
+		layout.makeColumnsEqualWidth = false;
+		listComposite.setLayout(layout);
+
+		listComposite.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL
+				| GridData.GRAB_VERTICAL | GridData.FILL_BOTH));
+
+		projectsList = new CheckboxTreeViewer(listComposite, SWT.BORDER);
+		GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
+		gridData.widthHint = new PixelConverter(projectsList.getControl())
+				.convertWidthInCharsToPixels(25);
+		gridData.heightHint = new PixelConverter(projectsList.getControl())
+				.convertHeightInCharsToPixels(10);
+		projectsList.getControl().setLayoutData(gridData);
+		projectsList.setContentProvider(new ITreeContentProvider() {
+
+			/*
+			 * (non-Javadoc)
+			 * 
+			 * @see org.eclipse.jface.viewers.IContentProvider#dispose()
+			 */
+			public void dispose() {
+
+			}
+
+			/*
+			 * (non-Javadoc)
+			 * 
+			 * @see
+			 * org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java
+			 * .lang.Object)
+			 */
+			public Object[] getChildren(Object parentElement) {
+				return null;
+			}
+
+			/*
+			 * (non-Javadoc)
+			 * 
+			 * @see
+			 * org.eclipse.jface.viewers.IStructuredContentProvider#getElements
+			 * (java.lang.Object)
+			 */
+			public Object[] getElements(Object inputElement) {
+				return getProjectRecords();
+			}
+
+			/*
+			 * (non-Javadoc)
+			 * 
+			 * @see
+			 * org.eclipse.jface.viewers.ITreeContentProvider#getParent(java
+			 * .lang.Object)
+			 */
+			public Object getParent(Object element) {
+				return null;
+			}
+
+			/*
+			 * (non-Javadoc)
+			 * 
+			 * @see
+			 * org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java
+			 * .lang.Object)
+			 */
+			public boolean hasChildren(Object element) {
+				return false;
+			}
+
+			/*
+			 * (non-Javadoc)
+			 * 
+			 * @see
+			 * org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse
+			 * .jface.viewers.Viewer, java.lang.Object, java.lang.Object)
+			 */
+			public void inputChanged(Viewer viewer, Object oldInput,
+					Object newInput) {
+			}
+
+		});
+
+		projectsList.setLabelProvider(new ProjectLabelProvider());
+
+		projectsList.addCheckStateListener(new ICheckStateListener() {
+			/*
+			 * (non-Javadoc)
+			 * 
+			 * @see
+			 * org.eclipse.jface.viewers.ICheckStateListener#checkStateChanged
+			 * (org.eclipse.jface.viewers.CheckStateChangedEvent)
+			 */
+			public void checkStateChanged(CheckStateChangedEvent event) {
+				ProjectRecord element = (ProjectRecord) event.getElement();
+				if (element.hasConflicts) {
+					projectsList.setChecked(element, false);
+				}
+				setPageComplete(projectsList.getCheckedElements().length > 0);
+			}
+		});
+
+		projectsList.setInput(this);
+		projectsList.setComparator(new ViewerComparator());
+		createSelectionButtons(listComposite);
+	}
+
+	/**
+	 * Create the area where you select the root directory for the projects.
+	 * 
+	 * @param workArea
+	 *            Composite
+	 */
+	private void createProjectsRoot(Composite workArea) {
+
+		// project specification group
+		Composite projectGroup = new Composite(workArea, SWT.NONE);
+		GridLayout layout = new GridLayout();
+		layout.numColumns = 3;
+		layout.makeColumnsEqualWidth = false;
+		layout.marginWidth = 0;
+		projectGroup.setLayout(layout);
+		projectGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+		// new project from directory radio button
+		projectFromDirectoryRadio = new Button(projectGroup, SWT.RADIO);
+		projectFromDirectoryRadio
+				.setText(DataTransferMessages.WizardProjectsImportPage_RootSelectTitle);
+
+		// project location entry field
+		this.directoryPathField = new Text(projectGroup, SWT.BORDER);
+
+		GridData directoryPathData = new GridData(SWT.FILL, SWT.NONE, true,
+				false);
+		directoryPathData.widthHint = new PixelConverter(directoryPathField)
+				.convertWidthInCharsToPixels(25);
+		directoryPathField.setLayoutData(directoryPathData);
+
+		directoryPathField.setText(getDefaultImportLocation());
+		
+		// browse button
+		browseDirectoriesButton = new Button(projectGroup, SWT.PUSH);
+		browseDirectoriesButton
+				.setText(DataTransferMessages.DataTransfer_browse);
+		setButtonLayoutData(browseDirectoriesButton);
+
+		// new project from archive radio button
+		projectFromArchiveRadio = new Button(projectGroup, SWT.RADIO);
+		projectFromArchiveRadio
+				.setText(DataTransferMessages.WizardProjectsImportPage_ArchiveSelectTitle);
+
+		// project location entry field
+		archivePathField = new Text(projectGroup, SWT.BORDER);
+
+		GridData archivePathData = new GridData(SWT.FILL, SWT.NONE, true, false);
+		archivePathData.widthHint = new PixelConverter(archivePathField)
+				.convertWidthInCharsToPixels(25);
+		archivePathField.setLayoutData(archivePathData); // browse button
+		browseArchivesButton = new Button(projectGroup, SWT.PUSH);
+		browseArchivesButton.setText(DataTransferMessages.DataTransfer_browse);
+		setButtonLayoutData(browseArchivesButton);
+
+		projectFromDirectoryRadio.setSelection(true);
+		archivePathField.setEnabled(false);
+		browseArchivesButton.setEnabled(false);
+
+		browseDirectoriesButton.addSelectionListener(new SelectionAdapter() {
+			/*
+			 * (non-Javadoc)
+			 * 
+			 * @see org.eclipse.swt.events.SelectionAdapter#widgetS
+			 * elected(org.eclipse.swt.events.SelectionEvent)
+			 */
+			public void widgetSelected(SelectionEvent e) {
+				handleLocationDirectoryButtonPressed();
+			}
+
+		});
+
+		browseArchivesButton.addSelectionListener(new SelectionAdapter() {
+			/*
+			 * (non-Javadoc)
+			 * 
+			 * @see
+			 * org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse
+			 * .swt.events.SelectionEvent)
+			 */
+			public void widgetSelected(SelectionEvent e) {
+				handleLocationArchiveButtonPressed();
+			}
+
+		});
+
+		directoryPathField.addTraverseListener(new TraverseListener() {
+
+			/*
+			 * (non-Javadoc)
+			 * 
+			 * @see
+			 * org.eclipse.swt.events.TraverseListener#keyTraversed(org.eclipse
+			 * .swt.events.TraverseEvent)
+			 */
+			public void keyTraversed(TraverseEvent e) {
+				if (e.detail == SWT.TRAVERSE_RETURN) {
+					e.doit = false;
+					updateProjectsList(directoryPathField.getText().trim());
+				}
+			}
+
+		});
+
+		directoryPathField.addFocusListener(new FocusAdapter() {
+
+			/*
+			 * (non-Javadoc)
+			 * 
+			 * @see
+			 * org.eclipse.swt.events.FocusListener#focusLost(org.eclipse.swt
+			 * .events.FocusEvent)
+			 */
+			public void focusLost(org.eclipse.swt.events.FocusEvent e) {
+				updateProjectsList(directoryPathField.getText().trim());
+			}
+
+		});
+
+		archivePathField.addTraverseListener(new TraverseListener() {
+
+			/*
+			 * (non-Javadoc)
+			 * 
+			 * @see
+			 * org.eclipse.swt.events.TraverseListener#keyTraversed(org.eclipse
+			 * .swt.events.TraverseEvent)
+			 */
+			public void keyTraversed(TraverseEvent e) {
+				if (e.detail == SWT.TRAVERSE_RETURN) {
+					e.doit = false;
+					updateProjectsList(archivePathField.getText().trim());
+				}
+			}
+
+		});
+
+		archivePathField.addFocusListener(new FocusAdapter() {
+			/*
+			 * (non-Javadoc)
+			 * 
+			 * @see
+			 * org.eclipse.swt.events.FocusListener#focusLost(org.eclipse.swt
+			 * .events.FocusEvent)
+			 */
+			public void focusLost(org.eclipse.swt.events.FocusEvent e) {
+				updateProjectsList(archivePathField.getText().trim());
+			}
+		});
+
+		projectFromDirectoryRadio.addSelectionListener(new SelectionAdapter() {
+			/*
+			 * (non-Javadoc)
+			 * 
+			 * @see
+			 * org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse
+			 * .swt.events.SelectionEvent)
+			 */
+			public void widgetSelected(SelectionEvent e) {
+				directoryRadioSelected();
+			}
+		});
+
+		projectFromArchiveRadio.addSelectionListener(new SelectionAdapter() {
+			/*
+			 * (non-Javadoc)
+			 * 
+			 * @see
+			 * org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse
+			 * .swt.events.SelectionEvent)
+			 */
+			public void widgetSelected(SelectionEvent e) {
+				archiveRadioSelected();
+			}
+		});
+	}
+
+	private String getDefaultImportLocation() {
+		File myDocuments = FileSystemView.getFileSystemView().getDefaultDirectory();
+		File file = new File(myDocuments, "Aptana Studio Workspace");
+		return file.exists() ? file.getAbsolutePath() : "";
+	}
+
+	/**
+	 * Create the selection buttons in the listComposite.
+	 * 
+	 * @param listComposite
+	 */
+	private void createSelectionButtons(Composite listComposite) {
+		Composite buttonsComposite = new Composite(listComposite, SWT.NONE);
+		GridLayout layout = new GridLayout();
+		layout.marginWidth = 0;
+		layout.marginHeight = 0;
+		buttonsComposite.setLayout(layout);
+
+		buttonsComposite.setLayoutData(new GridData(
+				GridData.VERTICAL_ALIGN_BEGINNING));
+
+		Button selectAll = new Button(buttonsComposite, SWT.PUSH);
+		selectAll.setText(DataTransferMessages.DataTransfer_selectAll);
+		selectAll.addSelectionListener(new SelectionAdapter() {
+			public void widgetSelected(SelectionEvent e) {
+				for (int i = 0; i < selectedProjects.length; i++) {
+					if (selectedProjects[i].hasConflicts)
+						projectsList.setChecked(selectedProjects[i], false);
+					else
+						projectsList.setChecked(selectedProjects[i], true);
+				}
+				setPageComplete(projectsList.getCheckedElements().length > 0);
+			}
+		});
+		Dialog.applyDialogFont(selectAll);
+		setButtonLayoutData(selectAll);
+
+		Button deselectAll = new Button(buttonsComposite, SWT.PUSH);
+		deselectAll.setText(DataTransferMessages.DataTransfer_deselectAll);
+		deselectAll.addSelectionListener(new SelectionAdapter() {
+			/*
+			 * (non-Javadoc)
+			 * 
+			 * @see
+			 * org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse
+			 * .swt.events.SelectionEvent)
+			 */
+			public void widgetSelected(SelectionEvent e) {
+
+				projectsList.setCheckedElements(new Object[0]);
+				setPageComplete(false);
+			}
+		});
+		Dialog.applyDialogFont(deselectAll);
+		setButtonLayoutData(deselectAll);
+
+		Button refresh = new Button(buttonsComposite, SWT.PUSH);
+		refresh.setText(DataTransferMessages.DataTransfer_refresh);
+		refresh.addSelectionListener(new SelectionAdapter() {
+			/*
+			 * (non-Javadoc)
+			 * 
+			 * @see
+			 * org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse
+			 * .swt.events.SelectionEvent)
+			 */
+			public void widgetSelected(SelectionEvent e) {
+				if (projectFromDirectoryRadio.getSelection()) {
+					updateProjectsList(directoryPathField.getText().trim());
+				} else {
+					updateProjectsList(archivePathField.getText().trim());
+				}
+			}
+		});
+		Dialog.applyDialogFont(refresh);
+		setButtonLayoutData(refresh);
+	}
+
+	/**
+	 * @param workArea
+	 */
+	private void createWorkingSetGroup(Composite workArea) {
+		String[] workingSetIds = new String[] {
+				"org.eclipse.ui.resourceWorkingSetPage", //$NON-NLS-1$
+				"org.eclipse.jdt.ui.JavaWorkingSetPage" }; //$NON-NLS-1$
+		workingSetGroup = new WorkingSetGroup(workArea, currentSelection,
+				workingSetIds);
+	}
+
+	private void directoryRadioSelected() {
+		if (projectFromDirectoryRadio.getSelection()) {
+			directoryPathField.setEnabled(true);
+			browseDirectoriesButton.setEnabled(true);
+			archivePathField.setEnabled(false);
+			browseArchivesButton.setEnabled(false);
+			updateProjectsList(directoryPathField.getText());
+			directoryPathField.setFocus();
+		}
+	}
+
+	/**
+	 * Display an error dialog with the specified message.
+	 * 
+	 * @param message
+	 *            the error message
+	 */
+	protected void displayErrorDialog(String message) {
+		MessageDialog.open(MessageDialog.ERROR, getContainer().getShell(),
+				getErrorDialogTitle(), message, SWT.SHEET);
+	}
+
+	/**
+	 * Get the title for an error dialog. Subclasses should override.
+	 */
+	protected String getErrorDialogTitle() {
+		return IDEWorkbenchMessages.WizardExportPage_internalErrorTitle;
+	}
+
+	/**
+	 * Method used for test suite.
+	 * 
+	 * @return Button the Import from Directory RadioButton
+	 */
+	public Button getProjectFromDirectoryRadio() {
+		return projectFromDirectoryRadio;
+	}
+
+	/**
+	 * Get the array of project records that can be imported from the source
+	 * workspace or archive, selected by the user. If a project with the same
+	 * name exists in both the source workspace and the current workspace, then
+	 * the hasConflicts flag would be set on that project record.
+	 * 
+	 * Method declared public for test suite.
+	 * 
+	 * @return ProjectRecord[] array of projects that can be imported into the
+	 *         workspace
+	 */
+	public ProjectRecord[] getProjectRecords() {
+		List projectRecords = new ArrayList();
+		for (int i = 0; i < selectedProjects.length; i++) {
+			if (isProjectInWorkspace(selectedProjects[i].getProjectName())) {
+				selectedProjects[i].hasConflicts = true;
+			}
+			projectRecords.add(selectedProjects[i]);
+		}
+		return (ProjectRecord[]) projectRecords
+				.toArray(new ProjectRecord[projectRecords.size()]);
+	}
+
+	/**
+	 * Retrieve all the projects in the current workspace.
+	 * 
+	 * @return IProject[] array of IProject in the current workspace
+	 */
+	private IProject[] getProjectsInWorkspace() {
+		if (wsProjects == null) {
+			wsProjects = IDEWorkbenchPlugin.getPluginWorkspace().getRoot()
+					.getProjects();
+		}
+		return wsProjects;
+	}
+
+	/**
+	 * Method used for test suite.
+	 * 
+	 * @return CheckboxTreeViewer the viewer containing all the projects found
+	 */
+	public CheckboxTreeViewer getProjectsList() {
+		return projectsList;
+	}
+
+	/**
+	 * Answer a handle to the zip file currently specified as being the source.
+	 * Return null if this file does not exist or is not of valid format.
+	 */
+	private TarFile getSpecifiedTarSourceFile(String fileName) {
+		if (fileName.length() == 0) {
+			return null;
+		}
+
+		try {
+			return new TarFile(fileName);
+		} catch (TarException e) {
+			displayErrorDialog(DataTransferMessages.TarImport_badFormat);
+		} catch (IOException e) {
+			displayErrorDialog(DataTransferMessages.ZipImport_couldNotRead);
+		}
+
+		archivePathField.setFocus();
+		return null;
+	}
+
+	/**
+	 * Answer a handle to the zip file currently specified as being the source.
+	 * Return null if this file does not exist or is not of valid format.
+	 */
+	private ZipFile getSpecifiedZipSourceFile(String fileName) {
+		if (fileName.length() == 0) {
+			return null;
+		}
+
+		try {
+			return new ZipFile(fileName);
+		} catch (ZipException e) {
+			displayErrorDialog(DataTransferMessages.ZipImport_badFormat);
+		} catch (IOException e) {
+			displayErrorDialog(DataTransferMessages.ZipImport_couldNotRead);
+		}
+
+		archivePathField.setFocus();
+		return null;
+	}
+
+	/**
+	 * The browse button has been selected. Select the location.
+	 */
+	protected void handleLocationArchiveButtonPressed() {
+
+		FileDialog dialog = new FileDialog(archivePathField.getShell(),
+				SWT.SHEET);
+		dialog.setFilterExtensions(FILE_IMPORT_MASK);
+		dialog
+				.setText(DataTransferMessages.WizardProjectsImportPage_SelectArchiveDialogTitle);
+
+		String fileName = archivePathField.getText().trim();
+		if (fileName.length() == 0) {
+			fileName = previouslyBrowsedArchive;
+		}
+
+		if (fileName.length() == 0) {
+			dialog.setFilterPath(IDEWorkbenchPlugin.getPluginWorkspace()
+					.getRoot().getLocation().toOSString());
+		} else {
+			File path = new File(fileName).getParentFile();
+			if (path != null && path.exists()) {
+				dialog.setFilterPath(path.toString());
+			}
+		}
+
+		String selectedArchive = dialog.open();
+		if (selectedArchive != null) {
+			previouslyBrowsedArchive = selectedArchive;
+			archivePathField.setText(previouslyBrowsedArchive);
+			updateProjectsList(selectedArchive);
+		}
+
+	}
+
+	/**
+	 * The browse button has been selected. Select the location.
+	 */
+	protected void handleLocationDirectoryButtonPressed() {
+
+		DirectoryDialog dialog = new DirectoryDialog(directoryPathField
+				.getShell(), SWT.SHEET);
+		dialog
+				.setMessage(DataTransferMessages.WizardProjectsImportPage_SelectDialogTitle);
+
+		String dirName = directoryPathField.getText().trim();
+		if (dirName.length() == 0) {
+			dirName = previouslyBrowsedDirectory;
+		}
+
+		if (dirName.length() == 0) {
+			dialog.setFilterPath(IDEWorkbenchPlugin.getPluginWorkspace()
+					.getRoot().getLocation().toOSString());
+		} else {
+			File path = new File(dirName);
+			if (path.exists()) {
+				dialog.setFilterPath(new Path(dirName).toOSString());
+			}
+		}
+
+		String selectedDirectory = dialog.open();
+		if (selectedDirectory != null) {
+			previouslyBrowsedDirectory = selectedDirectory;
+			directoryPathField.setText(previouslyBrowsedDirectory);
+			updateProjectsList(selectedDirectory);
+		}
+
+	}
+
+	/**
+	 * Determine if the project with the given name is in the current workspace.
+	 * 
+	 * @param projectName
+	 *            String the project name to check
+	 * @return boolean true if the project with the given name is in this
+	 *         workspace
+	 */
+	private boolean isProjectInWorkspace(String projectName) {
+		if (projectName == null) {
+			return false;
+		}
+		IProject[] workspaceProjects = getProjectsInWorkspace();
+		for (int i = 0; i < workspaceProjects.length; i++) {
+			if (projectName.equals(workspaceProjects[i].getName())) {
+				return true;
+			}
+		}
+		return false;
+	}
+
+	/**
+	 * Performs clean-up if the user cancels the wizard without doing anything
+	 */
+	public void performCancel() {
+		ArchiveFileManipulations.closeStructureProvider(structureProvider,
+				getShell());
+	}
+
+	/**
+	 * The <code>WizardDataTransfer</code> implementation of this
+	 * <code>IOverwriteQuery</code> method asks the user whether the existing
+	 * resource at the given path should be overwritten.
+	 * 
+	 * @param pathString
+	 * @return the user's reply: one of <code>"YES"</code>, <code>"NO"</code>,
+	 *         <code>"ALL"</code>, or <code>"CANCEL"</code>
+	 */
+	public String queryOverwrite(String pathString) {
+
+		Path path = new Path(pathString);
+
+		String messageString;
+		// Break the message up if there is a file name and a directory
+		// and there are at least 2 segments.
+		if (path.getFileExtension() == null || path.segmentCount() < 2) {
+			messageString = NLS.bind(
+					IDEWorkbenchMessages.WizardDataTransfer_existsQuestion,
+					pathString);
+		} else {
+			messageString = NLS
+					.bind(
+							IDEWorkbenchMessages.WizardDataTransfer_overwriteNameAndPathQuestion,
+							path.lastSegment(), path.removeLastSegments(1)
+									.toOSString());
+		}
+
+		final MessageDialog dialog = new MessageDialog(getContainer()
+				.getShell(), IDEWorkbenchMessages.Question, null,
+				messageString, MessageDialog.QUESTION, new String[] {
+						IDialogConstants.YES_LABEL,
+						IDialogConstants.YES_TO_ALL_LABEL,
+						IDialogConstants.NO_LABEL,
+						IDialogConstants.NO_TO_ALL_LABEL,
+						IDialogConstants.CANCEL_LABEL }, 0) {
+			protected int getShellStyle() {
+				return super.getShellStyle() | SWT.SHEET;
+			}
+		};
+		String[] response = new String[] { YES, ALL, NO, NO_ALL, CANCEL };
+		// run in syncExec because callback is from an operation,
+		// which is probably not running in the UI thread.
+		getControl().getDisplay().syncExec(new Runnable() {
+			public void run() {
+				dialog.open();
+			}
+		});
+		return dialog.getReturnCode() < 0 ? CANCEL : response[dialog
+				.getReturnCode()];
+	}
+
+	/**
+	 * Use the dialog store to restore widget values to the values that they
+	 * held last time this wizard was used to completion, or alternatively, if
+	 * an initial path is specified, use it to select values.
+	 * 
+	 * Method declared public only for use of tests.
+	 */
+	public void restoreWidgetValues() {
+
+		// First, check to see if we have resore settings, and
+		// take care of the checkbox
+		IDialogSettings settings = getDialogSettings();
+
+		// Second, check to see if we don't have an initial path,
+		// and if we do have restore settings. If so, set the
+		// radio selection properly to restore settings
+
+		if (initialPath == null && settings != null) {
+			// radio selection
+			boolean archiveSelected = settings
+					.getBoolean(STORE_ARCHIVE_SELECTED);
+			projectFromDirectoryRadio.setSelection(!archiveSelected);
+			projectFromArchiveRadio.setSelection(archiveSelected);
+			if (archiveSelected) {
+				archiveRadioSelected();
+			} else {
+				directoryRadioSelected();
+			}
+		}
+		// Third, if we do have an initial path, set the proper
+		// path and radio buttons to the initial value. Move
+		// cursor to the end of the path so user can see the
+		// most relevant part (directory / archive name)
+		else if (initialPath != null) {
+			boolean dir = new File(initialPath).isDirectory();
+
+			projectFromDirectoryRadio.setSelection(dir);
+			projectFromArchiveRadio.setSelection(!dir);
+
+			if (dir) {
+				directoryPathField.setText(initialPath);
+				directoryPathField.setSelection(initialPath.length());
+				directoryRadioSelected();
+			} else {
+				archivePathField.setText(initialPath);
+				archivePathField.setSelection(initialPath.length());
+				archiveRadioSelected();
+			}
+		}
+	}
+
+	/**
+	 * Since Finish was pressed, write widget values to the dialog store so that
+	 * they will persist into the next invocation of this wizard page.
+	 * 
+	 * Method declared public only for use of tests.
+	 */
+	public void saveWidgetValues() {
+		IDialogSettings settings = getDialogSettings();
+		if (settings != null) {
+			settings.put(STORE_ARCHIVE_SELECTED, projectFromArchiveRadio
+					.getSelection());
+		}
+	}
+
+	/*
+	 * (non-Javadoc) Method declared on IDialogPage. Set the focus on path
+	 * fields when page becomes visible.
+	 */
+	public void setVisible(boolean visible) {
+		super.setVisible(visible);
+		if (visible && this.projectFromDirectoryRadio.getSelection()) {
+			this.directoryPathField.setFocus();
+		}
+		if (visible && this.projectFromArchiveRadio.getSelection()) {
+			this.archivePathField.setFocus();
+		}
+	}
+
+	/**
+	 * Update the list of projects based on path. Method declared public only
+	 * for test suite.
+	 * 
+	 * @param path
+	 */
+	public void updateProjectsList(final String path) {
+		// on an empty path empty selectedProjects
+		if (path == null || path.length() == 0) {
+			setMessage(DataTransferMessages.WizardProjectsImportPage_ImportProjectsDescription);
+			selectedProjects = new ProjectRecord[0];
+			projectsList.refresh(true);
+			projectsList.setCheckedElements(selectedProjects);
+			setPageComplete(projectsList.getCheckedElements().length > 0);
+			lastPath = path;
+			return;
+		}
+
+		final File directory = new File(path);
+		long modified = directory.lastModified();
+		if (path.equals(lastPath) && lastModified == modified) {
+			// since the file/folder was not modified and the path did not
+			// change, no refreshing is required
+			return;
+		}
+
+		lastPath = path;
+		lastModified = modified;
+
+		// We can't access the radio button from the inner class so get the
+		// status beforehand
+		final boolean dirSelected = this.projectFromDirectoryRadio
+				.getSelection();
+		try {
+			getContainer().run(true, true, new IRunnableWithProgress() {
+
+				/*
+				 * (non-Javadoc)
+				 * 
+				 * @see
+				 * org.eclipse.jface.operation.IRunnableWithProgress#run(org
+				 * .eclipse.core.runtime.IProgressMonitor)
+				 */
+				public void run(IProgressMonitor monitor) {
+
+					monitor
+							.beginTask(
+									DataTransferMessages.WizardProjectsImportPage_SearchingMessage,
+									100);
+					selectedProjects = new ProjectRecord[0];
+					Collection files = new ArrayList();
+					monitor.worked(10);
+					if (!dirSelected
+							&& ArchiveFileManipulations.isTarFile(path)) {
+						TarFile sourceTarFile = getSpecifiedTarSourceFile(path);
+						if (sourceTarFile == null) {
+							return;
+						}
+
+						structureProvider = new TarLeveledStructureProvider(
+								sourceTarFile);
+						Object child = structureProvider.getRoot();
+
+						if (!collectProjectFilesFromProvider(files, child, 0,
+								monitor)) {
+							return;
+						}
+						Iterator filesIterator = files.iterator();
+						selectedProjects = new ProjectRecord[files.size()];
+						int index = 0;
+						monitor.worked(50);
+						monitor
+								.subTask(DataTransferMessages.WizardProjectsImportPage_ProcessingMessage);
+						while (filesIterator.hasNext()) {
+							selectedProjects[index++] = (ProjectRecord) filesIterator
+									.next();
+						}
+					} else if (!dirSelected
+							&& ArchiveFileManipulations.isZipFile(path)) {
+						ZipFile sourceFile = getSpecifiedZipSourceFile(path);
+						if (sourceFile == null) {
+							return;
+						}
+						structureProvider = new ZipLeveledStructureProvider(
+								sourceFile);
+						Object child = structureProvider.getRoot();
+
+						if (!collectProjectFilesFromProvider(files, child, 0,
+								monitor)) {
+							return;
+						}
+						Iterator filesIterator = files.iterator();
+						selectedProjects = new ProjectRecord[files.size()];
+						int index = 0;
+						monitor.worked(50);
+						monitor
+								.subTask(DataTransferMessages.WizardProjectsImportPage_ProcessingMessage);
+						while (filesIterator.hasNext()) {
+							selectedProjects[index++] = (ProjectRecord) filesIterator
+									.next();
+						}
+					}
+
+					else if (dirSelected && directory.isDirectory()) {
+
+						if (!collectProjectFilesFromDirectory(files, directory,
+								null, monitor)) {
+							return;
+						}
+						Iterator filesIterator = files.iterator();
+						selectedProjects = new ProjectRecord[files.size()];
+						int index = 0;
+						monitor.worked(50);
+						monitor
+								.subTask(DataTransferMessages.WizardProjectsImportPage_ProcessingMessage);
+						while (filesIterator.hasNext()) {
+							File file = (File) filesIterator.next();
+							selectedProjects[index] = new ProjectRecord(file);
+							index++;
+						}
+					} else {
+						monitor.worked(60);
+					}
+					monitor.done();
+				}
+
+			});
+		} catch (InvocationTargetException e) {
+			IDEWorkbenchPlugin.log(e.getMessage(), e);
+		} catch (InterruptedException e) {
+			// Nothing to do if the user interrupts.
+		}
+
+		projectsList.refresh(true);
+		ProjectRecord[] projects = getProjectRecords();
+		boolean displayWarning = false;
+		for (int i = 0; i < projects.length; i++) {
+			if (projects[i].hasConflicts) {
+				displayWarning = true;
+				projectsList.setGrayed(projects[i], true);
+			} else {
+				projectsList.setChecked(projects[i], true);
+			}
+		}
+
+		if (displayWarning) {
+			setMessage(
+					DataTransferMessages.WizardProjectsImportPage_projectsInWorkspace,
+					WARNING);
+		} else {
+			setMessage(DataTransferMessages.WizardProjectsImportPage_ImportProjectsDescription);
+		}
+		setPageComplete(projectsList.getCheckedElements().length > 0);
+		if (selectedProjects.length == 0) {
+			setMessage(
+					DataTransferMessages.WizardProjectsImportPage_noProjectsToImport,
+					WARNING);
+		}
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/wizards/AptanaProjectsImportWizard.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,57 @@
+/**
+ * Copyright (c) 2009 Symbian Foundation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of the License "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Symbian Foundation - initial contribution.
+ * Contributors:
+ * Description:
+ * Overview:
+ * Details:
+ * Platforms/Drives/Compatibility:
+ * Assumptions/Requirement/Pre-requisites:
+ * Failures and causes:
+ */
+package org.symbian.tools.wrttools.wizards;
+
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.ui.IImportWizard;
+import org.eclipse.ui.IWorkbench;
+
+public class AptanaProjectsImportWizard extends Wizard implements IImportWizard {
+
+	private AptanaProjectLocationWizardPage mainPage;
+
+	public AptanaProjectsImportWizard() {
+		setWindowTitle("Import Aptana Project");
+	}
+
+	@Override
+	public boolean performCancel() {
+		mainPage.performCancel();
+		return true;
+	}
+
+	@Override
+	public boolean performFinish() {
+		return mainPage.createProjects();
+	}
+
+	@Override
+	public void addPages() {
+		mainPage = new AptanaProjectLocationWizardPage();
+		addPage(mainPage);
+	}
+	
+	@Override
+	public void init(IWorkbench workbench, IStructuredSelection selection) {
+		// TODO Auto-generated method stub
+
+	}
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/wizards/FlickrProjectDetailsWizardPage.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,48 @@
+/**
+ * Copyright (c) 2009 Symbian Foundation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of the License "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Symbian Foundation - initial contribution.
+ * Contributors:
+ * Description:
+ * Overview:
+ * Details:
+ * Platforms/Drives/Compatibility:
+ * Assumptions/Requirement/Pre-requisites:
+ * Failures and causes:
+ */
+package org.symbian.tools.wrttools.wizards;
+
+import org.eclipse.core.databinding.DataBindingContext;
+import org.eclipse.swt.widgets.Composite;
+
+public class FlickrProjectDetailsWizardPage extends WRTProjectDetailsWizardPage {
+
+	public FlickrProjectDetailsWizardPage(WizardContext context,
+			DataBindingContext bindingContext) {
+		super(context, bindingContext);
+	}
+	
+	@Override
+	protected void addTemplateControls(Composite root) {
+		context.getExtensions().put("flickrUrl", "http://www.flickr.com/groups/symbianfoundation");
+		createLabel(root, "Flickr URL:");
+		createTextForExt(root, "flickrUrl", "Flickr URL");
+		createLabel(root, "");
+		createLabel(root, "");
+		
+	}
+
+	public static final class Factory implements IWizardPageFactory { 
+		@Override
+		public WRTProjectDetailsWizardPage createPage(WizardContext context,
+				DataBindingContext bindingContext) {
+			return new FlickrProjectDetailsWizardPage(context, bindingContext);
+		}
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/wizards/IWizardPageFactory.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,25 @@
+/**
+ * Copyright (c) 2009 Symbian Foundation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of the License "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Symbian Foundation - initial contribution.
+ * Contributors:
+ * Description:
+ * Overview:
+ * Details:
+ * Platforms/Drives/Compatibility:
+ * Assumptions/Requirement/Pre-requisites:
+ * Failures and causes:
+ */
+package org.symbian.tools.wrttools.wizards;
+
+import org.eclipse.core.databinding.DataBindingContext;
+
+public interface IWizardPageFactory {
+	WRTProjectDetailsWizardPage createPage(WizardContext context, DataBindingContext bindingContext);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/wizards/RssReaderProjectDetailsWizardPage.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,57 @@
+/**
+ * Copyright (c) 2009 Symbian Foundation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of the License "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Symbian Foundation - initial contribution.
+ * Contributors:
+ * Description:
+ * Overview:
+ * Details:
+ * Platforms/Drives/Compatibility:
+ * Assumptions/Requirement/Pre-requisites:
+ * Failures and causes:
+ */
+package org.symbian.tools.wrttools.wizards;
+
+import java.util.Map;
+
+import org.eclipse.core.databinding.DataBindingContext;
+import org.eclipse.swt.widgets.Composite;
+
+public class RssReaderProjectDetailsWizardPage extends
+		WRTProjectDetailsWizardPage {
+
+	public RssReaderProjectDetailsWizardPage(WizardContext context,
+			DataBindingContext bindingContext) {
+		super(context, bindingContext);
+	}
+	
+	@Override
+	protected void addTemplateControls(Composite root) {
+		Map<String, String> extensions = context.getExtensions();
+		extensions.put("feedUrl", "http://twitter.com/statuses/user_timeline/21138778.rss");
+		extensions.put("feedName", "Symbian Foundation on Twitter");
+		
+		createLabel(root, "Feed URL:");
+		createTextForExt(root, "feedUrl", "feed URL");
+		createLabel(root, "Feed Name:");
+		createTextForExt(root, "feedName", "feed name");
+		createLabel(root, "");
+		createLabel(root, "");
+	}
+	
+	public static final class Factory implements IWizardPageFactory {
+		@Override
+		public WRTProjectDetailsWizardPage createPage(WizardContext context,
+				DataBindingContext bindingContext) {
+			return new RssReaderProjectDetailsWizardPage(context, bindingContext);
+		}
+		
+	}
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/wizards/WRTProjectDetailsWizardPage.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,85 @@
+/**
+ * Copyright (c) 2009 Symbian Foundation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of the License "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Symbian Foundation - initial contribution.
+ * Contributors:
+ * Description:
+ * Overview:
+ * Details:
+ * Platforms/Drives/Compatibility:
+ * Assumptions/Requirement/Pre-requisites:
+ * Failures and causes:
+ */
+package org.symbian.tools.wrttools.wizards;
+
+import org.eclipse.core.databinding.DataBindingContext;
+import org.eclipse.core.databinding.beans.BeansObservables;
+import org.eclipse.core.databinding.observable.value.IObservableValue;
+import org.eclipse.jface.databinding.swt.SWTObservables;
+import org.eclipse.jface.databinding.wizard.WizardPageSupport;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+
+public class WRTProjectDetailsWizardPage extends AbstractDataBindingPage {
+	private boolean isActive;
+
+	public WRTProjectDetailsWizardPage(WizardContext context, DataBindingContext bindingContext) {
+		super(context, bindingContext, "WRTWidget", "New Symbian Widget Project", null, "Specify Symbian WRT widget details");
+	}
+	
+	protected void addTemplateControls(Composite root) {
+		// Subclasses will override
+	}
+	
+	@Override
+	public void createControl(Composite parent) {
+		Composite root = new Composite(parent, SWT.NONE);
+		WizardPageSupport.create(this, bindingContext);
+		root.setLayout(new GridLayout(2, false));
+		createLabel(root, "Widget name:");
+		
+		createText(root, WizardContext.WIDGET_NAME, "widget name");
+		
+		createLabel(root, "");
+		createLabel(root, "This will be the widget's display name on the device");
+		createLabel(root, "");
+		createLabel(root, "");
+		createLabel(root, "Widget identifier:");
+
+		createText(root, WizardContext.WIDGET_ID, "widget identifier");
+		createLabel(root, "");
+		createLabel(root, "This id should be unique for succesful installation of widget on the device");
+		createLabel(root, "");
+		createLabel(root, "");
+		
+		addTemplateControls(root);
+		
+		createLabel(root, "");
+		Button homeScreen = new Button(root, SWT.CHECK);
+		homeScreen.setText("Enable HomeScreen");
+		
+		IObservableValue view = SWTObservables.observeSelection(homeScreen);
+		IObservableValue model = BeansObservables.observeValue(context, WizardContext.HOME_SCREEN);
+		bindingContext.bindValue(view, model);
+		
+		
+		setControl(root);
+	}
+
+	@Override
+	protected boolean isActive() {
+		return isActive;
+	}
+
+	public void setActive(boolean isActive) {
+		this.isActive = isActive;
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/wizards/WRTProjectFilesWizardPage.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,49 @@
+/**
+ * Copyright (c) 2009 Symbian Foundation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of the License "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Symbian Foundation - initial contribution.
+ * Contributors:
+ * Description:
+ * Overview:
+ * Details:
+ * Platforms/Drives/Compatibility:
+ * Assumptions/Requirement/Pre-requisites:
+ * Failures and causes:
+ */
+package org.symbian.tools.wrttools.wizards;
+
+import org.eclipse.core.databinding.DataBindingContext;
+import org.eclipse.jface.databinding.wizard.WizardPageSupport;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+
+public class WRTProjectFilesWizardPage extends AbstractDataBindingPage {
+
+	public WRTProjectFilesWizardPage(WizardContext context, DataBindingContext bindingContext) {
+		super(context, bindingContext, "WRTApplicationFiles", "New WRT Application Project", null, "Specify Symbian WRT application file names");
+	}
+
+	@Override
+	public void createControl(Composite parent) {
+		Composite root = new Composite(parent, SWT.NONE);
+		WizardPageSupport.create(this, bindingContext);
+		root.setLayout(new GridLayout(2, false));
+
+		createLabel(root, "Name of main HTML:");
+		createText(root, WizardContext.HTML_FILE, "HTML file name");
+		createLabel(root, "Name of CSS file:");
+		createText(root, WizardContext.CSS_FILE, "CSS file name");
+		createLabel(root, "Name of JavaScript file:");
+		createText(root, WizardContext.JS_FILE, "JavaScript file name");
+		
+		setControl(root);
+	}
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/wizards/WRTProjectTemplateWizardPage.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,160 @@
+/**
+ * Copyright (c) 2009 Symbian Foundation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of the License "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Symbian Foundation - initial contribution.
+ * Contributors:
+ * Description:
+ * Overview:
+ * Details:
+ * Platforms/Drives/Compatibility:
+ * Assumptions/Requirement/Pre-requisites:
+ * Failures and causes:
+ */
+package org.symbian.tools.wrttools.wizards;
+
+import org.eclipse.core.databinding.DataBindingContext;
+import org.eclipse.core.databinding.beans.BeansObservables;
+import org.eclipse.core.databinding.observable.value.IObservableValue;
+import org.eclipse.jface.databinding.viewers.IViewerObservableValue;
+import org.eclipse.jface.databinding.viewers.ViewersObservables;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.wizard.IWizardPage;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.layout.FormLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+import org.symbian.tools.wrttools.core.ProjectTemplate;
+
+public class WRTProjectTemplateWizardPage extends WizardPage {
+
+	public class ProjectTemplateLabelProvider extends LabelProvider {
+
+		@Override
+		public Image getImage(Object element) {
+			return ((ProjectTemplate) element).getIcon();
+		}
+
+		@Override
+		public String getText(Object element) {
+			return ((ProjectTemplate) element).getName();
+		}
+	}
+
+	private TableViewer templates;
+	private Text description;
+	private final WizardContext context;
+	private final DataBindingContext bindingContext;
+
+	public WRTProjectTemplateWizardPage(WizardContext context, DataBindingContext bindingContext) {
+		super("WRTTemplate", "WRT Application Template Selection", null);
+		this.context = context;
+		this.bindingContext = bindingContext;
+		setDescription("Select template that will be used to populate your new project");
+	}
+	
+	@Override
+	public void createControl(Composite parent) {
+		Composite composite = new Composite(parent, SWT.NONE);
+		FormLayout layout = new FormLayout();
+		layout.marginWidth = 5;
+		composite.setLayout(layout);
+		
+		Label label = new Label(composite, SWT.NONE);
+		label.setText("Choose a template");
+		FormData data = new FormData();
+		data.left = new FormAttachment(0, 0);
+		data.top = new FormAttachment(0, 0);
+		label.setLayoutData(data);
+		
+		templates = new TableViewer(composite, SWT.BORDER | SWT.SINGLE);
+		FormData templatesData = new FormData();
+		templatesData.top = new FormAttachment(label);
+		templatesData.left = new FormAttachment(0, 0);
+		templatesData.right = new FormAttachment(100, 0);
+		templatesData.bottom = new FormAttachment(70, 0);
+		templates.getControl().setLayoutData(templatesData);
+		templates.addSelectionChangedListener(new ISelectionChangedListener() {
+			
+			@Override
+			public void selectionChanged(SelectionChangedEvent event) {
+				IStructuredSelection selection = (IStructuredSelection)event.getSelection();
+				final ProjectTemplate 
+					template = (ProjectTemplate) selection.getFirstElement();
+				refreshSelection(template);
+			}
+		});
+		templates.addDoubleClickListener(new IDoubleClickListener() {
+			@Override
+			public void doubleClick(DoubleClickEvent arg0) {
+				switchWizardPage();
+			}
+		});
+		
+		description = new Text(composite, SWT.BORDER | SWT.MULTI | SWT.WRAP | SWT .READ_ONLY);
+		FormData descriptionData = new FormData();
+		descriptionData.top = new FormAttachment(templates.getControl(), 10);
+		descriptionData.bottom = new FormAttachment(100, 0);
+		descriptionData.left = new FormAttachment(0, 0);
+		descriptionData.right = new FormAttachment(100, 0);
+		description.setLayoutData(descriptionData);
+		
+		templates.setContentProvider(new ArrayContentProvider());
+		templates.setLabelProvider(new ProjectTemplateLabelProvider());
+		templates.setInput(ProjectTemplate.getAllTemplates());
+		
+		setControl(composite);
+		setPageComplete(false);
+
+		IViewerObservableValue selection = ViewersObservables.observeSingleSelection(templates);
+		IObservableValue property = BeansObservables.observeValue(context, WizardContext.TEMPLATE);
+		
+		bindingContext.bindValue(selection, property);
+	}
+
+	protected void switchWizardPage() {
+		Display display = getShell().getDisplay();
+		display.asyncExec(new Runnable() {
+			@Override
+			public void run() {
+				IWizardPage nextPage = getWizard().getNextPage(WRTProjectTemplateWizardPage.this);
+				getContainer().showPage(nextPage);
+			}
+		});
+	}
+
+	protected void refreshSelection(ProjectTemplate template) {
+		if (template != null) {
+			setErrorMessage(null);
+			setPageComplete(true);
+			description.setText(template.getDescription());
+		} else {
+			setErrorMessage("Project template is not selected");
+			setPageComplete(false);
+			description.setText("");
+		}
+	}
+
+	public ProjectTemplate getSelectedProjectTemplate() {
+		IStructuredSelection selection = (IStructuredSelection) templates.getSelection();
+		return (ProjectTemplate) selection.getFirstElement();
+	}
+}
--- a/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/wizards/WRTProjectWizard.java	Thu Jan 07 14:00:45 2010 -0800
+++ b/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/wizards/WRTProjectWizard.java	Thu Jan 07 14:06:06 2010 -0800
@@ -46,7 +46,6 @@
 	 * be able to open it.
 	 */
 
-	@SuppressWarnings("restriction")
 	public class WRTProjectWizard extends Wizard implements INewWizard {
 		private WRTProjectWizardPage page;
 		private ISelection selection;
@@ -64,7 +63,7 @@
 		 * Adding the page to the wizard.
 		 */
 
-		@SuppressWarnings("restriction")
+		
 		public void addPages() {
 			page = new WRTProjectWizardPage(selection);
 			addPage(page);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/wizards/WizardContext.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,255 @@
+/**
+ * Copyright (c) 2009 Symbian Foundation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of the License "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Symbian Foundation - initial contribution.
+ * Contributors:
+ * Description:
+ * Overview:
+ * Details:
+ * Platforms/Drives/Compatibility:
+ * Assumptions/Requirement/Pre-requisites:
+ * Failures and causes:
+ */
+package org.symbian.tools.wrttools.wizards;
+
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+import java.net.URI;
+import java.text.MessageFormat;
+import java.util.Map;
+import java.util.TreeMap;
+
+import org.symbian.tools.wrttools.core.ProjectTemplate;
+
+public class WizardContext {
+	public static final String PROJECT_URI = "projectUri";
+	public static final String CSS_FILE = "cssFile";
+	public static final String HTML_FILE = "htmlFile";
+	public static final String JS_FILE = "jsFile";
+	public static final String PROJECT_NAME = "projectName";
+	public static final String TEMPLATE = "template";
+	public static final String WIDGET_ID = "widgetId";
+	public static final String WIDGET_NAME = "widgetName";
+	public static final String HOME_SCREEN = "homeScreen";
+
+	private String cssFile;
+	private String htmlFile;
+	private String jsFile;
+	private String projectName;
+	private PropertyChangeSupport propertySupport = new PropertyChangeSupport(this);
+	private ProjectTemplate template;
+	private String widgetId;
+	private String widgetName;
+	private Map<String, String> extensions = new TreeMap<String, String>();
+	private URI projectUri;
+	private boolean homeScreen;
+
+	public void addPropertyChangeListener(PropertyChangeListener arg0) {
+		propertySupport.addPropertyChangeListener(arg0);
+	}
+
+	public void addPropertyChangeListener(String arg0,
+			PropertyChangeListener arg1) {
+		propertySupport.addPropertyChangeListener(arg0, arg1);
+	}
+
+	public String getCssFile() {
+		if (cssFile == null) {
+			if (template != null) {
+				return template.getDefaultCssFile();
+			}
+		}
+		return cssFile;
+	}
+
+	private String getDefaultWidgetId() {
+		if (template != null) {
+			return MessageFormat
+					.format(template.getIdFormat(), getWidgetName());
+		} else {
+			return null;
+		}
+	}
+
+	public String getHtmlFile() {
+		if (htmlFile == null) {
+			if (template != null) {
+				return template.getDefaultHtmlFile();
+			}
+		}
+		return htmlFile;
+	}
+
+	public String getJsFile() {
+		if (jsFile == null) {
+			if (template != null) {
+				return template.getDefaultJsFile();
+			}
+		}
+		return jsFile;
+	}
+
+	public String getProjectName() {
+		return projectName;
+	}
+
+	public ProjectTemplate getTemplate() {
+		return template;
+	}
+
+	public String getWidgetId() {
+		if (widgetId == null) {
+			return getDefaultWidgetId();
+		}
+		return widgetId;
+	}
+
+	public String getWidgetName() {
+		return widgetName != null ? widgetName : getProjectName();
+	}
+
+	public void removePropertyChangeListener(PropertyChangeListener arg0) {
+		propertySupport.removePropertyChangeListener(arg0);
+	}
+
+	public void removePropertyChangeListener(String arg0,
+			PropertyChangeListener arg1) {
+		propertySupport.removePropertyChangeListener(arg0, arg1);
+	}
+
+	public void setCssFile(String cssFile) {
+		if (template != null && template.getDefaultCssFile().equals(cssFile)) {
+			cssFile = null;
+		}
+		String prev = this.cssFile;
+		this.cssFile = cssFile;
+		propertySupport.firePropertyChange(CSS_FILE, cssFile, prev);
+	}
+
+	public void setHtmlFile(String htmlFile) {
+		if (template != null && template.getDefaultHtmlFile().equals(htmlFile)) {
+			htmlFile = null;
+		}
+		String prev = this.htmlFile;
+		this.htmlFile = htmlFile;
+		propertySupport.firePropertyChange(HTML_FILE, htmlFile, prev);
+	}
+
+	public void setJsFile(String jsFile) {
+		if (template != null && template.getDefaultJsFile().equals(jsFile)) {
+			jsFile = null;
+		}
+		String prev = this.jsFile;
+		this.jsFile = jsFile;
+		propertySupport.firePropertyChange(JS_FILE, jsFile, prev);
+	}
+
+	public void setProjectName(String projectName) {
+		String prevName = getWidgetName();
+		String prevId = getWidgetId();
+		String prev = this.projectName;
+		this.projectName = projectName;
+		propertySupport.firePropertyChange(PROJECT_NAME, projectName, prev);
+		if (widgetName == null) {
+			propertySupport.firePropertyChange(WIDGET_NAME, getWidgetName(),
+					prevName);
+			if (widgetId == null) {
+				propertySupport.firePropertyChange(WIDGET_ID, getWidgetId(),
+						prevId);
+			}
+		}
+	}
+
+	public void setTemplate(ProjectTemplate template) {
+		String id = getWidgetId();
+		String html = getHtmlFile();
+		String js = getJsFile();
+		String css = getCssFile();
+		ProjectTemplate prev = this.template;
+		this.template = template;
+		propertySupport.firePropertyChange(TEMPLATE, template, prev);
+		if (widgetId == null) {
+			propertySupport.firePropertyChange(WIDGET_ID, getWidgetId(), id);
+		}
+		if (htmlFile == null) {
+			propertySupport.firePropertyChange(HTML_FILE, getHtmlFile(), html);
+		}
+		if (jsFile == null) {
+			propertySupport.firePropertyChange(JS_FILE, getJsFile(), js);
+		}
+		if (cssFile == null) {
+			propertySupport.firePropertyChange(CSS_FILE, getCssFile(), css);
+		}
+	}
+
+	public void setWidgetId(String widgetId) {
+		String prev = getWidgetId();
+		if (getDefaultWidgetId().equals(widgetId)) {
+			widgetId = null;
+		}
+		this.widgetId = widgetId;
+		propertySupport.firePropertyChange(WIDGET_ID, getWidgetId(), prev);
+	}
+
+	public void setWidgetName(String widgetName) {
+		String prevId = getWidgetId();
+		String prev = getWidgetName();
+		if (projectName.equals(widgetName)) {
+			widgetName = null;
+		}
+		this.widgetName = widgetName;
+		propertySupport.firePropertyChange(WIDGET_NAME, widgetName, prev);
+		if (widgetId == null) {
+			propertySupport
+					.firePropertyChange(WIDGET_ID, getWidgetId(), prevId);
+		}
+	}
+
+	public void setExtensions(Map<String, String> extensions) {
+		this.extensions = extensions;
+	}
+
+	public Map<String, String> getExtensions() {
+		return extensions;
+	}
+
+	public void setProjectUri(URI uri) {
+		URI orig = projectUri;
+		this.projectUri = uri;
+		propertySupport.firePropertyChange(PROJECT_URI, projectUri, orig);
+	}
+	
+	public URI getProjectUri() {
+		return projectUri;
+	}
+	
+	public Map<String, String> getTemplateVars() {
+		Map<String, String> vars = new TreeMap<String, String>();
+		
+		vars.put("widgetName", getWidgetName());
+		vars.put("widgetId", getWidgetId());
+		vars.put("mainHtml", getHtmlFile());
+		vars.put("mainCss", getCssFile());
+		vars.put("mainJs", getJsFile());
+		vars.put("homeScreen", String.valueOf(isHomeScreen()));
+		vars.putAll(extensions);
+		
+		return vars ;
+	}
+
+	public boolean isHomeScreen() {
+		return homeScreen;
+	}
+	
+	public void setHomeScreen(boolean homeScreen) {
+		boolean old = homeScreen;
+		this.homeScreen = homeScreen;
+		propertySupport.firePropertyChange(HOME_SCREEN, old, homeScreen);
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/wizards/WrtWidgetWizard.java	Thu Jan 07 14:06:06 2010 -0800
@@ -0,0 +1,283 @@
+/**
+ * Copyright (c) 2009 Symbian Foundation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of the License "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Symbian Foundation - initial contribution.
+ * Contributors:
+ * Description:
+ * Overview:
+ * Details:
+ * Platforms/Drives/Compatibility:
+ * Assumptions/Requirement/Pre-requisites:
+ * Failures and causes:
+ */
+package org.symbian.tools.wrttools.wizards;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.io.Reader;
+import java.io.Writer;
+import java.lang.reflect.InvocationTargetException;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
+
+import org.apache.velocity.VelocityContext;
+import org.apache.velocity.app.Velocity;
+import org.eclipse.core.databinding.DataBindingContext;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.IWorkspaceRunnable;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.SubProgressMonitor;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.wizard.IWizardPage;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.ui.INewWizard;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.dialogs.WizardNewProjectCreationPage;
+import org.eclipse.wst.jsdt.internal.ui.wizards.buildpaths.BuildPathsBlock;
+import org.eclipse.wst.validation.ValidationFramework;
+import org.symbian.tools.wrttools.Activator;
+import org.symbian.tools.wrttools.core.ProjectTemplate;
+import org.symbian.tools.wrttools.projects.ProjectUtils;
+
+public class WrtWidgetWizard extends Wizard implements INewWizard {
+	private WizardNewProjectCreationPage resourcePage;
+	private WizardContext context;
+	private DataBindingContext bindingContext;
+	private Map<ProjectTemplate, WRTProjectDetailsWizardPage> templateDetails = new HashMap<ProjectTemplate, WRTProjectDetailsWizardPage>();
+	private WRTProjectTemplateWizardPage templatesPage;
+	private WRTProjectFilesWizardPage filesPage;
+
+	public WrtWidgetWizard() {
+		setWindowTitle("New WRT Widget");
+	}
+
+	@Override
+	public boolean performFinish() {
+		try {
+			getContainer().run(true, true, new IRunnableWithProgress() {
+				@Override
+				public void run(IProgressMonitor monitor)
+						throws InvocationTargetException, InterruptedException {
+					action(monitor);
+				}
+			});
+		} catch (InvocationTargetException e) {
+			Activator.log(e);
+		} catch (InterruptedException e) {
+			Activator.log(e);
+		}
+		return true;
+	}
+
+	protected void action(IProgressMonitor monitor) {
+		try {
+			ResourcesPlugin.getWorkspace().run(new IWorkspaceRunnable() {
+				@Override
+				public void run(IProgressMonitor monitor) throws CoreException {
+					createAndInitProject(monitor);
+				}
+			}, monitor);
+		} catch (CoreException e) {
+			Activator.log(e);
+		}
+	}
+
+	protected void createAndInitProject(IProgressMonitor monitor)
+			throws CoreException {
+		monitor.beginTask("Creating project", 100);
+		IProject project = ProjectUtils.createWrtProject(context.getProjectName(), context
+		.getProjectUri(), new SubProgressMonitor(monitor, 30));
+		populateProject(project, new SubProgressMonitor(monitor, 70));
+		monitor.done();
+	}
+
+	private void populateProject(IProject project, IProgressMonitor monitor)
+			throws CoreException {
+		URL projectContents = context.getTemplate().getProjectContents();
+		Map<String, String> vars = context.getTemplateVars();
+
+		ZipInputStream stream = null;
+		try {
+			Velocity.init();
+			VelocityContext ctx = new VelocityContext(vars);
+			stream = new ZipInputStream(projectContents.openStream());
+			monitor.beginTask("Generating project contents",
+					IProgressMonitor.UNKNOWN);
+			ZipEntry entry;
+			while ((entry = stream.getNextEntry()) != null
+					&& !monitor.isCanceled()) {
+				String name = entry.getName();
+				boolean isVelocity = name.endsWith(".velocitytemplate");
+				if (isVelocity) {
+					name = name.substring(0, name.length()
+							- ".velocitytemplate".length());
+				}
+				if (name.startsWith("$")) {
+					int dotLocation = name.indexOf(".");
+					String template = name.substring(1,
+							dotLocation > 1 ? dotLocation : name.length());
+					if (vars.containsKey(template)) {
+						name = vars.get(template)
+								+ name.substring(dotLocation > 1 ? dotLocation
+										: name.length());
+					}
+				}
+				if (entry.isDirectory()) {
+					IFolder folder = project.getFolder(entry.getName());
+					folder.create(false, true, new SubProgressMonitor(monitor, 1));
+				} else if (isVelocity) {
+					copyTemplate(project, name, stream, (int) entry.getSize(),
+							ctx, monitor);
+				} else {
+					copyFile(project, name, stream, entry.getSize(), monitor);
+				}
+				stream.closeEntry();
+			}
+
+			monitor.done();
+		} catch (Exception e) {
+			throw new CoreException(new Status(IStatus.ERROR,
+					Activator.PLUGIN_ID, "Project creation failed", e));
+		} finally {
+			if (stream != null) {
+				try {
+					stream.close();
+				} catch (IOException e) {
+					// Ignore - something really bad happened
+				}
+			}
+		}
+	}
+
+	private void copyFile(IProject project, String name, ZipInputStream stream,
+			long size, IProgressMonitor monitor) throws CoreException,
+			IOException {
+		byte[] contents = readBytes(stream, (int) size);
+		IFile file = project.getFile(name);
+		file.create(new ByteArrayInputStream(contents), true,
+				new SubProgressMonitor(monitor, 1));
+	}
+
+	private byte[] readBytes(ZipInputStream stream, int size)
+			throws IOException {
+		byte[] contents = new byte[size];
+		int len = 0;
+		do {
+			int read = stream.read(contents, len, size - len);
+			len += read;
+		} while (len < size);
+		return contents;
+	}
+
+	private void copyTemplate(IProject project, String name,
+			ZipInputStream stream, int size, VelocityContext ctx,
+			IProgressMonitor monitor) throws IOException, CoreException {
+		// Templates will not be more then a few megs - we can afford the memory
+		final byte[] template = readBytes(stream, size);
+		ByteArrayOutputStream file = new ByteArrayOutputStream();
+
+		Reader reader = new InputStreamReader(
+				new ByteArrayInputStream(template));
+		Writer writer = new OutputStreamWriter(file);
+
+		Velocity.evaluate(ctx, writer, name, reader);
+
+		reader.close();
+		writer.close();
+
+		ByteArrayInputStream contents = new ByteArrayInputStream(file
+				.toByteArray());
+		IFile f = project.getFile(name);
+		f.create(contents, true, new SubProgressMonitor(monitor, 1));
+	}
+
+	@Override
+	public void init(IWorkbench workbench, IStructuredSelection selection) {
+		context = new WizardContext();
+		bindingContext = new DataBindingContext();
+	}
+
+	@Override
+	public void addPages() {
+		resourcePage = new WizardNewProjectCreationPage("Resource");
+		resourcePage
+				.setDescription("Create a WRT widget project in the workspace or other location");
+		resourcePage.setTitle("Create a New WRT Widget Project");
+		addPage(resourcePage);
+
+		templatesPage = new WRTProjectTemplateWizardPage(context,
+				bindingContext);
+		addPage(templatesPage);
+
+		ProjectTemplate[] templates = ProjectTemplate.getAllTemplates();
+		for (ProjectTemplate projectTemplate : templates) {
+			WRTProjectDetailsWizardPage page = projectTemplate
+					.createWizardPage(context, bindingContext);
+			addPage(page);
+			templateDetails.put(projectTemplate, page);
+		}
+
+		filesPage = new WRTProjectFilesWizardPage(context, bindingContext);
+		addPage(filesPage);
+	}
+
+	@Override
+	public boolean canFinish() {
+		return super.canFinish()
+				&& getContainer().getCurrentPage() == filesPage;
+	}
+
+	@Override
+	public IWizardPage getNextPage(IWizardPage page) {
+		if (page == resourcePage) {
+			context.setProjectName(resourcePage.getProjectName());
+			context.setProjectUri(isDefaultProjectLocation() ? null
+					: resourcePage.getLocationURI());
+		}
+		if (page == templatesPage) {
+			ProjectTemplate template = context.getTemplate();
+			if (template != null) {
+				WRTProjectDetailsWizardPage activePage = templateDetails
+						.get(template);
+				for (WRTProjectDetailsWizardPage wizardPage : templateDetails
+						.values()) {
+					wizardPage.setActive(wizardPage == activePage);
+				}
+				bindingContext.updateModels();
+				return activePage;
+			}
+		}
+		if (page instanceof WRTProjectDetailsWizardPage) {
+			return filesPage;
+		}
+		return super.getNextPage(page);
+	}
+
+	private boolean isDefaultProjectLocation() {
+		IPath project = resourcePage.getLocationPath();
+		IPath workspace = ResourcesPlugin.getWorkspace().getRoot()
+				.getLocation();
+		return workspace.isPrefixOf(project);
+	}
+}